xrocusOS_ADXL355 version

Dependencies:   mbed SDFileSystem

Revision:
12:a45a9c65dc03
Parent:
10:db2be22bc2f9
Child:
13:7cda5bef6390
--- a/main.cpp	Sat May 18 03:45:38 2019 +0000
+++ b/main.cpp	Wed May 22 09:10:18 2019 +0000
@@ -11,75 +11,14 @@
 #include "DummyDevice.h"
 
 /** --- Global Variables --- */
-Serial pc(SERIAL_TX, SERIAL_RX);
-DigitalOut myled(LED1);
-
-static SPI myspi(SPI_MOSI, SPI_MISO, SPI_SCK); /* D13, D12, D11 */
-static DigitalOut mycs(SPI_CS);   /* D10   */
-static DigitalIn int1(D7);      /* D7/D6 */
-static DigitalIn int2(D5);      /* D5/D4 */
-
-#define SPI_RD  (1)
-#define SPI_WR  (0)
-#define SPI_EMPTY_SEND  (0x00)
-
-static void test()
-{
-#if 0   
-    int devSpiId;
-    int devid_ad;
-    int devid_mst;
-    int devid_part;
-    int devid_rev;
-    
-    pc.printf("#debug start\n");
+Serial uartStream(SERIAL_TX, SERIAL_RX);
 
-    /** Init SPI for ADXL372 
-     * CPHA = CPOL = 0, 1MHz(max.10MHz))
-     * CS = inactive 
-     */
-    myspi.format(8,0);
-    myspi.frequency(1000000);
-    mycs = 1;
-    
-    pc.printf("#init spi\n");
-    
-    /* Get DeviceID from SPI */
-    mycs = 0;
-    pc.printf("#spi CS=ACT\n");
-
-    myspi.write(0x00 << 1 | SPI_RD);
-    pc.printf("#spi REG Write\n");
-
-    devid_ad = myspi.write(SPI_EMPTY_SEND);
-    pc.printf("#spi REG Read\n");
-
-    mycs = 1;
-    pc.printf("#spi CS=DAC\n");
+#ifdef _DEBUG_PRINTF_
+Serial dbg(PC_4, PC_5); /* Serial3_TX, Serial3_RX*/
+#endif /* _DEBUG_PRINTF_ */
 
-    mycs = 0;
-    myspi.write(0x01 << 1 | SPI_RD);
-    devid_mst = myspi.write(SPI_EMPTY_SEND);
-    mycs = 1;
-
-    mycs = 0;
-    myspi.write(0x02 << 1 | SPI_RD);
-    devid_part = myspi.write(SPI_EMPTY_SEND);
-    mycs = 1;
-    
-    mycs = 0;
-    myspi.write(0x03 << 1 | SPI_RD);
-    devid_rev = myspi.write(SPI_EMPTY_SEND);
-    mycs = 1;
-        
-    devSpiId = (devid_ad    << 0) 
-            | (devid_mst    << 8) 
-            | (devid_part   << 16)
-            | (devid_rev    << 24);
-
-    pc.printf("#fini spi=0x%x\n", devSpiId);
-#endif
-}
+/** --- prototypes --- */
+static void mainloop(void);
 
 /** --- main --- */
 int main()
@@ -89,17 +28,23 @@
     /** UART Initalizer */
     /* setup UART 115200, 8bit, Parity=None, stopbit:1bit  */
     /* https://os.mbed.com/users/okini3939/notebook/Serial_jp/ */
-    pc.baud(115200);
-    pc.format(8, Serial::None, 1);
+    uartStream.baud(115200);
+    uartStream.format(8, Serial::None, 1);
+#ifdef _DEBUG_PRINTF_
+    /** UART Initalizer */
+    /* setup UART 115200, 8bit, Parity=None, stopbit:1bit  */
+    /* https://os.mbed.com/users/okini3939/notebook/Serial_jp/ */
+    dbg.baud(115200);
+    dbg.format(8, Serial::None, 1);
+#endif /* _DEBUG_PRINTF_ */        
+    dbgprintf("start debug console as 115200,8b,1\n");
     
-    test();
-        
     /* new timer manager */
     pTM = new TimeManager();
     /* Generate SDDataStore */
     pSds = new SDDataStore(pTM);
     /* Receive Buffer Control */
-    pUR = new UartReceiver(&pc);
+    pUR = new UartReceiver(&uartStream);
     
     /* create Device */
     pDevRept = new DeviceRepeater(deviceId, &DummyDev);
@@ -108,10 +53,55 @@
     pCP = new CommandParser(pUR, deviceId, rules, getNumOfRules);
     pCP->run();
         
-    pc.printf(":%d ACK 0004 0000\n", deviceId);
+    uartStream.printf(":%d ACK 0004 0000\n", deviceId);
+    dbgprintf("start mainloop\n");
+    mainloop();    
+}
+
+/****************************************************/
+/* MainLoop (for User Button handling) */
+/****************************************************/
+static void mainloop(void)
+{
+    typedef enum e_offline_mode {
+        OFFLINE_MODE_READY,
+        OFFLINE_MODE_RUN,
+        OFFLINE_MODE_END,
+    } OfflineMode;
     
+    DigitalOut myled(PB_7);
+    DigitalIn btn(USER_BUTTON);
+    OfflineMode state = OFFLINE_MODE_READY;
+    int blinky = 0;
+    myled = blinky;
     while(1) {
-        test();
-        wait(5);
+        switch(state) {
+        case OFFLINE_MODE_READY:
+            myled = blinky;
+            if (btn == 0) {
+                pCP->parse(":0 RRP 0010");
+                pCP->parse(":0 RMC 001s");
+                pCP->parse(":0 SDS 0000");
+                pCP->parse(":0 CRS 0000");
+                state = OFFLINE_MODE_RUN;
+            }
+            wait(0.2);
+            break;        
+        case OFFLINE_MODE_RUN:
+            myled = blinky;
+            if (pCP->parse(":0 CPS 0000") == 0) {
+                pCP->parse(":0 SDE 0000");
+                state = OFFLINE_MODE_END;
+            }
+            wait(1);
+            break;
+        case OFFLINE_MODE_END:
+        default:
+            myled = 1;
+            wait(5);
+            break;
+        }
+        blinky = !blinky;
     }
+
 }