nt9856x/code/hdal/drivers/k_driver/include/comm/gyro_drv.h
2023-03-28 15:07:53 +08:00

108 lines
3.4 KiB
C
Executable File

/**
Gyro Driver Header file.
@file GyroDrv.h
@ingroup
@note Nothing.
Copyright Novatek Microelectronics Corp. 2012. All rights reserved.
*/
#ifndef _GYRO_DRV_H
#define _GYRO_DRV_H
#include "kwrap/type.h"
#include "comm/gyro_spi.h"
typedef enum
{
GYRO_OP_MODE_SINGLE_ACCESS, ///< gyro in single access mode, read/write register one by one
GYRO_OP_MODE_FREE_RUN, ///< gyro in free run mode, read register after periodic trigger automatically
ENUM_DUMMY4WORD(GYRO_OP_MODE)
} GYRO_OP_MODE;
typedef void (*FP_GYRO_CB)(void); ///< gyor sie sync callback
typedef enum
{
GYRO_FREERUN_SIE_SYNC, ///< SIE sync mode
GYRO_FREERUN_FWTRIGGER, ///< FW trigger mode
ENUM_DUMMY4WORD(GYRO_FREERUN_TRIGGER_MODE)
} GYRO_FREERUN_TRIGGER_MODE;
typedef struct GYRO_FREE_RUN_PARAM{
UINT32 uiPeriodUs; ///< free run period in Us
UINT32 uiDataNum; ///< gyro data number in a period
UINT32 uiTriggerIdx; ///< the trigger index of gyro free run mode
GYRO_FREERUN_TRIGGER_MODE triggerMode; ///< trigger mode
} GYRO_FREE_RUN_PARAM;
typedef struct _GYRO_CFGINFO{
UINT32 AxisSelec[3]; ///< Gyro data axis
UINT32 DirSelec[3]; ///< Gyro data direction
}GYRO_CFGINFO;
typedef struct GYRO_OPENOBJ{
FP_GYRO_CB fp_cb; ///<
} GYRO_OPENOBJ;
typedef struct GYRO_STARTOBJ {
SPI_ID SpiID;
SPI_GYRO_INFO *pSPIGyroInfo;
}GYRO_STARTOBJ;
typedef struct GYRO_RSCINFOINIT {
UINT32 gdFormat; ///< Gyro data format
UINT32 AxisSelec[3]; ///< Gyro data axis
UINT32 DirSelec[3]; ///< Gyro data direction
UINT32 uiDataUnit; ///< Gyro data unit, in degree/65536sec
UINT32 uiCalGain[3]; ///< calibration gain, in 1/1024, recommended fixed to 1024
INT32 iCalOfs[3]; ///< Calibration offset, recommended fixed to 0
}GYRO_RSCINFOINIT;
typedef enum {
GYRO_SIE_1, ///< VD source is SIE2
GYRO_SIE_2, ///< VD source is SIE2
GYRO_SIE_3,
GYRO_SIE_4, ///< VD source is SIE4
GYRO_SIE_5, ///< VD source is SIE5
GYRO_SIE_6,
ENUM_DUMMY4WORD(GYRO_SIE_ID)
} GYRO_SIE_ID;
typedef enum {
GYROCTL_CFG_MODE, ///< [set], using GYRO_OP_MODE enum
GYROCTL_CFG_FRUN_PARAM,
GYROCTL_CFG_SIE_CB,
GYROCTL_CFG_SIE_SRC,
ENUM_DUMMY4WORD(GYROCTL_CFG)
} GYROCTL_CFG;
typedef enum {
GYRO_1, ///< GYRO ID1
GYRO_2, ///< GYRO ID2
ENUM_DUMMY4WORD(GYRO_ID)
} GYRO_ID;
typedef struct {
/* Object Common items */
GYRO_ID id; ///< Gyro Object ID.
INT32(*open)(void); ///< Gyro Object open.
INT32(*close)(void); ///< Gyro Object close.
INT32(*set_cfg)(GYROCTL_CFG cfg_id, void *value);///< Set Gyro Object configuration.
INT32(*get_cfg)(GYROCTL_CFG cfg_id, void *value);///< Get Gyro Object configuration.
INT32(*get_data)(UINT32 *puiNum, INT32 *puiDatX, INT32 *puiDatY, INT32 *puiDatZ);///< Get Gyro Object configuration.
INT32(*get_gsdata)(INT32 *puiDatX, INT32 *puiDatY, INT32 *puiDatZ);///< Get Gyro Object configuration.
} GYRO_OBJ, *PGYRO_OBJ;
PGYRO_OBJ gyro_get_obj(void);
#endif// _GYRO_DRV_H