yes Spada / Mbed OS programme

EnvironmentalService.h

Committer:
loicguibert
Date:
2019-04-16
Revision:
16:eed9a9ba319c
Parent:
15:aac1b3950a9e
Child:
17:76787f5a334f

File content as of revision 16:eed9a9ba319c:

#pragma once

#include "ble/BLE.h"
// for logging
#include "Logger.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
  ReadOnlyGattCharacteristic<PressureType_t> m_pressureCharacteristic;
  ReadOnlyGattCharacteristic<TemperatureType_t> m_temperatureCharacteristic;
  ReadOnlyGattCharacteristic<HumidityType_t> m_humidityCharacteristic;
  ReadOnlyGattCharacteristic<PressureTrendType_t> m_pressureTrendCharacteristic;
    
  // logger instance
  Logger& m_logger;
  
  // Enum for pressure trend
  enum pressureTrendStates {
    UNKNOWN,
    FALLING_CONTINUOUSLY,
    RISING_CONTINUOUSLY,
    FALLING_STEADY,
    RISING_STEADY,
    FALLING_LESSER_RISE,
    FALLING_GREATER_RISE,
    RISING_GREATER_RISE,
    RISING_LESSER_RISE,
    STEADY
  };
};