diff -r ed834aa98f89 -r 6e9de6fbf74c rt/msr_module.c --- a/rt/msr_module.c Fri Dec 16 15:23:56 2005 +0000 +++ b/rt/msr_module.c Fri Dec 16 15:25:13 2005 +0000 @@ -31,7 +31,7 @@ * *** empty log message *** * * -* +* Hello Emacs: -*- c-basic-offset: 2; -*- * **************************************************************************************************/ @@ -163,7 +163,8 @@ ECAT_INIT_SLAVE(Beckhoff_EL4102), ECAT_INIT_SLAVE(Beckhoff_EL4102), ECAT_INIT_SLAVE(Beckhoff_EL4102), - ECAT_INIT_SLAVE(Beckhoff_EL4102) + ECAT_INIT_SLAVE(Beckhoff_EL4102), + ECAT_INIT_SLAVE(Beckhoff_EL4132) #endif @@ -294,8 +295,8 @@ * * Parameter: Zeiger auf msr_data * -* Rckgabe: -* +* Rckgabe: +* * Status: exp * *************************************************************************************************** @@ -305,10 +306,10 @@ void msr_run(unsigned irq) { - static int counter = 0; -#ifdef USE_MSR_LIB - - timeval_add(&process_time,&process_time,&msr_time_increment); + static int counter = 0; +#ifdef USE_MSR_LIB + + timeval_add(&process_time,&process_time,&msr_time_increment); MSR_ADEOS_INTERRUPT_CODE( msr_controller_run(); @@ -318,7 +319,7 @@ msr_controller_run(); #endif /* und wieder in die Timerliste eintragen */ - /* und neu in die Taskqueue eintragen */ + /* und neu in die Taskqueue eintragen */ // timer.expires += 1; // add_timer(&timer); @@ -382,52 +383,42 @@ int __init init_module() { - int result = 0; - struct ipipe_domain_attr attr; //ipipe - //als allererstes die RT-lib initialisieren -#ifdef USE_MSR_LIB - result = msr_rtlib_init(1,MSR_ABTASTFREQUENZ,10,&msr_globals_register); - - if (result < 0) { + // Als allererstes die RT-lib initialisieren +#ifdef USE_MSR_LIB + if (msr_rtlib_init(1,MSR_ABTASTFREQUENZ,10,&msr_globals_register) < 0) { msr_print_warn("msr_modul: can't initialize rtlib!"); - return result; + goto out_return; } #endif msr_jitter_init(); - printk(KERN_INFO "=== Starting EtherCAT environment... ===\n"); - - if ((ecat_master = EtherCAT_request(0)) == NULL) - { - printk(KERN_ERR "EtherCAT master 0 not available!\n"); - msr_rtlib_cleanup(); - return -1; - } - - printk("Checking EtherCAT slaves.\n"); - - if (EtherCAT_check_slaves(ecat_master, ecat_slaves, ECAT_SLAVES_COUNT) != 0) - { - printk(KERN_ERR "EtherCAT: Could not init slaves!\n"); - msr_rtlib_cleanup(); - return -1; - } - - printk("Activating all EtherCAT slaves.\n"); - - if (EtherCAT_activate_all_slaves(ecat_master) != 0) - { - printk(KERN_ERR "EtherCAT: Could not activate slaves!\n"); - msr_rtlib_cleanup(); - return -1; - } - - - do_gettimeofday(&process_time); - msr_time_increment.tv_sec=0; - msr_time_increment.tv_usec=(unsigned int)(1000000/MSR_ABTASTFREQUENZ); + + printk(KERN_INFO "=== Starting EtherCAT environment... ===\n"); + + if ((ecat_master = EtherCAT_request(0)) == NULL) { + printk(KERN_ERR "EtherCAT master 0 not available!\n"); + goto out_msr_cleanup; + } + + printk("Checking EtherCAT slaves.\n"); + + if (EtherCAT_check_slaves(ecat_master, ecat_slaves, ECAT_SLAVES_COUNT) != 0) { + printk(KERN_ERR "EtherCAT: Could not init slaves!\n"); + goto out_release_master; + } + + printk("Activating all EtherCAT slaves.\n"); + + if (EtherCAT_activate_all_slaves(ecat_master) != 0) { + printk(KERN_ERR "EtherCAT: Could not activate slaves!\n"); + goto out_release_master; + } + + do_gettimeofday(&process_time); + msr_time_increment.tv_sec=0; + msr_time_increment.tv_usec=(unsigned int)(1000000/MSR_ABTASTFREQUENZ); ipipe_init_attr (&attr); attr.name = "IPIPE-MSR-MODULE"; @@ -435,16 +426,16 @@ attr.entry = &domain_entry; ipipe_register_domain(&this_domain,&attr); - //den Timertakt -/* - init_timer(&timer); - - timer.function = msr_run; - timer.data = 0; - timer.expires = jiffies+10; // Das erste Mal sofort feuern - add_timer(&timer); -*/ - return 0; /* succeed */ + return 0; + + out_release_master: + EtherCAT_release(ecat_master); + + out_msr_cleanup: + msr_rtlib_cleanup(); + + out_return: + return -1; } @@ -454,30 +445,23 @@ { msr_print_info("msk_modul: unloading..."); - -// del_timer_sync(&timer); ipipe_tune_timer(1000000000UL/HZ,0); //alten Timertakt wieder herstellen - ipipe_unregister_domain(&this_domain); - - printk(KERN_INFO "=== Stopping EtherCAT environment... ===\n"); if (ecat_master) { - EtherCAT_clear_process_data(ecat_master); - printk(KERN_INFO "Deactivating slaves.\n"); - EtherCAT_deactivate_all_slaves(ecat_master); - - EtherCAT_release(ecat_master); + EtherCAT_clear_process_data(ecat_master); + printk(KERN_INFO "Deactivating slaves.\n"); + EtherCAT_deactivate_all_slaves(ecat_master); + EtherCAT_release(ecat_master); } printk(KERN_INFO "=== EtherCAT environment stopped. ===\n"); -// msr_controller_cleanup(); -#ifdef USE_MSR_LIB - msr_rtlib_cleanup(); +#ifdef USE_MSR_LIB + msr_rtlib_cleanup(); #endif } @@ -487,19 +471,19 @@ module_init(init_module); module_exit(cleanup_module); - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + +