/* * **************************************************************************** * Copyright (C) 2017 - 2018 Bosch Sensortec GmbH * * File : bma423.h * * Date: 12 Oct 2017 * * Revision : 1.1.4 $ * * Usage: Sensor Driver for BMA423 sensor * **************************************************************************** * * Disclaimer * * Common: * Bosch Sensortec products are developed for the consumer goods industry. * They may only be used within the parameters of the respective valid * product data sheet. Bosch Sensortec products are provided with the * express understanding that there is no warranty of fitness for a * particular purpose.They are not fit for use in life-sustaining, * safety or security sensitive systems or any system or device * that may lead to bodily harm or property damage if the system * or device malfunctions. In addition,Bosch Sensortec products are * not fit for use in products which interact with motor vehicle systems. * The resale and or use of products are at the purchasers own risk and * his own responsibility. The examination of fitness for the intended use * is the sole responsibility of the Purchaser. * * The purchaser shall indemnify Bosch Sensortec from all third party * claims, including any claims for incidental, or consequential damages, * arising from any product use not covered by the parameters of * the respective valid product data sheet or not approved by * Bosch Sensortec and reimburse Bosch Sensortec for all costs in * connection with such claims. * * The purchaser must monitor the market for the purchased products, * particularly with regard to product safety and inform Bosch Sensortec * without delay of all security relevant incidents. * * Engineering Samples are marked with an asterisk (*) or (e). * Samples may vary from the valid technical specifications of the product * series. They are therefore not intended or fit for resale to third * parties or for use in end products. Their sole purpose is internal * client testing. The testing of an engineering sample may in no way * replace the testing of a product series. Bosch Sensortec assumes * no liability for the use of engineering samples. * By accepting the engineering samples, the Purchaser agrees to indemnify * Bosch Sensortec from all claims arising from the use of engineering * samples. * * Special: * This software module (hereinafter called "Software") and any information * on application-sheets (hereinafter called "Information") is provided * free of charge for the sole purpose to support your application work. * The Software and Information is subject to the following * terms and conditions: * * The Software is specifically designed for the exclusive use for * Bosch Sensortec products by personnel who have special experience * and training. Do not use this Software if you do not have the * proper experience or training. * * This Software package is provided `` as is `` and without any expressed * or implied warranties,including without limitation, the implied warranties * of merchantability and fitness for a particular purpose. * * Bosch Sensortec and their representatives and agents deny any liability * for the functional impairment * of this Software in terms of fitness, performance and safety. * Bosch Sensortec and their representatives and agents shall not be liable * for any direct or indirect damages or injury, except as * otherwise stipulated in mandatory applicable law. * * The Information provided is believed to be accurate and reliable. * Bosch Sensortec assumes no responsibility for the consequences of use * of such Information nor for any infringement of patents or * other rights of third parties which may result from its use. * No license is granted by implication or otherwise under any patent or * patent rights of Bosch. Specifications mentioned in the Information are * subject to change without notice. **************************************************************************/ /*! \file bma423.h \brief Sensor Driver for BMA423 sensor */ #ifndef BMA423_H #define BMA423_H #ifdef __cplusplus extern "C" { #endif #include "bma4.h" /**\name Chip ID of BMA423 sensor */ #define BMA423_CHIP_ID UINT8_C(0x13) /**\name Sensor feature size */ #define BMA423_FEATURE_SIZE UINT8_C(64) #define BMA423_ANYMOTION_EN_LEN UINT8_C(2) #define BMA423_RD_WR_MIN_LEN UINT8_C(2) /**\name Feature offset address */ #define BMA423_ANY_NO_MOTION_OFFSET UINT8_C(0x00) #define BMA423_STEP_CNTR_OFFSET UINT8_C(0x36) #define BMA423_STEP_CNTR_PARAM_OFFSET UINT8_C(0x04) #define BMA423_WAKEUP_OFFSET UINT8_C(0x38) #define BMA423_TILT_OFFSET UINT8_C(0x3A) #define BMA423_CONFIG_ID_OFFSET UINT8_C(0x3C) #define BMA423_AXES_REMAP_OFFSET UINT8_C(0x3E) /**************************************************************/ /**\name Remap Axes */ /**************************************************************/ #define BMA423_X_AXIS_MASK UINT8_C(0x03) #define BMA423_X_AXIS_SIGN_MASK UINT8_C(0x04) #define BMA423_Y_AXIS_MASK UINT8_C(0x18) #define BMA423_Y_AXIS_SIGN_MASK UINT8_C(0x20) #define BMA423_Z_AXIS_MASK UINT8_C(0xC0) #define BMA423_Z_AXIS_SIGN_MASK UINT8_C(0x01) /**************************************************************/ /**\name Step Counter & Detector */ /**************************************************************/ /**\name Step counter enable macros */ #define BMA423_STEP_CNTR_EN_POS UINT8_C(4) #define BMA423_STEP_CNTR_EN_MSK UINT8_C(0x10) #define BMA423_ACTIVITY_EN_MSK UINT8_C(0x20) /**\name Step counter watermark macros */ #define BMA423_STEP_CNTR_WM_MSK UINT16_C(0x03FF) /**\name Step counter reset macros */ #define BMA423_STEP_CNTR_RST_POS UINT8_C(2) #define BMA423_STEP_CNTR_RST_MSK UINT8_C(0x04) /**\name Step detector enable macros */ #define BMA423_STEP_DETECTOR_EN_POS UINT8_C(3) #define BMA423_STEP_DETECTOR_EN_MSK UINT8_C(0x08) /**\name Tilt enable macros */ #define BMA423_TILT_EN_MSK UINT8_C(0x01) /**\name Step count output length*/ #define BMA423_STEP_CNTR_DATA_SIZE UINT16_C(4) /**\name Wakeup enable macros */ #define BMA423_WAKEUP_EN_MSK UINT8_C(0x01) /**\name Wake up sensitivity macros */ #define BMA423_WAKEUP_SENS_POS UINT8_C(1) #define BMA423_WAKEUP_SENS_MSK UINT8_C(0x0E) /**\name Tap selection macro */ #define BMA423_TAP_SEL_POS UINT8_C(4) #define BMA423_TAP_SEL_MSK UINT8_C(0x10) /**************************************************************/ /**\name Any Motion */ /**************************************************************/ /**\name Any motion threshold macros */ #define BMA423_ANY_NO_MOTION_THRES_POS UINT8_C(0) #define BMA423_ANY_NO_MOTION_THRES_MSK UINT16_C(0x07FF) /**\name Any motion selection macros */ #define BMA423_ANY_NO_MOTION_SEL_POS UINT8_C(3) #define BMA423_ANY_NO_MOTION_SEL_MSK UINT8_C(0x08) /**\name Any motion enable macros */ #define BMA423_ANY_NO_MOTION_AXIS_EN_POS UINT8_C(5) #define BMA423_ANY_NO_MOTION_AXIS_EN_MSK UINT8_C(0xE0) /**\name Any motion duration macros */ #define BMA423_ANY_NO_MOTION_DUR_MSK UINT16_C(0x1FFF) /**************************************************************/ /**\name User macros */ /**************************************************************/ /**\name Anymotion/Nomotion axis enable macros */ #define BMA423_X_AXIS_EN UINT8_C(0x01) #define BMA423_Y_AXIS_EN UINT8_C(0x02) #define BMA423_Z_AXIS_EN UINT8_C(0x04) #define BMA423_ALL_AXIS_EN UINT8_C(0x07) #define BMA423_ALL_AXIS_DIS UINT8_C(0x00) /**\name Feature enable macros for the sensor */ #define BMA423_STEP_CNTR UINT8_C(0x01) /**\name Below macros are mutually exclusive */ #define BMA423_ANY_MOTION UINT8_C(0x02) #define BMA423_NO_MOTION UINT8_C(0x04) #define BMA423_ACTIVITY UINT8_C(0x08) #define BMA423_TILT UINT8_C(0x10) #define BMA423_WAKEUP UINT8_C(0x20) /**\name Interrupt status macros */ #define BMA423_STEP_CNTR_INT UINT8_C(0x02) #define BMA423_ACTIVITY_INT UINT8_C(0x04) #define BMA423_TILT_INT UINT8_C(0x08) #define BMA423_WAKEUP_INT UINT8_C(0x20) #define BMA423_ANY_NO_MOTION_INT UINT8_C(0x40) #define BMA423_ERROR_INT UINT8_C(0x80) /**\name Activity recognition macros */ #define BMA423_USER_STATIONARY UINT8_C(0x00) #define BMA423_USER_WALKING UINT8_C(0x01) #define BMA423_USER_RUNNING UINT8_C(0x02) #define BMA423_STATE_INVALID UINT8_C(0x03) /**\name Configuration selection macros */ #define BMA423_PHONE_CONFIG UINT8_C(0x00) #define BMA423_WRIST_CONFIG UINT8_C(0x01) /**\name Step counter parameter setting(1-25) for phone */ #define BMA423_PHONE_SC_PARAM_1 UINT16_C(0x132) #define BMA423_PHONE_SC_PARAM_2 UINT16_C(0x78E6) #define BMA423_PHONE_SC_PARAM_3 UINT16_C(0x84) #define BMA423_PHONE_SC_PARAM_4 UINT16_C(0x6C9C) #define BMA423_PHONE_SC_PARAM_5 UINT8_C(0x07) #define BMA423_PHONE_SC_PARAM_6 UINT16_C(0x7564) #define BMA423_PHONE_SC_PARAM_7 UINT16_C(0x7EAA) #define BMA423_PHONE_SC_PARAM_8 UINT16_C(0x55F) #define BMA423_PHONE_SC_PARAM_9 UINT16_C(0xABE) #define BMA423_PHONE_SC_PARAM_10 UINT16_C(0x55F) #define BMA423_PHONE_SC_PARAM_11 UINT16_C(0xE896) #define BMA423_PHONE_SC_PARAM_12 UINT16_C(0x41EF) #define BMA423_PHONE_SC_PARAM_13 UINT8_C(0x01) #define BMA423_PHONE_SC_PARAM_14 UINT8_C(0x0C) #define BMA423_PHONE_SC_PARAM_15 UINT8_C(0x0C) #define BMA423_PHONE_SC_PARAM_16 UINT8_C(0x4A) #define BMA423_PHONE_SC_PARAM_17 UINT8_C(0xA0) #define BMA423_PHONE_SC_PARAM_18 UINT8_C(0x00) #define BMA423_PHONE_SC_PARAM_19 UINT8_C(0x0C) #define BMA423_PHONE_SC_PARAM_20 UINT16_C(0x3CF0) #define BMA423_PHONE_SC_PARAM_21 UINT16_C(0x100) #define BMA423_PHONE_SC_PARAM_22 UINT8_C(0x00) #define BMA423_PHONE_SC_PARAM_23 UINT8_C(0x00) #define BMA423_PHONE_SC_PARAM_24 UINT8_C(0x00) #define BMA423_PHONE_SC_PARAM_25 UINT8_C(0x00) /**\name Step counter parameter setting(1-25) for wrist (Default) */ #define BMA423_WRIST_SC_PARAM_1 UINT16_C(0x12D) #define BMA423_WRIST_SC_PARAM_2 UINT16_C(0x7BD4) #define BMA423_WRIST_SC_PARAM_3 UINT16_C(0x13B) #define BMA423_WRIST_SC_PARAM_4 UINT16_C(0x7ADB) #define BMA423_WRIST_SC_PARAM_5 UINT8_C(0x04) #define BMA423_WRIST_SC_PARAM_6 UINT16_C(0x7B3F) #define BMA423_WRIST_SC_PARAM_7 UINT16_C(0x6CCD) #define BMA423_WRIST_SC_PARAM_8 UINT16_C(0x4C3) #define BMA423_WRIST_SC_PARAM_9 UINT16_C(0x985) #define BMA423_WRIST_SC_PARAM_10 UINT16_C(0x4C3) #define BMA423_WRIST_SC_PARAM_11 UINT16_C(0xE6EC) #define BMA423_WRIST_SC_PARAM_12 UINT16_C(0x460C) #define BMA423_WRIST_SC_PARAM_13 UINT8_C(0x01) #define BMA423_WRIST_SC_PARAM_14 UINT8_C(0x27) #define BMA423_WRIST_SC_PARAM_15 UINT8_C(0x19) #define BMA423_WRIST_SC_PARAM_16 UINT8_C(0x96) #define BMA423_WRIST_SC_PARAM_17 UINT8_C(0xA0) #define BMA423_WRIST_SC_PARAM_18 UINT8_C(0x01) #define BMA423_WRIST_SC_PARAM_19 UINT8_C(0x0C) #define BMA423_WRIST_SC_PARAM_20 UINT16_C(0x3CF0) #define BMA423_WRIST_SC_PARAM_21 UINT16_C(0x100) #define BMA423_WRIST_SC_PARAM_22 UINT8_C(0x01) #define BMA423_WRIST_SC_PARAM_23 UINT8_C(0x03) #define BMA423_WRIST_SC_PARAM_24 UINT8_C(0x01) #define BMA423_WRIST_SC_PARAM_25 UINT8_C(0x0E) /*! * @brief Any motion configuration */ struct bma423_anymotion_config { /*! Expressed in 50 Hz samples (20 ms) */ uint16_t duration; /*! Threshold value for Any-motion / No-motion detection in 5.11g format */ uint16_t threshold; /*! Indicates if No-motion or Any-motion is selected */ uint8_t nomotion_sel; }; /*! * @brief Axes remapping configuration */ struct bma423_axes_remap { uint8_t x_axis; uint8_t x_axis_sign; uint8_t y_axis; uint8_t y_axis_sign; uint8_t z_axis; uint8_t z_axis_sign; }; /*! * @brief Step counter param settings */ struct bma423_stepcounter_settings { /*! Step Counter param 1 */ uint16_t param1; /*! Step Counter param 2 */ uint16_t param2; /*! Step Counter param 3 */ uint16_t param3; /*! Step Counter param 4 */ uint16_t param4; /*! Step Counter param 5 */ uint16_t param5; /*! Step Counter param 6 */ uint16_t param6; /*! Step Counter param 7 */ uint16_t param7; /*! Step Counter param 8 */ uint16_t param8; /*! Step Counter param 9 */ uint16_t param9; /*! Step Counter param 10 */ uint16_t param10; /*! Step Counter param 11 */ uint16_t param11; /*! Step Counter param 12 */ uint16_t param12; /*! Step Counter param 13 */ uint16_t param13; /*! Step Counter param 14 */ uint16_t param14; /*! Step Counter param 15 */ uint16_t param15; /*! Step Counter param 16 */ uint16_t param16; /*! Step Counter param 17 */ uint16_t param17; /*! Step Counter param 18 */ uint16_t param18; /*! Step Counter param 19 */ uint16_t param19; /*! Step Counter param 20 */ uint16_t param20; /*! Step Counter param 21 */ uint16_t param21; /*! Step Counter param 22 */ uint16_t param22; /*! Step Counter param 23 */ uint16_t param23; /*! Step Counter param 24 */ uint16_t param24; /*! Step Counter param 25 */ uint16_t param25; }; /*! * @brief This API is the entry point. * Call this API before using all other APIs. * This API reads the chip-id of the sensor and sets the resolution. * * @param[in,out] dev : Structure instance of bma4_dev * * @return Result of API execution status * @retval 0 -> Success * @retval Any non zero value -> Fail */ uint16_t bma423_init(struct bma4_dev *dev); /*! * @brief This API is used to upload the config file to enable * the features of the sensor. * * @param[in] dev : Structure instance of bma4_dev. * * @return Result of API execution status * @retval 0 -> Success * @retval Any non zero value -> Fail */ uint16_t bma423_write_config_file(struct bma4_dev *dev); /*! * @brief This API is used to get the configuration id of the sensor. * * @param[out] config_id : Pointer variable used to store * the configuration id. * @param[in] dev : Structure instance of bma4_dev. * * @return Result of API execution status * @retval 0 -> Success * @retval Any non zero value -> Fail */ uint16_t bma423_get_config_id(uint16_t *config_id, struct bma4_dev *dev); /*! * @brief This API sets/unsets the user provided interrupt to either * interrupt pin1 or pin2 in the sensor. * * @param[in] int_line: Variable to select either interrupt pin1 or pin2. * int_line | Macros * ------------|------------------- * 0 | BMA4_INTR1_MAP * 1 | BMA4_INTR2_MAP * @param[in] int_map : Variable to specify the interrupts. * @param[in] enable : Variable to specify mapping or unmapping of * interrupts. * enable | Macros * --------------------|------------------- * 0x00 | BMA4_DISABLE * 0x01 | BMA4_ENABLE * @param[in] dev : Structure instance of bma4_dev. * * @note Below macros specify the interrupts. * Feature Interrupts * - BMA423_STEP_CNTR_INT * - BMA423_ACTIVITY_INT * - BMA423_TILT_INT * - BMA423_WAKEUP_INT * - BMA423_ANY_NO_MOTION_INT * - BMA423_ERROR_INT * * Hardware Interrupts * - BMA4_FIFO_FULL_INT * - BMA4_FIFO_WM_INT * - BMA4_DATA_RDY_INT * * @return Result of API execution status * @retval 0 -> Success * @retval Any non zero value -> Fail */ uint16_t bma423_map_interrupt(uint8_t int_line, uint16_t int_map, uint8_t enable, struct bma4_dev *dev); /*! * @brief This API reads the bma423 interrupt status from the sensor. * * @param[out] int_status : Variable to store the interrupt status * read from the sensor. * @param[in] dev : Structure instance of bma4_dev. * * @note Below macros are used to check the interrupt status. * Feature Interrupts * * - BMA423_STEP_CNTR_INT * - BMA423_ACTIVITY_INT * - BMA423_TILT_INT * - BMA423_WAKEUP_INT * - BMA423_ANY_NO_MOTION_INT * - BMA423_ERROR_INT * * * Hardware Interrupts * - BMA4_FIFO_FULL_INT * - BMA4_FIFO_WM_INT * - BMA4_MAG_DATA_RDY_INT * - BMA4_ACCEL_DATA_RDY_INT * * @return Result of API execution status * @retval 0 -> Success * @retval Any non zero value -> Fail */ uint16_t bma423_read_int_status(uint16_t *int_status, struct bma4_dev *dev); /*! * @brief This API enables/disables the features of the sensor. * * @param[in] feature : Variable to specify the features * which are to be set in bma423 sensor. * @param[in] enable : Variable which specifies whether to enable or * disable the features in the bma423 sensor * enable | Macros * --------------------|------------------- * 0x00 | BMA4_DISABLE * 0x01 | BMA4_ENABLE * @param[in] dev : Structure instance of bma4_dev. * * @note User should use the below macros to enable or disable the * features of bma423 sensor * - BMA423_STEP_CNTR * - BMA423_ANY_MOTION (or) BMA423_NO_MOTION * - BMA423_ACTIVITY * - BMA423_WAKEUP * - BMA423_TILT * * @return Result of API execution status * @retval 0 -> Success * @retval Any non zero value -> Fail */ uint16_t bma423_feature_enable(uint8_t feature, uint8_t enable, struct bma4_dev *dev); /*! * @brief This API performs x, y and z axis remapping in the sensor. * * @param[in] remap_data : Pointer to store axes remapping data. * @param[in] dev : Structure instance of bma4_dev * * @return Result of API execution status * @retval 0 -> Success * @retval Any non zero value -> Fail */ uint16_t bma423_set_remap_axes(const struct bma423_axes_remap *remap_data, struct bma4_dev *dev); /*! * @brief This API reads the x, y and z axis remap data from the sensor. * * @param[out] remap_data : Pointer to store axis remap data which is read * from the bma423 sensor. * @param[in] dev : Structure instance of bma4_dev * * @return Result of API execution status * @retval 0 -> Success * @retval Any non zero value -> Fail */ uint16_t bma423_get_remap_axes(struct bma423_axes_remap *remap_data, struct bma4_dev *dev); /*! * @brief This API sets the watermark level for step counter * interrupt in the sensor. * * @param[in] step_counter_wm : Variable which specifies watermark level * count * @note Valid values are from 1 to 1023 * @note Value 0 is used for step detector interrupt * @param[in] dev : Structure instance of bma4_dev * * @return Result of API execution status * @retval 0 -> Success * @retval Any non zero value -> Fail */ uint16_t bma423_step_counter_set_watermark(uint16_t step_counter_wm, struct bma4_dev *dev); /*! * @brief This API gets the water mark level set for step counter interrupt * in the sensor * * @param[out] step_counter_wm : Pointer variable which stores * the water mark level read from the sensor. * @note valid values are from 1 to 1023 * @note value 0 is used for step detector interrupt * @param[in] dev : Structure instance of bma4_dev * * @return Result of API execution status * @retval 0 -> Success * @retval Any non zero value -> Fail */ uint16_t bma423_step_counter_get_watermark(uint16_t *step_counter_wm, struct bma4_dev *dev); /*! * @brief This API resets the counted steps of step counter. * * @param[in] dev : structure instance of bma4_dev * * @return Result of API execution status * @retval 0 -> Success * @retval Any non zero value -> Fail */ uint16_t bma423_reset_step_counter(struct bma4_dev *dev); /*! * @brief This API gets the number of counted steps of the step counter * feature from the sensor. * * @param[out] step_count : Pointer variable which stores counted steps * read from the sensor. * @param[in] dev : Structure instance of bma4_dev * * @return Result of API execution status * @retval 0 -> Success * @retval Any non zero value -> Fail */ uint16_t bma423_step_counter_output(uint32_t *step_count, struct bma4_dev *dev); /*! * @brief This API gets the output for activity feature. * * @param[out] activity : Pointer variable which stores activity output * read from the sensor. * activity | State * --------------|------------------------ * 0x00 | BMA423_USER_STATIONARY * 0x01 | BMA423_USER_WALKING * 0x02 | BMA423_USER_RUNNING * 0x03 | BMA423_STATE_INVALID * * @param[in] dev : Structure instance of bma4_dev * @return Result of API execution status * @retval 0 -> Success * @retval Any non zero value -> Fail */ uint16_t bma423_activity_output(uint8_t *activity, struct bma4_dev *dev); /*! * @brief This API select the platform configuration wrist(default) or phone. * * @param[in] platform : Variable to select wrist/phone * * platform | Macros * -------------|------------------------ * 0x00 | BMA423_PHONE_CONFIG * 0x01 | BMA423_WRIST_CONFIG * * @param[in] dev : Structure instance of bma4_dev * @return Result of API execution status * @retval 0 -> Success * @retval Any non zero value -> Fail */ uint16_t bma423_select_platform(uint8_t platform, struct bma4_dev *dev); /*! * @brief This API gets the parameter1 to parameter7 settings of the * step counter feature. * * @param[out] setting : Pointer to structure variable which stores the * parameter1 to parameter7 read from the sensor. * @param[in] dev : Structure instance of bma4_dev * * @return Result of API execution status * @retval 0 -> Success * @retval Any non zero value -> Fail */ uint16_t bma423_stepcounter_get_parameter(struct bma423_stepcounter_settings *setting, struct bma4_dev *dev); /*! * @brief This API sets the parameter1 to parameter7 settings of the * step counter feature in the sensor. * * @param[in] setting : Pointer to structure variable which stores the * parameter1 to parameter7 settings read from the sensor. * @param[in] dev : Structure instance of bma4_dev * * @return Result of API execution status * @retval 0 -> Success * @retval Any non zero value -> Fail */ uint16_t bma423_stepcounter_set_parameter( const struct bma423_stepcounter_settings *setting, struct bma4_dev *dev); /*! * @brief This API enables or disables the step detector feature in the * sensor. * * @param[in] enable : Variable used to enable or disable step detector * enable | Macros * --------------------|------------------- * 0x00 | BMA4_DISABLE * 0x01 | BMA4_ENABLE * @param[in] dev : Structure instance of bma4_dev * * @return Result of API execution status * @retval 0 -> Success * @retval Any non zero value -> Fail */ uint16_t bma423_step_detector_enable(uint8_t enable, struct bma4_dev *dev); /*! * @brief This API enables the any motion feature according to the axis * set by the user in the sensor. * * @param[in] axis : Variable to specify the axis of the any motion feature * to be enabled in the sensor. * Value | Axis * ---------|------------------------- * 0x00 | BMA423_ALL_AXIS_DIS * 0x01 | BMA423_X_AXIS_EN * 0x02 | BMA423_Y_AXIS_EN * 0x04 | BMA423_Z_AXIS_EN * 0x07 | BMA423_ALL_AXIS_EN * @param[in] dev : Structure instance of bma4_dev * * @return result of API execution status * @retval 0 -> Success * @retval Any non zero value -> Fail */ uint16_t bma423_anymotion_enable_axis(uint8_t axis, struct bma4_dev *dev); /*! @brief This API sets the configuration of Any motion feature in * the sensor. * * @param[in] any_motion : Pointer to structure variable to specify * the any motion feature settings. * Structure members are provided in the table below *@verbatim * ------------------------------------------------------------------------- * Structure parameters | Description * --------------------------------|---------------------------------------- * | Defines the number of * | consecutive data points for * | which the threshold condition * duration | must be respected, for interrupt * | assertion. It is expressed in * | 50 Hz samples (20 ms). * | Range is 0 to 163sec. * | Default value is 5 = 100ms. * --------------------------------|---------------------------------------- * | Slope threshold value for * | Any-motion / No-motion detection * threshold | in 5.11g format. * | Range is 0 to 1g. * | Default value is 0xAA = 83mg. * --------------------------------|---------------------------------------- * | Indicates if No motion (1) or * nomotion_sel | Any-motion (0) is selected; * | default value is 0 Any-motion. * ------------------------------------------------------------------------- *@endverbatim * @param[in] dev : Structure instance of bma4_dev * * @return Result of API execution status * @retval 0 -> Success * @retval Any non zero value -> Fail */ uint16_t bma423_set_any_motion_config(const struct bma423_anymotion_config *any_motion, struct bma4_dev *dev); /*! @brief This API gets the configuration of any motion feature from * the sensor. * * @param[out] any_motion : Pointer to structure variable used to store * the any motion feature settings read from the sensor. * Structure members are provided in the table below *@verbatim * ------------------------------------------------------------------------- * Structure parameters | Description * --------------------------------|---------------------------------------- * | Defines the number of * | consecutive data points for * | which the threshold condition * duration | must be respected, for interrupt * | assertion. It is expressed in * | 50 Hz samples (20 ms). * | Range is 0 to 163sec. * | Default value is 5 = 100ms. * --------------------------------|---------------------------------------- * | Slope threshold value for * | Any-motion / No-motion detection * threshold | in 5.11g format. * | Range is 0 to 1g. * | Default value is 0xAA = 83mg. * --------------------------------|---------------------------------------- * | Indicates if No motion (1) or * nomotion_sel | Any-motion (0) is selected; * | default value is 0 Any-motion. * ------------------------------------------------------------------------- *@endverbatim * @param[in] dev : Structure instance of bma4_dev * * @return Result of API execution status * @retval 0 -> Success * @retval Any non zero value -> Fail */ uint16_t bma423_get_any_motion_config(struct bma423_anymotion_config *any_motion, struct bma4_dev *dev); /*! * @brief This API sets the sensitivity of wake up feature in the sensor * * @param[in] sensitivity : Variable used to specify the sensitivity of the * Wake up feature. * Value | Sensitivity * --------|------------------------- * 0x00 | MOST SENSITIVE * 0x07 | LEAST SENSITIVE * @param[in] dev : Structure instance of bma4_dev * * @return Result of API execution status * @retval 0 -> Success * @retval Any non zero value -> Fail */ uint16_t bma423_wakeup_set_sensitivity(uint8_t sensitivity, struct bma4_dev *dev); /*! * @brief This API gets the sensitivity of wake up feature in the sensor * * @param[out] sensitivity : Pointer variable which stores the sensitivity * value read from the sensor. * Value | Sensitivity * --------|------------------------- * 0x00 | MOST SENSITIVE * 0x07 | LEAST SENSITIVE * @param[in] dev : Structure instance of bma4_dev * * @return Result of API execution status * @retval 0 -> Success * @retval Any non zero value -> Fail */ uint16_t bma423_wakeup_get_sensitivity(uint8_t *sensitivity, struct bma4_dev *dev); /*! * @brief This API is used to select single/double tap * feature in the sensor * * @param tap_select : Variable used to specify the single or * double tap selection in the sensor * tap_select | description * ------------|------------------------ * 0x00 | Double tap selected * 0x01 | single tap selected * * @param dev : Structure instance of bma4_dev * * @return results of stream_transfer operation * @retval 0 -> Success * @retval Any positive value mentioned in ERROR CODES -> Fail * */ uint16_t bma423_tap_selection(const uint8_t tap_select, struct bma4_dev *dev); #ifdef __cplusplus } #endif /*End of CPP guard */ #endif /*End of header guard macro */