Delta
/
FindMe
First commit
FindmeService.h@1:09066654e03c, 2015-01-30 (annotated)
- 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?
User | Revision | Line number | New 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__*/ |