examples/mini/mini.c
changeset 1209 8be462afb7f4
parent 1179 c0e6adec1aee
child 1212 d634ed3a9b94
--- a/examples/mini/mini.c	Wed Aug 27 16:04:18 2008 +0000
+++ b/examples/mini/mini.c	Mon Sep 01 14:17:18 2008 +0000
@@ -48,6 +48,7 @@
 #define EL3152_ALT_PDOS 0
 #define EXTERNAL_MEMORY 1
 #define SDO_ACCESS      0
+#define VOE_ACCESS      0
 
 #define PFX "ec_mini: "
 
@@ -184,6 +185,10 @@
 static ec_sdo_request_t *sdo;
 #endif
 
+#if VOE_ACCESS
+static ec_voe_handler_t *voe;
+#endif
+
 /*****************************************************************************/
 
 void check_domain1_state(void)
@@ -249,18 +254,18 @@
 void read_sdo(void)
 {
     switch (ecrt_sdo_request_state(sdo)) {
-        case EC_SDO_REQUEST_UNUSED: // request was not used yet
+        case EC_REQUEST_UNUSED: // request was not used yet
             ecrt_sdo_request_read(sdo); // trigger first read
             break;
-        case EC_SDO_REQUEST_BUSY:
+        case EC_REQUEST_BUSY:
             printk(KERN_INFO PFX "Still busy...\n");
             break;
-        case EC_SDO_REQUEST_SUCCESS:
+        case EC_REQUEST_SUCCESS:
             printk(KERN_INFO PFX "Sdo value: 0x%04X\n",
                     EC_READ_U16(ecrt_sdo_request_data(sdo)));
             ecrt_sdo_request_read(sdo); // trigger next read
             break;
-        case EC_SDO_REQUEST_ERROR:
+        case EC_REQUEST_ERROR:
             printk(KERN_INFO PFX "Failed to read Sdo!\n");
             ecrt_sdo_request_read(sdo); // retry reading
             break;
@@ -270,6 +275,31 @@
 
 /*****************************************************************************/
 
+#if VOE_ACCESS
+void read_voe(void)
+{
+    switch (ecrt_voe_handler_execute(voe)) {
+        case EC_REQUEST_UNUSED:
+            ecrt_voe_handler_read(voe); // trigger first read
+            break;
+        case EC_REQUEST_BUSY:
+            printk(KERN_INFO PFX "VoE read still busy...\n");
+            break;
+        case EC_REQUEST_SUCCESS:
+            printk(KERN_INFO PFX "VoE received.\n");
+            // get data via ecrt_voe_handler_data(voe)
+            ecrt_voe_handler_read(voe); // trigger next read
+            break;
+        case EC_REQUEST_ERROR:
+            printk(KERN_INFO PFX "Failed to read VoE data!\n");
+            ecrt_voe_handler_read(voe); // retry reading
+            break;
+    }
+}
+#endif
+
+/*****************************************************************************/
+
 void cyclic_task(unsigned long data)
 {
     // receive process data
@@ -299,6 +329,10 @@
         // read process data Sdo
         read_sdo();
 #endif
+
+#if VOE_ACCESS
+        read_voe();
+#endif
     }
 
     // write process data
@@ -401,6 +435,14 @@
     ecrt_sdo_request_timeout(sdo, 500); // ms
 #endif
 
+#if VOE_ACCESS
+    printk(KERN_INFO PFX "Creating VoE handlers...\n");
+    if (!(voe = ecrt_slave_config_create_voe_handler(sc_ana_in, 1000))) {
+        printk(KERN_ERR PFX "Failed to create VoE handler.\n");
+        goto out_release_master;
+    }
+#endif
+
     printk(KERN_INFO PFX "Registering Pdo entries...\n");
     if (ecrt_domain_reg_pdo_entry_list(domain1, domain1_regs)) {
         printk(KERN_ERR PFX "Pdo entry registration failed!\n");