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.h
- Committer:
- loicguibert
- Date:
- 2019-04-17
- Revision:
- 18:7002e66af2e5
- Parent:
- 17:76787f5a334f
- Child:
- 22:79c64511d34d
File content as of revision 18:7002e66af2e5:
#pragma once
#include "ble/BLE.h"
// for logging
#include "Logger.h"
#include "ReadNotifyGattCharacteristic.h"
class EnvironmentalService {
public:
  typedef uint32_t  PressureType_t;
  typedef int16_t   TemperatureType_t;
  typedef uint16_t  HumidityType_t;
  typedef uint8_t   PressureTrendType_t;
  
  /**
   * @brief   BatteryService constructor.
   * @param   ble Reference to BLE device.
   */
  EnvironmentalService(BLE& ble, Logger& logger);
  
  /**
   * Called after initialization of the BLE module for adding the service
   * to the GATT server
   */
  void addServiceToGattServer(void);
   
  /**
   * @brief   Update battery level characteristic.
   * @param   newBatteryLevelVal New battery level measurement.
   */
  void updateEnvironmentalService(PressureType_t newPressure, TemperatureType_t newTemperature, HumidityType_t newHumidity, uint32_t newPressureTrend);
private:
  // data members
  BLE& m_ble;
  bool m_serviceAdded;
  PressureType_t        m_pressure;
  TemperatureType_t     m_temperature;
  HumidityType_t        m_humidity;
  PressureTrendType_t   m_pressureTrend;
  
  // characteristics belonging to the service
  ReadNotifyGattCharacteristic<PressureType_t> m_pressureCharacteristic;
  ReadNotifyGattCharacteristic<TemperatureType_t> m_temperatureCharacteristic;
  ReadNotifyGattCharacteristic<HumidityType_t> m_humidityCharacteristic;
  ReadNotifyGattCharacteristic<PressureTrendType_t> m_pressureTrendCharacteristic;
    
  // logger instance
  Logger& m_logger;
  
  // Enum for pressure trend
  enum pressureTrendStates {
    UNKNOWN                 = 0,
    FALLING_CONTINUOUSLY    = 1,
    RISING_CONTINUOUSLY     = 2,
    FALLING_STEADY          = 3,
    RISING_STEADY           = 4,
    FALLING_LESSER_RISE     = 5,
    FALLING_GREATER_RISE    = 6,
    RISING_GREATER_RISE     = 7,
    RISING_LESSER_RISE      = 8,
    STEADY                  = 9
  };
};