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) { |