STM32CubeWL/Drivers/BSP/Components/stts22h/stts22h.h

178 lines
4.6 KiB
C

/**
******************************************************************************
* @file stts22h.h
* @author MEMS Software Solutions Team
* @brief STTS22H header driver file
******************************************************************************
* @attention
*
* Copyright (c) 2019 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 STTS22H_H
#define STTS22H_H
#ifdef __cplusplus
extern "C"
{
#endif
/* Includes ------------------------------------------------------------------*/
#include "stts22h_reg.h"
#include <string.h>
/** @addtogroup BSP BSP
* @{
*/
/** @addtogroup Component Component
* @{
*/
/** @addtogroup STTS22H STTS22H
* @{
*/
/** @defgroup STTS22H_Exported_Types STTS22H Exported Types
* @{
*/
typedef int32_t (*STTS22H_Init_Func)(void);
typedef int32_t (*STTS22H_DeInit_Func)(void);
typedef int32_t (*STTS22H_GetTick_Func)(void);
typedef int32_t (*STTS22H_WriteReg_Func)(uint16_t, uint16_t, uint8_t *, uint16_t);
typedef int32_t (*STTS22H_ReadReg_Func)(uint16_t, uint16_t, uint8_t *, uint16_t);
typedef struct
{
STTS22H_Init_Func Init;
STTS22H_DeInit_Func DeInit;
uint32_t BusType; /*0 means I2C */
uint8_t Address;
STTS22H_WriteReg_Func WriteReg;
STTS22H_ReadReg_Func ReadReg;
STTS22H_GetTick_Func GetTick;
} STTS22H_IO_t;
typedef struct
{
STTS22H_IO_t IO;
stmdev_ctx_t Ctx;
uint8_t is_initialized;
uint8_t temp_is_enabled;
float temp_odr;
} STTS22H_Object_t;
typedef struct
{
uint8_t Temperature;
uint8_t Pressure;
uint8_t Humidity;
uint8_t LowPower;
float HumMaxOdr;
float TempMaxOdr;
float PressMaxOdr;
} STTS22H_Capabilities_t;
typedef struct
{
int32_t (*Init)(STTS22H_Object_t *);
int32_t (*DeInit)(STTS22H_Object_t *);
int32_t (*ReadID)(STTS22H_Object_t *, uint8_t *);
int32_t (*GetCapabilities)(STTS22H_Object_t *, STTS22H_Capabilities_t *);
} STTS22H_CommonDrv_t;
typedef struct
{
int32_t (*Enable)(STTS22H_Object_t *);
int32_t (*Disable)(STTS22H_Object_t *);
int32_t (*GetOutputDataRate)(STTS22H_Object_t *, float *);
int32_t (*SetOutputDataRate)(STTS22H_Object_t *, float);
int32_t (*GetTemperature)(STTS22H_Object_t *, float *);
} STTS22H_TEMP_Drv_t;
/**
* @}
*/
/** @defgroup STTS22H_Exported_Constants STTS22H Exported Constants
* @{
*/
#define STTS22H_I2C_BUS 0U
/** STTS22H error codes **/
#define STTS22H_OK 0
#define STTS22H_ERROR -1
/**
* @}
*/
/** @addtogroup STTS22H_Exported_Functions STTS22H Exported Functions
* @{
*/
int32_t STTS22H_RegisterBusIO(STTS22H_Object_t *pObj, STTS22H_IO_t *pIO);
int32_t STTS22H_Init(STTS22H_Object_t *pObj);
int32_t STTS22H_DeInit(STTS22H_Object_t *pObj);
int32_t STTS22H_ReadID(STTS22H_Object_t *pObj, uint8_t *Id);
int32_t STTS22H_GetCapabilities(STTS22H_Object_t *pObj, STTS22H_Capabilities_t *Capabilities);
int32_t STTS22H_Get_Init_Status(STTS22H_Object_t *pObj, uint8_t *Status);
int32_t STTS22H_TEMP_Enable(STTS22H_Object_t *pObj);
int32_t STTS22H_TEMP_Disable(STTS22H_Object_t *pObj);
int32_t STTS22H_TEMP_GetOutputDataRate(STTS22H_Object_t *pObj, float *Odr);
int32_t STTS22H_TEMP_SetOutputDataRate(STTS22H_Object_t *pObj, float Odr);
int32_t STTS22H_TEMP_GetTemperature(STTS22H_Object_t *pObj, float *Value);
int32_t STTS22H_TEMP_Get_DRDY_Status(STTS22H_Object_t *pObj, uint8_t *Status);
int32_t STTS22H_TEMP_SetLowTemperatureThreshold(STTS22H_Object_t *pObj, float Value);
int32_t STTS22H_TEMP_SetHighTemperatureThreshold(STTS22H_Object_t *pObj, float Value);
int32_t STTS22H_TEMP_GetTemperatureLimitStatus(STTS22H_Object_t *pObj, uint8_t *HighLimit, uint8_t *LowLimit);
int32_t STTS22H_Read_Reg(STTS22H_Object_t *pObj, uint8_t Reg, uint8_t *Data);
int32_t STTS22H_Write_Reg(STTS22H_Object_t *pObj, uint8_t Reg, uint8_t Data);
int32_t STTS22H_Set_One_Shot(STTS22H_Object_t *pObj);
int32_t STTS22H_Get_One_Shot_Status(STTS22H_Object_t *pObj, uint8_t *Status);
/**
* @}
*/
/** @addtogroup STTS22H_Exported_Variables STTS22H Exported Variables
* @{
*/
extern STTS22H_CommonDrv_t STTS22H_COMMON_Driver;
extern STTS22H_TEMP_Drv_t STTS22H_TEMP_Driver;
/**
* @}
*/
#ifdef __cplusplus
}
#endif
#endif
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/