yes Spada / Mbed OS programme
Committer:
loicguibert
Date:
Tue Apr 16 08:25:25 2019 +0000
Revision:
16:eed9a9ba319c
Parent:
15:aac1b3950a9e
Child:
18:7002e66af2e5
tp.04 point 4 (almost done)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
loicguibert 14:c5578b5edabe 1 #include "EnvironmentalService.h"
loicguibert 14:c5578b5edabe 2
loicguibert 14:c5578b5edabe 3 #include "mbed.h"
loicguibert 14:c5578b5edabe 4
loicguibert 14:c5578b5edabe 5 EnvironmentalService::EnvironmentalService(BLE& ble, Logger& logger)
loicguibert 14:c5578b5edabe 6 : m_ble(ble),
loicguibert 14:c5578b5edabe 7 m_serviceAdded(false),
loicguibert 15:aac1b3950a9e 8 m_pressureCharacteristic(GattCharacteristic::UUID_PRESSURE_CHAR, &m_pressure),
loicguibert 15:aac1b3950a9e 9 m_temperatureCharacteristic(GattCharacteristic::UUID_TEMPERATURE_CHAR, &m_temperature),
loicguibert 15:aac1b3950a9e 10 m_humidityCharacteristic(GattCharacteristic::UUID_HUMIDITY_CHAR, &m_humidity),
loicguibert 16:eed9a9ba319c 11 m_pressureTrendCharacteristic(0x2AA3, &m_pressureTrend),
loicguibert 14:c5578b5edabe 12 m_logger(logger) {
loicguibert 14:c5578b5edabe 13 }
loicguibert 14:c5578b5edabe 14
loicguibert 14:c5578b5edabe 15 void EnvironmentalService::addServiceToGattServer(void) {
loicguibert 14:c5578b5edabe 16 // We should only ever need to add the information service once
loicguibert 14:c5578b5edabe 17 if (m_serviceAdded) {
loicguibert 14:c5578b5edabe 18 return;
loicguibert 14:c5578b5edabe 19 }
loicguibert 14:c5578b5edabe 20
loicguibert 15:aac1b3950a9e 21 GattCharacteristic *charTable[] = {
loicguibert 15:aac1b3950a9e 22 &m_pressureCharacteristic,
loicguibert 15:aac1b3950a9e 23 &m_temperatureCharacteristic,
loicguibert 16:eed9a9ba319c 24 &m_humidityCharacteristic,
loicguibert 16:eed9a9ba319c 25 &m_pressureTrendCharacteristic
loicguibert 15:aac1b3950a9e 26 };
loicguibert 14:c5578b5edabe 27
loicguibert 15:aac1b3950a9e 28 GattService environmentalService(GattService::UUID_ENVIRONMENTAL_SERVICE, charTable, sizeof(charTable) / sizeof(GattCharacteristic *));
loicguibert 15:aac1b3950a9e 29 m_ble.gattServer().addService(environmentalService);
loicguibert 14:c5578b5edabe 30
loicguibert 14:c5578b5edabe 31 m_serviceAdded = true;
loicguibert 14:c5578b5edabe 32
loicguibert 14:c5578b5edabe 33 m_logger.log("Environmental service added\r\n");
loicguibert 14:c5578b5edabe 34 }
loicguibert 14:c5578b5edabe 35
loicguibert 16:eed9a9ba319c 36 void EnvironmentalService::updateEnvironmentalService(PressureType_t newPressure, TemperatureType_t newTemperature, HumidityType_t newHumidity, uint32_t newPressureTrend) {
loicguibert 15:aac1b3950a9e 37 m_pressure = newPressure;
loicguibert 15:aac1b3950a9e 38 m_temperature = newTemperature;
loicguibert 16:eed9a9ba319c 39 m_humidity = newHumidity;
loicguibert 16:eed9a9ba319c 40 if (newPressureTrend < newPressure) {
loicguibert 16:eed9a9ba319c 41 m_pressureTrend = RISING_CONTINUOUSLY;
loicguibert 16:eed9a9ba319c 42 } else if (newPressureTrend == newPressure) {
loicguibert 16:eed9a9ba319c 43 m_pressureTrend = STEADY;
loicguibert 16:eed9a9ba319c 44 } else {
loicguibert 16:eed9a9ba319c 45 m_pressureTrend = FALLING_CONTINUOUSLY;
loicguibert 16:eed9a9ba319c 46 }
loicguibert 15:aac1b3950a9e 47 m_ble.gattServer().write(m_pressureCharacteristic.getValueHandle(), (uint8_t *) &m_pressure, sizeof(PressureType_t));
loicguibert 15:aac1b3950a9e 48 m_ble.gattServer().write(m_temperatureCharacteristic.getValueHandle(), (uint8_t *) &m_temperature, sizeof(m_temperature));
loicguibert 15:aac1b3950a9e 49 m_ble.gattServer().write(m_humidityCharacteristic.getValueHandle(), (uint8_t *) &m_humidity, sizeof(m_humidity));
loicguibert 16:eed9a9ba319c 50 m_ble.gattServer().write(m_pressureTrendCharacteristic.getValueHandle(), (uint8_t *) &m_pressureTrend, sizeof(m_pressureTrend));
loicguibert 14:c5578b5edabe 51 }