Pull request for i.a. sensor buffer template

Dependencies:   BLE_API MPU6050 mbed nRF51822

Committer:
pietermaljaars
Date:
Wed Sep 19 19:49:39 2018 +0000
Revision:
5:614164945894
Child:
6:ed0dc0647c01
Add temperature

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pietermaljaars 5:614164945894 1
pietermaljaars 5:614164945894 2 #ifndef __TEMPERATURE_SERVICE_H__
pietermaljaars 5:614164945894 3 #define __TEMPERATURE_SERVICE_H__
pietermaljaars 5:614164945894 4
pietermaljaars 5:614164945894 5 #include "ble/BLE.h"
pietermaljaars 5:614164945894 6
pietermaljaars 5:614164945894 7 #define UUID_TEMPERATURE_CELSIUS_CHAR 0x2A1F
pietermaljaars 5:614164945894 8 #define UUID_TEMPERATURE_SERVICE "5D34E2F0-3DD2-07AC-38F1-BBAD120EF852"
pietermaljaars 5:614164945894 9
pietermaljaars 5:614164945894 10
pietermaljaars 5:614164945894 11 /**
pietermaljaars 5:614164945894 12 * @class TemperatureService
pietermaljaars 5:614164945894 13 * @brief BLE Temperature Service. This service displays the temperature, represented as an 16bit number.
pietermaljaars 5:614164945894 14 */
pietermaljaars 5:614164945894 15 class TemperatureService {
pietermaljaars 5:614164945894 16 public:
pietermaljaars 5:614164945894 17 /**
pietermaljaars 5:614164945894 18 * @param[in] _ble
pietermaljaars 5:614164945894 19 * BLE object for the underlying controller.
pietermaljaars 5:614164945894 20 * @param[in] temperature
pietermaljaars 5:614164945894 21 * 16bit temperature in 0.1 degrees Celsius
pietermaljaars 5:614164945894 22 */
pietermaljaars 5:614164945894 23 TemperatureService(BLE &_ble, int16_t temperature = 200) :
pietermaljaars 5:614164945894 24 ble(_ble),
pietermaljaars 5:614164945894 25 temperature(temperature),
pietermaljaars 5:614164945894 26 temperatureCharacteristic(UUID_TEMPERATURE_CELSIUS_CHAR, &temperature, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY) {
pietermaljaars 5:614164945894 27
pietermaljaars 5:614164945894 28 GattCharacteristic *charTable[] = {&temperatureCharacteristic};
pietermaljaars 5:614164945894 29 GattService TemperatureService(UUID(UUID_TEMPERATURE_SERVICE), charTable, sizeof(charTable) / sizeof(GattCharacteristic *));
pietermaljaars 5:614164945894 30
pietermaljaars 5:614164945894 31 ble.addService(TemperatureService);
pietermaljaars 5:614164945894 32 }
pietermaljaars 5:614164945894 33
pietermaljaars 5:614164945894 34 /**
pietermaljaars 5:614164945894 35 * @brief Update the temperature with a new value. Valid values lie between -2732 and above.
pietermaljaars 5:614164945894 36 *
pietermaljaars 5:614164945894 37 * @param newTemp
pietermaljaars 5:614164945894 38 * Update to temperature.
pietermaljaars 5:614164945894 39 */
pietermaljaars 5:614164945894 40 void updateTemperature(int16_t newTemp) {
pietermaljaars 5:614164945894 41 temperature = newTemp;
pietermaljaars 5:614164945894 42 uint16_t temp = (uint16_t)temperature;
pietermaljaars 5:614164945894 43 ble.gattServer().write(temperatureCharacteristic.getValueHandle(), (const uint8_t*)&temp, sizeof(temperature));
pietermaljaars 5:614164945894 44 }
pietermaljaars 5:614164945894 45
pietermaljaars 5:614164945894 46 protected:
pietermaljaars 5:614164945894 47 /**
pietermaljaars 5:614164945894 48 * A reference to the underlying BLE instance that this object is attached to.
pietermaljaars 5:614164945894 49 * The services and characteristics will be registered in this BLE instance.
pietermaljaars 5:614164945894 50 */
pietermaljaars 5:614164945894 51 BLE &ble;
pietermaljaars 5:614164945894 52
pietermaljaars 5:614164945894 53 /**
pietermaljaars 5:614164945894 54 * The current temperature represented as 0.1 degrees Celsius.
pietermaljaars 5:614164945894 55 */
pietermaljaars 5:614164945894 56 int16_t temperature;
pietermaljaars 5:614164945894 57 /**
pietermaljaars 5:614164945894 58 * A ReadOnlyGattCharacteristic that allows access to the peer device to the
pietermaljaars 5:614164945894 59 * temperature value through BLE.
pietermaljaars 5:614164945894 60 */
pietermaljaars 5:614164945894 61 ReadOnlyGattCharacteristic<int16_t> temperatureCharacteristic;
pietermaljaars 5:614164945894 62 };
pietermaljaars 5:614164945894 63
pietermaljaars 5:614164945894 64 #endif /* #ifndef __TEMPERATURE_SERVICE_H__*/