MTDOT-BOX-EVB-Factory-Firmware
Dependencies: NCP5623B GpsParser ISL29011 libmDot-mbed5 MTS-Serial MMA845x DOGS102 MPL3115A2
Diff: main.cpp
- Revision:
- 7:a31236c2e75c
- Parent:
- 1:71125aa00e33
- Child:
- 12:05435282f899
diff -r cc61867b45ce -r a31236c2e75c main.cpp --- a/main.cpp Fri Nov 04 22:21:01 2016 +0000 +++ b/main.cpp Fri Nov 04 17:27:05 2016 -0500 @@ -41,10 +41,15 @@ #include "ModeSweep.h" #include "ModeDemo.h" #include "ModeConfig.h" +#include "ModeGps.h" +#include "ModeData.h" // misc heders #include "FileName.h" #include <string> +#define DISABLE_DUTY_CYCLE true + + // LCD and LED controllers SPI lcd_spi(SPI1_MOSI, SPI1_MISO, SPI1_SCK); I2C led_i2c(I2C_SDA, I2C_SCL); @@ -60,7 +65,8 @@ ButtonHandler* buttons; // LoRa controller -LoRaHandler* lora; +LoRaHandler* lora_handler; + mDot* dot; // GPS @@ -76,19 +82,20 @@ ModeSweep* modeSweep; ModeDemo* modeDemo; ModeConfig* modeConfig; +ModeGps* modeGps; +ModeData* modeData; // Serial debug port Serial debug(USBTX, USBRX); // Survey Data File -char* file_name; +char file_name[] = "SurveyData.txt"; // Prototypes void mainMenu(); int main() { debug.baud(115200); - file_name = "SurveyData.txt"; lcd = new DOGS102(lcd_spi, lcd_spi_cs, lcd_cd); // NCP5623B::LEDs 1 & 2 are the screen backlight - not used on default build @@ -98,7 +105,15 @@ main_id = Thread::gettid(); buttons = new ButtonHandler(main_id); dot = mDot::getInstance(); - lora = new LoRaHandler(main_id); + lora_handler = new LoRaHandler(main_id); + + dot->setDisableDutyCycle(DISABLE_DUTY_CYCLE); + dot->setLinkCheckThreshold(0); + dot->setLinkCheckCount(0); + + // Seed the RNG + srand(dot->getRadioRandom()); + gps = new GPSPARSER(&gps_serial, led_cont); sensors = new SensorHandler(); @@ -106,11 +121,14 @@ MTSLog::setLogLevel(MTSLog::TRACE_LEVEL); - modeJoin = new ModeJoin(lcd, buttons, dot, lora, gps, sensors); - modeSingle = new ModeSingle(lcd, buttons, dot, lora, gps, sensors); - modeSweep = new ModeSweep(lcd, buttons, dot, lora, gps, sensors); - modeDemo = new ModeDemo(lcd, buttons, dot, lora, gps, sensors); - modeConfig = new ModeConfig(lcd, buttons, dot, lora, gps, sensors); + modeJoin = new ModeJoin(lcd, buttons, dot, lora_handler, gps, sensors); + modeSingle = new ModeSingle(lcd, buttons, dot, lora_handler, gps, sensors); + modeSweep = new ModeSweep(lcd, buttons, dot, lora_handler, gps, sensors); + modeDemo = new ModeDemo(lcd, buttons, dot, lora_handler, gps, sensors); + modeConfig = new ModeConfig(lcd, buttons, dot, lora_handler, gps, sensors); + modeGps = new ModeGps(lcd, buttons, dot, lora_handler, gps, sensors, modeJoin); + modeData = new ModeData(lcd, buttons, dot, lora_handler, gps, sensors); + osDelay(1000); logInfo("%sGPS detected", gps->gpsDetected() ? "" : "no "); @@ -136,7 +154,10 @@ demo = 1, config, single, - sweep + sweep, + gps, + data + } menu_items; std::string menu_strings[] = { @@ -144,22 +165,26 @@ "LoRa Demo", "Configuration", "Survey Single", - "Survey Sweep" + "Survey Sweep", + "Survey GPS", + "View Data" }; - std::vector<std::string> items; items.push_back(menu_strings[demo]); items.push_back(menu_strings[config]); items.push_back(menu_strings[single]); items.push_back(menu_strings[sweep]); + items.push_back(menu_strings[gps]); + items.push_back(menu_strings[data]); while (true) { - product = "MTDOT-BOX/EVB "; - product += mDot::FrequencyBandStr(dot->getFrequencyBand()).substr(3); + product = "DOT-BOX/EVB "; + product += mDot::FrequencyBandStr(dot->getFrequencyBand()); // reset session between modes dot->resetNetworkSession(); - lora->resetActivityLed(); + lora_handler->resetActivityLed(); + LayoutScrollSelect menu(lcd, items, product, menu_strings[0]); menu.display(); @@ -182,7 +207,6 @@ } } } - if (selected == menu_strings[demo]) { if (modeJoin->start()) modeDemo->start(); @@ -194,9 +218,18 @@ } else if (selected == menu_strings[sweep]) { if (modeJoin->start()) modeSweep->start(); - } + } else if (selected == menu_strings[gps]) { + if(dot->getFrequencyBand() == mDot::FB_EU868) { + modeJoin->start(); + } + modeGps->start(); + } else if (selected == menu_strings[data]) { + modeData->start(); + } mode_selected = false; } } + +