Xiaohai Li
/
AirBoxProto
Demo
AplicationLayer/DebugCommander.cpp
- Committer:
- nightseas
- Date:
- 2016-05-19
- Revision:
- 2:0ee90da44162
- Parent:
- 1:0c1053275589
File content as of revision 2:0ee90da44162:
#include "SysConfig.h" #define SMUX_MHZ19 0 #define SMUX_ZPH01 1 #define SMUX_ESP01 2 #define SMUX_ZE08 3 #define uart_db uart_pc void LedFlasher(void) { int ledNumOn; for(ledNumOn = 1; ledNumOn < LED_NUM_MAX; ledNumOn++) { LedOffAll(); LedOn(ledNumOn); wait_ms(300); } } void DebugFunc_CO2(void) { uart_db.printf("Reading MHZ19..."); SerialMuxSel(SMUX_MHZ19); int co2Vol = MHZ19_ReadCO2(); if(co2Vol < 0) uart_db.printf("CheckSum Error!\n\r"); else uart_db.printf("OK!\n\rCO2 Vol = %dppm.\n\r\n\r", co2Vol); } void DebugFunc_PM25(void) { float pm25Vol = 0, pm25VolAvg = 0; int cnt = 0, cnt_max = 30; uart_db.printf("Reading ZPH01 (need %dsec)", cnt_max); SerialMuxSel(SMUX_ZPH01); while(cnt < cnt_max) { pm25Vol = ZPH01_ReadPM25(); if(pm25Vol < 0) { uart_db.printf("CheckSum Error!\n\rRepeat reading"); } else { pm25VolAvg += pm25Vol; uart_db.printf("."); //uart_db.printf("Single sample = %fug/m^3.\n\r", pm25Vol); cnt++; } } pm25VolAvg = pm25VolAvg / cnt_max; uart_db.printf("OK!\n\rPM2.5 Vol = %fug/m^3.\n\r\n\r", pm25VolAvg); } void DebugFunc_CH2O(void) { uart_db.printf("Reading ZE08..."); SerialMuxSel(SMUX_ZE08); int ch2oVol = ZE08_ReadCH2O(); if(ch2oVol < 0) uart_db.printf("CheckSum Error!\n\r"); else uart_db.printf("OK!\n\rCH2O Vol = %dug/m^3.\n\r\n\r", ch2oVol); } void DebugFunc_TempRh(void) { uart_db.printf("Reading SHT20..."); float temp = SHT20_ReadTemp(); float rh = SHT20_ReadRh(); uart_db.printf("OK!\n\rTemperature = %.2f, Humidity = %2.f\n\r\n\r", temp, rh); } void DebugFunc_AirPress(void) { uart_db.printf("Air pressure test not implemented...\n\r"); } void DebugFunc_UvLevel(void) { uart_db.printf("UV level test not implemented...\n\r"); } void DebugFunc_WiFi(void) { uart_db.printf("WiFi test not implemented...\n\r"); } void DebugFunc_SwitchSmux(void) { uart_db.printf("Please type SMUX channel(0~3) with ENTER.\n\r"); while(!uart_db.readable()); uint8_t ch = uart_db.getc(); SerialMuxSel(ch - '0'); uart_db.printf("Switched to ch %c.\n\r", ch); } void DebugCommander(void) { int quitFlag = 0, cmdPc; while(!quitFlag) { uart_db.printf("\n\r\n\r============ AirBox Nucleo Adaptor Demo ============\n\r\n\r"); uart_db.printf(" 0. All sensors auto Test.\n\r"); uart_db.printf(" 1. Test CO2 gas sensor.\n\r"); uart_db.printf(" 2. Test PM2.5 dust sensor.\n\r"); uart_db.printf(" 3. Test CH2O gas sensor.\n\r"); uart_db.printf(" 4. Test temperature & humidity sensor.\n\r"); uart_db.printf(" 5. Test air pressure sensor.\n\r"); uart_db.printf(" 6. Test UV light level.\n\r"); uart_db.printf(" w. Test WiFi module.\n\r"); uart_db.printf(" m. Manual switch SMUX channel.\n\r"); uart_db.printf(" q. Exit demo.\n\r\n\r"); uart_db.printf(" Input:\n\r\n\r"); while(!uart_db.readable()) { #if 0 if(uart_sen.readable()) uart_db.printf(" <0x%02X> ", uart_sen.getc()); #endif } cmdPc = uart_db.getc(); switch(cmdPc) { case 'q': quitFlag = 1; uart_db.printf("\n\rExiting demo...\n\r"); break; case 'm': DebugFunc_SwitchSmux(); break; case 'w': DebugFunc_WiFi(); break; case '0': DebugFunc_CO2(); DebugFunc_CH2O(); DebugFunc_PM25(); DebugFunc_TempRh(); DebugFunc_AirPress(); DebugFunc_UvLevel(); break; case '1': DebugFunc_CO2(); break; case '2': DebugFunc_PM25(); break; case '3': DebugFunc_CH2O(); break; case '4': DebugFunc_TempRh(); break; case '5': DebugFunc_AirPress(); break; case '6': DebugFunc_UvLevel(); break; case 'z': MHZ19_CalZero(); break; case 'f': MHZ19_CalFull(); break; default: uart_db.printf("Incorrect input!\n\r"); break; } uart_db.printf("\n\rPress any key...\n\r"); while(!uart_db.readable()); cmdPc = uart_db.getc(); } }