First commit

Dependencies:   mbed nRF51822

Committer:
Marcomissyou
Date:
Fri Jan 30 03:03:24 2015 +0000
Revision:
1:09066654e03c
Parent:
0:ec25cf09b81b
first commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Marcomissyou 0:ec25cf09b81b 1
Marcomissyou 0:ec25cf09b81b 2
Marcomissyou 0:ec25cf09b81b 3 #ifndef __BLE_FIND_ME_SERVICE_H__
Marcomissyou 0:ec25cf09b81b 4 #define __BLE_FIND_ME_SERVICE_H__
Marcomissyou 0:ec25cf09b81b 5
Marcomissyou 0:ec25cf09b81b 6 #include "BLEDevice.h"
Marcomissyou 0:ec25cf09b81b 7
Marcomissyou 0:ec25cf09b81b 8
Marcomissyou 0:ec25cf09b81b 9 class FindMeService {
Marcomissyou 0:ec25cf09b81b 10 public:
Marcomissyou 0:ec25cf09b81b 11 uint8_t AlertValue;
Marcomissyou 0:ec25cf09b81b 12
Marcomissyou 0:ec25cf09b81b 13 /**
Marcomissyou 0:ec25cf09b81b 14 * @brief Constructor with 8bit Alert value.
Marcomissyou 0:ec25cf09b81b 15 * @param[ref] _ble
Marcomissyou 0:ec25cf09b81b 16 * @param[in] AlertValue (8-bit)
Marcomissyou 0:ec25cf09b81b 17 */
Marcomissyou 0:ec25cf09b81b 18 FindMeService(BLEDevice &_ble) :
Marcomissyou 0:ec25cf09b81b 19 ble(_ble),
Marcomissyou 0:ec25cf09b81b 20
Marcomissyou 0:ec25cf09b81b 21 Alert_Level(GattCharacteristic::UUID_ALERT_LEVEL_CHAR, (uint8_t *) &AlertValue,
Marcomissyou 0:ec25cf09b81b 22 sizeof(AlertValue), sizeof(AlertValue),
Marcomissyou 0:ec25cf09b81b 23 GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_WRITE_WITHOUT_RESPONSE)
Marcomissyou 0:ec25cf09b81b 24 {
Marcomissyou 0:ec25cf09b81b 25 AlertValue = 2;
Marcomissyou 0:ec25cf09b81b 26 setupService();
Marcomissyou 0:ec25cf09b81b 27 }
Marcomissyou 0:ec25cf09b81b 28
Marcomissyou 0:ec25cf09b81b 29 virtual void onDataWritten(const GattCharacteristicWriteCBParams *params) {
Marcomissyou 0:ec25cf09b81b 30 uint8_t buf[2];
Marcomissyou 0:ec25cf09b81b 31 uint16_t bytesRead;
Marcomissyou 0:ec25cf09b81b 32 uint16_t *AlertTemp = 0;
Marcomissyou 0:ec25cf09b81b 33 if (params->charHandle == Alert_Level.getValueAttribute().getHandle()) {
Marcomissyou 0:ec25cf09b81b 34
Marcomissyou 0:ec25cf09b81b 35 ble.readCharacteristicValue(Alert_Level.getValueAttribute().getHandle(), buf, &bytesRead);
Marcomissyou 0:ec25cf09b81b 36 memset(AlertTemp, 0, sizeof(buf));
Marcomissyou 0:ec25cf09b81b 37 memcpy(AlertTemp, buf, sizeof(buf));
Marcomissyou 0:ec25cf09b81b 38 AlertValue = (uint8_t)((*AlertTemp)&0xff);
Marcomissyou 0:ec25cf09b81b 39 }
Marcomissyou 0:ec25cf09b81b 40 }
Marcomissyou 0:ec25cf09b81b 41
Marcomissyou 0:ec25cf09b81b 42 private:
Marcomissyou 0:ec25cf09b81b 43 void setupService(void) {
Marcomissyou 0:ec25cf09b81b 44 static bool serviceAdded = false; /* We should only ever need to add the heart rate service once. */
Marcomissyou 0:ec25cf09b81b 45 if (serviceAdded) {
Marcomissyou 0:ec25cf09b81b 46 return;
Marcomissyou 0:ec25cf09b81b 47 }
Marcomissyou 0:ec25cf09b81b 48
Marcomissyou 0:ec25cf09b81b 49 GattCharacteristic *charTable[] = {&Alert_Level};
Marcomissyou 0:ec25cf09b81b 50 GattService fmService(GattService::UUID_IMMEDIATE_ALERT_SERVICE, charTable, sizeof(charTable) / sizeof(GattCharacteristic *));
Marcomissyou 0:ec25cf09b81b 51 ble.addService(fmService);
Marcomissyou 0:ec25cf09b81b 52 serviceAdded = true;
Marcomissyou 0:ec25cf09b81b 53 ble.onDataWritten(this, &FindMeService::onDataWritten);
Marcomissyou 0:ec25cf09b81b 54 }
Marcomissyou 0:ec25cf09b81b 55
Marcomissyou 0:ec25cf09b81b 56 private:
Marcomissyou 0:ec25cf09b81b 57 BLEDevice &ble;
Marcomissyou 0:ec25cf09b81b 58 GattCharacteristic Alert_Level;
Marcomissyou 0:ec25cf09b81b 59
Marcomissyou 0:ec25cf09b81b 60 };
Marcomissyou 0:ec25cf09b81b 61
Marcomissyou 0:ec25cf09b81b 62 #endif /* #ifndef __BLE_HEART_RATE_SERVICE_H__*/