Update for latest nRF51822 code changes.
Dependencies: BLE_API nRF51822
Fork of Puck by
Diff: Puck.cpp
- Revision:
- 0:718051934fdb
- Child:
- 1:29b2cca0d529
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Puck.cpp Tue Jul 15 14:33:09 2014 +0000 @@ -0,0 +1,46 @@ +#include "mbed.h" +#include "Puck.hpp" + +Puck::Puck(bool connectable, uint16_t minor) : _connectable(connectable) { + /* + * The Beacon payload (encapsulated within the MSD advertising data structure) + * has the following composition: + * 128-Bit UUID = E2 0A 39 F4 73 F5 4B C4 A1 2F 17 D1 AD 07 A9 61 + * Major/Minor = 1337 / XXXX + * Tx Power = C8 + */ + uint8_t beaconPayloadTemplate[] = { + 0x00, 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, + 0x13, 0x37, // the major value to differenciate a location (Our app requires 1337 as major number) + 0x00, 0x00, // the minor value to differenciate a location (Change this to differentiate location pucks) + 0xC8 // 2's complement of the Tx power (-56dB) + }; + beaconPayloadTemplate[22] = minor >> 8; + beaconPayloadTemplate[23] = minor & 255; + + for (int i=0; i < 25; i++) { + _beaconPayload[i] = beaconPayloadTemplate[i]; + } +} + +void Puck::init(void) { + _ble.init(); + + _ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED); + _ble.accumulateAdvertisingPayload(GapAdvertisingData::MANUFACTURER_SPECIFIC_DATA, + _beaconPayload, sizeof(_beaconPayload)); + + if (_connectable) { + _ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED); + } else { + _ble.setAdvertisingType(GapAdvertisingParams::ADV_NON_CONNECTABLE_UNDIRECTED); + } + + _ble.setAdvertisingInterval(160); /* 100ms; in multiples of 0.625ms. */ + + _ble.startAdvertising(); +} \ No newline at end of file