master/master.c
changeset 2249 6dbd7594dd1d
parent 2240 b45438edf869
child 2270 51d2b26a5d1c
equal deleted inserted replaced
2248:82afd3a5bab1 2249:6dbd7594dd1d
  2273 
  2273 
  2274 int ecrt_master_get_slave(ec_master_t *master, uint16_t slave_position,
  2274 int ecrt_master_get_slave(ec_master_t *master, uint16_t slave_position,
  2275         ec_slave_info_t *slave_info)
  2275         ec_slave_info_t *slave_info)
  2276 {
  2276 {
  2277     const ec_slave_t *slave;
  2277     const ec_slave_t *slave;
       
  2278     unsigned int i;
  2278 
  2279 
  2279     if (ec_mutex_lock_interruptible(&master->master_mutex)) {
  2280     if (ec_mutex_lock_interruptible(&master->master_mutex)) {
  2280         return -EINTR;
  2281         return -EINTR;
  2281     }
  2282     }
  2282 
  2283 
  2287     slave_info->product_code = slave->sii.product_code;
  2288     slave_info->product_code = slave->sii.product_code;
  2288     slave_info->revision_number = slave->sii.revision_number;
  2289     slave_info->revision_number = slave->sii.revision_number;
  2289     slave_info->serial_number = slave->sii.serial_number;
  2290     slave_info->serial_number = slave->sii.serial_number;
  2290     slave_info->alias = slave->effective_alias;
  2291     slave_info->alias = slave->effective_alias;
  2291     slave_info->current_on_ebus = slave->sii.current_on_ebus;
  2292     slave_info->current_on_ebus = slave->sii.current_on_ebus;
       
  2293 
       
  2294     for (i = 0; i < EC_MAX_PORTS; i++) {
       
  2295         slave_info->ports[i].desc = slave->ports[i].desc;
       
  2296         slave_info->ports[i].link.link_up = slave->ports[i].link.link_up;
       
  2297         slave_info->ports[i].link.loop_closed =
       
  2298             slave->ports[i].link.loop_closed;
       
  2299         slave_info->ports[i].link.signal_detected =
       
  2300             slave->ports[i].link.signal_detected;
       
  2301         slave_info->ports[i].receive_time = slave->ports[i].receive_time;
       
  2302         if (slave->ports[i].next_slave) {
       
  2303             slave_info->ports[i].next_slave =
       
  2304                 slave->ports[i].next_slave->ring_position;
       
  2305         } else {
       
  2306             slave_info->ports[i].next_slave = 0xffff;
       
  2307         }
       
  2308         slave_info->ports[i].delay_to_next_dc =
       
  2309             slave->ports[i].delay_to_next_dc;
       
  2310     }
       
  2311 
  2292     slave_info->al_state = slave->current_state;
  2312     slave_info->al_state = slave->current_state;
  2293     slave_info->error_flag = slave->error_flag;
  2313     slave_info->error_flag = slave->error_flag;
  2294     slave_info->sync_count = slave->sii.sync_count;
  2314     slave_info->sync_count = slave->sii.sync_count;
  2295     slave_info->sdo_count = ec_slave_sdo_count(slave);
  2315     slave_info->sdo_count = ec_slave_sdo_count(slave);
  2296     if (slave->sii.name) {
  2316     if (slave->sii.name) {