EddyStone Beacon demo for the BLE API using the nRF51822 native mode drivers

Dependencies:   BLE_API mbed nRF51822

Fork of BLE_iBeacon by Bluetooth Low Energy

Files at this revision

API Documentation at this revision

Comitter:
RezaCute
Date:
Mon Sep 28 03:40:33 2015 +0000
Parent:
72:eb4de3de66b8
Commit message:
EddyStone

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Wed Jul 22 07:45:18 2015 +0000
+++ b/main.cpp	Mon Sep 28 03:40:33 2015 +0000
@@ -1,47 +1,109 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2015 ARM Limited
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+// mbed HRM1017 Eddystone
+// Programed by Kazuyuki Eguchi
 
 #include "mbed.h"
-#include "ble/services/iBeacon.h"
+#include "BLE.h"
+
+BLEDevice ble;
+
+static const uint16_t uuid16_list[]        = {0xFEAA};
+
+const static uint8_t beaconPayload_uid[] = {
+    0xaa,
+    0xfe,
+
+    // UID
+
+    0x00, // Frame Type
+    0x00, // Ranging Data
+
+    0x01, // NID[0]
+    0x02, // NID[1]
+    0x03, // NID[2]
+    0x04, // NID[3]
+    0x05, // NID[4]
+    0x06, // NID[5]
+    0x07, // NID[6]
+    0x08, // NID[7]
+    0x09, // NID[8]
+    0x0A, // NID[9]
+
+    0x11, // BID[0] 
+    0x22, // BID[1]
+    0x33, // BID[2]
+    0x44, // BID[3]
+    0x55, // BID[4]
+    0x66, // BID[5]
+    0x00, // RFU
+    0x00  // RFU
+};
+
+const static uint8_t beaconPayload_url[] = {
+    0xaa,
+    0xfe,
 
-BLE ble;
+    // URL
+
+    0x10, // Frame Type
+    0x00, // Ranging Data
+    0x02, // URL Scheme (http:// = 0x02)
+
+    'c',
+    'u',
+    'b',
+    'e',
+    'a',
+    'c',
+    'o',
+    'n',
+    '.',
+    'c',
+    'o',
+    'm'
+};
+
+const static uint8_t beaconPayload_tlm[] = {
+    0xaa,
+    0xfe,
+
+    // TLM
+
+    0x20, // Frame Type
+    0x00, // Version
+    0x01, // VBATT[0]
+    0x00, // VBATT[1]
+    0x02, // TEMP[0]
+    0x00, // TEMP[1]
+    0x03, // ADV[0]
+    0x00, // ADV[1]
+    0x00, // ADV[2]
+    0x00, // ADV[3]
+    0x04, // SEC_CNT[0]
+    0x00, // SEC_CNT[1]
+    0x00, // SEC_CNT[2]
+    0x00 // SEC_CNT[3]
+};
+
 
 int main(void)
 {
     ble.init();
 
-    /**
-     * 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.
-     */
-    const 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;
-    iBeacon ibeacon(ble, uuid, majorNumber, minorNumber, txPower);
+    ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED | GapAdvertisingData::LE_GENERAL_DISCOVERABLE);
+
+    ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_16BIT_SERVICE_IDS, (uint8_t *)uuid16_list, sizeof(uuid16_list));
+
+    ble.accumulateAdvertisingPayload(GapAdvertisingData::SERVICE_DATA,beaconPayload_uid, sizeof(beaconPayload_uid));
+    ble.accumulateAdvertisingPayload(GapAdvertisingData::SERVICE_DATA,beaconPayload_url, sizeof(beaconPayload_url));
+    ble.accumulateAdvertisingPayload(GapAdvertisingData::SERVICE_DATA,beaconPayload_tlm, sizeof(beaconPayload_tlm));
 
-    ble.gap().setAdvertisingInterval(1000); /* 1000ms. */
-    ble.gap().startAdvertising();
+    ble.setAdvertisingType(GapAdvertisingParams::ADV_NON_CONNECTABLE_UNDIRECTED);
+
+    ble.setAdvertisingInterval(160);
 
-    while (true) {
-        ble.waitForEvent(); // allows or low power operation
+    ble.startAdvertising();
+
+    for (;;) {
+        ble.waitForEvent();
     }
-}
+}
\ No newline at end of file
--- a/mbed.bld	Wed Jul 22 07:45:18 2015 +0000
+++ b/mbed.bld	Mon Sep 28 03:40:33 2015 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/mbed_official/code/mbed/builds/da0ca467f8b5
\ No newline at end of file
+http://mbed.org/users/mbed_official/code/mbed/builds/bad568076d81
\ No newline at end of file