lib/master.c
changeset 1983 df270de292e1
parent 1982 7421bca39b6d
child 1985 6b353d9e0473
equal deleted inserted replaced
1982:7421bca39b6d 1983:df270de292e1
   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);