Command all jmCLIG modules from serial port

main.cpp

Committer:
jm
Date:
2011-02-12
Revision:
0:9112e09912db

File content as of revision 0:9112e09912db:

/*************************************************************************
 * @file         main.cpp
 *                  
 * @version      1.0
 * @date         Feb 12, 2011
*/

#include "mbed.h"

// Basic includes
#include "jmInterpreter.h"
#include "jmRingBuffer.h"
#include "jmCommands.h"
#include "jmMessages.h"
#include "LPC17xx.h"


LPC_GPIO_TypeDef *jmGPIO[5] ={LPC_GPIO0,LPC_GPIO1,LPC_GPIO2,LPC_GPIO3,LPC_GPIO4};

// CLIG-INCLUDE
#include "jmLPC17xx_gpio.h"
#include "jmMotor.h"
#include "jmPulse.h"
#include "jmStepper.h"
#include "jmStepperAxis.h"
#include "jmSwitch.h"


// Initializations
void Inits(){
   InitCommandLineRingBuffer();
   InitMessages();
   cli_version();

   // CLIG-INIT
   MotorInit();
   PulseInit();
   StepperInit();
   StepperAxisInit();
   SwitchModuleReset();   

}

// EggTimer tickers for modules
void eggTimers(){
   int i;
   // CLIG-TIMER
   // Module jmMotor
   for(i=0;i<motorQty;i++)if(sMotor[i].eggTimer>0)sMotor[i].eggTimer--;
   // Module jmPulse
   for(i=0;i<pulseQty;i++)if(sPulse[i].eggTimer>0)sPulse[i].eggTimer--;
   // Module jmStepper
   for(i=0;i<stepperQty;i++)if(sStepper[i].eggTimer>0)sStepper[i].eggTimer--;
   // Module jmSwitch
   for(i=0;i<switchQty;i++)if(sSwitch[i].eggTimer>0)sSwitch[i].eggTimer--;

}

int main() {
   unsigned char c;
   Serial pc(USBTX, USBRX);          // communication medium
   pc.baud(115200);                  // 115200 bauds, 8bits, 1 stop, no control flow
   Ticker tick;                      // enable system ticks
   tick.attach_us(&eggTimers,1000);  // enable and select granularity for egg timers
   Inits();                          // initialization

   while(true){
     if( pc.readable()){             // something to read ?
        c= pc.getc();                // read one char   

        if(Echo) printf("%c",c);     // echo it ?

        switch(c){                   // process it

          case  8 : DelChar(pLine);  // remove last one
                    break;
          case 10 : Insert(c,pLine); // end of line
                         Interpret();// process line 
                    break;
          default : Insert(c,pLine); // insert char in command line buffer
        }
     } // if

     // CLIG-SM
     MotorSM();
     PulseSM();
     StepperSM();
     StepperAxisSM();
     SwitchEdgeDetect();


   }// while
}// main