xrocusOS_ADXL355 version
Dependencies: mbed SDFileSystem
Diff: main.cpp
- 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; } + }