master/master.c
branchstable-1.5
changeset 2244 fc891656a9fe
parent 2235 cd49c2c31dcb
child 2266 ec8e1151b8a7
equal deleted inserted replaced
2243:5854e4712823 2244:fc891656a9fe
  2271 
  2271 
  2272 int ecrt_master_get_slave(ec_master_t *master, uint16_t slave_position,
  2272 int ecrt_master_get_slave(ec_master_t *master, uint16_t slave_position,
  2273         ec_slave_info_t *slave_info)
  2273         ec_slave_info_t *slave_info)
  2274 {
  2274 {
  2275     const ec_slave_t *slave;
  2275     const ec_slave_t *slave;
       
  2276     unsigned int i;
  2276 
  2277 
  2277     if (down_interruptible(&master->master_sem)) {
  2278     if (down_interruptible(&master->master_sem)) {
  2278         return -EINTR;
  2279         return -EINTR;
  2279     }
  2280     }
  2280 
  2281 
  2285     slave_info->product_code = slave->sii.product_code;
  2286     slave_info->product_code = slave->sii.product_code;
  2286     slave_info->revision_number = slave->sii.revision_number;
  2287     slave_info->revision_number = slave->sii.revision_number;
  2287     slave_info->serial_number = slave->sii.serial_number;
  2288     slave_info->serial_number = slave->sii.serial_number;
  2288     slave_info->alias = slave->effective_alias;
  2289     slave_info->alias = slave->effective_alias;
  2289     slave_info->current_on_ebus = slave->sii.current_on_ebus;
  2290     slave_info->current_on_ebus = slave->sii.current_on_ebus;
       
  2291 
       
  2292     for (i = 0; i < EC_MAX_PORTS; i++) {
       
  2293         slave_info->ports[i].desc = slave->ports[i].desc;
       
  2294         slave_info->ports[i].link.link_up = slave->ports[i].link.link_up;
       
  2295         slave_info->ports[i].link.loop_closed =
       
  2296             slave->ports[i].link.loop_closed;
       
  2297         slave_info->ports[i].link.signal_detected =
       
  2298             slave->ports[i].link.signal_detected;
       
  2299         slave_info->ports[i].receive_time = slave->ports[i].receive_time;
       
  2300         if (slave->ports[i].next_slave) {
       
  2301             slave_info->ports[i].next_slave =
       
  2302                 slave->ports[i].next_slave->ring_position;
       
  2303         } else {
       
  2304             slave_info->ports[i].next_slave = 0xffff;
       
  2305         }
       
  2306         slave_info->ports[i].delay_to_next_dc =
       
  2307             slave->ports[i].delay_to_next_dc;
       
  2308     }
       
  2309 
  2290     slave_info->al_state = slave->current_state;
  2310     slave_info->al_state = slave->current_state;
  2291     slave_info->error_flag = slave->error_flag;
  2311     slave_info->error_flag = slave->error_flag;
  2292     slave_info->sync_count = slave->sii.sync_count;
  2312     slave_info->sync_count = slave->sii.sync_count;
  2293     slave_info->sdo_count = ec_slave_sdo_count(slave);
  2313     slave_info->sdo_count = ec_slave_sdo_count(slave);
  2294     if (slave->sii.name) {
  2314     if (slave->sii.name) {