2024-02-01 09:56:09 +08:00

160 lines
3.6 KiB
C

#ifndef TOUCH_PANEL_H
#define TOUCH_PANEL_H
#include "Std_Types.h"
#include "forceSnsr/forcedetect.h"
#define PI 3.1415926f
#define TP_ERR_RANGE 15
#define TP_DEBOUNCE_CYCLE 1
#define TP_RUNNING_ERROR_CYCLE 60000
#define SLIDE_LR_MIN_DISTANCE (30)
#define SLIDE_LR_SHORT_DISTANCE_NUM 90
#define SLIDE_UD_MIN_DISTANCE (1.59*SLIDE_LR_MIN_DISTANCE)
#define SLIDE_UD_SHORT_DISTANCE_NUM 140
#define SLIDE_UD_LEVEL1_DISTANCE SLIDE_UD_MIN_DISTANCE
#define SLIDE_UD_LEVEL2_DISTANCE (SLIDE_UD_MIN_DISTANCE + 69) //((SLIDE_UD_MIN_DISTANCE+SLIDE_UD_SHORT_DISTANCE_NUM)/2)
#define SLIDE_UD_LEVEL3_DISTANCE (SLIDE_UD_LEVEL2_DISTANCE + 69)//SLIDE_UD_SHORT_DISTANCE_NUM
#define SLIDE_CAN_EVENT_KEEP_CYCLE 30//2MS*30
typedef enum
{
TP_SlideDirection_NONE = 0,
TP_SlideDirection_ShortUP,
TP_SlideDirection_LongUP,
TP_SlideDirection_ShortDOWN,
TP_SlideDirection_LongDOWN,
TP_SlideDirection_ShortLEFT,
TP_SlideDirection_LongLEFT,
TP_SlideDirection_ShortRIGHT,
TP_SlideDirection_LongRIGHT
} TP_SlideDirection_Enum;
/*0 slip idle 1 decrease ,2 increase , 3 decrease double , 4 increase double ,5 decrease third, 6 increase third*/
typedef enum
{
TP_SlideLevel_NONE = 0,
TP_SlideLevel1_DOWN,
TP_SlideLevel1_UP,
TP_SlideLevel2_DOWN,
TP_SlideLevel2_UP,
TP_SlideLevel3_DOWN,
TP_SlideLevel3_UP
} TP_SlideLevel_Enum;
typedef enum{
TOUCH_PANEL_NONE_EVENT = 0,
TOUCH_PANEL_PRESS_EVENT,
TOUCH_PANEL_RES_EVENT,
TOUCH_PANEL_MOVE_EVENT,
TOUCH_PANEL_BERR_EVENT
}TouchPanel_EventType;
typedef enum{
PANEL_PRESS_LEVEL0 = 0,/*< 1N*/
PANEL_PRESS_LEVEL1,/*1N <= X < 3N*/
PANEL_PRESS_LEVEL2 /*>= 3N*/
}PanelPress_LevelType;
typedef struct{
boolean Event;
uint32 keep_cycle;
TP_SlideDirection_Enum Direction;
uint8 UpDown_SlideDistance;
TP_SlideLevel_Enum UpDown_SlideLevel;
}TouchSlideEvent_type;
typedef struct{
uint8 x_position;
uint8 y_position;
uint8 origin_x_pos;
uint8 origin_y_pos;
uint8 end_x_pos;
uint8 end_y_pos;
TouchPanel_EventType Event;
uint32 CheckCycle;
uint32 TouchCycle;
}TouchSurface_type;
typedef struct{
uint8 x_position;
uint8 y_position;
}TouchScroller_type;
typedef struct{
uint8 convert_x;
uint8 convert_y;
}TouchSurface_Convert_type;
typedef struct{
float32 x;
float32 y;
}TouchXY_type;
typedef struct{
uint16 status;
uint32 RunCycle;
}TouchButtons_type;
typedef enum{
BTN_VOICE1 = 0,//MENU1 pin
//BTN_VOICE2,//MENU2 //not used
BTN_VOL2,//VOL1
BTN_VOL1,//VOL2
BTN_MENU2,//VOICE1
BTN_MENU1,//VOICE1
/****************/
BTN_UP,
BTN_DOWN,
BTN_LEFT,
BTN_RIGHT,
BTN_CONFIRM,
/****************/
BTN_MAX_CH_NUM
}Buttons_ChType;
typedef enum{
BUTTON_RELEASE = 0,//notcative
BUTTON_TOUCH,
BUTTON_TOUCH_AND_PRESS,
//BUTTON_INVALID
}Buttons_SignalType;
#define GET_TouchPanel_is_Press Get_forcedetect_btn_is_press_state
extern volatile uint8 measurement_done_touch;
extern volatile uint8 k_voice_touch_Sts;
extern volatile uint8 Vibra_force_level;
extern volatile uint8 last_Vibra_force_level;
extern uint8 Vibra_PressCheck(void);
void TouchPanel_init(void);
void GetSurface_Position(uint8 *x, uint8 *y);
void GetScroller_Position(uint8 *x, uint8 *y);
Buttons_SignalType TouchPanel_BtnSignalRead(Buttons_ChType ChId);
void TouchPanel_MainFunction(void);
TP_SlideDirection_Enum TouchPanel_SlideEventRead(void);
Buttons_SignalType TouchSurface_XY_StsRead(void);
TP_SlideLevel_Enum TouchPanel_SlideUpDownLevelRead(void);
PanelPress_LevelType TouchPanel_PressLevelRead(void);
boolean TouchSurface_is_TouchActive(void);
boolean TouchButton_is_TouchActive(Buttons_ChType BtId);
boolean TouchScroller_is_TouchActive(void);
#endif