yes Spada / Mbed OS programme
Committer:
spadaaa
Date:
Wed Apr 17 12:58:36 2019 +0000
Revision:
19:e056f98192f2
Parent:
18:7002e66af2e5
Child:
20:dac20b06d457
Tp04 fonctionnel :)

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