diff options
Diffstat (limited to 'Drivers/BSP/Components/hts221/hts221.h')
-rw-r--r-- | Drivers/BSP/Components/hts221/hts221.h | 205 |
1 files changed, 205 insertions, 0 deletions
diff --git a/Drivers/BSP/Components/hts221/hts221.h b/Drivers/BSP/Components/hts221/hts221.h new file mode 100644 index 000000000..5b3a38dfc --- /dev/null +++ b/Drivers/BSP/Components/hts221/hts221.h @@ -0,0 +1,205 @@ +/** + ****************************************************************************** + * @file hts221.h + * @author MEMS Software Solutions Team + * @brief HTS221 header driver file + ****************************************************************************** + * @attention + * + * <h2><center>© Copyright (c) 2019 STMicroelectronics. + * All rights reserved.</center></h2> + * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef HTS221_H +#define HTS221_H + +#ifdef __cplusplus +extern "C" +{ +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "hts221_reg.h" +#include <string.h> + +/** @addtogroup BSP BSP + * @{ + */ + +/** @addtogroup Component Component + * @{ + */ + +/** @addtogroup HTS221 HTS221 + * @{ + */ + +/** @defgroup HTS221_Exported_Types HTS221 Exported Types + * @{ + */ + +typedef int32_t (*HTS221_Init_Func)(void); +typedef int32_t (*HTS221_DeInit_Func)(void); +typedef int32_t (*HTS221_GetTick_Func)(void); +typedef int32_t (*HTS221_WriteReg_Func)(uint16_t, uint16_t, uint8_t *, uint16_t); +typedef int32_t (*HTS221_ReadReg_Func)(uint16_t, uint16_t, uint8_t *, uint16_t); + +typedef struct +{ + HTS221_Init_Func Init; + HTS221_DeInit_Func DeInit; + uint32_t BusType; /*0 means I2C, 1 means SPI-3-Wires */ + uint8_t Address; + HTS221_WriteReg_Func WriteReg; + HTS221_ReadReg_Func ReadReg; + HTS221_GetTick_Func GetTick; +} HTS221_IO_t; + +typedef struct +{ + float x0; + float y0; + float x1; + float y1; +} lin_t; + +typedef struct +{ + HTS221_IO_t IO; + hts221_ctx_t Ctx; + uint8_t is_initialized; + uint8_t hum_is_enabled; + uint8_t temp_is_enabled; +} HTS221_Object_t; + +typedef struct +{ + uint8_t Temperature; + uint8_t Pressure; + uint8_t Humidity; + uint8_t LowPower; + float HumMaxOdr; + float TempMaxOdr; + float PressMaxOdr; +} HTS221_Capabilities_t; + +typedef struct +{ + int32_t (*Init)(HTS221_Object_t *); + int32_t (*DeInit)(HTS221_Object_t *); + int32_t (*ReadID)(HTS221_Object_t *, uint8_t *); + int32_t (*GetCapabilities)(HTS221_Object_t *, HTS221_Capabilities_t *); +} HTS221_CommonDrv_t; + +typedef struct +{ + int32_t (*Enable)(HTS221_Object_t *); + int32_t (*Disable)(HTS221_Object_t *); + int32_t (*GetOutputDataRate)(HTS221_Object_t *, float *); + int32_t (*SetOutputDataRate)(HTS221_Object_t *, float); + int32_t (*GetHumidity)(HTS221_Object_t *, float *); +} HTS221_HUM_Drv_t; + +typedef struct +{ + int32_t (*Enable)(HTS221_Object_t *); + int32_t (*Disable)(HTS221_Object_t *); + int32_t (*GetOutputDataRate)(HTS221_Object_t *, float *); + int32_t (*SetOutputDataRate)(HTS221_Object_t *, float); + int32_t (*GetTemperature)(HTS221_Object_t *, float *); +} HTS221_TEMP_Drv_t; + +/** + * @} + */ + +/** @defgroup HTS221_Exported_Constants HTS221 Exported Constants + * @{ + */ +#define HTS221_I2C_BUS 0U +#define HTS221_SPI_3WIRES_BUS 1U + +/** HTS221 error codes **/ +#define HTS221_OK 0 +#define HTS221_ERROR -1 + +/** + * @} + */ + +/** @addtogroup HTS221_Exported_Functions HTS221 Exported Functions + * @{ + */ + +int32_t HTS221_RegisterBusIO(HTS221_Object_t *pObj, HTS221_IO_t *pIO); +int32_t HTS221_Init(HTS221_Object_t *pObj); +int32_t HTS221_DeInit(HTS221_Object_t *pObj); +int32_t HTS221_ReadID(HTS221_Object_t *pObj, uint8_t *Id); +int32_t HTS221_GetCapabilities(HTS221_Object_t *pObj, HTS221_Capabilities_t *Capabilities); +int32_t HTS221_Get_Init_Status(HTS221_Object_t *pObj, uint8_t *Status); + +int32_t HTS221_HUM_Enable(HTS221_Object_t *pObj); +int32_t HTS221_HUM_Disable(HTS221_Object_t *pObj); +int32_t HTS221_HUM_GetOutputDataRate(HTS221_Object_t *pObj, float *Odr); +int32_t HTS221_HUM_SetOutputDataRate(HTS221_Object_t *pObj, float Odr); +int32_t HTS221_HUM_GetHumidity(HTS221_Object_t *pObj, float *Value); +int32_t HTS221_HUM_Get_DRDY_Status(HTS221_Object_t *pObj, uint8_t *Status); + +int32_t HTS221_TEMP_Enable(HTS221_Object_t *pObj); +int32_t HTS221_TEMP_Disable(HTS221_Object_t *pObj); +int32_t HTS221_TEMP_GetOutputDataRate(HTS221_Object_t *pObj, float *Odr); +int32_t HTS221_TEMP_SetOutputDataRate(HTS221_Object_t *pObj, float Odr); +int32_t HTS221_TEMP_GetTemperature(HTS221_Object_t *pObj, float *Value); +int32_t HTS221_TEMP_Get_DRDY_Status(HTS221_Object_t *pObj, uint8_t *Status); + +int32_t HTS221_Read_Reg(HTS221_Object_t *pObj, uint8_t Reg, uint8_t *Data); +int32_t HTS221_Write_Reg(HTS221_Object_t *pObj, uint8_t Reg, uint8_t Data); + +int32_t HTS221_Set_One_Shot(HTS221_Object_t *pObj); +int32_t HTS221_Get_One_Shot_Status(HTS221_Object_t *pObj, uint8_t *Status); + +int32_t HTS221_Enable_DRDY_Interrupt(HTS221_Object_t *pObj); + +/** + * @} + */ + +/** @addtogroup HTS221_Exported_Variables HTS221 Exported Variables + * @{ + */ + +extern HTS221_CommonDrv_t HTS221_COMMON_Driver; +extern HTS221_HUM_Drv_t HTS221_HUM_Driver; +extern HTS221_TEMP_Drv_t HTS221_TEMP_Driver; + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |