Geo beacon for VF.
Dependencies: MMA8452 aconno_bsp adc52832_common
Diff: main.cpp
- 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; }