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
ESS.h
00001 /* ARM University Program Microcontroller Library 00002 * 00003 * Environmental Sensing Service 00004 * 00005 * This software is distributed under an "AS IS" BASIS, 00006 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00007 */ 00008 00009 #ifndef __BLE_ENVIRONMENTAL_SENSING_SERVICE_H__ 00010 #define __BLE_ENVIRONMENTAL_SENSING_SERVICE_H__ 00011 00012 #include <mbed.h> 00013 #include "blecommon.h" 00014 #include "Gap.h" 00015 #include "GattServer.h" 00016 #include "BLEDeviceInstanceBase.h" 00017 #include "ble/BLE.h" 00018 00019 //#include "BLEDevice.h" 00020 00021 /* Environmental Sensing Service */ 00022 /* Service: https://developer.bluetooth.org/gatt/services/Pages/ServiceViewer.aspx?u=org.bluetooth.service.environmental_sensing.xml */ 00023 /* Humidity characteristic: https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.humidity.xml */ 00024 /* Temperature: https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.temperature.xml */ 00025 00026 class EnvironmentalSensingService { 00027 00028 public: 00029 typedef int16_t TemperatureType_t; 00030 typedef uint16_t HumidityType_t; 00031 typedef uint32_t PressureType_t; 00032 typedef uint16_t WinddirectionType_t; 00033 /** 00034 * Constructor. 00035 * 00036 * param[in] _ble 00037 * Reference to the underlying BLEDevice. 00038 * param[in] humidity percentage (16-bit unsigned, 2 decimals). 00039 * initial value for the humidity value. 00040 * param[in] temperature in degrees Celsius (16-bit signed, 2 decimals). 00041 * initial value for the temperature 00042 */ 00043 /** 00044 * @brief EnvironmentalService constructor. 00045 * @param ble Reference to BLE device. 00046 * @param temperature_en Enable this characteristic. 00047 * @param humidity_en Enable this characteristic. 00048 * @param pressure_en Enable this characteristic. 00049 */ 00050 EnvironmentalSensingService(BLE& _ble) : 00051 ble(_ble), 00052 temperatureCharacteristic(GattCharacteristic::UUID_TEMPERATURE_CHAR, &temperature), 00053 humidityCharacteristic(0x2A6F, &humidity), 00054 pressureCharacteristic(GattCharacteristic::UUID_PRESSURE_CHAR, &pressure), 00055 winddirectionCharacteristic(0x2A71, &winddirection) 00056 { 00057 static bool serviceAdded = false; /* We should only ever need to add the information service once. */ 00058 if (serviceAdded) { 00059 return; 00060 } 00061 00062 GattCharacteristic *charTable[] = { &humidityCharacteristic, 00063 &pressureCharacteristic, 00064 &temperatureCharacteristic, 00065 &winddirectionCharacteristic }; 00066 00067 GattService EnvironmentalService(0x181A, charTable, sizeof(charTable) / sizeof(GattCharacteristic *)); 00068 00069 ble.gattServer().addService(EnvironmentalService); 00070 serviceAdded = true; 00071 } 00072 00073 00074 void updateHumidity(HumidityType_t newHumidityVal) 00075 { 00076 humidity = (HumidityType_t) (newHumidityVal * 100); 00077 ble.gattServer().write(humidityCharacteristic.getValueHandle(), (uint8_t *) &humidity, sizeof(HumidityType_t)); 00078 } 00079 00080 void updateTemperature(float newTemperatureVal) 00081 { 00082 temperature = (TemperatureType_t) (newTemperatureVal * 100); 00083 ble.gattServer().write(temperatureCharacteristic.getValueHandle(), (uint8_t *) &temperature, sizeof(TemperatureType_t)); 00084 } 00085 void updatePressure(PressureType_t newPressureVal) 00086 { 00087 pressure = (PressureType_t) (newPressureVal * 10); 00088 ble.gattServer().write(pressureCharacteristic.getValueHandle(), (uint8_t *) &pressure, sizeof(PressureType_t)); 00089 } 00090 void updateWinddirection(WinddirectionType_t winddirection) { 00091 ble.gattServer().write(winddirectionCharacteristic.getValueHandle(), (uint8_t *)&winddirection, sizeof(WinddirectionType_t)); 00092 } 00093 00094 00095 private: 00096 BLE &ble; 00097 ReadOnlyGattCharacteristic<HumidityType_t> humidityCharacteristic; 00098 ReadOnlyGattCharacteristic<TemperatureType_t> temperatureCharacteristic; 00099 ReadOnlyGattCharacteristic<PressureType_t> pressureCharacteristic; 00100 ReadOnlyGattCharacteristic<WinddirectionType_t> winddirectionCharacteristic; 00101 PressureType_t pressure; 00102 TemperatureType_t temperature; 00103 HumidityType_t humidity; 00104 WinddirectionType_t winddirection; 00105 00106 }; 00107 00108 #endif /* #ifndef __BLE_ENVIRONMENTAL_SENSING_SERVICE_H__*/ 00109 00110 00111 // *******************************ARM University Program Copyright © ARM Ltd 2015*************************************//
Generated on Tue Jul 18 2023 16:19:15 by
1.7.2