lib/master.c
changeset 1341 32ba7ffb6c7f
parent 1326 ef907b0b5125
child 1363 11c0b2caa253
--- 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,