Geo beacon for VF.

Dependencies:   MMA8452 aconno_bsp adc52832_common

Files at this revision

API Documentation at this revision

Comitter:
jurica238814
Date:
Thu Jul 20 11:15:37 2017 +0000
Parent:
6:d14e3df498f4
Child:
9:2ab2be19add9
Commit message:
Acc included. Works. Potentional problem: stops working after 10min (ble problem or something else... seen that on other ble examples).

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Wed Jul 19 12:07:23 2017 +0000
+++ b/main.cpp	Thu Jul 20 11:15:37 2017 +0000
@@ -12,8 +12,10 @@
 #include "acd52832_bsp.h"
 #include "mma8452.h"
 
+#define DEBUG 1
+
 #define SLEEP_TIME      (0.85)      // Sleep time in seconds WAS 0.85
-#define AWAKE_TIME      (0.15)      // Was 0.15
+#define AWAKE_TIME      (2.15)      // Was 0.15
 #define BUZZER          (p31)
 
 /* Static constants for the BLE example */
@@ -29,8 +31,7 @@
 #define I2C_CLK             (p2)
 #define INT2_PIN            (p4)
 
-
-//uint8_t SLEEP = true;
+uint8_t sleepFlag = 1;
 int8_t txPower = 4;
 uint8_t MSD[MSD_SIZE] = {0x59, 0x00, 0xE1, 0x61, 0x35, 0xBA, 0xC0, 0xEC, 0x47, 0x2A, 0x98, 0x00, 0xAF, 0x18, 0x43, 0xFF, 0x05, 0x00};
 uint8_t my_mac_address[6] = {};          
@@ -48,6 +49,10 @@
 Acc_MMA8452 acc(I2C_DATA, I2C_CLK, MMA8452_ADDRESS);
 BLE &ble = BLE::Instance();
 
+#if DEBUG
+    DigitalOut int_led(p22);
+#endif
+
 /* Restart Advertising on disconnection*/
 void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *params){
     BLE::Instance().gap().startAdvertising();
@@ -160,7 +165,7 @@
     
     ble.gap().startScan(advertisementCallback);
     ble.gap().startAdvertising();
-    SLEEP = false;
+    sleepFlag = 0;
 }
 
 void goToSleep(){
@@ -169,7 +174,7 @@
     
     ble.gap().stopAdvertising();
     ble.gap().stopScan();
-    SLEEP = true;
+    sleepFlag = 1;
 }
 
 void buzz(void){
@@ -185,6 +190,9 @@
         #endif
         i2c_power.write(1.0F);
         buzzer_flag = 1;
+        // Be awake some time
+        WakeSleepT.detach();
+        WakeSleepT.attach(goToSleep, AWAKE_TIME);
 }
 
 int main(void){
@@ -230,8 +238,7 @@
     }
     
     while(true){
-        if(SLEEP) __WFI();
-        else if(buzzer_flag) buzz();
+        if(sleepFlag) __WFI();
         else ble.waitForEvent();
     }
 }