Puck lib
Dependencies: BLE_API nRF51822
Fork of Puck by
Revision 0:718051934fdb, committed 2014-07-15
- Comitter:
- stiaje
- Date:
- Tue Jul 15 14:33:09 2014 +0000
- Child:
- 1:29b2cca0d529
- Commit message:
- Initial commit
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/BLE_API.lib Tue Jul 15 14:33:09 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/teams/Bluetooth-Low-Energy/code/BLE_API/#8890715aaf55
--- /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
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Puck.hpp Tue Jul 15 14:33:09 2014 +0000 @@ -0,0 +1,30 @@ + #ifndef __PUCK_HPP__ + #define __PUCK_HPP__ + + #include "BLEDevice.h" + +class Puck { + private: + + BLEDevice _ble; + + uint8_t _beaconPayload[25]; + + bool _connectable; + + public: + /** Initialize the Puck library + */ + Puck(bool connectable, uint16_t minor); + + /** The BLE Device + * @return ble device + */ + BLEDevice ble() { return _ble; } + + /** Initialize the BLE Device and start advertising + */ + void init(); +}; + + #endif // __PUCK_HPP__ \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nRF51822.lib Tue Jul 15 14:33:09 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/teams/Nordic-Semiconductor/code/nRF51822/#bd0186ce644a