Tim Exton-McGuinness
/
round-robin-rtos
Round robin Scheduler
user.c@0:cf2d4c337b6f, 2010-09-09 (annotated)
- Committer:
- timexton
- Date:
- Thu Sep 09 14:09:14 2010 +0000
- Revision:
- 0:cf2d4c337b6f
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
timexton | 0:cf2d4c337b6f | 1 | #include "globals.h" |
timexton | 0:cf2d4c337b6f | 2 | |
timexton | 0:cf2d4c337b6f | 3 | extern "C" void sleep(void); |
timexton | 0:cf2d4c337b6f | 4 | extern "C" void serial_rx_isr(void); |
timexton | 0:cf2d4c337b6f | 5 | extern "C" void display_screen( void ); |
timexton | 0:cf2d4c337b6f | 6 | extern "C" void update_data( void ); |
timexton | 0:cf2d4c337b6f | 7 | extern "C" void readln( char *); |
timexton | 0:cf2d4c337b6f | 8 | extern "C" void parse( char * ); |
timexton | 0:cf2d4c337b6f | 9 | extern "C" int peekchar( void ); |
timexton | 0:cf2d4c337b6f | 10 | extern "C" int get_char( void ); |
timexton | 0:cf2d4c337b6f | 11 | extern "C" void crlf( void ); |
timexton | 0:cf2d4c337b6f | 12 | extern "C" void sleepy_write( char *); |
timexton | 0:cf2d4c337b6f | 13 | |
timexton | 0:cf2d4c337b6f | 14 | extern Serial Terminal; |
timexton | 0:cf2d4c337b6f | 15 | |
timexton | 0:cf2d4c337b6f | 16 | |
timexton | 0:cf2d4c337b6f | 17 | //---------------------------------------------------------------------- |
timexton | 0:cf2d4c337b6f | 18 | extern "C" { |
timexton | 0:cf2d4c337b6f | 19 | |
timexton | 0:cf2d4c337b6f | 20 | void lredo_screen( void ) |
timexton | 0:cf2d4c337b6f | 21 | { |
timexton | 0:cf2d4c337b6f | 22 | redraw = 1; |
timexton | 0:cf2d4c337b6f | 23 | } |
timexton | 0:cf2d4c337b6f | 24 | }//end of extern "C" |
timexton | 0:cf2d4c337b6f | 25 | |
timexton | 0:cf2d4c337b6f | 26 | |
timexton | 0:cf2d4c337b6f | 27 | //---------------------------------------------------------------------- |
timexton | 0:cf2d4c337b6f | 28 | extern "C" { |
timexton | 0:cf2d4c337b6f | 29 | |
timexton | 0:cf2d4c337b6f | 30 | void cli( char **options, void (*routines[])( void ) ) |
timexton | 0:cf2d4c337b6f | 31 | { |
timexton | 0:cf2d4c337b6f | 32 | int i; |
timexton | 0:cf2d4c337b6f | 33 | |
timexton | 0:cf2d4c337b6f | 34 | if ( strlen( *argv ) == 0 ) return; |
timexton | 0:cf2d4c337b6f | 35 | |
timexton | 0:cf2d4c337b6f | 36 | i = 0; |
timexton | 0:cf2d4c337b6f | 37 | while( *options ) |
timexton | 0:cf2d4c337b6f | 38 | { |
timexton | 0:cf2d4c337b6f | 39 | if ( strcmp( *argv, *options++ ) == 0 ) |
timexton | 0:cf2d4c337b6f | 40 | { |
timexton | 0:cf2d4c337b6f | 41 | routines[i](); |
timexton | 0:cf2d4c337b6f | 42 | redraw = 1; |
timexton | 0:cf2d4c337b6f | 43 | return; |
timexton | 0:cf2d4c337b6f | 44 | } |
timexton | 0:cf2d4c337b6f | 45 | i++; |
timexton | 0:cf2d4c337b6f | 46 | } |
timexton | 0:cf2d4c337b6f | 47 | } |
timexton | 0:cf2d4c337b6f | 48 | }//end of extern "C" |
timexton | 0:cf2d4c337b6f | 49 | |
timexton | 0:cf2d4c337b6f | 50 | //---------------------------------------------------------------------- |
timexton | 0:cf2d4c337b6f | 51 | char *main_options[] = |
timexton | 0:cf2d4c337b6f | 52 | { |
timexton | 0:cf2d4c337b6f | 53 | "j", |
timexton | 0:cf2d4c337b6f | 54 | 0 |
timexton | 0:cf2d4c337b6f | 55 | }; |
timexton | 0:cf2d4c337b6f | 56 | |
timexton | 0:cf2d4c337b6f | 57 | void (*main_routines[])( void ) = |
timexton | 0:cf2d4c337b6f | 58 | { |
timexton | 0:cf2d4c337b6f | 59 | lredo_screen, |
timexton | 0:cf2d4c337b6f | 60 | 0 |
timexton | 0:cf2d4c337b6f | 61 | }; |
timexton | 0:cf2d4c337b6f | 62 | |
timexton | 0:cf2d4c337b6f | 63 | //-------------------------------------------- |
timexton | 0:cf2d4c337b6f | 64 | extern "C" { |
timexton | 0:cf2d4c337b6f | 65 | |
timexton | 0:cf2d4c337b6f | 66 | void user( void) |
timexton | 0:cf2d4c337b6f | 67 | { |
timexton | 0:cf2d4c337b6f | 68 | |
timexton | 0:cf2d4c337b6f | 69 | Terminal.attach( serial_rx_isr, Serial::RxIrq ); |
timexton | 0:cf2d4c337b6f | 70 | |
timexton | 0:cf2d4c337b6f | 71 | redraw = TRUE; |
timexton | 0:cf2d4c337b6f | 72 | while(1) |
timexton | 0:cf2d4c337b6f | 73 | { |
timexton | 0:cf2d4c337b6f | 74 | if ( redraw ) display_screen(); |
timexton | 0:cf2d4c337b6f | 75 | update_data(); |
timexton | 0:cf2d4c337b6f | 76 | readln( rxline ); |
timexton | 0:cf2d4c337b6f | 77 | parse( rxline ); |
timexton | 0:cf2d4c337b6f | 78 | cli( main_options, main_routines); |
timexton | 0:cf2d4c337b6f | 79 | } |
timexton | 0:cf2d4c337b6f | 80 | |
timexton | 0:cf2d4c337b6f | 81 | } |
timexton | 0:cf2d4c337b6f | 82 | |
timexton | 0:cf2d4c337b6f | 83 | }//end of extern "C" |