Beacon demo for the BLE API using the nRF51822 native mode drivers
Dependencies: BLE_API mbed nRF51822 X_NUCLEO_IDB0XA1
Fork of BLE_iBeacon by
Diff: main.cpp
- Revision:
- 56:56bc0cab3916
- Parent:
- 55:b9616b70d6a3
- Child:
- 57:9782cb35c494
--- a/main.cpp Fri Feb 13 16:44:04 2015 +0000 +++ b/main.cpp Sat Feb 14 04:53:29 2015 +0000 @@ -15,24 +15,47 @@ */ #include "mbed.h" -#include "BLEDevice.h" #include "iBeaconService.h" +/** + * For this demo application, populate the beacon advertisement payload + * with 2 AD structures: FLAG and MSD (manufacturer specific data). + * + * Reference: + * Bluetooth Core Specification 4.0 (Vol. 3), Part C, Section 11, 18 + */ + BLEDevice ble; +/** + * The Beacon payload has the following composition: + * 128-Bit / 16byte UUID = E2 0A 39 F4 73 F5 4B C4 A1 2F 17 D1 AD 07 A9 61 + * Major/Minor = 0x1122 / 0x3344 + * Tx Power = 0xC8 = 200, 2's compliment is 256-200 = (-56dB) + * + * Note: please remember to calibrate your beacons + * TX Power for more accurate results. + */ +uint8_t uuid[] = {0xE2, 0x0A, 0x39, 0xF4, 0x73, 0xF5, 0x4B, 0xC4, + 0xA1, 0x2F, 0x17, 0xD1, 0xAD, 0x07, 0xA9, 0x61 + }; +uint16_t majorNumber = 1122; +uint16_t minorNumber = 3344; +uint16_t txPower = 0xC8; + int main(void) { + // Initialize BLE baselayer ble.init(); - const uint8_t uuid[] = {0xE2, 0x0A, 0x39, 0xF4, 0x73, 0xF5, 0x4B, 0xC4, - 0xA1, 0x2F, 0x17, 0xD1, 0xAD, 0x07, 0xA9, 0x61}; - iBeaconService ibeacon(ble, uuid, 0x1122 /* majorNumber */, 0x3344 /* minorNumber */, 0xC8 /* 2's complement of the Tx power (-56dB) */); + // Initialize ibeacon + iBeaconService ibeacon(ble, uuid, majorNumber, minorNumber, txPower); // Set advertising time ble.setAdvertisingInterval(160); /* 100ms; in multiples of 0.625ms. */ ble.startAdvertising(); - for (;;) { - ble.waitForEvent(); + while(1) { + ble.waitForEvent(); // allows or low power operation } }