Search Code
About round-robin-rtos

Published 09 Sep 2010.

Last change message: N/A

Import this program

round-robin-rtos

Published 09 Sep 2010, by   user Tim Exton-McGuinness   tag No tags
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers user.c Source File

user.c

00001 #include "globals.h"
00002 
00003 extern "C" void sleep(void);
00004 extern "C" void serial_rx_isr(void);
00005 extern "C" void display_screen( void );
00006 extern "C" void update_data( void );
00007 extern "C" void readln( char *);
00008 extern "C" void parse( char * );
00009 extern "C" int peekchar( void );
00010 extern "C" int get_char( void );
00011 extern "C" void crlf( void );
00012 extern "C" void sleepy_write( char *);
00013 
00014 extern Serial Terminal;
00015 
00016 
00017 //----------------------------------------------------------------------
00018 extern "C" {
00019 
00020 void lredo_screen( void )
00021 {
00022   redraw = 1;
00023 }
00024 }//end of extern "C"
00025 
00026 
00027 //----------------------------------------------------------------------
00028 extern "C" {
00029 
00030 void cli( char **options, void (*routines[])( void ) ) 
00031   {
00032     int i;
00033    
00034     if ( strlen( *argv ) == 0 ) return;
00035     
00036     i = 0;
00037     while( *options )
00038       {
00039         if ( strcmp( *argv, *options++ ) == 0 )
00040           {
00041             routines[i]();
00042             redraw = 1;
00043             return;
00044           }
00045         i++;
00046       }
00047   }
00048 }//end of extern "C"
00049 
00050 //----------------------------------------------------------------------
00051 char *main_options[] =
00052   {
00053     "j",
00054    0
00055   };
00056   
00057 void (*main_routines[])( void ) = 
00058   {
00059     lredo_screen,
00060     0
00061   };
00062   
00063 //--------------------------------------------
00064 extern "C" {
00065 
00066 void user( void)
00067 {
00068     
00069     Terminal.attach( serial_rx_isr, Serial::RxIrq );
00070     
00071     redraw = TRUE;
00072     while(1)
00073      {
00074       if ( redraw ) display_screen();
00075       update_data();
00076       readln( rxline );
00077       parse( rxline );
00078       cli( main_options, main_routines);
00079      }
00080   
00081 }
00082 
00083 }//end of extern "C"