Custom Channel Plan version of MTDOT Box firmware

Dependencies:   DOGS102 GpsParser ISL29011 MMA845x MPL3115A2 MTS-Serial NCP5623B libmDot-Custom mDot_Channel_Plans

Fork of MTDOT-BOX-EVB-Factory-Firmware by MultiTech

Revision:
7:a31236c2e75c
Parent:
1:71125aa00e33
Child:
12:5b5e076b5f01
--- 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;
     }
 }
 
+
+