lib/master.c
branchstable-1.5
changeset 2447 e93efb4af231
parent 2443 2c3ccdde3919
child 2703 045624f7f4c3
--- a/lib/master.c	Tue Nov 20 14:33:16 2012 +0100
+++ b/lib/master.c	Tue Nov 20 14:35:53 2012 +0100
@@ -200,6 +200,31 @@
     return sc;
 }
 
+/*****************************************************************************/
+
+int ecrt_master_select_reference_clock(ec_master_t *master,
+        ec_slave_config_t *sc)
+{
+    uint32_t config_index;
+    int ret;
+
+    if (sc) {
+        config_index = sc->index;
+    }
+    else {
+        config_index = 0xFFFFFFFF;
+    }
+
+    ret = ioctl(master->fd, EC_IOCTL_SELECT_REF_CLOCK, config_index);
+    if (EC_IOCTL_IS_ERROR(ret)) {
+        fprintf(stderr, "Failed to select reference clock: %s\n",
+                strerror(EC_IOCTL_ERRNO(ret)));
+        return -EC_IOCTL_ERRNO(ret);
+    }
+
+    return 0;
+}
+
 /****************************************************************************/
 
 int ecrt_master(ec_master_t *master, ec_master_info_t *master_info)
@@ -681,6 +706,21 @@
     }
 }
 
+/*****************************************************************************/
+
+int ecrt_master_reference_clock_time(ec_master_t *master, uint32_t *time)
+{
+    int ret;
+
+    ret = ioctl(master->fd, EC_IOCTL_REF_CLOCK_TIME, time);
+    if (EC_IOCTL_IS_ERROR(ret)) {
+        fprintf(stderr, "Failed to get reference clock time: %s\n",
+                strerror(EC_IOCTL_ERRNO(ret)));
+    }
+
+    return ret;
+}
+
 /****************************************************************************/
 
 void ecrt_master_sync_monitor_queue(ec_master_t *master)