STM32CubeWL/Drivers/BSP/B-WL5M-SUBG/b_wl5m_subg_motion_sensors.h

178 lines
4.6 KiB
C

/**
******************************************************************************
* @file b_wl5m_subg_motion_sensors.h
* @author MCD Application Team
* @brief This file contains the common defines and functions prototypes for
* the b_wl5m_ceb_motion_sensors.c driver.
******************************************************************************
* @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 B_WL5M_SUBG_MOTION_SENSORS_H
#define B_WL5M_SUBG_MOTION_SENSORS_H
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/* Includes ------------------------------------------------------------------*/
#include "b_wl5m_subg_conf.h"
#include "b_wl5m_subg_errno.h"
#include "motion_sensor.h"
#ifndef USE_MOTION_SENSOR_IIS2MDC_0
#define USE_MOTION_SENSOR_IIS2MDC_0 1
#endif /* USE_MOTION_SENSOR_IIS2MDC_0 */
#ifndef USE_MOTION_SENSOR_ISM330DHCX_0
#define USE_MOTION_SENSOR_ISM330DHCX_0 1
#endif /* USE_MOTION_SENSOR_ISM330DHCX_0 */
#if (USE_MOTION_SENSOR_IIS2MDC_0 == 1)
#include "iis2mdc.h"
#endif /* USE_MOTION_SENSOR_IIS2MDC_0 == 1 */
#if (USE_MOTION_SENSOR_ISM330DHCX_0 == 1)
#include "ism330dhcx.h"
#endif /* USE_MOTION_SENSOR_ISM330DHCX_0 == 1 */
/** @addtogroup BSP BSP
* @{
*/
/** @addtogroup B_WL5M_SUBG B-WL5M-SUBG
* @{
*/
/** @addtogroup B_WL5M_SUBG_MOTION_SENSORS
* @{
*/
/** @defgroup B_WL5M_SUBG_MOTION_SENSORS_Exported_Types B-WL5M-SUBG MOTION SENSORS Exported Types
* @{
*/
typedef struct
{
int32_t x;
int32_t y;
int32_t z;
} MOTION_SENSOR_Axes_t;
typedef struct
{
int16_t x;
int16_t y;
int16_t z;
} MOTION_SENSOR_AxesRaw_t;
/* Motion Sensor instance Info */
typedef struct
{
uint8_t Acc;
uint8_t Gyro;
uint8_t Magneto;
uint8_t LowPower;
uint32_t GyroMaxFS;
uint32_t AccMaxFS;
uint32_t MagMaxFS;
float GyroMaxOdr;
float AccMaxOdr;
float MagMaxOdr;
} MOTION_SENSOR_Capabilities_t;
typedef struct
{
uint32_t Functions;
} MOTION_SENSOR_Ctx_t;
/**
* @}
*/
/** @defgroup B_WL5M_SUBG_MOTION_SENSOR_Exported_Constants B-WL5M-SUBG MOTION SENSOR Exported Constants
* @{
*/
#if (USE_MOTION_SENSOR_IIS2MDC_0 == 1)
#define MOTION_SENSOR_IIS2MDC_0 0
#endif /* (USE_MOTION_SENSOR_IIS2MDC_0 == 1) */
#if (USE_MOTION_SENSOR_ISM330DHCX_0 == 1)
#define MOTION_SENSOR_ISM330DHCX_0 1
#endif /* (USE_MOTION_SENSOR_ISM330DHCX_0 == 1) */
#ifndef MOTION_GYRO
#define MOTION_GYRO 1U
#endif /* MOTION_GYRO */
#ifndef MOTION_ACCELERO
#define MOTION_ACCELERO 2U
#endif /* MOTION_ACCELERO */
#ifndef MOTION_MAGNETO
#define MOTION_MAGNETO 4U
#endif /* MOTION_MAGNETO */
#define MOTION_SENSOR_FUNCTIONS_NBR 3U
#define MOTION_SENSOR_INSTANCES_NBR (USE_MOTION_SENSOR_IIS2MDC_0 + \
USE_MOTION_SENSOR_ISM330DHCX_0)
#if (MOTION_SENSOR_FUNCTIONS_NBR == 0)
#error "No motion sensor instance has been selected"
#endif /* MOTION_SENSOR_FUNCTIONS_NBR == 0 */
/**
* @}
*/
/** @addtogroup B_WL5M_SUBG_MOTION_SENSORS_Exported_Functions
* @{
*/
int32_t BSP_MOTION_SENSOR_Init(uint32_t Instance, uint32_t Functions);
int32_t BSP_MOTION_SENSOR_DeInit(uint32_t Instance);
int32_t BSP_MOTION_SENSOR_GetCapabilities(uint32_t Instance, MOTION_SENSOR_Capabilities_t *Capabilities);
int32_t BSP_MOTION_SENSOR_ReadID(uint32_t Instance, uint8_t *Id);
int32_t BSP_MOTION_SENSOR_Enable(uint32_t Instance, uint32_t Function);
int32_t BSP_MOTION_SENSOR_Disable(uint32_t Instance, uint32_t Function);
int32_t BSP_MOTION_SENSOR_GetAxes(uint32_t Instance, uint32_t Function, MOTION_SENSOR_Axes_t *Axes);
int32_t BSP_MOTION_SENSOR_GetAxesRaw(uint32_t Instance, uint32_t Function, MOTION_SENSOR_AxesRaw_t *Axes);
int32_t BSP_MOTION_SENSOR_GetSensitivity(uint32_t Instance, uint32_t Function, float *Sensitivity);
int32_t BSP_MOTION_SENSOR_GetOutputDataRate(uint32_t Instance, uint32_t Function, float *Odr);
int32_t BSP_MOTION_SENSOR_SetOutputDataRate(uint32_t Instance, uint32_t Function, float Odr);
int32_t BSP_MOTION_SENSOR_GetFullScale(uint32_t Instance, uint32_t Function, int32_t *Fullscale);
int32_t BSP_MOTION_SENSOR_SetFullScale(uint32_t Instance, uint32_t Function, int32_t Fullscale);
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* B_WL5M_SUBG_MOTION_SENSORS_H */