HoT with iBeacon
Dependencies: microbit-iBeacon
Fork of BTW_Eddystone_Solution1 by
Beacon Hands-on-Training solution code using Eddystone URL and iBeacon formats.
Libraries microbit-iBeacon -> microbit-dal-iBeacon
Includes classes for Eddystone and iBeacon. Eddystone only supports URL and UID formats, not TLM.
Diff: main.cpp
- Revision:
- 0:580a61fd96a1
- Child:
- 2:511941b33870
diff -r 000000000000 -r 580a61fd96a1 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Feb 08 07:49:44 2017 +0000 @@ -0,0 +1,51 @@ +#include "MicroBit.h" + +MicroBit uBit; + +char URL[] = "https://goo.gl/TlUTF7"; +const int8_t CALIBRATED_POWERS[] = {-49, -37, -33, -28, -25, -20, -15, -10}; + +uint8_t advertising = 0; +uint8_t tx_power_level = 6; + +void startAdvertising() { + uBit.bleManager.advertiseEddystoneUrl(URL, CALIBRATED_POWERS[tx_power_level-1], false); + uBit.bleManager.setTransmitPower(tx_power_level); + uBit.display.scroll("ADV"); + advertising = 1; +} + +void stopAdvertising() { + uBit.bleManager.stopAdvertising(); + uBit.display.scroll("OFF"); + advertising = 0; +} + +void onButtonA(MicroBitEvent) +{ + if (advertising == 1) { + return; + } + startAdvertising(); +} + +void onButtonB(MicroBitEvent) +{ + if (advertising == 0) { + return; + } + stopAdvertising(); +} + +int main() +{ + // Initialise the micro:bit runtime. + uBit.init(); + + uBit.messageBus.listen(MICROBIT_ID_BUTTON_A, MICROBIT_BUTTON_EVT_CLICK, onButtonA); + uBit.messageBus.listen(MICROBIT_ID_BUTTON_B, MICROBIT_BUTTON_EVT_CLICK, onButtonB); + + startAdvertising(); + + release_fiber(); +}