Geo beacon for VF.

Dependencies:   MMA8452 aconno_bsp adc52832_common

Revision:
25:8ac3ff431ab1
Parent:
23:729717272b31
Child:
26:148aa2e2460c
--- a/main.cpp	Wed Aug 30 08:10:53 2017 +0000
+++ b/main.cpp	Wed Sep 06 10:41:09 2017 +0000
@@ -15,15 +15,15 @@
 #include "nrf52_uart.h"
 #include "nrf52_digital.h"
 
-#define DEBUG               (1)
+#define DEBUG               (0)
 #define DEBUG_ACC           (0)
 #define PRINT               (0)
 #define DEBUG_MAC           (0)
 #define DEBUG_CONNECTION    (0)
 #define USE_ACC             (0)
 
-#define SLEEP_TIME_S              (6.0)           /* Sleep time (in s)          */
-#define ADV_TIMER_TIME_S          (0.25)           /* Advertising time (in s)    */
+#define SLEEP_TIME_S              (8.00)           /* Sleep time (in s)          */
+#define ADV_TIMER_TIME_S          (0.50)           /* Advertising time (in s)    */
 #define SCAN_TIMER_TIME_S         (0.25)           /* Scanning time (in s)       */
 #define FREE_TIME_S               (0.1)           /* Time between end of a scanning and sleep mode */
 #define AWAKE_TIME_S              (ADV_TIMER_TIME_S+SCAN_TIMER_TIME_S+FREE_TIME_S)      /* Was 0.15 */
@@ -38,8 +38,8 @@
 #define MSD_SIZE            (18)
 #define MSD_ID              (0xFF)
 
-#define BUZZ_TIME_S         (1)   /* Buzz time in s */
-#define ADV_INTERVAL        (200)   /* Advertising interval (in ms) */
+#define BUZZ_TIME_S         (1)    /* Buzz time in s */
+#define ADV_INTERVAL        (100)   /* Advertising interval (in ms) */
 #define SCAN_INTERVAL       (SCAN_TIMER_TIME_S)   /* Scan interval (in ms) */
 #define SCAN_WINDOW         (SCAN_TIMER_TIME_S)
 
@@ -68,6 +68,8 @@
 uint8_t sleepFlag = false;
 uint8_t tempSleepTime = SLEEP_TIME_S;
 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 startBuzz[2] = {0xBA, 0xBE};
+uint8_t stopBuzz[2] = {0xDE, 0xAD};
 uint8_t myMacAddress[6] = {};   
 uint8_t buzzer_flag = 0;
 
@@ -160,10 +162,10 @@
 }
 
 void onDataWrittenCallback(const GattWriteCallbackParams *params) {
-    if(params->handle == ACK_CHARA_UUID || 1){
+    if(params->handle == ackServicePtr->getACKCharacteristicHandle()){
         // Something is written into AckCharacteristic
-        if(params->data[0] == 0xBA)
-            if(params->data[1] == 0xBE){
+        if(params->data[0] == startBuzz[0]){
+            if(params->data[1] == startBuzz[1]){
                 #if DEBUG_CONNECTION
                     connectedLED = !connectedLED;       // BLUE
                     wait_ms(100);
@@ -179,17 +181,20 @@
                     wait_ms(100);
                 #endif    
                 buzz(BUZZ_PERIOD_US,BUZZ_DURATION_MS);
-                WakeSleepT.detach();
-                WakeSleepT.attach(WakeMeUp, FREE_TIME_S);
-                /*
-                    This function should make advertiser stop
-                */
-                ble.disconnect(Gap::LOCAL_HOST_TERMINATED_CONNECTION);
                 return;
             }
+        }
+     else if(params->data[0] == stopBuzz[0]){
+        if(params->data[1] == stopBuzz[1]){
+            WakeSleepT.detach();
+            WakeSleepT.attach(WakeMeUp, FREE_TIME_S);
+            ble.disconnect(Gap::LOCAL_HOST_TERMINATED_CONNECTION);
+            }
+        }
     }
     else{
-        // Execute this for wrong data written into characteristic   
+        // Execute this for wrong data written into characteristic
+        return;
     }
 }
 
@@ -382,7 +387,7 @@
     sleepFlag = 0;
     switch(radioState){
         case OFF:{
-                radioState = ADVERTISING;
+                radioState = SCANNING;
                 startAdvertising();
                 break;
             }