lib/slave_config.c
changeset 1509 a864688e7de5
parent 1508 60a116ed3897
child 1526 66edd310830c
--- a/lib/slave_config.c	Mon Jul 27 10:44:16 2009 +0000
+++ b/lib/slave_config.c	Mon Jul 27 10:48:52 2009 +0000
@@ -44,7 +44,7 @@
 /*****************************************************************************/
 
 int ecrt_slave_config_sync_manager(ec_slave_config_t *sc, uint8_t sync_index,
-        ec_direction_t dir)
+        ec_direction_t dir, ec_watchdog_mode_t watchdog_mode)
 {
     ec_ioctl_config_t data;
     unsigned int i;
@@ -55,6 +55,8 @@
     memset(&data, 0x00, sizeof(ec_ioctl_config_t));
     data.config_index = sc->index;
     data.syncs[sync_index].dir = dir;
+    data.syncs[sync_index].watchdog_mode = watchdog_mode;
+    data.syncs[sync_index].config_this = 1;
 
     if (ioctl(sc->master->fd, EC_IOCTL_SC_SYNC, &data) == -1) {
         fprintf(stderr, "Failed to config sync manager: %s\n",
@@ -67,6 +69,24 @@
 
 /*****************************************************************************/
 
+void ecrt_slave_config_watchdog(ec_slave_config_t *sc,
+        uint16_t divider, uint16_t intervals)
+{
+    ec_ioctl_config_t data;
+
+    memset(&data, 0x00, sizeof(ec_ioctl_config_t));
+    data.config_index = sc->index;
+    data.watchdog_divider = divider;
+    data.watchdog_intervals = intervals;
+
+    if (ioctl(sc->master->fd, EC_IOCTL_SC_WATCHDOG, &data) == -1) {
+        fprintf(stderr, "Failed to config watchdog: %s\n",
+                strerror(errno));
+    }
+}
+
+/*****************************************************************************/
+
 int ecrt_slave_config_pdo_assign_add(ec_slave_config_t *sc,
         uint8_t sync_index, uint16_t pdo_index)
 {
@@ -166,8 +186,8 @@
             return -ENOENT;
         }
 
-        ret = ecrt_slave_config_sync_manager(
-                sc, sync_info->index, sync_info->dir);
+        ret = ecrt_slave_config_sync_manager(sc, sync_info->index,
+                sync_info->dir, sync_info->watchdog_mode);
         if (ret)
             return ret;