138 lines
2.9 KiB
C
138 lines
2.9 KiB
C
![]() |
/*
|
||
|
Copyright (c), 2001-2022, Shenshu Tech. Co., Ltd.
|
||
|
*/
|
||
|
|
||
|
#ifndef OT_COMMON_MOTIONSENSOR_H
|
||
|
#define OT_COMMON_MOTIONSENSOR_H
|
||
|
|
||
|
#include "ot_type.h"
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
#if __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
#endif /* __cplusplus */
|
||
|
|
||
|
#define OT_MSENSOR_MAX_DATA_NUM 128
|
||
|
#define OT_MSENSOR_GRADIENT (0x1 << 10)
|
||
|
|
||
|
#define OT_MSENSOR_TEMP_GYRO 0x1
|
||
|
#define OT_MSENSOR_TEMP_ACC 0x2
|
||
|
#define OT_MSENSOR_TEMP_MAGN 0x4
|
||
|
#define OT_MSENSOR_TEMP_ALL 0x7
|
||
|
|
||
|
#define OT_MSENSOR_DEVICE_GYRO 0x1
|
||
|
#define OT_MSENSOR_DEVICE_ACC 0x2
|
||
|
#define OT_MSENSOR_DEVICE_MAGN 0x4
|
||
|
#define OT_MSENSOR_DEVICE_ALL 0x7
|
||
|
|
||
|
typedef struct {
|
||
|
td_u32 device_mask;
|
||
|
td_u32 temperature_mask;
|
||
|
} ot_msensor_attr;
|
||
|
|
||
|
typedef struct {
|
||
|
td_u64 phys_addr;
|
||
|
td_u64 virt_addr;
|
||
|
td_u32 buf_len;
|
||
|
} ot_msensor_buf_attr;
|
||
|
|
||
|
typedef struct {
|
||
|
td_s32 x;
|
||
|
td_s32 y;
|
||
|
td_s32 z;
|
||
|
td_s32 temperature;
|
||
|
td_u64 pts;
|
||
|
} ot_msensor_sample_data;
|
||
|
|
||
|
typedef struct {
|
||
|
ot_msensor_sample_data gyro_data[OT_MSENSOR_MAX_DATA_NUM];
|
||
|
td_u32 data_num;
|
||
|
} ot_msensor_gyro_buf;
|
||
|
|
||
|
typedef struct {
|
||
|
ot_msensor_sample_data acc_data[OT_MSENSOR_MAX_DATA_NUM];
|
||
|
td_u32 data_num;
|
||
|
} ot_msensor_acc_buf;
|
||
|
|
||
|
typedef struct {
|
||
|
ot_msensor_sample_data magn_data[OT_MSENSOR_MAX_DATA_NUM];
|
||
|
td_u32 data_num;
|
||
|
} ot_msensor_magn_buf;
|
||
|
|
||
|
typedef struct {
|
||
|
td_u32 odr;
|
||
|
td_u32 fsr;
|
||
|
td_u8 data_width;
|
||
|
td_s32 temperature_max;
|
||
|
td_s32 temperature_min;
|
||
|
} ot_msensor_gyro_config;
|
||
|
|
||
|
typedef struct {
|
||
|
td_u32 odr;
|
||
|
td_u32 fsr;
|
||
|
td_u8 data_width;
|
||
|
td_s32 temperature_max;
|
||
|
td_s32 temperature_min;
|
||
|
} ot_msensor_acc_config;
|
||
|
|
||
|
typedef struct {
|
||
|
td_u32 odr;
|
||
|
td_u32 fsr;
|
||
|
td_u8 data_width;
|
||
|
td_s32 temperature_max;
|
||
|
td_s32 temperature_min;
|
||
|
} ot_msensor_magn_config;
|
||
|
|
||
|
typedef struct {
|
||
|
ot_msensor_gyro_config gyro_config;
|
||
|
ot_msensor_acc_config acc_config;
|
||
|
ot_msensor_magn_config magn_config;
|
||
|
} ot_msensor_config;
|
||
|
|
||
|
typedef struct {
|
||
|
ot_msensor_buf_attr buf_attr;
|
||
|
ot_msensor_config config;
|
||
|
ot_msensor_attr attr;
|
||
|
} ot_msensor_param;
|
||
|
|
||
|
typedef enum {
|
||
|
MSENSOR_DATA_GYRO = 0,
|
||
|
MSENSOR_DATA_ACC,
|
||
|
MSENSOR_DATA_MAGN,
|
||
|
MSENSOR_DATA_BUTT
|
||
|
} ot_msensor_data_type;
|
||
|
|
||
|
typedef struct {
|
||
|
td_s32 *x_phys_addr;
|
||
|
td_s32 *y_phys_addr;
|
||
|
td_s32 *z_phys_addr;
|
||
|
td_s32 *temperature_phys_addr;
|
||
|
td_u64 *pts_phys_addr;
|
||
|
td_u32 num; /* number of valid data */
|
||
|
} ot_msensor_data_addr;
|
||
|
|
||
|
typedef struct {
|
||
|
td_s32 id;
|
||
|
ot_msensor_data_type data_type;
|
||
|
ot_msensor_data_addr data[2]; /* cyclic buffer 2 */
|
||
|
td_u64 begin_pts;
|
||
|
td_u64 end_pts;
|
||
|
td_s64 addr_offset;
|
||
|
} ot_msensor_data_info;
|
||
|
|
||
|
typedef struct {
|
||
|
ot_msensor_attr attr;
|
||
|
ot_msensor_gyro_buf gyro_buf;
|
||
|
ot_msensor_acc_buf acc_buf;
|
||
|
ot_msensor_magn_buf magn_buf;
|
||
|
} ot_msensor_data;
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
#if __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
#endif /* end of #ifdef __cplusplus */
|
||
|
|
||
|
#endif
|