134 |
134 |
135 int ecrt_master_get_slave(ec_master_t *master, uint16_t slave_position, |
135 int ecrt_master_get_slave(ec_master_t *master, uint16_t slave_position, |
136 ec_slave_info_t *slave_info) |
136 ec_slave_info_t *slave_info) |
137 { |
137 { |
138 ec_ioctl_slave_t data; |
138 ec_ioctl_slave_t data; |
139 int index; |
139 int index, i; |
140 |
140 |
141 data.position = slave_position; |
141 data.position = slave_position; |
142 |
142 |
143 if (ioctl(master->fd, EC_IOCTL_SLAVE, &data) == -1) { |
143 if (ioctl(master->fd, EC_IOCTL_SLAVE, &data) == -1) { |
144 fprintf(stderr, "Failed to get slave info: %s\n", strerror(errno)); |
144 fprintf(stderr, "Failed to get slave info: %s\n", strerror(errno)); |
150 slave_info->product_code = data.product_code; |
150 slave_info->product_code = data.product_code; |
151 slave_info->revision_number = data.revision_number; |
151 slave_info->revision_number = data.revision_number; |
152 slave_info->serial_number = data.serial_number; |
152 slave_info->serial_number = data.serial_number; |
153 slave_info->alias = data.alias; |
153 slave_info->alias = data.alias; |
154 slave_info->current_on_ebus = data.current_on_ebus; |
154 slave_info->current_on_ebus = data.current_on_ebus; |
155 strncpy((char*) slave_info->ports, (char*) data.ports, sizeof(slave_info->ports)); |
155 for ( i = 0; i < EC_MAX_PORTS; i++ ) { |
|
156 slave_info->ports[i].desc = data.ports[i].desc; |
|
157 slave_info->ports[i].link.link_up = data.ports[i].link.link_up; |
|
158 slave_info->ports[i].link.loop_closed = data.ports[i].link.loop_closed; |
|
159 slave_info->ports[i].link.signal_detected = data.ports[i].link.signal_detected; |
|
160 slave_info->ports[i].receive_time = data.ports[i].receive_time; |
|
161 slave_info->ports[i].next_slave = data.ports[i].next_slave; |
|
162 slave_info->ports[i].delay_to_next_dc = data.ports[i].delay_to_next_dc; |
|
163 } |
156 slave_info->al_state = data.al_state; |
164 slave_info->al_state = data.al_state; |
157 slave_info->error_flag = data.error_flag; |
165 slave_info->error_flag = data.error_flag; |
158 slave_info->sync_count = data.sync_count; |
166 slave_info->sync_count = data.sync_count; |
159 slave_info->sdo_count = data.sdo_count; |
167 slave_info->sdo_count = data.sdo_count; |
160 strncpy(slave_info->name, data.name, EC_MAX_STRING_LENGTH); |
168 strncpy(slave_info->name, data.name, EC_MAX_STRING_LENGTH); |