Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: X_NUCLEO_IKS01A2
Diff: source/ESS.h
- Revision:
- 2:5da515ba10ff
- Parent:
- 1:b12ac7b02a21
--- a/source/ESS.h Wed Apr 29 16:18:37 2020 +0000
+++ b/source/ESS.h Thu Apr 30 14:28:59 2020 +0000
@@ -14,6 +14,7 @@
#include "Gap.h"
#include "GattServer.h"
#include "BLEDeviceInstanceBase.h"
+#include "ble/BLE.h"
//#include "BLEDevice.h"
@@ -25,6 +26,10 @@
class EnvironmentalSensingService {
public:
+ typedef int16_t TemperatureType_t;
+ typedef uint16_t HumidityType_t;
+ typedef uint32_t PressureType_t;
+ typedef uint16_t WinddirectionType_t;
/**
* Constructor.
*
@@ -35,44 +40,68 @@
* param[in] temperature in degrees Celsius (16-bit signed, 2 decimals).
* initial value for the temperature
*/
- EnvironmentalSensingService(BLEDevice &_ble, uint16_t humidity, int16_t temperature) :
+ /**
+ * @brief EnvironmentalService constructor.
+ * @param ble Reference to BLE device.
+ * @param temperature_en Enable this characteristic.
+ * @param humidity_en Enable this characteristic.
+ * @param pressure_en Enable this characteristic.
+ */
+ EnvironmentalSensingService(BLE& _ble) :
ble(_ble),
-
- humiditychar(GattCharacteristic::UUID_HUMIDITY_CHAR, (uint8_t *)&humidity,
- sizeof(uint16_t), sizeof(uint16_t),
- GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY),
+ temperatureCharacteristic(GattCharacteristic::UUID_TEMPERATURE_CHAR, &temperature),
+ humidityCharacteristic(0x2A6F, &humidity),
+ pressureCharacteristic(GattCharacteristic::UUID_PRESSURE_CHAR, &pressure),
+ winddirectionCharacteristic(0x2A71, &winddirection)
+ {
+ static bool serviceAdded = false; /* We should only ever need to add the information service once. */
+ if (serviceAdded) {
+ return;
+ }
+
+ GattCharacteristic *charTable[] = { &humidityCharacteristic,
+ &pressureCharacteristic,
+ &temperatureCharacteristic,
+ &winddirectionCharacteristic };
+
+ GattService EnvironmentalService(0x181A, charTable, sizeof(charTable) / sizeof(GattCharacteristic *));
+
+ ble.gattServer().addService(EnvironmentalService);
+ serviceAdded = true;
+ }
+
- temperaturechar(GattCharacteristic::UUID_TEMPERATURE_CHAR, (uint8_t *)&temperature,
- sizeof(int16_t), sizeof(int16_t),
- GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY)
-
-
- { // Setup Service
-
- GattCharacteristic *charTable[] = {&humiditychar, &temperaturechar, }; // 2 services. humidity and temp
-
- GattService EnvironmentalService(0x181A, charTable, sizeof(charTable) / sizeof(GattCharacteristic *));
-
- ble.gattServer().addService(EnvironmentalService);
+ void updateHumidity(HumidityType_t newHumidityVal)
+ {
+ humidity = (HumidityType_t) (newHumidityVal * 100);
+ ble.gattServer().write(humidityCharacteristic.getValueHandle(), (uint8_t *) &humidity, sizeof(HumidityType_t));
}
-
- /* Set a new 16-bit value for the humidity measurement. */
- void updateHumidity(uint16_t humidity) {
- ble.gattServer().write(humiditychar.getValueAttribute().getHandle(), (uint8_t *)&humidity, sizeof(uint16_t));
+ void updateTemperature(float newTemperatureVal)
+ {
+ temperature = (TemperatureType_t) (newTemperatureVal * 100);
+ ble.gattServer().write(temperatureCharacteristic.getValueHandle(), (uint8_t *) &temperature, sizeof(TemperatureType_t));
}
-
- /* Set a new 16-bit value for the temperature measurement. */
- void updateTemperature(int16_t temperature) {
- ble.gattServer().write(temperaturechar.getValueAttribute().getHandle(), (uint8_t *)&temperature, sizeof(int16_t));
+ void updatePressure(PressureType_t newPressureVal)
+ {
+ pressure = (PressureType_t) (newPressureVal * 10);
+ ble.gattServer().write(pressureCharacteristic.getValueHandle(), (uint8_t *) &pressure, sizeof(PressureType_t));
}
-
+ void updateWinddirection(WinddirectionType_t winddirection) {
+ ble.gattServer().write(winddirectionCharacteristic.getValueHandle(), (uint8_t *)&winddirection, sizeof(WinddirectionType_t));
+ }
private:
- BLEDevice &ble;
- GattCharacteristic humiditychar;
- GattCharacteristic temperaturechar;
+ BLE &ble;
+ ReadOnlyGattCharacteristic<HumidityType_t> humidityCharacteristic;
+ ReadOnlyGattCharacteristic<TemperatureType_t> temperatureCharacteristic;
+ ReadOnlyGattCharacteristic<PressureType_t> pressureCharacteristic;
+ ReadOnlyGattCharacteristic<WinddirectionType_t> winddirectionCharacteristic;
+ PressureType_t pressure;
+ TemperatureType_t temperature;
+ HumidityType_t humidity;
+ WinddirectionType_t winddirection;
};