/** ****************************************************************************** * @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 */