Simple beacon for nRF51822

Dependencies:   BLE_API mbed nRF51822Copy

Fork of BLE_iBeacon by Bluetooth Low Energy

This is the demo beacon for ARM TechCon 2014.

Based on the original library, this demo reads the onboard switches and temperature sensor and beacons them out as a BLE advertisment.

Revision:
7:e2bfd5db6713
Parent:
6:26eab6ee6df4
Child:
8:d851d92601b7
--- a/main.cpp	Tue May 20 18:03:51 2014 +0100
+++ b/main.cpp	Tue May 20 18:04:33 2014 +0100
@@ -50,18 +50,37 @@
     GapAdvertisingData   advData;
     GapAdvertisingData   scanResponse;
 
-    /* Define an Beacon payload
+    /*
+     * For this demo application, populate the beacon advertisement payload
+     * with 2 AD structures: FLAG and MSD
+     *
+     * Reference:
+     *  Bluetooth Core Specification 4.0 (Vol. 3), Part C, Section 11, 18
+     */
+
+    /* Define an Beacon payload.
+
+       This is the data part of the MSD AdvertisingData structure to be added to
+       the advertising payload.
        --------------------------------------------------------------
        128-Bit UUID = E2 0A 39 F4 73 F5 4B C4 A1 2F 17 D1 AD 07 A9 61
        Major/Minor  = 0000 / 0000
        Tx Power     = C8
     */
-    uint8_t beaconPayload[25] = { 0x4C, 0x00, 0x02, 0x15, 0xE2, 0x0A, 0x39, 0xF4, 0x73, 0xF5, 0x4B, 0xC4, 0xA1, 0x2F, 0x17, 0xD1, 0xAD, 0x07, 0xA9, 0x61, 0x00, 0x00, 0x00, 0x00, 0xC8 };
+    uint8_t beaconPayload[] = {
+        0x4C, 0x00, // Company identifier code (0x004C == Apple)
+        0x02,       // ID
+        0x15,       // length of the remaining payload
+        0xE2, 0x0A, 0x39, 0xF4, 0x73, 0xF5, 0x4B, 0xC4, // UUID
+        0xA1, 0x2F, 0x17, 0xD1, 0xAD, 0x07, 0xA9, 0x61,
+        0x00, 0x00, // the major value to differenciate a location
+        0x00, 0x00, // the minor value to differenciate a location
+        0xC8        // 2's complement of the Tx power (-56dB)
+    };
 
     /* Make sure we get a clean start */
     nrf.reset();
 
-    /* Beacon includes the FLAG and MSD fields */
     advData.addFlags(GapAdvertisingData::BREDR_NOT_SUPPORTED);
     advData.addData(GapAdvertisingData::MANUFACTURER_SPECIFIC_DATA,
                     beaconPayload,