Workings and tests to create custom GATT services, for use as part of peripheral communication in cars
Dependencies: BLE_API mbed nRF51822
BroadcasterService.h
- Committer:
- alexanderlea
- Date:
- 2015-02-24
- Revision:
- 8:3376f79e7d50
- Parent:
- 7:5c983cf3c352
- Child:
- 9:0ed64b14d46b
File content as of revision 8:3376f79e7d50:
#ifndef __BLE_BROADCASTER_SERVICE_H__ #define __BLE_BROADCASTER_SERVICE_H__ #include "BLEDevice.h" /** * @class BroadcasterService * @brief Based heavily on the BLE Battery Service, the aim is to send key, pair values <br> */ class BroadcasterService { public: /** * @param[ref] _ble * * @param[in] */ const static uint16_t BROADCAST_SERVICE_UUID = 0x2A67; const static uint16_t BROADCAST_CHARACTERISTIC_UUID = 0x1817; BroadcasterService(BLEDevice &_ble, uint8_t _command) : ble(_ble), command(_command), broadcasterCharacteristic(BROADCAST_CHARACTERISTIC_UUID, &command, sizeof(command), sizeof(command), GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_READ | // GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_WRITE | GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY) { static bool serviceAdded = false; /* We should only ever need to add the service once. */ if (serviceAdded) { return; } GattCharacteristic *charTable[] = {&broadcasterCharacteristic}; GattService broadcasterService(BroadcasterService::BROADCAST_SERVICE_UUID, charTable, sizeof(charTable) / sizeof(GattCharacteristic *)); ble.addService(broadcasterService); serviceAdded = true; } /** * @brief * * @param */ void sendCommand(uint8_t _newCommand) { command = _newCommand; ble.updateCharacteristicValue(broadcasterCharacteristic.getValueAttribute().getHandle(), &command, 1); } private: BLEDevice &ble; uint8_t command; GattCharacteristic broadcasterCharacteristic; }; #endif