BLE iBeacon demonstrating how to change the payload data every second

Dependencies:   BLE_API mbed nRF51822

Fork of BLE_iBeacon by Bluetooth Low Energy

Revision:
31:93e50a3c3dc6
Parent:
30:746d37d781de
Child:
32:7b7093b653a8
--- a/main.cpp	Tue Jun 10 10:46:45 2014 +0100
+++ b/main.cpp	Tue Jun 10 11:54:06 2014 +0100
@@ -17,10 +17,17 @@
 #include "mbed.h"
 #include "BLEPeripheral.h"
 
-BLEPeripheral ble;                /* BLE radio driver */
+BLEPeripheral ble;
+
+#define NEED_CONSOLE_OUTPUT 0 /* Set this if you need debug messages on the console;
+                               * it will have an impact on code-size and power consumption. */
 
-DigitalOut mainloopLED(LED1);
-Serial     pc(USBTX,USBRX);
+#if NEED_CONSOLE_OUTPUT
+Serial  pc(USBTX, USBRX);
+#define DEBUG(...) { pc.printf(__VA_ARGS__); }
+#else
+#define DEBUG(...) /* nothing */
+#endif /* #if NEED_CONSOLE_OUTPUT */
 
 /*
  * For this demo application, populate the beacon advertisement payload
@@ -41,38 +48,34 @@
     0x4C, 0x00, // Company identifier code (0x004C == Apple)
     0x02,       // ID
     0x15,       // length of the remaining payload
-    0xE2, 0x0A, 0x39, 0xF4, 0x73, 0xF5, 0x4B, 0xC4, // UUID
+    0xE2, 0x0A, 0x39, 0xF4, 0x73, 0xF5, 0x4B, 0xC4, // location 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
+    0x00, 0x00, // the major value to differentiate a location
+    0x00, 0x00, // the minor value to differentiate a location
     0xC8        // 2's complement of the Tx power (-56dB)
 };
 
-void setupAppHardware(void)
-{
-    /* Setup blinkies: mainloopLED is toggled in main, tickerLED is
-     * toggled via Ticker */
-    mainloopLED = 1;
-}
-
 int main(void)
 {
-    setupAppHardware();
-
-    pc.printf("Initialising BTLE transport\n\r");
+    DEBUG("Initialising BTLE transport\n\r");
     ble.init();
 
     ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED);
     ble.accumulateAdvertisingPayload(GapAdvertisingData::MANUFACTURER_SPECIFIC_DATA, beaconPayload, sizeof(beaconPayload));
 
     ble.setAdvertisingType(GapAdvertisingParams::ADV_NON_CONNECTABLE_UNDIRECTED);
-    ble.setAdvertisingTimeout(0);    /* disable timeout. */
     ble.setAdvertisingInterval(160); /* 100ms; in multiples of 0.625ms. */
     ble.startAdvertising();
 
-    /* Do blinky on mainloopLED while we're waiting for BLE events */
     for (;;) {
-        mainloopLED = !mainloopLED;
-        wait(1);
+        ble.waitForEvent();
     }
+
+    // An alternative to the above:
+    //
+    // DigitalOut mainloopLED(LED1);
+    // for (;;) {
+    //     mainloopLED = !mainloopLED;
+    //     wait(1);
+    // }
 }