/**
******************************************************************************
* @file lps22hh.h
* @author MEMS Software Solutions Team
* @brief LPS22HH header driver file
******************************************************************************
* @attention
*
*
© Copyright (c) 2019 STMicroelectronics.
* All rights reserved.
*
* 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 LPS22HH_H
#define LPS22HH_H
#ifdef __cplusplus
extern "C"
{
#endif
/* Includes ------------------------------------------------------------------*/
#include "lps22hh_reg.h"
#include
/** @addtogroup BSP BSP
* @{
*/
/** @addtogroup Component Component
* @{
*/
/** @addtogroup LPS22HH LPS22HH
* @{
*/
/** @defgroup LPS22HH_Exported_Types LPS22HH Exported Types
* @{
*/
typedef int32_t (*LPS22HH_Init_Func)(void);
typedef int32_t (*LPS22HH_DeInit_Func)(void);
typedef int32_t (*LPS22HH_GetTick_Func)(void);
typedef int32_t (*LPS22HH_WriteReg_Func)(uint16_t, uint16_t, uint8_t *, uint16_t);
typedef int32_t (*LPS22HH_ReadReg_Func)(uint16_t, uint16_t, uint8_t *, uint16_t);
typedef struct
{
LPS22HH_Init_Func Init;
LPS22HH_DeInit_Func DeInit;
uint32_t BusType; /*0 means I2C, 1 means SPI 4-Wires, 2 means SPI-3-Wires */
uint8_t Address;
LPS22HH_WriteReg_Func WriteReg;
LPS22HH_ReadReg_Func ReadReg;
LPS22HH_GetTick_Func GetTick;
} LPS22HH_IO_t;
typedef struct
{
LPS22HH_IO_t IO;
stmdev_ctx_t Ctx;
uint8_t is_initialized;
uint8_t press_is_enabled;
uint8_t temp_is_enabled;
lps22hh_odr_t last_odr;
} LPS22HH_Object_t;
typedef struct
{
uint8_t Temperature;
uint8_t Pressure;
uint8_t Humidity;
uint8_t LowPower;
float HumMaxOdr;
float TempMaxOdr;
float PressMaxOdr;
} LPS22HH_Capabilities_t;
typedef struct
{
int32_t (*Init)(LPS22HH_Object_t *);
int32_t (*DeInit)(LPS22HH_Object_t *);
int32_t (*ReadID)(LPS22HH_Object_t *, uint8_t *);
int32_t (*GetCapabilities)(LPS22HH_Object_t *, LPS22HH_Capabilities_t *);
} LPS22HH_CommonDrv_t;
typedef struct
{
int32_t (*Enable)(LPS22HH_Object_t *);
int32_t (*Disable)(LPS22HH_Object_t *);
int32_t (*GetOutputDataRate)(LPS22HH_Object_t *, float *);
int32_t (*SetOutputDataRate)(LPS22HH_Object_t *, float);
int32_t (*GetTemperature)(LPS22HH_Object_t *, float *);
} LPS22HH_TEMP_Drv_t;
typedef struct
{
int32_t (*Enable)(LPS22HH_Object_t *);
int32_t (*Disable)(LPS22HH_Object_t *);
int32_t (*GetOutputDataRate)(LPS22HH_Object_t *, float *);
int32_t (*SetOutputDataRate)(LPS22HH_Object_t *, float);
int32_t (*GetPressure)(LPS22HH_Object_t *, float *);
} LPS22HH_PRESS_Drv_t;
typedef enum
{
LPS22HH_FIFO_BYPASS_MODE = (uint8_t)0x00, /*!< The FIFO is disabled and empty. The pressure is read directly*/
LPS22HH_FIFO_FIFO_MODE = (uint8_t)0x20, /*!< Stops collecting data when full */
LPS22HH_FIFO_STREAM_MODE = (uint8_t)0x40, /*!< Keep the newest measurements in the FIFO*/
LPS22HH_FIFO_TRIGGER_STREAMTOFIFO_MODE = (uint8_t)0x60, /*!< STREAM MODE until trigger deasserted, then change to FIFO MODE*/
LPS22HH_FIFO_TRIGGER_BYPASSTOSTREAM_MODE = (uint8_t)0x80, /*!< BYPASS MODE until trigger deasserted, then STREAM MODE*/
LPS22HH_FIFO_TRIGGER_BYPASSTOFIFO_MODE = (uint8_t)0xE0 /*!< BYPASS mode until trigger deasserted, then FIFO MODE*/
} LPS22HH_FifoMode;
typedef union{
int16_t i16bit[3];
uint8_t u8bit[6];
} lps22hh_axis3bit16_t;
typedef union{
int16_t i16bit;
uint8_t u8bit[2];
} lps22hh_axis1bit16_t;
typedef union{
int32_t i32bit[3];
uint8_t u8bit[12];
} lps22hh_axis3bit32_t;
typedef union{
int32_t i32bit;
uint8_t u8bit[4];
} lps22hh_axis1bit32_t;
/**
* @}
*/
/** @defgroup LPS22HH_Exported_Constants LPS22HH Exported Constants
* @{
*/
#define LPS22HH_OK 0
#define LPS22HH_ERROR -1
#define LPS22HH_I2C_BUS 0U
#define LPS22HH_SPI_4WIRES_BUS 1U
#define LPS22HH_SPI_3WIRES_BUS 2U
#define LPS22HH_FIFO_FULL (uint8_t)0x20
/** LPS22HH low noise mode **/
#define LPS22HH_LOW_NOISE_DIS 0
#define LPS22HH_LOW_NOISE_EN 1
/**
* @}
*/
/** @addtogroup LPS22HH_Exported_Functions LPS22HH Exported Functions
* @{
*/
int32_t LPS22HH_RegisterBusIO(LPS22HH_Object_t *pObj, LPS22HH_IO_t *pIO);
int32_t LPS22HH_Init(LPS22HH_Object_t *pObj);
int32_t LPS22HH_DeInit(LPS22HH_Object_t *pObj);
int32_t LPS22HH_ReadID(LPS22HH_Object_t *pObj, uint8_t *Id);
int32_t LPS22HH_GetCapabilities(LPS22HH_Object_t *pObj, LPS22HH_Capabilities_t *Capabilities);
int32_t LPS22HH_Get_Init_Status(LPS22HH_Object_t *pObj, uint8_t *Status);
int32_t LPS22HH_PRESS_Enable(LPS22HH_Object_t *pObj);
int32_t LPS22HH_PRESS_Disable(LPS22HH_Object_t *pObj);
int32_t LPS22HH_PRESS_GetOutputDataRate(LPS22HH_Object_t *pObj, float *Odr);
int32_t LPS22HH_PRESS_SetOutputDataRate(LPS22HH_Object_t *pObj, float Odr);
int32_t LPS22HH_PRESS_GetPressure(LPS22HH_Object_t *pObj, float *Value);
int32_t LPS22HH_PRESS_Get_DRDY_Status(LPS22HH_Object_t *pObj, uint8_t *Status);
int32_t LPS22HH_TEMP_Enable(LPS22HH_Object_t *pObj);
int32_t LPS22HH_TEMP_Disable(LPS22HH_Object_t *pObj);
int32_t LPS22HH_TEMP_GetOutputDataRate(LPS22HH_Object_t *pObj, float *Odr);
int32_t LPS22HH_TEMP_SetOutputDataRate(LPS22HH_Object_t *pObj, float Odr);
int32_t LPS22HH_TEMP_GetTemperature(LPS22HH_Object_t *pObj, float *Value);
int32_t LPS22HH_TEMP_Get_DRDY_Status(LPS22HH_Object_t *pObj, uint8_t *Status);
int32_t LPS22HH_Read_Reg(LPS22HH_Object_t *pObj, uint8_t reg, uint8_t *Data);
int32_t LPS22HH_Write_Reg(LPS22HH_Object_t *pObj, uint8_t reg, uint8_t Data);
int32_t LPS22HH_Get_Press(LPS22HH_Object_t *pObj, float *Data);
int32_t LPS22HH_Get_Temp(LPS22HH_Object_t *pObj, float *Data);
int32_t LPS22HH_FIFO_Get_Data(LPS22HH_Object_t *pObj, float *Press, float *Temp);
int32_t LPS22HH_FIFO_Get_FTh_Status(LPS22HH_Object_t *pObj, uint8_t *Status);
int32_t LPS22HH_FIFO_Get_Full_Status(LPS22HH_Object_t *pObj, uint8_t *Status);
int32_t LPS22HH_FIFO_Get_Ovr_Status(LPS22HH_Object_t *pObj, uint8_t *Status);
int32_t LPS22HH_FIFO_Get_Level(LPS22HH_Object_t *pObj, uint8_t *Status);
int32_t LPS22HH_FIFO_Reset_Interrupt(LPS22HH_Object_t *pObj, uint8_t interrupt);
int32_t LPS22HH_FIFO_Set_Interrupt(LPS22HH_Object_t *pObj, uint8_t interrupt);
int32_t LPS22HH_FIFO_Set_Mode(LPS22HH_Object_t *pObj, uint8_t Mode);
int32_t LPS22HH_FIFO_Set_Watermark_Level(LPS22HH_Object_t *pObj, uint8_t Watermark);
int32_t LPS22HH_FIFO_Stop_On_Watermark(LPS22HH_Object_t *pObj, uint8_t Stop);
int32_t LPS22HH_Set_One_Shot(LPS22HH_Object_t *pObj);
int32_t LPS22HH_Get_One_Shot_Status(LPS22HH_Object_t *pObj, uint8_t *Status);
int32_t LPS22HH_Enable_DRDY_Interrupt(LPS22HH_Object_t *pObj);
int32_t LPS22HH_Set_Power_Mode(LPS22HH_Object_t *pObj, uint8_t powerMode);
int32_t LPS22HH_Set_Filter_Mode(LPS22HH_Object_t *pObj, uint8_t filterMode);
/**
* @}
*/
/** @addtogroup LPS22HH_Exported_Variables LPS22HH Exported Variables
* @{
*/
extern LPS22HH_CommonDrv_t LPS22HH_COMMON_Driver;
extern LPS22HH_PRESS_Drv_t LPS22HH_PRESS_Driver;
extern LPS22HH_TEMP_Drv_t LPS22HH_TEMP_Driver;
/**
* @}
*/
#ifdef __cplusplus
}
#endif
#endif
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/