xrocusOS_ADXL355 version
Dependencies: mbed SDFileSystem
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 }
Generated on Sun Jul 17 2022 15:09:45 by 1.7.2