Read up to 8 debounced switches from serial port

Dependencies:   mbed

Committer:
jm
Date:
Sat Feb 12 16:46:49 2011 +0000
Revision:
0:f3a5f6fe1c03
jmSwitch Command Line Interface Module

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jm 0:f3a5f6fe1c03 1 /*************************************************************************
jm 0:f3a5f6fe1c03 2 * @file main.cpp
jm 0:f3a5f6fe1c03 3 *
jm 0:f3a5f6fe1c03 4 * @version 1.0
jm 0:f3a5f6fe1c03 5 * @date Feb 12, 2011
jm 0:f3a5f6fe1c03 6 */
jm 0:f3a5f6fe1c03 7
jm 0:f3a5f6fe1c03 8 #include "mbed.h"
jm 0:f3a5f6fe1c03 9
jm 0:f3a5f6fe1c03 10 // Basic includes
jm 0:f3a5f6fe1c03 11 #include "jmInterpreter.h"
jm 0:f3a5f6fe1c03 12 #include "jmRingBuffer.h"
jm 0:f3a5f6fe1c03 13 #include "jmCommands.h"
jm 0:f3a5f6fe1c03 14 #include "jmMessages.h"
jm 0:f3a5f6fe1c03 15 #include "LPC17xx.h"
jm 0:f3a5f6fe1c03 16
jm 0:f3a5f6fe1c03 17
jm 0:f3a5f6fe1c03 18 LPC_GPIO_TypeDef *jmGPIO[5] ={LPC_GPIO0,LPC_GPIO1,LPC_GPIO2,LPC_GPIO3,LPC_GPIO4};
jm 0:f3a5f6fe1c03 19
jm 0:f3a5f6fe1c03 20 // CLIG-INCLUDE
jm 0:f3a5f6fe1c03 21 #include "jmSwitch.h"
jm 0:f3a5f6fe1c03 22
jm 0:f3a5f6fe1c03 23
jm 0:f3a5f6fe1c03 24 // Initializations
jm 0:f3a5f6fe1c03 25 void Inits(){
jm 0:f3a5f6fe1c03 26 InitCommandLineRingBuffer();
jm 0:f3a5f6fe1c03 27 InitMessages();
jm 0:f3a5f6fe1c03 28 cli_version();
jm 0:f3a5f6fe1c03 29
jm 0:f3a5f6fe1c03 30 // CLIG-INIT
jm 0:f3a5f6fe1c03 31 SwitchModuleReset();
jm 0:f3a5f6fe1c03 32
jm 0:f3a5f6fe1c03 33 }
jm 0:f3a5f6fe1c03 34
jm 0:f3a5f6fe1c03 35 // EggTimer tickers for modules
jm 0:f3a5f6fe1c03 36 void eggTimers(){
jm 0:f3a5f6fe1c03 37 int i;
jm 0:f3a5f6fe1c03 38 // CLIG-TIMER
jm 0:f3a5f6fe1c03 39 // Module jmSwitch
jm 0:f3a5f6fe1c03 40 for(i=0;i<switchQty;i++)if(sSwitch[i].eggTimer>0)sSwitch[i].eggTimer--;
jm 0:f3a5f6fe1c03 41
jm 0:f3a5f6fe1c03 42 }
jm 0:f3a5f6fe1c03 43
jm 0:f3a5f6fe1c03 44 int main() {
jm 0:f3a5f6fe1c03 45 unsigned char c;
jm 0:f3a5f6fe1c03 46 Serial pc(USBTX, USBRX); // communication medium
jm 0:f3a5f6fe1c03 47 pc.baud(115200); // 115200 bauds, 8bits, 1 stop, no control flow
jm 0:f3a5f6fe1c03 48 Ticker tick; // enable system ticks
jm 0:f3a5f6fe1c03 49 tick.attach_us(&eggTimers,1000); // enable and select granularity for egg timers
jm 0:f3a5f6fe1c03 50 Inits(); // initialization
jm 0:f3a5f6fe1c03 51
jm 0:f3a5f6fe1c03 52 while(true){
jm 0:f3a5f6fe1c03 53 if( pc.readable()){ // something to read ?
jm 0:f3a5f6fe1c03 54 c= pc.getc(); // read one char
jm 0:f3a5f6fe1c03 55
jm 0:f3a5f6fe1c03 56 if(Echo) printf("%c",c); // echo it ?
jm 0:f3a5f6fe1c03 57
jm 0:f3a5f6fe1c03 58 switch(c){ // process it
jm 0:f3a5f6fe1c03 59
jm 0:f3a5f6fe1c03 60 case 8 : DelChar(pLine); // remove last one
jm 0:f3a5f6fe1c03 61 break;
jm 0:f3a5f6fe1c03 62 case 10 : Insert(c,pLine); // end of line
jm 0:f3a5f6fe1c03 63 Interpret();// process line
jm 0:f3a5f6fe1c03 64 break;
jm 0:f3a5f6fe1c03 65 default : Insert(c,pLine); // insert char in command line buffer
jm 0:f3a5f6fe1c03 66 }
jm 0:f3a5f6fe1c03 67 } // if
jm 0:f3a5f6fe1c03 68
jm 0:f3a5f6fe1c03 69 // CLIG-SM
jm 0:f3a5f6fe1c03 70 SwitchEdgeDetect();
jm 0:f3a5f6fe1c03 71
jm 0:f3a5f6fe1c03 72
jm 0:f3a5f6fe1c03 73 }// while
jm 0:f3a5f6fe1c03 74 }// main
jm 0:f3a5f6fe1c03 75
jm 0:f3a5f6fe1c03 76
jm 0:f3a5f6fe1c03 77