Files
pi-dashboard/components/ExternLib/SensorLib/src/bosch/bhi3_defs.h

205 lines
7.4 KiB
C
Raw Normal View History

2026-02-15 02:48:59 +09:00
/**
* Copyright (c) 2023 Bosch Sensortec GmbH. All rights reserved.
*
* BSD-3-Clause
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* 3. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
* @file bhi3_defs.h
* @date 2023-03-24
* @version v1.6.0
*
*/
#ifndef __BHI3_DEFS_H__
#define __BHI3_DEFS_H__
/* Start of CPP Guard */
#ifdef __cplusplus
extern "C" {
#endif /*__cplusplus */
#include "bhy2_defs.h"
/*! The Product ID needs to be replaced with Chip ID for explicit HW specific Identification*/
#define BHI3_PRODUCT_ID BHY2_PRODUCT_ID
/*! Firmware header identifier */
/*#define BHY2_FW_MAGIC UINT16_C(0x662B) */
/*! BHI3 Variant IDs */
#define BHI3_VARIANT_ID_BHI360 UINT32_C(0x18BC5434)
#define BHI3_VARIANT_ID_BHI380 UINT32_C(0x6E6D6CA6)
/*! BHI3 Specifc Sensor IDs */
#define BHI3_SENSOR_ID_AR_WEAR_WU UINT8_C(154) /* Activity Recognition (wear/hear) */
#define BHI3_SENSOR_ID_WRIST_GEST_DETECT_LP_WU UINT8_C(156) /* Wrist Gesture Detector Low Power Wakeup*/
#define BHI3_SENSOR_ID_WRIST_WEAR_LP_WU UINT8_C(158) /* Wrist Wear Low Power Wakeup */
#define BHI3_SENSOR_ID_NO_MOTION_LP_WU UINT8_C(159) /* No motion Low Power */
/*! Physical Sensor Control Parameter Page Base Address*/
#define BHI3_PHY_SENSOR_CTRL_PAGE UINT16_C(0x0E)
/*! Physical Sensor Control pages
* Here the 'id' refers to the Sensor ID of requisite Physical Sensors (Acc/Gyro)
* */
#define BHI3_PHY_SENSOR_CTRL_PARAM(id) (((BHI3_PHY_SENSOR_CTRL_PAGE) << 8) | (id))
#define BHI3_PHY_SENSOR_CTRL_CODE(dir, code) ((dir << 7) | (code))
#define BHI3_PHY_SENSOR_CTRL_WRITE UINT8_C(0x00)
#define BHI3_PHY_SENSOR_CTRL_READ UINT8_C(0x01)
#define BHI3_PHY_ACC_FOC_CTRL_CODE UINT8_C(0x01)
#define BHI3_PHY_ACC_FOC_CTRL_LEN 6
#define BHI3_PHY_ACC_LOW_POWER_MODE_CTRL_CODE UINT8_C(0x05)
#define BHI3_PHY_ACC_NORMAL_POWER_MODE UINT8_C(0x00)
#define BHI3_PHY_ACC_LOW_POWER_MODE UINT8_C(0x02)
#define BHI3_PHY_ACC_LOW_POWER_MODE_CTRL_LEN 1
#define BHI3_PHY_GYRO_FOC_CTRL_CODE UINT8_C(0x01)
#define BHI3_PHY_GYRO_FOC_CTRL_LEN 6
#define BHI3_PHY_GYRO_OIS_CTRL_CODE UINT8_C(0x02)
#define BHI3_PHY_GYRO_DISABLE_OIS UINT8_C(0x00)
#define BHI3_PHY_GYRO_ENABLE_OIS UINT8_C(0x01)
#define BHI3_PHY_GYRO_OIS_CTRL_LEN 1
#define BHI3_PHY_GYRO_FAST_STARTUP_CTRL_CODE UINT8_C(0x03)
#define BHI3_PHY_GYRO_DISABLE_FAST_STARTUP UINT8_C(0x00)
#define BHI3_PHY_GYRO_ENABLE_FAST_STARTUP UINT8_C(0x01)
#define BHI3_PHY_GYRO_FAST_STARTUP_CTRL_LEN 1
#define BHI3_PHY_GYRO_CRT_CTRL_CODE UINT8_C(0x04)
#define BHI3_PHY_GYRO_CRT_STATUS_SUCCESS UINT8_C(0x00)
#define BHI3_PHY_GYRO_ENABLE_CRT UINT8_C(0x01)
#define BHI3_PHY_GYRO_CRT_CTRL_LEN 1
#define BHI3_PHY_GYRO_LOW_POWER_MODE_CTRL_CODE UINT8_C(0x05)
#define BHI3_PHY_GYRO_NORMAL_POWER_MODE UINT8_C(0x00)
#define BHI3_PHY_GYRO_PERFORMANCE_POWER_MODE UINT8_C(0x01)
#define BHI3_PHY_GYRO_LOW_POWER_MODE UINT8_C(0x02)
#define BHI3_PHY_GYRO_LOW_POWER_MODE_CTRL_LEN 1
#define BHI3_PHY_GYRO_TIMER_AUTO_TRIM_CTRL_CODE UINT8_C(0x06)
#define BHI3_PHY_GYRO_DISABLE_TIMER_AUTO_TRIM UINT8_C(0x00)
#define BHI3_PHY_GYRO_ENABLE_TIMER_AUTO_TRIM UINT8_C(0x01)
#define BHI3_PHY_GYRO_TIMER_AUTO_TRIM_CTRL_LEN 1
#define BHI3_PHY_WRIST_WEAR_WAKEUP_CTRL_CODE UINT8_C(0x01)
#define BHI3_PHY_WRIST_WEAR_WAKEUP_CTRL_LEN 10
#define BHI3_PHY_ANY_MOTION_CTRL_CODE UINT8_C(0x01)
#define BHI3_PHY_ANY_MOTION_CTRL_LEN 4
#define BHI3_PHY_NO_MOTION_CTRL_CODE UINT8_C(0x01)
#define BHI3_PHY_NO_MOTION_CTRL_LEN 4
#define BHI3_PHY_WRIST_GESTURE_DETECT_CTRL_CODE UINT8_C(0x07)
#define BHI3_PHY_WRIST_GESTURE_DETECT_CTRL_LEN 19
typedef struct bhi3_wrist_wear_wakeup_config_param {
uint16_t min_angle_focus;
uint16_t min_angle_nonfocus;
uint8_t angle_landscape_right;
uint8_t angle_landscape_left;
uint8_t angle_portrait_down;
uint8_t angle_portrait_up;
uint8_t min_dur_moved;
uint8_t min_dur_quite;
} __attribute__ ((packed)) bhi3_wrist_wear_wakeup_config_param_t;
typedef struct bhi3_any_no_motion_config_param {
uint16_t duration;
uint8_t axis;
uint16_t threshold;
} __attribute__ ((packed)) bhi3_any_no_motion_config_param_t;
typedef struct bhi3_wrist_gesture_detect_config_param {
uint16_t min_flick_peak_y_threshold;
uint16_t min_flick_peak_z_threshold;
uint16_t gravity_bounds_x_pos;
uint16_t gravity_bounds_x_neg;
uint16_t gravity_bounds_y_neg;
uint16_t gravity_bounds_z_neg;
uint16_t flick_peak_decay_coeff;
uint16_t lp_mean_filter_coeff;
uint16_t max_duration_jiggle_peaks;
uint8_t device_position;
} __attribute__ ((packed)) bhi3_wrist_gesture_detect_config_param_t;
enum bhi3_wrist_gesture_activity {
NO_GESTURE,
WRIST_SHAKE_JIGGLE = 0x03,
FLICK_IN,
FLICK_OUT
};
typedef struct bhi3_wrist_gesture_detect {
enum bhi3_wrist_gesture_activity wrist_gesture;
} __attribute__ ((packed)) bhi3_wrist_gesture_detect_t;
static const char *const bhi3_wrist_gesture_detect_output[] = {
[NO_GESTURE] = "NO_GESTURE",
[1] = "",
[2] = "",
[WRIST_SHAKE_JIGGLE] = "WRIST_SHAKE_JIGGLE",
[FLICK_IN] = "FLICK_IN",
[FLICK_OUT] = "FLICK_OUT"
}; /*lint -e528 */
enum bhi3_phy_sensor_acc_power_mode {
ACC_NORMAL,
ACC_LOW_POWER = 0x02
};
enum bhi3_phy_sensor_gyro_power_mode {
GYRO_NORMAL,
GYRO_PERFORMANCE,
GYRO_LOW_POWER
};
static const char *const bhi3_phy_sensor_acc_pwm_output[] = {
[ACC_NORMAL] = "NORMAL",
[1] = "",
[ACC_LOW_POWER] = "LOW POWER"
}; /*lint -e528 */
static const char *const bhi3_phy_sensor_gyro_pwm_output[] = {
[GYRO_NORMAL] = "NORMAL",
[GYRO_PERFORMANCE] = "PERFORMANCE",
[GYRO_LOW_POWER] = "LOW POWER"
}; /*lint -e528 */
/* End of CPP Guard */
#ifdef __cplusplus
}
#endif /*__cplusplus */
#endif /* __BHI3_DEFS_H__ */