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:
1:71125aa00e33
Child:
12:5b5e076b5f01
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Mode/Mode.h	Thu Feb 04 12:36:36 2016 -0600
@@ -0,0 +1,104 @@
+/* Copyright (c) <2016> <MultiTech Systems>, MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software 
+ * and associated documentation files (the "Software"), to deal in the Software without restriction, 
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, 
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or 
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING 
+ * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#ifndef __MODE_H__
+#define __MODE_H__
+
+#include "DOGS102.h"
+#include "ButtonHandler.h"
+#include "mDot.h"
+#include "LoRaHandler.h"
+#include "GPSPARSER.h"
+#include "SensorHandler.h"
+#include "ISL29011.h"
+#include "MMA845x.h"
+#include "MPL3115A2.h"
+#include "FileName.h"
+
+class Mode {
+    public:
+        typedef enum {
+            single = 0,
+            sweep
+        } DataType;
+
+        typedef struct {
+            DataType type;
+            int32_t index;
+            bool status;
+	    bool gps_lock;
+            int32_t gps_sats;
+            GPSPARSER::longitude gps_longitude;
+            GPSPARSER::latitude gps_latitude;
+            int16_t gps_altitude;
+            struct tm gps_time;
+            LoRaHandler::LoRaLink link;
+            uint8_t data_rate;
+            uint32_t power;
+        } DataItem;
+
+        typedef struct {
+            MMA845x_DATA accel_data;
+            MPL3115A2_DATA baro_data;
+            uint16_t lux_data_raw;
+            uint32_t pressure_raw;
+            float light;
+            float pressure;
+			float altitude;
+			float temperature;			
+        } SensorItem;		
+
+        Mode(DOGS102* lcd, ButtonHandler* buttons, mDot* dot, LoRaHandler* lora, GPSPARSER* gps, SensorHandler* sensors);
+        ~Mode();
+
+        virtual bool start() = 0;
+
+    protected:
+        bool deleteDataFile();
+        bool appendDataFile(const DataItem& data);
+        void updateData(DataItem& data, DataType type, bool status);
+		void updateSensorData(SensorItem& data);
+        uint32_t getIndex(DataType type);
+
+        std::vector<uint8_t> formatSurveyData(DataItem& data);
+        std::vector<uint8_t> formatSensorData(SensorItem& data);
+
+        DOGS102* _lcd;
+        ButtonHandler* _buttons;
+        mDot* _dot;
+        LoRaHandler* _lora;
+	GPSPARSER* _gps;
+	SensorHandler* _sensors;
+        osThreadId _main_id;
+        uint32_t _index;
+        uint8_t _band;
+        uint8_t _sub_band;
+        uint8_t _data_rate;
+        uint32_t _power;
+        uint32_t _next_tx;
+        ButtonHandler::ButtonEvent _be;
+        LoRaHandler::LoRaStatus _ls;
+        LoRaHandler::LoRaLink _link_check_result;
+        uint8_t _state;
+        bool _send_data;
+	bool _gps_available;
+	uint8_t _initial_data_rate;
+	uint8_t _initial_power;
+};
+
+#endif