diff options
Diffstat (limited to 'led/timer/init.c')
-rw-r--r-- | led/timer/init.c | 58 |
1 files changed, 25 insertions, 33 deletions
diff --git a/led/timer/init.c b/led/timer/init.c index ec38ea6..f61bd97 100644 --- a/led/timer/init.c +++ b/led/timer/init.c @@ -1,5 +1,5 @@ /* - * COPYRIGHT (c) 1989-2007. + * COPYRIGHT (c) 1989-2009. * On-Line Applications Research Corporation (OAR). * * The license and distribution terms for this file may be @@ -14,30 +14,38 @@ #include "../led.h" -rtems_id Timer1; -rtems_id Timer2; - -#if defined(__LED_PRINTING) volatile int led_do_print; volatile int led_value; -#endif +rtems_id Timer1; +rtems_id Timer2; + +void LED_Change_Routine( void ) { + int _led_do_print; + int _led_value; + + /* technically the following 4 statements are a critical section */ + _led_do_print = led_do_print; + _led_value = led_value; + led_do_print = 0; + led_value = 0; + + if ( _led_do_print ) { + if ( _led_value == 1 ) + LED_OFF(); + else + LED_ON(); + } +} rtems_timer_service_routine Timer_Routine( rtems_id id, void *ignored ) { rtems_status_code status; -#if defined(__LED_PRINTING) if ( id == Timer1 ) led_value = 1; else - led_value = 0; + led_value = 2; led_do_print = 1; -#else - if ( id == Timer1 ) - LED_ON(); - else - LED_OFF(); -#endif status = rtems_timer_fire_after( id, @@ -66,33 +74,17 @@ rtems_task Init( fputs( "Timer2 create failed\n", stderr ); Timer_Routine(Timer1, NULL); + LED_Change_Routine(); status = rtems_task_wake_after( rtems_clock_get_ticks_per_second() ); Timer_Routine(Timer2, NULL); + LED_Change_Routine(); -#if defined(__LED_PRINTING) while (1) { - int _led_do_print; - int _led_value; - status = rtems_task_wake_after( 10 ); - - /* technically the following 4 statements are a critical section */ - _led_do_print = led_do_print; - _led_value = led_value; - led_do_print = 0; - led_value = 0; - - if ( _led_do_print ) { - if ( _led_value ) - LED_ON(); - else - LED_OFF(); - - } + LED_Change_Routine(); } -#endif status = rtems_task_delete( RTEMS_SELF ); } |