From 7e403e80d2f673b394c9844a0303b2cfdee4012d Mon Sep 17 00:00:00 2001 From: Florian Pose <fp@igh-essen.com> Date: Fri, 22 Feb 2008 17:31:00 +0000 Subject: [PATCH] Cleaned up mini module. --- examples/mini/mini.c | 58 +++++++++++++++++++++++++------------------- 1 file changed, 33 insertions(+), 25 deletions(-) diff --git a/examples/mini/mini.c b/examples/mini/mini.c index 614c13ec..fb3f5f8a 100644 --- a/examples/mini/mini.c +++ b/examples/mini/mini.c @@ -39,16 +39,16 @@ #include "../../include/ecrt.h" // EtherCAT realtime interface #include "../../include/ecdb.h" // EtherCAT slave database -#define PFX "ec_mini: " +/*****************************************************************************/ +// module parameters #define FREQUENCY 100 - #define CONFIGURE_MAPPING #define EXTERNAL_MEMORY -/*****************************************************************************/ +#define PFX "ec_mini: " -static struct timer_list timer; +/*****************************************************************************/ // EtherCAT static ec_master_t *master = NULL; @@ -58,6 +58,27 @@ spinlock_t master_lock = SPIN_LOCK_UNLOCKED; static ec_domain_t *domain1 = NULL; static ec_domain_state_t domain1_state = {}; +static struct timer_list timer; +static unsigned int counter = 0; + +/*****************************************************************************/ + +// process data +static uint8_t *domain1_pd; // process data memory + +static unsigned int off_ana_in; // offsets for Pdo entries +static unsigned int off_dig_out; + +static unsigned int blink = 0; + +const static ec_pdo_entry_reg_t domain1_regs[] = { + {0, 1, Beckhoff_EL3162, 0x3101, 2, &off_ana_in}, + {0, 3, Beckhoff_EL2004, 0x3001, 1, &off_dig_out}, + {} +}; + +/*****************************************************************************/ + #ifdef CONFIGURE_MAPPING const ec_pdo_entry_info_t el3162_channel1[] = { {0x3101, 1, 8}, // status @@ -89,16 +110,6 @@ const ec_pdo_info_t el2004_mapping[] = { }; #endif -static uint8_t *pd; /**< Process data. */ -static unsigned int off_ana_in; -static unsigned int off_dig_out; - -const static ec_pdo_entry_reg_t domain1_regs[] = { - {0, 1, Beckhoff_EL3162, 0x3101, 2, &off_ana_in}, - {0, 3, Beckhoff_EL2004, 0x3001, 1, &off_dig_out}, - {} -}; - /*****************************************************************************/ void check_domain1_state(void) @@ -144,11 +155,8 @@ void check_master_state(void) /*****************************************************************************/ -void run(unsigned long data) +void cyclic_task(unsigned long data) { - static unsigned int counter = 0; - static unsigned int blink = 0; - // receive process data spin_lock(&master_lock); ecrt_master_receive(master); @@ -171,7 +179,7 @@ void run(unsigned long data) } // write process data - EC_WRITE_U8(pd + off_dig_out, blink ? 0x0F : 0x00); + EC_WRITE_U8(domain1_pd + off_dig_out, blink ? 0x0F : 0x00); // send process data spin_lock(&master_lock); @@ -256,12 +264,12 @@ int __init init_mini_module(void) #ifdef EXTERNAL_MEMORY if ((size = ecrt_domain_size(domain1))) { - if (!(pd = (uint8_t *) kmalloc(size, GFP_KERNEL))) { + if (!(domain1_pd = (uint8_t *) kmalloc(size, GFP_KERNEL))) { printk(KERN_ERR PFX "Failed to allocate %u bytes of process data" " memory!\n", size); goto out_release_master; } - ecrt_domain_external_memory(domain1, pd); + ecrt_domain_external_memory(domain1, domain1_pd); } #endif @@ -277,12 +285,12 @@ int __init init_mini_module(void) #ifndef EXTERNAL_MEMORY // Get internal process data for domain - pd = ecrt_domain_data(domain1); + domain1_pd = ecrt_domain_data(domain1); #endif printk(KERN_INFO PFX "Starting cyclic sample thread.\n"); init_timer(&timer); - timer.function = run; + timer.function = cyclic_task; timer.expires = jiffies + 10; add_timer(&timer); @@ -291,7 +299,7 @@ int __init init_mini_module(void) #ifdef EXTERNAL_MEMORY out_free_process_data: - kfree(pd); + kfree(domain1_pd); #endif out_release_master: printk(KERN_ERR PFX "Releasing master...\n"); @@ -310,7 +318,7 @@ void __exit cleanup_mini_module(void) del_timer_sync(&timer); #ifdef EXTERNAL_MEMORY - kfree(pd); + kfree(domain1_pd); #endif printk(KERN_INFO PFX "Releasing master...\n"); -- GitLab