init

Dependencies:   aconno_I2C Lis2dh12 WatchdogTimer

Revision:
12:8345612bf867
Parent:
11:60eb0ff945f2
Child:
13:29f67f256709
--- a/main.cpp	Sat Dec 15 20:09:19 2018 +0000
+++ b/main.cpp	Sun Dec 16 01:06:14 2018 +0000
@@ -48,8 +48,11 @@
 static char             RET_motionData[100]              __attribute__((section("noinit"),zero_init));
 
 //EVENT HANDLING
+static time_t           RET_eventInterval_location_log      __attribute__((section("noinit"),zero_init));
 static time_t           RET_eventTime_location_log      __attribute__((section("noinit"),zero_init));
 static time_t           RET_eventTime_location_bc      __attribute__((section("noinit"),zero_init));
+
+static time_t           RET_eventInterval_environmental_log __attribute__((section("noinit"),zero_init));
 static time_t           RET_eventTime_environmental_log __attribute__((section("noinit"),zero_init));
 static time_t           RET_eventTime_environmental_bc __attribute__((section("noinit"),zero_init));
 static time_t           RET_eventTime_activity_bc      __attribute__((section("noinit"),zero_init));
@@ -67,7 +70,7 @@
 //PERIPHERALS
 //------------------------------------------------------------------------------ 
 //BLE myble;
-WatchdogTimer watchdog(65.0); //Do not set to less than 4500ms or can cause issues with softdevice
+extern WatchdogTimer watchdog(240.0); //Do not set to less than 4500ms or can cause issues with softdevice
 //SERIAL DEBUG?
 #if CONSOLE_DEBUG
     Serial uart(PN_UART_TX, PN_UART_RX, 115200);
@@ -145,12 +148,15 @@
     RET_mode_prev = RET_mode;
     RET_RTCunixtime = 0;
     RET_RTCmicros = 0;
+    
+    RET_eventInterval_environmental_log = 0;
     RET_eventTime_location_log = 0;
     RET_eventTime_location_bc = 0;
     RET_eventTime_environmental_log = 0;
     RET_eventTime_environmental_bc = 0;
     RET_eventTime_activity_bc = 0;
     RET_eventTime_wakeFromDormant = 0;
+    
     RET_motionPendingOffState = 0;
     RET_motionPendingOnState = 0;
     RET_motionTriggered = 0;
@@ -254,42 +260,48 @@
             
             //EVENTS
             //Location
-            if(time(NULL) > RET_eventTime_location_log && RET_eventTime_location_log > 0) {
+            if(RET_RTCunixtime > RET_eventTime_location_log && RET_eventTime_location_log > 0) {
                 //getdata_environmental();
                 //event_location_log();
             }
-            if(time(NULL) > RET_eventTime_location_bc && RET_eventTime_location_bc > 0) {
+            if(RET_RTCunixtime > RET_eventTime_location_bc && RET_eventTime_location_bc > 0) {
                 //getdata_battery();
                 //event_location_broadcast();
             }
             //Environmental
-            if(time(NULL) > RET_eventTime_environmental_log && RET_eventTime_environmental_log > 0) {
-                //event_environmental_log();
+            if(RET_RTCunixtime > RET_eventTime_environmental_log && RET_eventTime_environmental_log > 0) {
+                Filesystem filesystem(PN_SPI_MOSI,PN_SPI_MISO,PN_SPI_CLK,PN_SPI_CS1);
+                SI7060 temperature(PN_I2C_SDA,PN_I2C_SCL);
+                float temperature_c = temperature.getTemperature();
+                DEBUG("Temperature log: %u,%f \n", RET_RTCunixtime,temperature_c);
+                filesystem.addLogEntry_temperature(RET_RTCunixtime,temperature_c);
             }
-            if(time(NULL) > RET_eventTime_environmental_bc && RET_eventTime_environmental_bc > 0) {
+            if(RET_RTCunixtime > RET_eventTime_environmental_bc && RET_eventTime_environmental_bc > 0) {
                 //event_environmental_bc();
+                //Filesystem filesystem(PN_SPI_MOSI,PN_SPI_MISO,PN_SPI_CLK,PN_SPI_CS1);
             }
             //Activity
-            if(time(NULL) > RET_eventTime_activity_bc && RET_eventTime_activity_bc > 0) {
+            if(RET_RTCunixtime > RET_eventTime_activity_bc && RET_eventTime_activity_bc > 0) {
                 //event_activity_bc();
             }
             break;
         case MODE_DORMANT :
-            if (time(NULL) > RET_eventTime_wakeFromDormant) {
+            if (RET_RTCunixtime > RET_eventTime_wakeFromDormant) {
                 RET_mode = MODE_NORMAL;
             }
-            break;  
+            break;
         case MODE_BUTTONPRESS1 :
-            LED1blink(2,300);
+            LED1blink(1,300);
             RET_mode = RET_mode_prev;
             break; 
         case MODE_BUTTONPRESS2 :
-            LED1blink(4,300);
+            LED1blink(3,300);
             RET_mode = RET_mode_prev;
             break;  
         case MODE_BUTTONHOLD :
             LED1blink(10,300);
-            RET_mode = RET_mode_prev;
+            RET_eventTime_wakeFromDormant = (RET_RTCunixtime + (48*3600)); //48hrs
+            RET_mode = MODE_DORMANT;
             break;
         default :
             RET_mode = MODE_SETUP;
@@ -333,13 +345,30 @@
         if (RET_coldBoot != 1) gotoSleep(30000); //THIS HAS TO BE THE FIRST ITEM IN THE MAIN LOOP
         watchdog.kick();
         
-        Filesystem filesystem(PN_SPI_MOSI,PN_SPI_MISO,PN_SPI_CLK,PN_SPI_CS1);
+        //TEST SPACE
+        Modem modem(PN_UART_TX, PN_UART_RX, PN_UART_CTS, PN_UART_RTS, PN_GSM_PWR_KEY, PN_VREG_EN);
+        if (modem.on()) {
+            if (modem.registerOnNetwork(3,60000)) {
+                    if (modem.USSDsend("blahblah", 2)) {
+                        while(1) {
+                        char* response = modem.USSDreceive(105000);
+                        DEBUG("response: %s",response);
+                        }
+                    }
+            } else {
+                //modem failed to register on network
+            }
+        } else {
+            //Modem failed to turn on   
+        }
         
-        //GET TEMPERATURE
-        SI7060 temperature(PN_I2C_SDA,PN_I2C_SCL);
-        float temperature_c = temperature.getTemperature();
-        DEBUG("temp: %f \n", temperature_c);
-        filesystem.addLogEntry_temperature(RET_RTCunixtime, 10.5);
+        
+        
+        while (1) {
+            Thread::wait(60000);
+            watchdog.kick();
+        }
+        
         
         //MAIN LOGIC
         DEBUG("mode: %i  time: %i, %i, %i, %i \n", RET_mode, RET_RTCmicros, RET_RTCunixtime, RET_buttonHoldTime, RET_buttonPressCount);