xrocusOS_ADXL355 version

Dependencies:   mbed SDFileSystem

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 /** --- Includes --- */
00002 #include "mbed.h"
00003 #include "SDFileSystem.h"
00004 #include "TimeManager.h"
00005 #include "UartReceiver.h"
00006 #include "CommandParser.h"
00007 #include "SDDataStore.h"
00008 #include "global.h"
00009 #include "string.h"
00010 #include "DeviceRepeater.h"
00011 #include "Adxl355Drv.h"
00012 
00013 /** --- Global Variables --- */
00014 Serial uartStream(SERIAL_TX, SERIAL_RX);
00015 bool uartOn = true;
00016 #ifdef _DEBUG_PRINTF_
00017 Serial dbg(PC_4, PC_5); /* Serial3_TX, Serial3_RX*/
00018 #endif /* _DEBUG_PRINTF_ */
00019 
00020 /** --- prototypes --- */
00021 static void mainloop(void);
00022 
00023 /** --- main --- */
00024 int main()
00025 {
00026     int deviceId = 0; 
00027     
00028     /** UART Initalizer */
00029     /* setup UART 115200, 8bit, Parity=None, stopbit:1bit  */
00030     /* https://os.mbed.com/users/okini3939/notebook/Serial_jp/ */
00031     uartStream.baud(115200);
00032     uartStream.format(8, Serial::None, 1);
00033 #ifdef _DEBUG_PRINTF_
00034     /** UART Initalizer */
00035     /* setup UART 115200, 8bit, Parity=None, stopbit:1bit  */
00036     /* https://os.mbed.com/users/okini3939/notebook/Serial_jp/ */
00037     dbg.baud(115200);
00038     dbg.format(8, Serial::None, 1);
00039 #endif /* _DEBUG_PRINTF_ */        
00040     dbgprintf("start debug console as 115200,8b,1\n");
00041     
00042     /* new timer manager */
00043     pTM = new TimeManager();
00044     /* Generate SDDataStore */
00045     pSds = new SDDataStore(pTM);
00046     /* Receive Buffer Control */
00047     pUR = new UartReceiver(&uartStream);
00048     
00049     /* create Device */
00050     pDevRept = new DeviceRepeater(deviceId, &Adxl372Simple);
00051 
00052     /* Generate Command parser as DeviceID = 0, ParsingRule = rules */
00053     pCP = new CommandParser(pUR, deviceId, rules, getNumOfRules);
00054     pCP->run();
00055         
00056     uprintf(":%d ACK 0004 0000\n", deviceId);
00057     uprintf(":%d WAK 0004 0000\n", deviceId);
00058     dbgprintf("start mainloop\n");
00059     mainloop();    
00060 }
00061 
00062 /****************************************************/
00063 /* MainLoop (for User Button handling) */
00064 /****************************************************/
00065 static void mainloop(void)
00066 {
00067     typedef enum e_offline_mode {
00068         OFFLINE_MODE_READY,
00069         OFFLINE_MODE_RUN,
00070         OFFLINE_MODE_END,
00071     } OfflineMode;
00072     
00073     DigitalOut myled(PB_7);
00074     DigitalOut ledY(PC_2);
00075     DigitalOut ledG(PC_3);
00076 
00077     DigitalIn btn(USER_BUTTON);
00078     OfflineMode state = OFFLINE_MODE_READY;
00079     int blinky = 0;
00080     myled = blinky;
00081     ledG = blinky;
00082     ledY = 0;
00083 
00084     while(1) {
00085         switch(state) {
00086         case OFFLINE_MODE_READY:
00087             myled = blinky;
00088             ledG = blinky;
00089 
00090             if (btn == 0) {
00091                 uartOn = false;
00092                 pCP->parse(":0 RRP 0010");
00093                 pCP->parse(":0 RMC 001s");
00094                 pCP->parse(":0 SDS 0000");
00095                 pCP->parse(":0 CRS 0000");
00096                 state = OFFLINE_MODE_RUN;
00097             }
00098             wait(0.2);
00099             break;        
00100         case OFFLINE_MODE_RUN:
00101             myled = blinky;
00102             ledG = blinky;
00103 
00104             if (pCP->parse(":0 CPS 0000") == 0) {
00105                 pCP->parse(":0 SDE 0000");
00106                 state = OFFLINE_MODE_END;
00107             }
00108             wait(1);
00109             break;
00110         case OFFLINE_MODE_END:
00111         default:
00112             myled = 1;
00113             ledG = 1;
00114 
00115             wait(5);
00116             break;
00117         }
00118         blinky = !blinky;
00119     }
00120 
00121 }