STM32CubeWL/Drivers/BSP/Components/ilps22qs/ilps22qs.h

221 lines
5.8 KiB
C

/**
******************************************************************************
* @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 <string.h>
/** @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
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/