Round robin Scheduler

Dependencies:   mbed

Committer:
timexton
Date:
Thu Sep 09 14:09:14 2010 +0000
Revision:
0:cf2d4c337b6f

        

Who changed what in which revision?

UserRevisionLine numberNew 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"