Round robin Scheduler

Dependencies:   mbed

user.c

Committer:
timexton
Date:
2010-09-09
Revision:
0:cf2d4c337b6f

File content as of revision 0:cf2d4c337b6f:

#include "globals.h"

extern "C" void sleep(void);
extern "C" void serial_rx_isr(void);
extern "C" void display_screen( void );
extern "C" void update_data( void );
extern "C" void readln( char *);
extern "C" void parse( char * );
extern "C" int peekchar( void );
extern "C" int get_char( void );
extern "C" void crlf( void );
extern "C" void sleepy_write( char *);

extern Serial Terminal;


//----------------------------------------------------------------------
extern "C" {

void lredo_screen( void )
{
  redraw = 1;
}
}//end of extern "C"


//----------------------------------------------------------------------
extern "C" {

void cli( char **options, void (*routines[])( void ) ) 
  {
    int i;
   
    if ( strlen( *argv ) == 0 ) return;
    
    i = 0;
    while( *options )
      {
        if ( strcmp( *argv, *options++ ) == 0 )
          {
            routines[i]();
            redraw = 1;
            return;
          }
        i++;
      }
  }
}//end of extern "C"

//----------------------------------------------------------------------
char *main_options[] =
  {
    "j",
   0
  };
  
void (*main_routines[])( void ) = 
  {
    lredo_screen,
    0
  };
  
//--------------------------------------------
extern "C" {

void user( void)
{
    
    Terminal.attach( serial_rx_isr, Serial::RxIrq );
    
    redraw = TRUE;
    while(1)
     {
      if ( redraw ) display_screen();
      update_data();
      readln( rxline );
      parse( rxline );
      cli( main_options, main_routines);
     }
  
}

}//end of extern "C"