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.
Diff: HDC2080.h
- Revision:
- 1:8600f19753b8
- Parent:
- 0:e214a18cbe6d
- Child:
- 3:d36591d51f4d
diff -r e214a18cbe6d -r 8600f19753b8 HDC2080.h --- a/HDC2080.h Tue Nov 19 10:28:30 2019 +0000 +++ b/HDC2080.h Tue Nov 19 10:35:23 2019 +0000 @@ -0,0 +1,600 @@ +/** + * @brief HDC2080.h + * @details Low-Power Humidity and Temperature Digital Sensor. + * Header file. + * + * + * @return N/A + * + * @author Manuel Caballero + * @date 19/November/2019 + * @version 19/November/2019 The ORIGIN + * @pre N/A. + * @warning N/A + * @pre This code belongs to Nimbus Centre ( https://www.nimbus.cit.ie ). + */ +#ifndef HDC2080_H +#define HDC2080_H + +#include "mbed.h" + + +/** + Example: +@code + +@endcode +*/ + + +/*! + Library for the HDC2080 Low-Power Humidity and Temperature Digital Sensor. +*/ +class HDC2080 +{ +public: + /** + * @brief DEFAULT ADDRESSES + */ + typedef enum { + HDC2080_ADDRESS_GND = ( 0b1000000 << 1U ), /*!< ADDR connected to GND */ + HDC2080_ADDRESS_VDD = ( 0b1000001 << 1U ) /*!< ADDR connected to VDD */ + } HDC2080_addresses_t; + + + + /** + * @brief REGISTER MAP + */ + typedef enum { + HDC2080_TEMPERATURE_LOW = 0x00, /*!< Temperature [7:0] */ + HDC2080_TEMPERATURE_HIGH = 0x01, /*!< Temperature [15:8] */ + HDC2080_HUMIDITY_LOW = 0x02, /*!< Humidity [7:0] */ + HDC2080_HUMIDITY_HIGH = 0x03, /*!< Humidity [15:8] */ + HDC2080_INTERRUPT_DRDY = 0x04, /*!< DataReady and interrupt configuration */ + HDC2080_TEMPERATURE_MAX = 0x05, /*!< Maximum measured temperature (Not supported in Auto Measurement Mode) */ + HDC2080_HUMIDITY_MAX = 0x06, /*!< Maximum measured humidity (Not supported in Auto Measurement Mode) */ + HDC2080_INTERRUPT_ENABLE = 0x07, /*!< Interrupt Enable */ + HDC2080_TEMP_OFFSET_ADJUST = 0x08, /*!< Temperature offset adjustment */ + HDC2080_HUM_OFFSET_ADJUST = 0x09, /*!< Humidity offset adjustment */ + HDC2080_TEMP_THR_L = 0x0A, /*!< Temperature Threshold Low */ + HDC2080_TEMP_THR_H = 0x0B, /*!< Temperature Threshold High */ + HDC2080_RH_THR_L = 0x0C, /*!< Humidity threshold Low */ + HDC2080_RH_THR_H = 0x0D, /*!< Humidity threshold High */ + HDC2080_RESET_DRDY_INT_CONF = 0x0E, /*!< Soft Reset and Interrupt Configuration */ + HDC2080_MEASUREMENT_CONFIGURATION = 0x0F, /*!< Measurement configuration */ + HDC2080_MANUFACTURER_ID_LOW = 0xFC, /*!< Manufacturer ID Low */ + HDC2080_MANUFACTURER_ID_HIGH = 0xFD, /*!< Manufacturer ID High */ + HDC2080_DEVICE_ID_LOW = 0xFE, /*!< Device ID Low */ + HDC2080_DEVICE_ID_HIGH = 0xFF /*!< Device ID High */ + } HDC2080_register_map_t; + + + + /** + * @brief INTERRUPT/DRDY REGISTER + */ + /* DRDY_STATUS <7> + * NOTE: DataReady bit status. DRDY_STATUS is cleared to 0 when read. + */ + typedef enum { + INTERRUPT_DRDY_DRDY_STATUS_MASK = ( 1U << 7U ), /*!< DRDY_STATUS mask */ + INTERRUPT_DRDY_DRDY_STATUS_DATA_NOT_READY = ( 0U << 7U ), /*!< DRDY_STATUS data not ready */ + INTERRUPT_DRDY_DRDY_STATUS_DATA_READY = ( 1U << 7U ) /*!< DRDY_STATUS data ready */ + } HDC2080_interrupt_drdy_drdy_status_t; + + + /* TH_STATUS <6> + * NOTE: Temperature threshold HIGH Interrupt status. TH_STATUS is cleared to 0 when read. + */ + typedef enum { + INTERRUPT_DRDY_TH_STATUS_MASK = ( 1U << 6U ), /*!< TH_STATUS mask */ + INTERRUPT_DRDY_TH_STATUS_NO_INTERRUPT = ( 0U << 6U ), /*!< No interrupt */ + INTERRUPT_DRDY_TH_STATUS_INTERRUPT = ( 1U << 6U ) /*!< Interrupt */ + } HDC2080_interrupt_drdy_th_status_t; + + + /* TL_STATUS <5> + * NOTE: Temperature threshold LOW Interrupt status. TL_STATUS is cleared to 0 when read. + */ + typedef enum { + INTERRUPT_DRDY_TL_STATUS_MASK = ( 1U << 5U ), /*!< TL_STATUS mask */ + INTERRUPT_DRDY_TL_STATUS_NO_INTERRUPT = ( 0U << 5U ), /*!< No interrupt */ + INTERRUPT_DRDY_TL_STATUS_INTERRUPT = ( 1U << 5U ) /*!< Interrupt */ + } HDC2080_interrupt_drdy_tl_status_t; + + + /* HH_STATUS <4> + * NOTE: Humidity threshold HIGH Interrupt status. HH_STATUS is cleared to 0 when read. + */ + typedef enum { + INTERRUPT_DRDY_HH_STATUS_MASK = ( 1U << 4U ), /*!< HH_STATUS mask */ + INTERRUPT_DRDY_HH_STATUS_NO_INTERRUPT = ( 0U << 4U ), /*!< No interrupt */ + INTERRUPT_DRDY_HH_STATUS_INTERRUPT = ( 1U << 4U ) /*!< Interrupt */ + } HDC2080_interrupt_drdy_hh_status_t; + + + /* HL_STATUS <3> + * NOTE: Humidity threshold LOW Interrupt status. HL_STATUS is cleared to 0 when read. + */ + typedef enum { + INTERRUPT_DRDY_HL_STATUS_MASK = ( 1U << 3U ), /*!< HL_STATUS mask */ + INTERRUPT_DRDY_HL_STATUS_NO_INTERRUPT = ( 0U << 3U ), /*!< No interrupt */ + INTERRUPT_DRDY_HL_STATUS_INTERRUPT = ( 1U << 3U ) /*!< Interrupt */ + } HDC2080_interrupt_drdy_hl_status_t; + + + + /** + * @brief INTERRUPT CONFIGURATION REGISTER + */ + /* DRDY_STATUS <7> + * NOTE: DataReady interrupt enable. + */ + typedef enum { + INTERRUPT_DRDY_DRDY_ENABLE_MASK = ( 1U << 7U ), /*!< DRDY_ENABLE mask */ + INTERRUPT_DRDY_DRDY_ENABLE_INTERRUPT_DISABLE = ( 0U << 7U ), /*!< DRDY_ENABLE interrupt disable */ + INTERRUPT_DRDY_DRDY_ENABLE_INTERRUPT_ENABLE = ( 1U << 7U ) /*!< DRDY_ENABLE interrupt enable */ + } HDC2080_interrupt_enable_drdy_enable_t; + + + /* TH_ENABLE <6> + * NOTE: Temperature threshold HIGH Interrupt enable. + */ + typedef enum { + INTERRUPT_DRDY_TH_ENABLE_MASK = ( 1U << 6U ), /*!< TH_ENABLE mask */ + INTERRUPT_DRDY_TH_ENABLE_INTERRUPT_DISABLE = ( 0U << 6U ), /*!< Interrupt disable */ + INTERRUPT_DRDY_TH_ENABLE_INTERRUPT_ENABLE = ( 1U << 6U ), /*!< Interrupt enable */ + } HDC2080_interrupt_enable_th_enable_t; + + + /* TL_ENABLE <5> + * NOTE: Temperature threshold LOW Interrupt enable. + */ + typedef enum { + INTERRUPT_DRDY_TL_ENABLE_MASK = ( 1U << 5U ), /*!< TL_ENABLE mask */ + INTERRUPT_DRDY_TL_ENABLE_INTERRUPT_DISABLE = ( 0U << 5U ), /*!< Interrupt disable */ + INTERRUPT_DRDY_TL_ENABLE_INTERRUPT_ENABLE = ( 1U << 5U ), /*!< Interrupt enable */ + } HDC2080_interrupt_enable_tl_enable_t; + + + /* HH_ENABLE <4> + * NOTE: Humidity threshold HIGH Interrupt enable. + */ + typedef enum { + INTERRUPT_DRDY_HH_ENABLE_MASK = ( 1U << 4U ), /*!< HH_ENABLE mask */ + INTERRUPT_DRDY_HH_ENABLE_INTERRUPT_DISABLE = ( 0U << 4U ), /*!< Interrupt disable */ + INTERRUPT_DRDY_HH_ENABLE_INTERRUPT_ENABLE = ( 1U << 4U ), /*!< Interrupt enable */ + } HDC2080_interrupt_enable_hh_enable_t; + + + /* HL_ENABLE <3> + * NOTE: Humidity threshold LOW Interrupt enable. + */ + typedef enum { + INTERRUPT_DRDY_HL_ENABLE_MASK = ( 1U << 3U ), /*!< HL_ENABLE mask */ + INTERRUPT_DRDY_HL_ENABLE_INTERRUPT_DISABLE = ( 0U << 3U ), /*!< Interrupt disable */ + INTERRUPT_DRDY_HL_ENABLE_INTERRUPT_ENABLE = ( 1U << 3U ), /*!< Interrupt enable */ + } HDC2080_interrupt_enable_hl_enable_t; + + + /** + * @brief TEMP_OFFSET_ADJUST REGISTER + * NOTE: Temperature offset adjustment. Added to the converted temperature value. + */ + typedef enum { + TEMP_OFFSET_ADJUST_MASK = 0xFF, /*!< TEMP_OFFSET_ADJUST mask */ + TEMP_OFFSET_ADJUST_MINUS_20_62_C = ( 1U << 7U ), /*!< TEMP_OFFSET_ADJUST: –20.62°C */ + TEMP_OFFSET_ADJUST_10_32_C = ( 1U << 6U ), /*!< TEMP_OFFSET_ADJUST: 10.32°C */ + TEMP_OFFSET_ADJUST_5_16_C = ( 1U << 5U ), /*!< TEMP_OFFSET_ADJUST: 5.16°C */ + TEMP_OFFSET_ADJUST_2_58_C = ( 1U << 4U ), /*!< TEMP_OFFSET_ADJUST: 2.58°C */ + TEMP_OFFSET_ADJUST_1_28_C = ( 1U << 3U ), /*!< TEMP_OFFSET_ADJUST: 1.28°C */ + TEMP_OFFSET_ADJUST_0_64_C = ( 1U << 2U ), /*!< TEMP_OFFSET_ADJUST: 0.64°C */ + TEMP_OFFSET_ADJUST_0_32_C = ( 1U << 1U ), /*!< TEMP_OFFSET_ADJUST: 0.32°C */ + TEMP_OFFSET_ADJUST_0_16_C = ( 1U << 0U ) /*!< TEMP_OFFSET_ADJUST: 0.16°C */ + } HDC2080_temp_offset_adjust_t; + + + /** + * @brief HUM_OFFSET_ADJUST REGISTER + * NOTE: Humidity offset adjustment. Added to the converted Humidity value. + */ + typedef enum { + HUM_OFFSET_ADJUST_MASK = 0xFF, /*!< HUM_OFFSET_ADJUST mask */ + HUM_OFFSET_ADJUST_MINUS_25_RH = ( 1U << 7U ), /*!< HUM_OFFSET_ADJUST: –25 %RH */ + HUM_OFFSET_ADJUST_12_5_RH = ( 1U << 6U ), /*!< HUM_OFFSET_ADJUST: 12.5 %RH */ + HUM_OFFSET_ADJUST_6_3_RH = ( 1U << 5U ), /*!< HUM_OFFSET_ADJUST: 6.3 %RH */ + HUM_OFFSET_ADJUST_3_1_RH = ( 1U << 4U ), /*!< HUM_OFFSET_ADJUST: 3.1 %RH */ + HUM_OFFSET_ADJUST_1_6_RH = ( 1U << 3U ), /*!< HUM_OFFSET_ADJUST: 1.6 %RH */ + HUM_OFFSET_ADJUST_0_8_RH = ( 1U << 2U ), /*!< HUM_OFFSET_ADJUST: 0.8 %RH */ + HUM_OFFSET_ADJUST_0_4_RH = ( 1U << 1U ), /*!< HUM_OFFSET_ADJUST: 0.4 %RH */ + HUM_OFFSET_ADJUST_0_2_RH = ( 1U << 0U ) /*!< HUM_OFFSET_ADJUST: 0.2 %RH */ + } HDC2080_hum_offset_adjust_t; + + + + /** + * @brief RESET_DRDY_INT_CONF REGISTER + */ + /* SOFT_RES <7> + * NOTE: EEPROM value reload and registers reset. + */ + typedef enum { + RESET_DRDY_INT_CONF_SOFT_RES_MASK = ( 1U << 7U ), /*!< SOFT_RES mask */ + RESET_DRDY_INT_CONF_SOFT_RES_NORMAL = ( 0U << 7U ), /*!< Normal Operation mode, this bit is self-clear */ + RESET_DRDY_INT_CONF_SOFT_RES_RESET = ( 1U << 7U ) /*!< Soft Reset */ + } HDC2080_reset_drdy_int_conf_soft_res_t; + + + /* AMM <6:4> + * NOTE: EEPROM value reload and registers reset. + */ + typedef enum { + RESET_DRDY_INT_CONF_AMM_MASK = ( 0b111 << 4U ), /*!< AMM mask */ + RESET_DRDY_INT_CONF_AMM_DISABLED = ( 0b000 << 4U ), /*!< Disabled. Initiate measurement via I2C */ + RESET_DRDY_INT_CONF_AMM_0_008_HZ = ( 0b001 << 4U ), /*!< 1/120Hz (1 samples every 2 minutes) */ + RESET_DRDY_INT_CONF_AMM_0_017_HZ = ( 0b010 << 4U ), /*!< 1/60Hz (1 samples every minute) */ + RESET_DRDY_INT_CONF_AMM_0_1_HZ = ( 0b011 << 4U ), /*!< 0.1Hz (1 samples every 10 seconds) */ + RESET_DRDY_INT_CONF_AMM_0_2_HZ = ( 0b100 << 4U ), /*!< 0.2 Hz (1 samples every 5 second) */ + RESET_DRDY_INT_CONF_AMM_1_HZ = ( 0b101 << 4U ), /*!< 1Hz (1 samples every second) */ + RESET_DRDY_INT_CONF_AMM_2_HZ = ( 0b110 << 4U ), /*!< 2Hz (2 samples every second) */ + RESET_DRDY_INT_CONF_AMM_5_HZ = ( 0b111 << 4U ) /*!< 5Hz (5 samples every second) */ + } HDC2080_reset_drdy_int_conf_amm_t; + + + /* HEAT_EN <3> + * NOTE: N/A. + */ + typedef enum { + RESET_DRDY_INT_CONF_HEAT_EN_MASK = ( 1U << 3U ), /*!< HEAT_EN mask */ + RESET_DRDY_INT_CONF_HEAT_EN_OFF = ( 0U << 3U ), /*!< Heater off */ + RESET_DRDY_INT_CONF_HEAT_EN_ON = ( 1U << 3U ) /*!< Heater on */ + } HDC2080_reset_drdy_int_conf_heat_en_t; + + + /* DRDY/INT_EN <2> + * NOTE: DRDY/INT_EN pin configuration. + */ + typedef enum { + RESET_DRDY_INT_CONF_DRDY_INT_EN_MASK = ( 1U << 2U ), /*!< DRDY/INT_EN mask */ + RESET_DRDY_INT_CONF_DRDY_INT_EN_HIGH_Z = ( 0U << 2U ), /*!< High Z */ + RESET_DRDY_INT_CONF_DRDY_INT_EN_ENABLED = ( 1U << 2U ) /*!< Enable */ + } HDC2080_reset_drdy_int_conf_drdr_int_en_t; + + + /* INT_POL <1> + * NOTE: Interrupt polarity. + */ + typedef enum { + RESET_DRDY_INT_CONF_INT_POL_MASK = ( 1U << 1U ), /*!< INT_POL mask */ + RESET_DRDY_INT_CONF_INT_POL_ACTIVE_LOW = ( 0U << 1U ), /*!< Active Low */ + RESET_DRDY_INT_CONF_INT_POL_ACTIVE_HIGH = ( 1U << 1U ) /*!< Active High */ + } HDC2080_reset_drdy_int_conf_int_pol_t; + + + /* INT_MODE <0> + * NOTE: Interrupt mode. + */ + typedef enum { + RESET_DRDY_INT_CONF_INT_MODE_MASK = ( 1U << 0U ), /*!< INT_MODE mask */ + RESET_DRDY_INT_CONF_INT_MODE_LEVEL_SENSITIVE = ( 0U << 0U ), /*!< Level sensitive */ + RESET_DRDY_INT_CONF_INT_MODE_COMPARATOR_MODE = ( 1U << 0U ) /*!< Comparator mode */ + } HDC2080_reset_drdy_int_conf_int_mode_t; + + + + /** + * @brief MEASUREMENT CONFIGURATION REGISTER + */ + /* TRES <7:6> + * NOTE: Temperature resolution. + */ + typedef enum { + MEASUREMENT_CONF_TRES_MASK = ( 0b11 << 6U ), /*!< TRES mask */ + MEASUREMENT_CONF_TRES_14_BIT = ( 0b00 << 6U ), /*!< 14 bit */ + MEASUREMENT_CONF_TRES_11_BIT = ( 0b01 << 6U ), /*!< 11 bit */ + MEASUREMENT_CONF_TRES_9_BIT = ( 0b10 << 6U ) /*!< 9 bit */ + } HDC2080_measurement_configuration_tres_t; + + + + /* HRES <5:4> + * NOTE: Humidity resolution. + */ + typedef enum { + MEASUREMENT_CONF_HRES_MASK = ( 0b11 << 4U ), /*!< HRES mask */ + MEASUREMENT_CONF_HRES_14_BIT = ( 0b00 << 4U ), /*!< 14 bit */ + MEASUREMENT_CONF_HRES_11_BIT = ( 0b01 << 4U ), /*!< 11 bit */ + MEASUREMENT_CONF_HRES_9_BIT = ( 0b10 << 4U ) /*!< 9 bit */ + } HDC2080_measurement_configuration_hres_t; + + + + /* MEAS_CONF <2:1> + * NOTE: Measurement configuration. + */ + typedef enum { + MEASUREMENT_CONF_MEAS_CONF_MASK = ( 0b11 << 1U ), /*!< MEAS_CONF mask */ + MEASUREMENT_CONF_MEAS_CONF_HUMIDITY_TEMPERATURE = ( 0b00 << 1U ), /*!< Humidity + Temperature */ + MEASUREMENT_CONF_MEAS_CONF_TEMPERATURE_ONLY = ( 0b01 << 1U ) /*!< Temperature only */ + } HDC2080_measurement_configuration_meas_conf_t; + + + + /* MEAS_TRIG <0> + * NOTE: Self-clearing bit when measurement completed. + */ + typedef enum { + MEASUREMENT_CONF_MEAS_TRIG_MASK = ( 1U << 0U ), /*!< MEAS_TRIG mask */ + MEASUREMENT_CONF_MEAS_TRIG_NO_ACTION = ( 0U << 0U ), /*!< no action */ + MEASUREMENT_CONF_MEAS_TRIG_START_MEASUREMENT = ( 1U << 0U ) /*!< Start measurement */ + } HDC2080_measurement_configuration_meas_trig_t; + + + + /** + * @brief MANUFACTURER ID REGISTERS + */ + typedef enum { + MANUFACTURER_ID_LOW = 0x49, /*!< MANUFACTURER ID low */ + MANUFACTURER_ID_HIGH = 0x54 /*!< MANUFACTURER ID high */ + } HDC2080_manufacturer_ids_t; + + + + /** + * @brief DEVICE ID REGISTERS + */ + typedef enum { + DEVICE_ID_LOW = 0xD0, /*!< DEVICE ID low */ + DEVICE_ID_HIGH = 0x07 /*!< DEVICE ID high */ + } HDC2080_device_ids_t; + + + + + + + +#ifndef HDC2080_VECTOR_STRUCT_H +#define HDC2080_VECTOR_STRUCT_H + typedef struct { + /* Output registers */ + uint16_t rawHumidity; /*!< Raw humidity */ + uint16_t rawTemperature; /*!< Raw temperature */ + + float humidity; /*!< Humidity value */ + float temperature; /*!< Temperature value */ + + uint8_t rawTemperature_max; /*!< Raw temperature max */ + uint8_t rawHumidity_max; /*!< Raw humidity max */ + + /* Offsets */ + uint8_t temp_offset_adjust; /*!< Temperature offset */ + uint8_t hum_offset_adjust; /*!< Humidity offset */ + + /* Interrupt DRDY Field Descriptions */ + uint8_t interrupt_drdy_status; /*!< Interrupt DRDY status */ + + /* Interrupt Configuration Field Descriptions */ + HDC2080_interrupt_enable_drdy_enable_t drdy_enable; /*!< DataReady Interrupt enable */ + HDC2080_interrupt_enable_th_enable_t th_enable; /*!< Temperature threshold HIGH Interrupt enable */ + HDC2080_interrupt_enable_tl_enable_t tl_enable; /*!< Temperature threshold LOW Interrupt enable */ + HDC2080_interrupt_enable_hh_enable_t hh_enable; /*!< Humidity threshold HIGH Interrupt enable */ + HDC2080_interrupt_enable_hl_enable_t hl_enable; /*!< Humidity threshold LOW Interrupt enable */ + + /* Thresholds */ + uint8_t temp_thres_low; /*!< Temperature threshold low */ + uint8_t temp_thres_high; /*!< Temperature threshold low */ + uint8_t hum_thres_low; /*!< Humidity threshold low */ + uint8_t hum_thres_high; /*!< Humidity threshold low */ + + /* Configuration Field Descriptions */ + HDC2080_reset_drdy_int_conf_soft_res_t soft_res; /*!< Soft reset flag */ + HDC2080_reset_drdy_int_conf_amm_t amm; /*!< Auto Measurement Mode */ + HDC2080_reset_drdy_int_conf_heat_en_t heater_en; /*!< Heater Mode */ + HDC2080_reset_drdy_int_conf_drdr_int_en_t drdy_intEn; /*!< DRDY/INT_EN pin configuration */ + HDC2080_reset_drdy_int_conf_int_pol_t int_pol; /*!< Interrupt polarity */ + HDC2080_reset_drdy_int_conf_int_mode_t int_mode; /*!< Interrupt mode */ + + /* Measurement Configuration Field Descriptions */ + HDC2080_measurement_configuration_tres_t tres; /*!< Temperature resolution */ + HDC2080_measurement_configuration_hres_t hres; /*!< Humidity resolution */ + HDC2080_measurement_configuration_meas_conf_t meas_conf; /*!< Measurement configuration */ + HDC2080_measurement_configuration_meas_trig_t meas_trig; /*!< Measurement trigger */ + + /* Device identifications */ + uint16_t manufacturer_id; /*!< Manufacturer ID */ + uint16_t device_id; /*!< Device ID */ + } HDC2080_data_t; +#endif + + + /** + * @brief INTERNAL CONSTANTS + */ + typedef enum { + HDC2080_SUCCESS = 0U, /*!< I2C communication success */ + HDC2080_FAILURE = 1U, /*!< I2C communication failure */ + I2C_SUCCESS = 0U /*!< I2C communication was fine */ + } HDC2080_status_t; + + + + + /** Create an HDC2080 object connected to the specified I2C pins. + * + * @param sda I2C data pin + * @param scl I2C clock pin + * @param addr I2C slave address + * @param freq I2C frequency + */ + HDC2080 ( PinName sda, PinName scl, uint32_t addr, uint32_t freq ); + + /** Delete HDC2080 object. + */ + ~HDC2080(); + + /** It gets the raw temperature. + */ + HDC2080_status_t HDC2080_GetRawTemperature ( HDC2080_data_t* myRawTemperature ); + + /** It gets the current temperature. + */ + HDC2080_status_t HDC2080_GetTemperature ( HDC2080_data_t* myTemperature ); + + /** It gets the raw humidity. + */ + HDC2080_status_t HDC2080_GetRawHumidity ( HDC2080_data_t* myRawHumidity ); + + /** It gets the current humidity. + */ + HDC2080_status_t HDC2080_GetHumidity ( HDC2080_data_t* myHumidity ); + + /** It gets the interrupt DRDY status. + */ + HDC2080_status_t HDC2080_GetInterrupt_DRDY_Status ( HDC2080_data_t* myStatus ); + + /** It writes the temperature max register ( raw value ). + */ + HDC2080_status_t HDC2080_ConfTemperatureMax ( HDC2080_data_t myTemperatureMax ); + + /** It writes the humidity max register ( raw value ). + */ + HDC2080_status_t HDC2080_ConfHumidityMax ( HDC2080_data_t myHumidityMax ); + + /** It sets the interrupt configuration. + */ + HDC2080_status_t HDC2080_SetInterruptConfiguration ( HDC2080_data_t myIntConfiguration ); + + /** It gets the interrupt configuration. + */ + HDC2080_status_t HDC2080_GetInterruptConfiguration ( HDC2080_data_t* myIntConfiguration ); + + /** It sets the temperature offset. + */ + HDC2080_status_t HDC2080_SetTemperatureOffset ( HDC2080_data_t myTemperatureOffset ); + + /** It gets the temperature offset ( raw value ). + */ + HDC2080_status_t HDC2080_GetTemperatureOffset ( HDC2080_data_t* myTemperatureOffset ); + + /** It sets the humidity offset. + */ + HDC2080_status_t HDC2080_SetHumidityOffset ( HDC2080_data_t myHumidityOffset ); + + /** It gets the humidity offset ( raw value ). + */ + HDC2080_status_t HDC2080_GetHumidityOffset ( HDC2080_data_t* myHumidityOffset ); + + /** It sets the temperature threshold low value ( raw value ). + */ + HDC2080_status_t HDC2080_SetTemperatureThresLow ( HDC2080_data_t myTempThresLow ); + + /** It gets the temperature threshold low value ( raw value ). + */ + HDC2080_status_t HDC2080_GetTemperatureThresLow ( HDC2080_data_t* myTempThresLow ); + + /** It sets the temperature threshold high value ( raw value ). + */ + HDC2080_status_t HDC2080_SetTemperatureThresHigh ( HDC2080_data_t myTempThresLow ); + + /** It gets the temperature threshold high value ( raw value ). + */ + HDC2080_status_t HDC2080_GetTemperatureThresHigh ( HDC2080_data_t* myTempThresHigh ); + + /** It sets the humidity threshold low value ( raw value ). + */ + HDC2080_status_t HDC2080_SetHumidityThresLow ( HDC2080_data_t myHumThresLow ); + + /** It gets the humidity threshold low value ( raw value ). + */ + HDC2080_status_t HDC2080_GetHumidityThresLow ( HDC2080_data_t* myHumThresLow ); + + /** It sets the humidity threshold high value ( raw value ). + */ + HDC2080_status_t HDC2080_SetHumidityThresHigh ( HDC2080_data_t myHumThresLow ); + + /** It gets the humidity threshold high value ( raw value ). + */ + HDC2080_status_t HDC2080_GetHumidityThresHigh ( HDC2080_data_t* myHumThresLow ); + + /** It makes a soft reset. + */ + HDC2080_status_t HDC2080_SetSoftReset ( void ); + + /** It checks the soft reset flag. + */ + HDC2080_status_t HDC2080_GetSoftReset ( HDC2080_data_t* mySoftResetFlag ); + + /** It sets auto measurement mode ( AMM ). + */ + HDC2080_status_t HDC2080_SetAutoMeasurementMode ( HDC2080_data_t myAMM ); + + /** It gets auto measurement mode ( AMM ). + */ + HDC2080_status_t HDC2080_GetAutoMeasurementMode ( HDC2080_data_t* myAMM ); + + /** It sets the heater. + */ + HDC2080_status_t HDC2080_SetHeaterMode ( HDC2080_data_t myHeatEn ); + + /** It gets the heater status. + */ + HDC2080_status_t HDC2080_GetHeaterMode ( HDC2080_data_t* myHeatEn ); + + /** It sets the DRDY/INT_EN pin configuration. + */ + HDC2080_status_t HDC2080_SetPinConfifuration ( HDC2080_data_t myPinConfiguration ); + + /** It gets the DRDY/INT_EN pin configuration. + */ + HDC2080_status_t HDC2080_GetPinConfiguration ( HDC2080_data_t* myPinConfiguration ); + + /** It sets the interrupt polarity. + */ + HDC2080_status_t HDC2080_SetInterruptPolarity ( HDC2080_data_t myIntPol ); + + /** It gets the interrupt polarity. + */ + HDC2080_status_t HDC2080_GetInterruptPolarity ( HDC2080_data_t* myIntPol ); + + /** It sets the interrupt mode. + */ + HDC2080_status_t HDC2080_SetInterruptMode ( HDC2080_data_t myIntMode ); + + /** It gets the interrupt mode. + */ + HDC2080_status_t HDC2080_GetInterruptMode ( HDC2080_data_t* myIntMode ); + + /** It sets the measurement configuration. + */ + HDC2080_status_t HDC2080_SetMeasurementConf ( HDC2080_data_t myMeasConf ); + + /** It gets the measurement configuration. + */ + HDC2080_status_t HDC2080_GetMeasurementConf ( HDC2080_data_t* myMeasConf ); + + /** It triggers a new measurement. + */ + HDC2080_status_t HDC2080_StartMeasurementTrigger ( void ); + + /** It gets the measurement trigger flag. + */ + HDC2080_status_t HDC2080_GetMeasurementTrigger ( HDC2080_data_t* myMeasTrig ); + + /** It gets the manufacturer ID. + */ + HDC2080_status_t HDC2080_GetManufacturerID ( HDC2080_data_t* myManufacturerID ); + + /** It gets the device ID. + */ + HDC2080_status_t HDC2080_GetDeviceID ( HDC2080_data_t* myDeviceID ); + + +private: + I2C _i2c; + uint32_t _HDC2080_Addr; +}; + +#endif