Puck lib

Dependencies:   BLE_API nRF51822

Dependents:  

Fork of Puck by Nordic Pucks

Files at this revision

API Documentation at this revision

Comitter:
stiaje
Date:
Tue Jul 15 14:33:09 2014 +0000
Child:
1:29b2cca0d529
Commit message:
Initial commit

Changed in this revision

BLE_API.lib Show annotated file Show diff for this revision Revisions of this file
Puck.cpp Show annotated file Show diff for this revision Revisions of this file
Puck.hpp Show annotated file Show diff for this revision Revisions of this file
nRF51822.lib Show annotated file Show diff for this revision Revisions of this file
--- /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