/** ****************************************************************************** * @file ilps22qs.h * @author MEMS Software Solutions Team * @brief ILPS22QS header driver file ****************************************************************************** * @attention * * Copyright (c) 2022 STMicroelectronics. * All rights reserved. * * This software is licensed under terms that can be found in the LICENSE file * in the root directory of this software component. * If no LICENSE file comes with this software, it is provided AS-IS. * ****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef ILPS22QS_H #define ILPS22QS_H #ifdef __cplusplus extern "C" { #endif /* Includes ------------------------------------------------------------------*/ #include "ilps22qs_reg.h" #include /** @addtogroup BSP BSP * @{ */ /** @addtogroup Component Component * @{ */ /** @addtogroup ILPS22QS ILPS22QS * @{ */ /** @defgroup ILPS22QS_Exported_Types ILPS22QS Exported Types * @{ */ typedef int32_t (*ILPS22QS_Init_Func)(void); typedef int32_t (*ILPS22QS_DeInit_Func)(void); typedef int32_t (*ILPS22QS_GetTick_Func)(void); typedef int32_t (*ILPS22QS_WriteReg_Func)(uint16_t, uint16_t, uint8_t *, uint16_t); typedef int32_t (*ILPS22QS_ReadReg_Func)(uint16_t, uint16_t, uint8_t *, uint16_t); typedef struct { ILPS22QS_Init_Func Init; ILPS22QS_DeInit_Func DeInit; uint32_t BusType; /*0 means I2C, 1 means SPI 4-Wires, 2 means SPI-3-Wires */ uint8_t Address; ILPS22QS_WriteReg_Func WriteReg; ILPS22QS_ReadReg_Func ReadReg; ILPS22QS_GetTick_Func GetTick; } ILPS22QS_IO_t; typedef struct { ILPS22QS_IO_t IO; stmdev_ctx_t Ctx; uint8_t is_initialized; uint8_t press_is_enabled; uint8_t temp_is_enabled; ilps22qs_md_t last_odr; } ILPS22QS_Object_t; typedef struct { uint8_t Temperature; uint8_t Pressure; uint8_t Humidity; uint8_t LowPower; float HumMaxOdr; float TempMaxOdr; float PressMaxOdr; } ILPS22QS_Capabilities_t; typedef struct { int32_t (*Init)(ILPS22QS_Object_t *); int32_t (*DeInit)(ILPS22QS_Object_t *); int32_t (*ReadID)(ILPS22QS_Object_t *, uint8_t *); int32_t (*GetCapabilities)(ILPS22QS_Object_t *, ILPS22QS_Capabilities_t *); } ILPS22QS_CommonDrv_t; typedef struct { int32_t (*Enable)(ILPS22QS_Object_t *); int32_t (*Disable)(ILPS22QS_Object_t *); int32_t (*GetOutputDataRate)(ILPS22QS_Object_t *, float *); int32_t (*SetOutputDataRate)(ILPS22QS_Object_t *, float); int32_t (*GetTemperature)(ILPS22QS_Object_t *, float *); } ILPS22QS_TEMP_Drv_t; typedef struct { int32_t (*Enable)(ILPS22QS_Object_t *); int32_t (*Disable)(ILPS22QS_Object_t *); int32_t (*GetOutputDataRate)(ILPS22QS_Object_t *, float *); int32_t (*SetOutputDataRate)(ILPS22QS_Object_t *, float); int32_t (*GetPressure)(ILPS22QS_Object_t *, float *); } ILPS22QS_PRESS_Drv_t; typedef union { int16_t i16bit[3]; uint8_t u8bit[6]; } ilps22qs_axis3bit16_t; typedef union { int16_t i16bit; uint8_t u8bit[2]; } ilps22qs_axis1bit16_t; typedef union { int32_t i32bit[3]; uint8_t u8bit[12]; } ilps22qs_axis3bit32_t; typedef union { int32_t i32bit; uint8_t u8bit[4]; } ilps22qs_axis1bit32_t; /** * @} */ /** @defgroup ILPS22QS_Exported_Constants ILPS22QS Exported Constants * @{ */ #define ILPS22QS_OK 0 #define ILPS22QS_ERROR -1 #define ILPS22QS_I2C_BUS 0U #define ILPS22QS_SPI_4WIRES_BUS 1U #define ILPS22QS_SPI_3WIRES_BUS 2U /** * @} */ /** @addtogroup ILPS22QS_Exported_Functions ILPS22QS Exported Functions * @{ */ int32_t ILPS22QS_RegisterBusIO(ILPS22QS_Object_t *pObj, ILPS22QS_IO_t *pIO); int32_t ILPS22QS_Init(ILPS22QS_Object_t *pObj); int32_t ILPS22QS_DeInit(ILPS22QS_Object_t *pObj); int32_t ILPS22QS_ReadID(ILPS22QS_Object_t *pObj, uint8_t *Id); int32_t ILPS22QS_GetCapabilities(ILPS22QS_Object_t *pObj, ILPS22QS_Capabilities_t *Capabilities); int32_t ILPS22QS_Get_Init_Status(ILPS22QS_Object_t *pObj, uint8_t *Status); int32_t ILPS22QS_PRESS_Enable(ILPS22QS_Object_t *pObj); int32_t ILPS22QS_PRESS_Disable(ILPS22QS_Object_t *pObj); int32_t ILPS22QS_PRESS_GetOutputDataRate(ILPS22QS_Object_t *pObj, float *Odr); int32_t ILPS22QS_PRESS_SetOutputDataRate(ILPS22QS_Object_t *pObj, float Odr); int32_t ILPS22QS_PRESS_GetPressure(ILPS22QS_Object_t *pObj, float *Value); int32_t ILPS22QS_PRESS_Get_DRDY_Status(ILPS22QS_Object_t *pObj, uint8_t *Status); int32_t ILPS22QS_TEMP_Enable(ILPS22QS_Object_t *pObj); int32_t ILPS22QS_TEMP_Disable(ILPS22QS_Object_t *pObj); int32_t ILPS22QS_TEMP_GetOutputDataRate(ILPS22QS_Object_t *pObj, float *Odr); int32_t ILPS22QS_TEMP_SetOutputDataRate(ILPS22QS_Object_t *pObj, float Odr); int32_t ILPS22QS_TEMP_GetTemperature(ILPS22QS_Object_t *pObj, float *Value); int32_t ILPS22QS_TEMP_Get_DRDY_Status(ILPS22QS_Object_t *pObj, uint8_t *Status); int32_t ILPS22QS_Read_Reg(ILPS22QS_Object_t *pObj, uint8_t reg, uint8_t *Data); int32_t ILPS22QS_Write_Reg(ILPS22QS_Object_t *pObj, uint8_t reg, uint8_t Data); int32_t ILPS22QS_Set_One_Shot(ILPS22QS_Object_t *pObj); int32_t ILPS22QS_Get_One_Shot_Status(ILPS22QS_Object_t *pObj, uint8_t *Status); int32_t ILPS22QS_Set_AVG(ILPS22QS_Object_t *pObj, uint8_t avg); int32_t ILPS22QS_Set_LPF(ILPS22QS_Object_t *pObj, uint8_t lpf); /** * @} */ /** @addtogroup ILPS22QS_Exported_Variables ILPS22QS Exported Variables * @{ */ extern ILPS22QS_CommonDrv_t ILPS22QS_COMMON_Driver; extern ILPS22QS_PRESS_Drv_t ILPS22QS_PRESS_Driver; extern ILPS22QS_TEMP_Drv_t ILPS22QS_TEMP_Driver; /** * @} */ #ifdef __cplusplus } #endif #endif /** * @} */ /** * @} */ /** * @} */