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-17
Revision:
4:ac0ee88ea0ed
Parent:
TestGattService.h@ 3:f3d20b36b7ea
Child:
7:5c983cf3c352

File content as of revision 4:ac0ee88ea0ed:

#ifndef __BLE_TEST_SERVICE_H__
#define __BLE_TEST_SERVICE_H__

#include "BLEDevice.h"

/**
* @class BatteryService
* @brief BLE Battery Service. This service displays the battery level from 0%->100% represented as a 8bit number.<br>
* Service:  https://developer.bluetooth.org/gatt/services/Pages/ServiceViewer.aspx?u=org.bluetooth.service.battery_service.xml <br>
* Battery Level Char:  https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.battery_level.xml
*/
class BroadcasterService {
public:
    /**
    * @param[ref] _ble
    *               
    * @param[in] 
    */
    BroadcasterService(BLEDevice &_ble, uint8_t _command) :
        ble(_ble),
        command(_command),
        broadcasterCharacteristic(0x2A67, &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(0x1817, 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 /* #ifndef __BLE_TEST_SERVICE_H__*/