Dissertation project, looking at BLE communication in cars. This project is BLE peripheral acting as car indicator stalk

Dependencies:   BLE_API mbed nRF51822

Fork of BLE_GATT_test1 by Alexander Lea

BroadcasterService.h

Committer:
alexanderlea
Date:
2015-02-24
Revision:
7:5c983cf3c352
Parent:
4:ac0ee88ea0ed
Child:
8:3376f79e7d50

File content as of revision 7:5c983cf3c352:

#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]
    */
    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