Lizzy project

Dependencies:   aconno_I2C Lis2dh12 adc52832_common aconno_SEGGER_RTT

Branch:
testing-ignore
Revision:
24:7539258b015c
Parent:
23:bf9c1dd2b5cb
Child:
26:6101bb09f70d
--- a/tasks/tasks.cpp	Mon Sep 17 12:46:41 2018 +0000
+++ b/tasks/tasks.cpp	Thu Sep 20 07:34:35 2018 +0000
@@ -1,4 +1,5 @@
 #include "main.h"
+#include "bsp.h"
 #include "bsp_buzz.h"
 #include "bsp_led.h"
 #include "aconno_ble.h"
@@ -12,6 +13,9 @@
 DigitalOut blueLed(BLUE_LED_PIN);
 #endif
 
+extern Lis2dh12 mems;
+extern InterruptIn INT1;
+
 Buzz buzzer(NRF_PWM2, BUZZER_PIN);
 
 static advertising_packet advertisementPacket;
@@ -22,6 +26,19 @@
 Ticker test_ticker;
 #endif
 
+LowPowerTicker longDelaysT;
+
+
+inline void startLongDelay(uint32_t delay)
+{
+    longDelaysT.attach(longDelaysC, delay);
+}
+
+inline void stopLongDelay()
+{
+    longDelaysT.detach();
+}
+
 
 void tasks_init()
 {
@@ -86,14 +103,19 @@
 }
 #endif
 
-int untilSleep = ACTIVE_PERIOD / MEASURE_INTERVAL_MS;
 void measureF(Lis2dh12 *mems)
 {
+    int untilSleep;
+    
     while(1)
     {
         Thread::signal_wait(START_MEAS);
         Thread::signal_clr(START_MEAS);
         
+        INT1.disable_irq();
+        
+        untilSleep = ACTIVE_PERIOD_MS / MEASURE_INTERVAL_MS;
+        
         BLE::Instance().startAdvertising();
         
         while (1)
@@ -123,12 +145,12 @@
             bleT.signal_set(MEAS_DONE);
             
             wait_ms(MEASURE_INTERVAL_MS);
-            //Thread::wait(MEASURE_INTERVAL_MS);
             untilSleep--;
             
             if( (untilSleep <= 0) && !bleIsClientConnected() )
             {
                 BLE::Instance().stopAdvertising();
+                startLongDelay(LONG_SLEEP_S);
                 break;
             }
         }
@@ -236,4 +258,13 @@
         getBLEEventQueue()->dispatch_forever();
         Thread::wait(0xFFFFFFFF);
     }
+}
+
+void longDelaysC(void)
+{
+    mems.clearIntFlag();
+    
+    INT1.enable_irq();
+    
+    stopLongDelay();
 }
\ No newline at end of file