master/master.c
branchredundancy
changeset 2340 3f2a4f9ff786
parent 2336 dc82f7d09767
child 2349 2f5993d86ea5
equal deleted inserted replaced
2339:ecaff0d1d165 2340:3f2a4f9ff786
  2405 
  2405 
  2406 int ecrt_master_get_slave(ec_master_t *master, uint16_t slave_position,
  2406 int ecrt_master_get_slave(ec_master_t *master, uint16_t slave_position,
  2407         ec_slave_info_t *slave_info)
  2407         ec_slave_info_t *slave_info)
  2408 {
  2408 {
  2409     const ec_slave_t *slave;
  2409     const ec_slave_t *slave;
       
  2410     unsigned int i;
  2410 
  2411 
  2411     if (down_interruptible(&master->master_sem)) {
  2412     if (down_interruptible(&master->master_sem)) {
  2412         return -EINTR;
  2413         return -EINTR;
  2413     }
  2414     }
  2414 
  2415 
  2419     slave_info->product_code = slave->sii.product_code;
  2420     slave_info->product_code = slave->sii.product_code;
  2420     slave_info->revision_number = slave->sii.revision_number;
  2421     slave_info->revision_number = slave->sii.revision_number;
  2421     slave_info->serial_number = slave->sii.serial_number;
  2422     slave_info->serial_number = slave->sii.serial_number;
  2422     slave_info->alias = slave->effective_alias;
  2423     slave_info->alias = slave->effective_alias;
  2423     slave_info->current_on_ebus = slave->sii.current_on_ebus;
  2424     slave_info->current_on_ebus = slave->sii.current_on_ebus;
       
  2425 
       
  2426     for (i = 0; i < EC_MAX_PORTS; i++) {
       
  2427         slave_info->ports[i].desc = slave->ports[i].desc;
       
  2428         slave_info->ports[i].link.link_up = slave->ports[i].link.link_up;
       
  2429         slave_info->ports[i].link.loop_closed =
       
  2430             slave->ports[i].link.loop_closed;
       
  2431         slave_info->ports[i].link.signal_detected =
       
  2432             slave->ports[i].link.signal_detected;
       
  2433         slave_info->ports[i].receive_time = slave->ports[i].receive_time;
       
  2434         if (slave->ports[i].next_slave) {
       
  2435             slave_info->ports[i].next_slave =
       
  2436                 slave->ports[i].next_slave->ring_position;
       
  2437         } else {
       
  2438             slave_info->ports[i].next_slave = 0xffff;
       
  2439         }
       
  2440         slave_info->ports[i].delay_to_next_dc =
       
  2441             slave->ports[i].delay_to_next_dc;
       
  2442     }
       
  2443 
  2424     slave_info->al_state = slave->current_state;
  2444     slave_info->al_state = slave->current_state;
  2425     slave_info->error_flag = slave->error_flag;
  2445     slave_info->error_flag = slave->error_flag;
  2426     slave_info->sync_count = slave->sii.sync_count;
  2446     slave_info->sync_count = slave->sii.sync_count;
  2427     slave_info->sdo_count = ec_slave_sdo_count(slave);
  2447     slave_info->sdo_count = ec_slave_sdo_count(slave);
  2428     if (slave->sii.name) {
  2448     if (slave->sii.name) {