diff -r 026e35646ab4 -r 8be462afb7f4 examples/mini/mini.c --- 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");