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 Bluetooth Low Energy

Committer:
mbedAustin
Date:
Thu Feb 12 22:43:20 2015 +0000
Revision:
54:3a655a9fce9a
Parent:
53:f9ec2c7a47f5
Child:
55:b9616b70d6a3
Changed default MajorNumber MinorNumber to decimal numbers instead of hex numbers because most smartphone applications display decimal not hex

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ktownsend 0:7613d21e5974 1 /* mbed Microcontroller Library
ktownsend 0:7613d21e5974 2 * Copyright (c) 2006-2013 ARM Limited
ktownsend 0:7613d21e5974 3 *
ktownsend 0:7613d21e5974 4 * Licensed under the Apache License, Version 2.0 (the "License");
ktownsend 0:7613d21e5974 5 * you may not use this file except in compliance with the License.
ktownsend 0:7613d21e5974 6 * You may obtain a copy of the License at
ktownsend 0:7613d21e5974 7 *
ktownsend 0:7613d21e5974 8 * http://www.apache.org/licenses/LICENSE-2.0
ktownsend 0:7613d21e5974 9 *
ktownsend 0:7613d21e5974 10 * Unless required by applicable law or agreed to in writing, software
ktownsend 0:7613d21e5974 11 * distributed under the License is distributed on an "AS IS" BASIS,
ktownsend 0:7613d21e5974 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
ktownsend 0:7613d21e5974 13 * See the License for the specific language governing permissions and
ktownsend 0:7613d21e5974 14 * limitations under the License.
ktownsend 0:7613d21e5974 15 */
ktownsend 0:7613d21e5974 16
ktownsend 0:7613d21e5974 17 #include "mbed.h"
mbedAustin 53:f9ec2c7a47f5 18 #include "iBeaconService.h"
ktownsend 0:7613d21e5974 19
mbedAustin 50:7bc38f01d2d3 20 /**
Rohit Grover 10:391c1acf4b9d 21 * For this demo application, populate the beacon advertisement payload
Rohit Grover 15:4e1b36b73213 22 * with 2 AD structures: FLAG and MSD (manufacturer specific data).
Rohit Grover 10:391c1acf4b9d 23 *
Rohit Grover 10:391c1acf4b9d 24 * Reference:
Rohit Grover 10:391c1acf4b9d 25 * Bluetooth Core Specification 4.0 (Vol. 3), Part C, Section 11, 18
Rohit Grover 10:391c1acf4b9d 26 */
ktownsend 0:7613d21e5974 27
mbedAustin 50:7bc38f01d2d3 28 BLEDevice ble;
mbedAustin 50:7bc38f01d2d3 29
mbedAustin 53:f9ec2c7a47f5 30 /**
mbedAustin 53:f9ec2c7a47f5 31 * The Beacon payload has the following composition:
mbedAustin 53:f9ec2c7a47f5 32 * 128-Bit / 16byte UUID = E2 0A 39 F4 73 F5 4B C4 A1 2F 17 D1 AD 07 A9 61
mbedAustin 53:f9ec2c7a47f5 33 * Major/Minor = 0x1122 / 0x3344
mbedAustin 53:f9ec2c7a47f5 34 * Tx Power = 0xC8 = 200, 2's compliment is 256-200 = (-56dB)
mbedAustin 53:f9ec2c7a47f5 35 *
mbedAustin 53:f9ec2c7a47f5 36 * Note: please remember to calibrate your beacons
mbedAustin 53:f9ec2c7a47f5 37 * TX Power for more accurate results.
mbedAustin 53:f9ec2c7a47f5 38 */
mbedAustin 53:f9ec2c7a47f5 39 uint8_t uuid[] = {0xE2, 0x0A, 0x39, 0xF4, 0x73, 0xF5, 0x4B, 0xC4,
mbedAustin 53:f9ec2c7a47f5 40 0xA1, 0x2F, 0x17, 0xD1, 0xAD, 0x07, 0xA9, 0x61
mbedAustin 53:f9ec2c7a47f5 41 };
mbedAustin 54:3a655a9fce9a 42 uint16_t majorNumber = 1122;
mbedAustin 54:3a655a9fce9a 43 uint16_t minorNumber = 3344;
mbedAustin 53:f9ec2c7a47f5 44 uint16_t txPower = 0xC8;
Rohit Grover 10:391c1acf4b9d 45
ktownsend 0:7613d21e5974 46 int main(void)
ktownsend 0:7613d21e5974 47 {
mbedAustin 53:f9ec2c7a47f5 48 // Initialize BLE baselayer
Rohit Grover 11:6774f4827024 49 ble.init();
mbedAustin 53:f9ec2c7a47f5 50
mbedAustin 53:f9ec2c7a47f5 51 // Initialize ibeacon
mbedAustin 53:f9ec2c7a47f5 52 iBeaconService ibeacon(ble, uuid, majorNumber, minorNumber, txPower);
mbedAustin 53:f9ec2c7a47f5 53
mbedAustin 53:f9ec2c7a47f5 54 // Set advertising time
mbedAustin 50:7bc38f01d2d3 55 ble.setAdvertisingInterval(160); /* 100ms; in multiples of 0.625ms. */
Rohit Grover 19:869d8c7306b4 56 ble.startAdvertising();
ktownsend 0:7613d21e5974 57
mbedAustin 53:f9ec2c7a47f5 58 while(1) {
mbedAustin 53:f9ec2c7a47f5 59 ble.waitForEvent(); // allows or low power operation
ktownsend 0:7613d21e5974 60 }
Rohit Grover 10:391c1acf4b9d 61 }