diff -r 3d45edb1b4a1 -r 32ba7ffb6c7f lib/master.c --- a/lib/master.c Mon Jan 26 14:14:17 2009 +0000 +++ b/lib/master.c Mon Jan 26 14:39:49 2009 +0000 @@ -100,6 +100,38 @@ /*****************************************************************************/ +int ecrt_master_slave(ec_master_t *master, uint16_t position, + ec_slave_info_t *slave_info) +{ + ec_ioctl_slave_t data; + int index; + + data.position = position; + + if (ioctl(master->fd, EC_IOCTL_SLAVE, &data) == -1) { + fprintf(stderr, "Failed to get slave info: %s\n", + strerror(errno)); + return -1; + } + + slave_info->position = data.position; + slave_info->vendor_id = data.vendor_id; + slave_info->product_code = data.product_code; + slave_info->revision_number = data.revision_number; + slave_info->serial_number = data.serial_number; + slave_info->alias = data.alias; + slave_info->current_on_ebus = data.current_on_ebus; + slave_info->al_state = data.al_state; + slave_info->error_flag = data.error_flag; + slave_info->sync_count = data.sync_count; + slave_info->sdo_count = data.sdo_count; + strncpy(slave_info->name, data.name, EC_IOCTL_STRING_SIZE); + + return 0; +} + +/*****************************************************************************/ + int ecrt_master_activate(ec_master_t *master) { if (ioctl(master->fd, EC_IOCTL_ACTIVATE,