📄 touch.h
字号:
/*
Module Name: tchpdd.h
Abstract:
This has the header file definitions for the touch driver.
Notes:
Created: July 22, 1997
--*/
#ifndef __TOUCH_H__
#define __TOUCH_H__
//
// Digitizer related definitions.
//
//
// @doc INTERNAL DRIVERS PDD TOUCH_PANEL
// @const ULONG | DELTA_X_COORD_VARIANCE |
// Maximum allowed variance in the X coordinate samples.
//
#define DELTA_X_COORD_VARIANCE 0x20
//
// @doc INTERNAL DRIVERS PDD TOUCH_PANEL
// @const ULONG | DELTA_Y_COORD_VARIANCE |
// Maximum allowed variance in the X coordinate samples.
//
#define DELTA_Y_COORD_VARIANCE 0x20
//
// @doc INTERNAL DRIVERS PDD TOUCH_PANEL
// @const ULONG | MIN_X_DIGITIZER_COORD |
// Minimum X coordinate.
//
#define MIN_X_DIGITIZER_COORD 0
//
// @doc INTERNAL DRIVERS PDD TOUCH_PANEL
// @const ULONG | MAX_X_DIGITIZER_COORD |
// Maximum X coordinate.
//
#define MAX_X_DIGITIZER_COORD (1<<10)
//
// @doc INTERNAL DRIVERS PDD TOUCH_PANEL
// @const ULONG | MIN_Y_DIGITIZER_COORD |
// Minimum Y coordinate.
//
#define MIN_Y_DIGITIZER_COORD 0
//
// @doc INTERNAL DRIVERS PDD TOUCH_PANEL
// @const ULONG | MAX_Y_DIGITIZER_COORD |
// Maximum Y coordinate.
//
#define MAX_Y_DIGITIZER_COORD (1<<10)
//
// @doc INTERNAL DRIVERS PDD TOUCH_PANEL
// @const ULONG | MAX_NOISE_COUNT |
// Maximum noise count.
//
#define MAX_NOISE_COUNT 4
#if POLLING_MODE
//
// @doc INTERNAL DRIVERS PDD TOUCH_PANEL
// @const ULONG | TOUCHPANEL_SAMPLE_RATE_LOW |
// Low sampling rate.
//
#define TOUCHPANEL_SAMPLE_RATE_LOW 100
//
// @doc INTERNAL DRIVERS PDD TOUCH_PANEL
// @const ULONG | TOUCHPANEL_SAMPLE_RATE_HIGH |
// High sampling rate.
//
#define TOUCHPANEL_SAMPLE_RATE_HIGH 100
#else
#define TOUCHPANEL_SAMPLE_RATE_LOW 200
#define TOUCHPANEL_SAMPLE_RATE_HIGH 200
#endif
//
// @doc INTERNAL DRIVERS PDD TOUCH_PANEL
// @const ULONG | TOUCH_NUM_REJECT |
// Number of initial samples to reject.
//
#define TOUCH_NUM_REJECT 1
//
// TOUCH_TIMER_INCREMENT is the constant that decides the sampling rate of the touch controller's
// ADC. The formulae used to get the number below is :-
// (3.6864 * 10^6)
// TOUCH_TIMER_INCREMENT = ---------------
// Sample Rate
// For Example if the Sample Rate decided is 150 samples per second then the
// TOUCH_TIMER_INCREMENT should be 0x6000
#if POLLING_MODE
#define TOUCH_TIMER_INCREMENT 0x9000
#else
#define TOUCH_TIMER_INCREMENT 0x4800
#endif
#define RT_ADC_X 0x0001
#define RT_ADC_Y 0x0002
#define RT_MIC_ROUTING_CTRL 0X10 //MIC ROUTING CONTROL
#define RT_PWR_MANAG_ADD1 0X3A //POWER MANAGMENT ADDITION 1
#define RT_PWR_MANAG_ADD2 0X3C //POWER MANAGMENT ADDITION 2
#define RT_GPIO_PIN_CONFIG 0X4C //GPIO PIN CONFIGURATION
#define RT_GPIO_PIN_POLARITY 0X4E //GPIO PIN POLARITY/TYPE
#define RT_GPIO_PIN_STICKY 0X50 //GPIO PIN STICKY
#define RT_GPIO_PIN_WAKEUP 0X52 //GPIO PIN WAKE UP
#define RT_GPIO_PIN_STATUS 0X54 //GPIO PIN STATUS
#define RT_GPIO_PIN_SHARING 0X56 //GPIO PIN SHARING
#define RT_OVER_TEMP_CURR_STATUS 0X58 //OVER TEMPERATURE AND CURRENT STATUS
#define RT_GPIO_OUT_CTRL 0X5C //GPIO OUTPUT PIN CONTRL
#define RT_INT_CTRL 0X5E //INTERRUPT CONTROL
#define RT_TP_CTRL_BYTE1 0X74 //TOUCH PANEL CONTROL BYTE 1
#define RT_TP_CTRL_BYTE2 0X76 //TOUCH PANEL CONTROL BYTE 2
#define RT_TP_INDICATION 0X78 //TOUCH PANEL INDICATION
#define RT_VENDOR_ID1 0x7C //VENDOR ID1,DEFAULT 414C
#define RT_VENDOR_ID2 0x7E //VENDOR ID2,ALC6510=4306
//Define bit of GPIO function
#define RT_GPIO_BIT0 0x0001
#define RT_GPIO_BIT1 0x0002 //GPIO 1 Control/Status
#define RT_GPIO_BIT2 0x0004 //GPIO 2 Control/Status
#define RT_GPIO_BIT3 0x0008 //GPIO 3 Control/Status
#define RT_GPIO_BIT4 0x0010 //GPIO 4 Control/Status
#define RT_GPIO_BIT5 0x0020 //GPIO 5 Control/Status
#define RT_GPIO_BIT6 0x0040
#define RT_GPIO_BIT7 0x0080
#define RT_GPIO_BIT8 0x0100
#define RT_GPIO_BIT9 0x0200 //MICBIAS2 Control/Status
#define RT_GPIO_BIT10 0x0400 //MICBIAS1 Control/Status
#define RT_GPIO_BIT11 0x0800 //Over temperature Control/Status
#define RT_GPIO_BIT12 0x1000
#define RT_GPIO_BIT13 0x2000 //Pen down detect Control/Status
#define RT_GPIO_BIT14 0x4000
#define RT_GPIO_BIT15 0x8000
//MIC Routing Control(0x10)
#define MIC1_DIFF_INPUT_CTRL (01<<12)
//Power managment addition 1 (0x3A),0:Disable,1:Enable
#define PWR_MIC_BIAS2 (0x1<<2)
#define PWR_MAIN_BIAS (0x1<<1)
//Power managment addition 2(0x3C),0:Disable,1:Enable
#define PWR_MIXER_VREF (0x1<<13)
#define PWR_TP_ADC (0x1<<11)
//Pin Sharing(0x56)
#define GPIO2_PIN_SHARING_MASK (0x03<<2) //GPIO2 Pin sharing mask
#define GPIO2_PIN_SHARING_IRQ (0x00<<2) //IRQ out
#define GPIO2_PIN_SHARING_GPIO (0x01<<2) //GPIO enable
#define GPIO2_PIN_SHARING_IR (0x10<<2) //IR out
//MISC Control(0x5E)
#define GPIO_WAKEUP_CTRL 0x0002 //Enable GPIO wakeup Control
#define IRQOUT_INVERT_CTRL 0x0001 //IRQOUT inverter control
//Touch Panel Control Byte 1(0x74)
#define POW_TP_CTRL_MASK (0x3<<14)
#define POW_TP_CTRL_0 (0x0<<14) //All off
#define POW_TP_CTRL_1 (0x1<<14) //Aux_ADC off,pen down detect with wake_up,Aux_ADC on with pen down
#define POW_TP_CTRL_2 (0x2<<14) //Aux_ADC off,pen down detect on without wake up
#define POW_TP_CTRL_3 (0x3<<14) //AUX_ADC on,pen down detect on
#define CB1_PRES_CURR_MASK (0x000f<<10)//Presusure measurement source current
#define CB1_PRES_CURR_OFF (0x0000<<10)//OFF
#define CB1_PRES_CURR_25UA (0x0001<<10)//25uA
#define CB1_PRES_CURR_50UA (0x0002<<10)//50uA
#define CB1_PRES_CURR_375UA (0x000f<<10)//375uA
#define CB1_PDPOL (0x0001<<9) //Pendown polarity 0:non-inverted 1:inverted
#define CB1_DEL_MASK (0x0003<<7) //touch panel measure delay mask
#define CB1_DEL_4F (0x0000<<7) //delay 4 frames
#define CB1_DEL_8F (0x0001<<7) //delay 8 frames
#define CB1_DEL_16F (0x0002<<7) //delay 16 frames
#define CB1_DEL_32F (0x0003<<7) //delay 32 frames
#define CB1_SLOT_READBACK (0x0040) //Enable slot realback enable when polling mode
#define CB1_SLOT_SEL (0x0020) //AC97 SLOT select 0:Slot5 1:Slot6
#define CB1_CLK_DIV_MASK (0x0007<<2) //AUX_ADC Clock Divider MASK
#define CB1_CLK_DIV16 (0x0000<<2) //AUX_ADC Clock divide 16
#define CB1_CLK_DIV32 (0x0001<<2) //AUX_ADC Clock divide 32
#define CB1_CLK_DIV48 (0x0002<<2) //AUX_ADC Clock divide 48
#define CB1_CLK_DIV64 (0x0003<<2) //AUX_ADC Clock divide 64
#define CB1_CLK_DIV80 (0x0004<<2) //AUX_ADC Clock divide 80
#define CB1_CLK_DIV96 (0x0005<<2) //AUX_ADC Clock divide 96
#define CB1_CLK_DIV112 (0x0006<<2) //AUX_ADC Clock divide 112
#define CB1_CLK_DIV128 (0x0007<<2) //AUX_ADC Clock divide 128
#define CB1_CR_MASK (0x0003<<0) //Conversion rate Mask
#define CB1_CR0 (0x0000<<0) // 93.75Hz,512 frame
#define CB1_CR1 (0x0001<<0) // 124.67Hz,384 frame
#define CB1_CR2 (0x0002<<0) // 187.5 Hz,256 frame
#define CB1_CR3 (0x0003<<0) // 374.0 Hz,128 frame
//Touch Panel Control Byte 2(0x76)
#define CB2_POLL_TRIG (0x0001<<15) //write 1 initiaties a measurement in polling mode.
#define CB2_MODE_SEL (0x0001<<14) //0:Polling mode 1:Continuous mode
#define CB2_PPR_MASK (0x003f<<8) //internal Pull-up resistor for pen-down detection MASK
#define CB2_PPR_1 (0x0000<<8) //1k Ohm
#define CB2_PPR_2 (0x0001<<8) //2k Ohm
#define CB2_PPR_3 (0x0002<<8) //3k Ohm
#define CB2_PPR_64 (0x003f<<8) //64k Ohm
#define CB2_AUX_EN (0x0001<<7) //AUX measument enable/disable
#define CB2_PRESSURE_EN (0x0001<<3) //Presure measurement enable/disable
#define CB2_Y_EN (0x0001<<2) //Y measurement enable/disable
#define CB2_X_EN (0x0001<<1) //X measurement enable/disable
#define CB2_AUX_SEL (0x0001) //AUX3/AUX4 measure selection
#define CB2_AUX_SEL_AUX3 (0x0000) //AUX3
#define CB2_AUX_SEL_AUX4 (0x0001) //AUX4
//Touch Panel Indication(0x78)
#define CB3_PD_STATUS (0x0001<<15) //pendown status after reading
#define CB3_ADCSRC_MASK (0x0007<<12)
#define CB3_ADCSRC_NON (0x0000) //No Data
#define CB3_ADCSRC_X (0x1000) //X co-ordinate measurement
#define CB3_ADCSRC_Y (0x2000) //Y co-ordinate measurement
#define CB3_ADCSRC_PRE (0x3000) //Pressure measurement
#define CB3_ADCSRC_AUX (0x7000) //AUX measurement
#define CB3_ADC_DATA (0x0FFF) //AUX_ADC Data Report
// There are two expected stylus interrupt states: sylus down (the stylus is currently up) and
// stylus up or a timer event (the stylus is down and will either be lifted or the timer will
// fire and gwes will capture the point for drawing).
//
typedef enum
{
PEN_DOWN,
PEN_UP_OR_TIMER
} EXPECTED_INT_EVENT;
#define MAX_ADC_VAL 0xFFF
#define NUMBER_SAMPLES_PER_POINT 3
#define MAX_CONVERSIONS 10
//
// Status field valid values
//
#define TOUCH_PEN_DOWN 0
#define TOUCH_PEN_UP 1
#define TOUCH_TIMER 2
#define TOUCH_PEN_SAMPLE 2
typedef struct
{
USHORT XSample; //@field X Coordinate.
USHORT YSample; //@field Y Coordinate.
} TOUCHPANEL_POINT_SAMPLE, *PTOUCHPANEL_POINT_SAMPLE;
//
// @doc INTERNAL DRIVERS PDD TOUCH_PANEL
// @type TOUCHPANEL_POINT_SAMPLES |
// Array of NUMBER_SAMPLES_PER_POINT samples.
//
typedef TOUCHPANEL_POINT_SAMPLE TOUCHPANEL_POINT_SAMPLES[NUMBER_SAMPLES_PER_POINT];
#endif // __TOUCH_H__.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -