233 slave_info->alias = data.alias; |
233 slave_info->alias = data.alias; |
234 slave_info->current_on_ebus = data.current_on_ebus; |
234 slave_info->current_on_ebus = data.current_on_ebus; |
235 for ( i = 0; i < EC_MAX_PORTS; i++ ) { |
235 for ( i = 0; i < EC_MAX_PORTS; i++ ) { |
236 slave_info->ports[i].desc = data.ports[i].desc; |
236 slave_info->ports[i].desc = data.ports[i].desc; |
237 slave_info->ports[i].link.link_up = data.ports[i].link.link_up; |
237 slave_info->ports[i].link.link_up = data.ports[i].link.link_up; |
238 slave_info->ports[i].link.loop_closed = data.ports[i].link.loop_closed; |
238 slave_info->ports[i].link.loop_closed = |
239 slave_info->ports[i].link.signal_detected = data.ports[i].link.signal_detected; |
239 data.ports[i].link.loop_closed; |
|
240 slave_info->ports[i].link.signal_detected = |
|
241 data.ports[i].link.signal_detected; |
240 slave_info->ports[i].receive_time = data.ports[i].receive_time; |
242 slave_info->ports[i].receive_time = data.ports[i].receive_time; |
241 slave_info->ports[i].next_slave = data.ports[i].next_slave; |
243 slave_info->ports[i].next_slave = data.ports[i].next_slave; |
242 slave_info->ports[i].delay_to_next_dc = data.ports[i].delay_to_next_dc; |
244 slave_info->ports[i].delay_to_next_dc = |
|
245 data.ports[i].delay_to_next_dc; |
243 } |
246 } |
244 slave_info->al_state = data.al_state; |
247 slave_info->al_state = data.al_state; |
245 slave_info->error_flag = data.error_flag; |
248 slave_info->error_flag = data.error_flag; |
246 slave_info->sync_count = data.sync_count; |
249 slave_info->sync_count = data.sync_count; |
247 slave_info->sdo_count = data.sdo_count; |
250 slave_info->sdo_count = data.sdo_count; |
254 int ecrt_master_get_sync_manager(ec_master_t *master, uint16_t slave_position, |
257 int ecrt_master_get_sync_manager(ec_master_t *master, uint16_t slave_position, |
255 uint8_t sync_index, ec_sync_info_t *sync) |
258 uint8_t sync_index, ec_sync_info_t *sync) |
256 { |
259 { |
257 ec_ioctl_slave_sync_t data; |
260 ec_ioctl_slave_sync_t data; |
258 |
261 |
259 if (sync_index >= EC_MAX_SYNC_MANAGERS) |
262 if (sync_index >= EC_MAX_SYNC_MANAGERS) { |
260 return -ENOENT; |
263 return -ENOENT; |
|
264 } |
261 |
265 |
262 memset(&data, 0x00, sizeof(ec_ioctl_slave_sync_t)); |
266 memset(&data, 0x00, sizeof(ec_ioctl_slave_sync_t)); |
263 data.slave_position = slave_position; |
267 data.slave_position = slave_position; |
264 data.sync_index = sync_index; |
268 data.sync_index = sync_index; |
265 |
269 |
550 } |
554 } |
551 } |
555 } |
552 |
556 |
553 /*****************************************************************************/ |
557 /*****************************************************************************/ |
554 |
558 |
|
559 int ecrt_master_link_state(const ec_master_t *master, unsigned int dev_idx, |
|
560 ec_master_link_state_t *state) |
|
561 { |
|
562 ec_ioctl_link_state_t io; |
|
563 |
|
564 io.dev_idx = dev_idx; |
|
565 io.state = state; |
|
566 if (ioctl(master->fd, EC_IOCTL_MASTER_LINK_STATE, &io) == -1) { |
|
567 fprintf(stderr, "Failed to get link state: %s\n", strerror(errno)); |
|
568 return -errno; |
|
569 } |
|
570 } |
|
571 |
|
572 /*****************************************************************************/ |
|
573 |
555 void ecrt_master_application_time(ec_master_t *master, uint64_t app_time) |
574 void ecrt_master_application_time(ec_master_t *master, uint64_t app_time) |
556 { |
575 { |
557 ec_ioctl_app_time_t data; |
576 ec_ioctl_app_time_t data; |
558 |
577 |
559 data.app_time = app_time; |
578 data.app_time = app_time; |