?? touch_panel_custom.c
字號:
/*****************************************************************************
* Copyright Statement:
* --------------------
* This software is protected by Copyright and the information contained
* herein is confidential. The software may not be copied and the information
* contained herein may not be used or disclosed except with the written
* permission of MediaTek Inc. (C) 2005
*
* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
*
* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
*
* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
*
*****************************************************************************/
/*****************************************************************************
*
* Filename:
* ---------
* keypad_def.c
*
* Project:
* --------
* Maui_Software
*
* Description:
* ------------
* This file is defined for keypad table
*
* Author:
* -------
* -------
*
*============================================================================
* HISTORY
* Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*------------------------------------------------------------------------------
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
* removed!
*
*------------------------------------------------------------------------------
* Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*============================================================================
****************************************************************************/
#if defined(TOUCH_PANEL_SUPPORT) || defined(HAND_WRITING)
#include "drv_comm.h"
#include "eint.h"
#include "touch_panel_custom.h"
#include "touch_panel.h"
#include "touch_panel_spi.h" ///Yh888_6225_V004.B&N002
//#include "touch_panel_i2c.h" //Yh888_6225_V004.B&N001 //qsh
TouchPanel_custom_data_struct tp_custom_data_def =
{
/*ADC*/
TOUCH_PANEL_ADC_X_START, //0
TOUCH_PANEL_ADC_X_END, //3968
TOUCH_PANEL_ADC_Y_START, //0
TOUCH_PANEL_ADC_Y_END, //5264
/*Coord.*/
TOUCH_PANEL_COORD_X_START,//0
TOUCH_PANEL_COORD_X_END, //239
TOUCH_PANEL_COORD_Y_START, //0
TOUCH_PANEL_COORD_Y_END,//339
/*eint level*/
TOUCH_PANEL_EINT_DOWN_LEVEL
};
//extern unsigned char gCustomTouchPanelType;
unsigned char gCustomTouchPanelType=1; //Eric Huang 2007/12/19
#define __TOUCH_PANEL_X_COORDINATE_REVERSED__
#define __TOUCH_PANEL_Y_COORDINATE_REVERSED__
#ifdef TOUCH_PANEL_I2C_SUPPORT ////Yh888_6225_V004.B&N002
#define __TOUCH_PANEL_XY_COORDINATE_REVERSED__
//#include "touch_panel_i2c_extern.h"
#endif
extern I2C_READ_ALL_DATA_TYPE g_i2c_tpReadalldata;//qsh
extern kal_uint16 TP_I2C_X ;
extern kal_uint16 TP_I2C_Y ;
extern kal_uint8 finger_num;
extern kal_uint8 tp_tapcode ;
extern kal_uint8 tp_zoom ;
extern kal_uint8 tp_flick ;
extern kal_uint8 tp_press;
void tp_read_adc(kal_int16 *x, kal_int16 *y)
{
char str[100];
kal_uint8 command=0, retry;
kal_int16 temp_x=0, temp_y=0, diff_x=0, diff_y=0;
kal_uint16 temp;
// for(retry=0;retry<1;retry++)//qsh
{
i2c_tp_ReadAllData() ;
if(finger_num)
{
*x = TP_I2C_X;
*y = TP_I2C_Y;
}
}
}
#ifdef TOUCH_PANEL_PRESSURE
kal_bool tp_pressure_check(void)
{
kal_uint8 command=0, retry;
kal_int16 x, z1, z2;
kal_uint32 pressure;
for(retry=0;retry<TOUCH_PANEL_RETRY;retry++)
{
/*X ADC*/
command=TOUCH_PANEL_START_BIT|TOUCH_PANEL_Y_PLUS|TOUCH_PANEL_12BIT_SAMPLE|
TOUCH_PANEL_SINGLE_MODE;
serial_write_data(command);
x=serial_read_data();
//kal_prompt_trace(MOD_TP_TASK, "pressure x value: %d", x);
/*Z1 ADC*/
command=TOUCH_PANEL_START_BIT|TOUCH_PANEL_Z1_POS|TOUCH_PANEL_12BIT_SAMPLE|
TOUCH_PANEL_DIFF_MODE;
serial_write_data(command);
z1=serial_read_data();
//kal_prompt_trace(MOD_TP_TASK, "pressure z1 value: %d", z1);
/*Z2 ADC*/
command=TOUCH_PANEL_START_BIT|TOUCH_PANEL_Z2_POS|TOUCH_PANEL_12BIT_SAMPLE|
TOUCH_PANEL_DIFF_MODE;
serial_write_data(command);
z2=serial_read_data();
//kal_prompt_trace(MOD_TP_TASK, "pressure z2 value: %d", z2);
if((z1 > 0) && (z2 > z1))
{
pressure = (x*(z2-z1)/z1) >> 2; /* Rx*x/4096*(z2/z1 - 1), assume Rx=1024 */
//kal_prompt_trace(MOD_TP_TASK, "pressure: %d", pressure);
//if (pressure > TOUCH_PRESSURE_THRESHOLD2)
// kal_prompt_trace(MOD_TP_TASK, "pressure is above %d. value: %d", TOUCH_PRESSURE_THRESHOLD2, pressure);
if ((pressure > TOUCH_PRESSURE_THRESHOLD_HIGH) || (pressure <= TOUCH_PRESSURE_THRESHOLD_LOW))
return KAL_FALSE;
else
return KAL_TRUE;
}
}
//kal_prompt_trace(MOD_TP_TASK, "pressure: 0 (no value)");
return KAL_FALSE;
}
#endif /*TOUCH_PANEL_PRESSURE*/
#ifdef TOUCH_PANEL_I2C_SUPPORT ////Yh888_6225_V004.B&N002
//#include "touch_panel_i2c_extern.h"
extern kal_uint8 i2c_tp_readflag;
#endif
//extern kal_bool touch_panel_state;
void tp_irq_enable(kal_bool on)
{
#ifdef TOUCH_PANEL_I2C_SUPPORT ///////Yh888_6225_V004.B&N002
if(on==KAL_TRUE)
{
i2c_tp_readflag = 1;
//touch_panel_state =0;
//EINT_Set_Polarity(TP.eint_chan,touch_panel_state);
}
else
{
i2c_tp_readflag = 1;
//touch_panel_state =1;
// EINT_Set_Polarity(TP.eint_chan,touch_panel_state);
}
#else
kal_uint8 command=0;
kal_uint32 savedMask;
//savedMask = SaveAndSetIRQMask();
if(on==KAL_TRUE)
{
command=TOUCH_PANEL_START_BIT|TOUCH_PANEL_PWD_ENBLE;
}
else
{
command=TOUCH_PANEL_START_BIT|TOUCH_PANEL_IRQ_DISABLE;
}
serial_write_data(command);
serial_read_data();
//RestoreIRQMask(savedMask);
#endif
}
TouchPanel_custom_data_struct *tp_Get_Data(void)
{
return (&tp_custom_data_def);
}
TouchPanel_customize_function_struct tp_custom_func=
{
tp_Get_Data,
tp_read_adc,
#ifdef TOUCH_PANEL_PRESSURE
tp_pressure_check,
#endif
tp_irq_enable
};
TouchPanel_customize_function_struct *tp_GetFunc(void)
{
return (&tp_custom_func);
}
/*************************************************************************
* [Set the config for MMI handwriting pad is enabled]
*************************************************************************/
#include "MMI_features.h"
#ifdef __MMI_HANDWRITING_PAD__
#include "TouchScreenGprot.h" /* get tp_area_struct declaraction */
#include "kbd_table.h"
/*************************************************************************
* [Get the calibration point]
*************************************************************************/
#define NUM_TP_CALIBRATION_POINTS 3
const mmi_pen_point_struct tp_calibration_point[NUM_TP_CALIBRATION_POINTS]={
{TOUCH_PANEL_CALIBRATION_X_1, TOUCH_PANEL_CALIBRATION_Y_1}, /* top-left point */
{TOUCH_PANEL_CALIBRATION_X_2, TOUCH_PANEL_CALIBRATION_Y_2}, /* bottom-right point */
{TOUCH_PANEL_CALIBRATION_X_3, TOUCH_PANEL_CALIBRATION_Y_3} /* the thrid point */
};
/*************************************************************************
* [handwriting pad information setting]
* Define the coordinate for control areas
* Below is the reference setting ...
*************************************************************************/
#if defined(__MMI_MAINLCD_176X220__)
#define TP_SCREEN_ROW_H (9)
#define TP_SCREEN_ROW_0 (TOUCH_PANEL_COORD_Y_START)
#define TP_SCREEN_ROW_1 (TOUCH_PANEL_COORD_Y_START+10)
#define TP_SCREEN_ROW_2 (TOUCH_PANEL_COORD_Y_START+20)
#define TP_SCREEN_ROW_3 (TOUCH_PANEL_COORD_Y_START+30)
#define TP_SCREEN_ROW_4 (TOUCH_PANEL_COORD_Y_START+40)
#define TP_SCREEN_ROW_5 (TOUCH_PANEL_COORD_Y_START+50)
#define TP_SCREEN_ROW_6 (TOUCH_PANEL_COORD_Y_START+60)
#define TP_SCREEN_ROW_7 (TOUCH_PANEL_COORD_Y_START+70)
#define TP_SCREEN_ROW_8 (TOUCH_PANEL_COORD_Y_START+80)
#define TP_SCREEN_ROW_9 (TOUCH_PANEL_COORD_Y_START+90)
#define TP_SCREEN_COL_W (57)
#define TP_SCREEN_COL_0 (TOUCH_PANEL_COORD_X_START)
#define TP_SCREEN_COL_1 (TOUCH_PANEL_COORD_X_START+58)
#define TP_SCREEN_COL_2 (TOUCH_PANEL_COORD_X_START+116)
#define TP_SCREEN_COL_3 (TOUCH_PANEL_COORD_X_START+174)
#elif defined(__MMI_MAINLCD_240X320__)
#define TP_SCREEN_ROW_H (19)
#define TP_SCREEN_ROW_0 (TOUCH_PANEL_COORD_Y_START)
#define TP_SCREEN_ROW_1 (TOUCH_PANEL_COORD_Y_START+20)
#define TP_SCREEN_ROW_2 (TOUCH_PANEL_COORD_Y_START+40)
#define TP_SCREEN_ROW_3 (TOUCH_PANEL_COORD_Y_START+60)
#define TP_SCREEN_ROW_4 (TOUCH_PANEL_COORD_Y_START+80)
#define TP_SCREEN_ROW_5 (TOUCH_PANEL_COORD_Y_START+100)
#define TP_SCREEN_ROW_6 (TOUCH_PANEL_COORD_Y_START+120)
#define TP_SCREEN_ROW_7 (TOUCH_PANEL_COORD_Y_START+140)
#define TP_SCREEN_ROW_8 (TOUCH_PANEL_COORD_Y_START+160)
#define TP_SCREEN_ROW_9 (TOUCH_PANEL_COORD_Y_START+180)
#define TP_SCREEN_COL_W (79)
#define TP_SCREEN_COL_0 (TOUCH_PANEL_COORD_X_START)
#define TP_SCREEN_COL_1 (TOUCH_PANEL_COORD_X_START+80)
#define TP_SCREEN_COL_2 (TOUCH_PANEL_COORD_X_START+160)
#define TP_SCREEN_COL_3 (TOUCH_PANEL_COORD_X_START+240)
#endif
/* If the customer want to handle the pen events, register the function handler here. */
void custom_dummy_pen_hdlr(mmi_pen_point_struct pos)
{
}
mmi_pen_hdlr custom_extra_func_hdlr[MMI_PEN_EVENT_TYPE_MAX]={
NULL, /* MMI_PEN_EVENT_DOWN, */
NULL, /* MMI_PEN_EVENT_UP, */
NULL, /* MMI_PEN_EVENT_LONG_TAP, */
NULL, /* MMI_PEN_EVENT_REPEAT, */
NULL, /* MMI_PEN_EVENT_MOVE, */
NULL, /* MMI_PEN_EVENT_ABORT, */
};
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -