--- 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");