190 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			190 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| 
 | |
| #ifndef _GSENSOR_H_
 | |
| #define _GSENSOR_H_
 | |
| 
 | |
| #include "kwrap/ioctl.h"
 | |
| 
 | |
| #if defined __FREERTOS
 | |
| #define GSEN_OPEN(...) 0
 | |
| #define GSEN_IOCTL gsen_ioctl
 | |
| #define GSEN_CLOSE(...)
 | |
| #endif
 | |
| 
 | |
| #if defined __LINUX
 | |
| #define GSEN_OPEN  open
 | |
| #define GSEN_IOCTL ioctl
 | |
| #define GSEN_CLOSE close
 | |
| #endif
 | |
| 
 | |
| #define IOC_GSENSOR_PARKING_MODE            	_VOS_IOW('w', 8, unsigned int)
 | |
| #define IOC_GSENSOR_PARKING_SENSITIVITY         _VOS_IOW('w', 9, unsigned int)
 | |
| 
 | |
| #if defined(__FREERTOS)
 | |
| int gsen_ioctl (int fd, unsigned int cmd, unsigned long arg);
 | |
| #endif
 | |
| 
 | |
| // for axis data
 | |
| typedef enum
 | |
| {
 | |
| 	GSENSOR_AXIS_X,
 | |
| 	GSENSOR_AXIS_Y,
 | |
| 	GSENSOR_AXIS_Z,
 | |
| 	ENUM_DUMMY4WORD(GSENSOR_AXIS)
 | |
| } GSENSOR_AXIS;
 | |
| 
 | |
| // for get status
 | |
| typedef enum
 | |
| {
 | |
| 	GSENSOR_ORIENT_0,
 | |
| 	GSENSOR_ORIENT_90,
 | |
| 	GSENSOR_ORIENT_180,
 | |
| 	GSENSOR_ORIENT_270,
 | |
| 	ENUM_DUMMY4WORD(GSENSOR_ORIENT)
 | |
| } GSENSOR_ORIENT;
 | |
| 
 | |
| typedef enum
 | |
| {
 | |
| 	GSENSOR_SHAKE_LEFT,
 | |
| 	GSENSOR_SHAKE_RIGHT,
 | |
| 	ENUM_DUMMY4WORD(GSENSOR_SHAKE)
 | |
| } GSENSOR_SHAKE;
 | |
| 
 | |
| typedef enum
 | |
| {
 | |
| 	GSENSOR_SENSITIVITY_BEGIN = 0,
 | |
| 	GSENSOR_SENSITIVITY_OFF = GSENSOR_SENSITIVITY_BEGIN,
 | |
| 	GSENSOR_SENSITIVITY_LOW,
 | |
| 	GSENSOR_SENSITIVITY_MED,
 | |
| 	GSENSOR_SENSITIVITY_HIGH,
 | |
| 	GSENSOR_SENSITIVITY_END = GSENSOR_SENSITIVITY_HIGH,
 | |
| 
 | |
| 	GSENSOR_SENSITIVITY_PARKING_BEGIN = 100,
 | |
| 	GSENSOR_SENSITIVITY_PARKING_OFF = GSENSOR_SENSITIVITY_PARKING_BEGIN,
 | |
| 	GSENSOR_SENSITIVITY_PARKING_LOW,
 | |
| 	GSENSOR_SENSITIVITY_PARKING_MED,
 | |
| 	GSENSOR_SENSITIVITY_PARKING_HIGH,
 | |
| 	GSENSOR_SENSITIVITY_PARKING_END = GSENSOR_SENSITIVITY_PARKING_HIGH,
 | |
| 
 | |
| 	ENUM_DUMMY4WORD(GSENSOR_SENSITIVITY)
 | |
| } GSENSOR_SENSITIVITY;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
| 	UINT32	Xacc;
 | |
| 	UINT32	Yacc;
 | |
| 	UINT32	Zacc;
 | |
| } AXIS_DATA;
 | |
| 
 | |
| typedef struct {
 | |
| 	AXIS_DATA		Axis;
 | |
| 	GSENSOR_ORIENT	Ori;
 | |
| 	GSENSOR_SHAKE	SH;
 | |
| 	UINT32			Dev;
 | |
| 	UINT32			ShakeState;
 | |
| } Gsensor_Data, *pGsensor_Data;
 | |
| 
 | |
| #if 0
 | |
| #include "i2c.h"
 | |
| 
 | |
| typedef enum
 | |
| {
 | |
|     GSENSOR_I2C_REGISTER_1BYTE = 1,
 | |
|     GSENSOR_I2C_REGISTER_2BYTE = 2,
 | |
|     ENUM_DUMMY4WORD(GSENSOR_I2C_REGISTER_BYTES)
 | |
| } GSENSOR_I2C_REGISTER_BYTES, *PGSENSOR_I2C_REGISTER_BYTES;
 | |
| 
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|     I2C_SESSION		I2C_Channel;
 | |
|     GSENSOR_I2C_REGISTER_BYTES	I2C_RegBytes;
 | |
|     I2C_PINMUX		I2C_PinMux;
 | |
|     I2C_BUS_CLOCK	I2C_BusClock;
 | |
|     UINT32			I2C_Slave_WAddr;
 | |
|     UINT32			I2C_Slave_RAddr;
 | |
| } GSENSOR_INFO,*PGSENSOR_INFO;
 | |
| 
 | |
| // for axis data
 | |
| typedef enum
 | |
| {
 | |
|     GSENSOR_AXIS_X,
 | |
|     GSENSOR_AXIS_Y,
 | |
|     GSENSOR_AXIS_Z,
 | |
|     ENUM_DUMMY4WORD(GSENSOR_AXIS)
 | |
| } GSENSOR_AXIS;
 | |
| 
 | |
| // for get status
 | |
| typedef enum
 | |
| {
 | |
|     GSENSOR_ORIENT_0,
 | |
|     GSENSOR_ORIENT_90,
 | |
|     GSENSOR_ORIENT_180,
 | |
|     GSENSOR_ORIENT_270,
 | |
|     ENUM_DUMMY4WORD(GSENSOR_ORIENT)
 | |
| } GSENSOR_ORIENT;
 | |
| 
 | |
| typedef enum
 | |
| {
 | |
|     GSENSOR_SHAKE_LEFT,
 | |
|     GSENSOR_SHAKE_RIGHT,
 | |
|     ENUM_DUMMY4WORD(GSENSOR_SHAKE)
 | |
| } GSENSOR_SHAKE;
 | |
| 
 | |
| typedef enum
 | |
| {
 | |
| 	GSENSOR_SENSITIVITY_BEGIN = 0,
 | |
|     GSENSOR_SENSITIVITY_OFF = GSENSOR_SENSITIVITY_BEGIN,
 | |
|     GSENSOR_SENSITIVITY_LOW,
 | |
|     GSENSOR_SENSITIVITY_MED,
 | |
|     GSENSOR_SENSITIVITY_HIGH,
 | |
| 	GSENSOR_SENSITIVITY_END = GSENSOR_SENSITIVITY_HIGH,
 | |
| 
 | |
| 	GSENSOR_SENSITIVITY_PARKING_BEGIN = 100,
 | |
|     GSENSOR_SENSITIVITY_PARKING_OFF = GSENSOR_SENSITIVITY_PARKING_BEGIN,
 | |
|     GSENSOR_SENSITIVITY_PARKING_LOW,
 | |
|     GSENSOR_SENSITIVITY_PARKING_MED,
 | |
|     GSENSOR_SENSITIVITY_PARKING_HIGH,
 | |
| 	GSENSOR_SENSITIVITY_PARKING_END = GSENSOR_SENSITIVITY_PARKING_HIGH,
 | |
| 
 | |
|     ENUM_DUMMY4WORD(GSENSOR_SENSITIVITY)
 | |
| } GSENSOR_SENSITIVITY;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    UINT32   Xacc;
 | |
|    UINT32   Yacc;
 | |
|    UINT32   Zacc;
 | |
| } AXIS_DATA;
 | |
| 
 | |
| typedef struct {
 | |
|     AXIS_DATA       Axis;
 | |
|     GSENSOR_ORIENT  Ori;
 | |
|     GSENSOR_SHAKE   SH;
 | |
|     UINT32          Dev;
 | |
|     UINT32			ShakeState;
 | |
| } Gsensor_Data, *pGsensor_Data;
 | |
| 
 | |
| // common I2C related
 | |
| extern void GSensor_I2C_SetInfo(GSENSOR_INFO *pGSensorInfo);
 | |
| extern GSENSOR_INFO* GSensor_I2C_GetInfo(void);
 | |
| extern I2C_STS GSensor_I2C_Receive(UINT32 *value, BOOL bNACK, BOOL bStop);
 | |
| extern I2C_STS GSensor_I2C_Transmit(UINT32 value, BOOL bStart, BOOL bStop);
 | |
| extern BOOL   GSensor_I2C_Init(GSENSOR_INFO GSensorInfo);
 | |
| extern void   GSensor_I2C_WriteReg(UINT32 uiAddr, UINT32 uiValue);
 | |
| extern UINT32 GSensor_I2C_ReadReg(UINT32 uiAddr);
 | |
| 
 | |
| // common GSensor API
 | |
| extern BOOL   GSensor_open(void);
 | |
| extern BOOL   GSensor_close(void);
 | |
| extern BOOL   GSensor_IsOpened(void);
 | |
| extern BOOL   GSensor_GetStatus(Gsensor_Data *GS_Data);
 | |
| extern BOOL   GSensor_ParkingMode(void);
 | |
| extern void   ClearIntSts(void);
 | |
| extern BOOL   GSensor_CrashMode(void);
 | |
| extern void   GSensor_SetSensitivity(GSENSOR_SENSITIVITY GSensorSensitivity);
 | |
| extern void   GSensor_GetAxisValue(INT32 *pX, INT32 *pY, INT32 *pZ);
 | |
| extern void   GSensor_I2C_Exit(void);
 | |
| extern void   GSensor_I2C_Lock(void);
 | |
| #endif
 | |
| 
 | |
| #endif  //_GSENSOR_H_
 | 
