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.
EnvironmentalService.cpp@20:dac20b06d457, 2019-04-19 (annotated)
- Committer:
- loicguibert
- Date:
- Fri Apr 19 16:16:44 2019 +0000
- Revision:
- 20:dac20b06d457
- Parent:
- 19:e056f98192f2
- Child:
- 22:79c64511d34d
Ultimes changements
Who changed what in which revision?
| User | Revision | Line number | New 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 | 20:dac20b06d457 | 43 | // Setting the actual barmeter state using the average | 
| loicguibert | 18:7002e66af2e5 | 44 | if (newPressure == newPressureTrend) m_pressureTrend = STEADY; | 
| loicguibert | 18:7002e66af2e5 | 45 | if (newPressure > newPressureTrend) m_pressureTrend = RISING_CONTINUOUSLY; | 
| loicguibert | 18:7002e66af2e5 | 46 | if (newPressure < newPressureTrend) m_pressureTrend = FALLING_CONTINUOUSLY; | 
| spadaaa | 19:e056f98192f2 | 47 | |
| loicguibert | 15:aac1b3950a9e | 48 | m_ble.gattServer().write(m_pressureCharacteristic.getValueHandle(), (uint8_t *) &m_pressure, sizeof(PressureType_t)); | 
| loicguibert | 15:aac1b3950a9e | 49 | m_ble.gattServer().write(m_temperatureCharacteristic.getValueHandle(), (uint8_t *) &m_temperature, sizeof(m_temperature)); | 
| loicguibert | 15:aac1b3950a9e | 50 | m_ble.gattServer().write(m_humidityCharacteristic.getValueHandle(), (uint8_t *) &m_humidity, sizeof(m_humidity)); | 
| loicguibert | 16:eed9a9ba319c | 51 | m_ble.gattServer().write(m_pressureTrendCharacteristic.getValueHandle(), (uint8_t *) &m_pressureTrend, sizeof(m_pressureTrend)); | 
| loicguibert | 14:c5578b5edabe | 52 | } |