Geo beacon for VF.
Dependencies: MMA8452 aconno_bsp adc52832_common
Diff: main.cpp
- Revision:
- 23:729717272b31
- Parent:
- 22:8d106fd5fa84
- Child:
- 24:201b9d8b6c5a
- Child:
- 25:8ac3ff431ab1
--- a/main.cpp Mon Aug 28 19:58:11 2017 +0000
+++ b/main.cpp Wed Aug 30 08:10:53 2017 +0000
@@ -15,20 +15,22 @@
#include "nrf52_uart.h"
#include "nrf52_digital.h"
-#define DEBUG (0)
+#define DEBUG (1)
#define DEBUG_ACC (0)
#define PRINT (0)
#define DEBUG_MAC (0)
#define DEBUG_CONNECTION (0)
#define USE_ACC (0)
-#define SLEEP_TIME_S (9.0) /* Sleep time (in s) */
-#define ADV_TIMER_TIME_S (0.5) /* Advertising time (in s) */
-#define SCAN_TIMER_TIME_S (0.5) /* Scanning time (in s) */
+#define SLEEP_TIME_S (6.0) /* Sleep time (in s) */
+#define ADV_TIMER_TIME_S (0.25) /* 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 */
#define SHORT_SLEEP_TIME_S (0.5) /* Shorter sleep time (s) */
#define SHORT_SLEEP_TIME_PERIOD_S (10) /* Time after a last scanned advertisment. In the period, sleep time is SHORT_SLEEP_TIME */
+#define BUZZ_PERIOD_US (250)
+#define BUZZ_DURATION_MS (1000)
#define MAC_SIZE_B (6)
/* Static constants for the BLE example */
@@ -66,7 +68,7 @@
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 myMacAddress[6] = {};
+uint8_t myMacAddress[6] = {};
uint8_t buzzer_flag = 0;
enum RadioState{
@@ -176,7 +178,7 @@
connectedLED = 1;
wait_ms(100);
#endif
- buzz(900,1000);
+ buzz(BUZZ_PERIOD_US,BUZZ_DURATION_MS);
WakeSleepT.detach();
WakeSleepT.attach(WakeMeUp, FREE_TIME_S);
/*
@@ -230,10 +232,9 @@
ble.gap().onConnection(onConnectionCallback); // -->> Uncomment these two lines for shush-shush
ble.gattServer().onDataWritten(onDataWrittenCallback);
- /* setup advertising */
ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::MANUFACTURER_SPECIFIC_DATA, (uint8_t *)msd, MSD_SIZE);
ble.gap().setAdvertisingInterval(ADV_INTERVAL); // --> Has to be at least 100ms!
- //ble.gap().startAdvertising();
+
}
@@ -312,7 +313,7 @@
if ((params->advertisingData[msdOffset+2]) == 0x00){
if(CheckMac(params, myMacAddress, msdOffset)){
//ble.gap().stopScan();
- buzz(900,1000);
+ buzz(BUZZ_PERIOD_US,BUZZ_DURATION_MS);
WakeSleepT.detach();
WakeSleepT.attach(WakeMeUp, FREE_TIME_S);
}
@@ -333,8 +334,6 @@
* The function is called when ticker generates interrupt
*/
void TurnBuzzOff(void){
- //buzzer.period(0.00F);
- //buzzer.write(0.0F);
tempSleepTime = SHORT_SLEEP_TIME_S;
turnBuzzOffT.detach();
WakeSleepT.detach();
@@ -356,8 +355,6 @@
}
else{
ble.gap().startAdvertising();
- //buzzer.period(0.00F);
- //buzzer.write(0.0F);
#if DEBUG
advLED = 0;
scanLED = 1;
@@ -369,11 +366,10 @@
void startScanning(){
ble.gap().stopAdvertising();
- ble.gap().setScanParams(SCAN_INTERVAL, SCAN_WINDOW);
- ble.gap().setScanTimeout(SCAN_TIMER_TIME_S);
+ ble.gap().setScanInterval(SCAN_INTERVAL);
+ ble.gap().setScanWindow(SCAN_WINDOW);
+ ble.gap().setScanParams();
ble.gap().startScan(advertisementCallback);
- //buzzer.period(0.00F);
- //buzzer.write(0.0F);
#if DEBUG
advLED = 1;
scanLED = 0;
@@ -407,8 +403,6 @@
}
void GoToSleep(){
- //buzzer.period(0.00F);
- //buzzer.write(0.0f);
WakeSleepT.detach();
WakeSleepT.attach(WakeMeUp, tempSleepTime);
ble.gap().stopAdvertising();
@@ -425,8 +419,6 @@
#if DEBUG_ACC
int_led = !int_led;
#endif
- //buzzer.period(0.0009F);
- //buzzer.write(0.5f);
}
#endif
@@ -437,8 +429,6 @@
connectedLED = 1;
#endif
- //buzzer.period(0.0009F);
- //buzzer.write(0.0F);
#if USE_ACC
accPower = 1;
i2cPower = 1;

