📄 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!
*
*------------------------------------------------------------------------------
* 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"
TouchPanel_custom_data_struct tp_custom_data_def =
{
/*ADC*/
TOUCH_PANEL_ADC_X_START,
TOUCH_PANEL_ADC_X_END,
TOUCH_PANEL_ADC_Y_START,
TOUCH_PANEL_ADC_Y_END,
/*Coord.*/
TOUCH_PANEL_COORD_X_START,
TOUCH_PANEL_COORD_X_END,
TOUCH_PANEL_COORD_Y_START,
TOUCH_PANEL_COORD_Y_END,
/*eint level*/
TOUCH_PANEL_EINT_DOWN_LEVEL
};
void tp_read_adc(kal_int16 *x, kal_int16 *y)
{
kal_uint8 command=0, retry;
kal_int16 temp_x=0, temp_y=0, diff_x=0, diff_y=0;
for(retry=0;retry<TOUCH_PANEL_RETRY;retry++)
{
/*Y ADC*/
command=TOUCH_PANEL_START_BIT|TOUCH_PANEL_X_PLUS|TOUCH_PANEL_12BIT_SAMPLE|
TOUCH_PANEL_DIFF_MODE;
serial_write_data(command);
*y=serial_read_data();
/*X ADC*/
command=TOUCH_PANEL_START_BIT|TOUCH_PANEL_Y_PLUS|TOUCH_PANEL_12BIT_SAMPLE|
TOUCH_PANEL_DIFF_MODE;
serial_write_data(command);
*x=serial_read_data();
if(temp_x==0&&temp_y==0)
{
temp_x=*x;
temp_y=*y;
}
else
{
diff_x=temp_x-*x;
diff_y=temp_y-*y;
if(diff_x>TOUCH_PANEL_FILTER_THRESOLD||diff_x<-TOUCH_PANEL_FILTER_THRESOLD
||diff_y>TOUCH_PANEL_FILTER_THRESOLD||diff_y<-TOUCH_PANEL_FILTER_THRESOLD)
{
temp_x=*x;
temp_y=*y;
*x=4095;
*y=4095;
}
else
{
if(*x!=4095&&*y!=4095)
return;
}
}
}
}
void tp_irq_enable(kal_bool on)
{
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);
}
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,
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, */
};
/*
* control area:
* The points of the region need to be successive and end at {-1,-1}
*
* TP_SCREEN_COL_0
* | TP_SCREEN_COL_1
* | | TP_SCREEN_COL_2
* | | | TP_SCREEN_COL_3
* v v v v
* +-----+-----+-----+ <-- TP_SCREEN_ROW_0
* | LSK | ^ | RSK |
* +-----+-----+-----+ <-- TP_SCREEN_ROW_1
* | <-- | v | --> |
* +-----+-----+-----+ <-- TP_SCREEN_ROW_2
* |Send | C | End |
* +-----+-----+-----+ <-- TP_SCREEN_ROW_3
* | 1 | 2 | 3 |
* +-----+-----+-----+ <-- TP_SCREEN_ROW_4
* | 4 | 5 | 6 |
* +-----+-----+-----+ <-- TP_SCREEN_ROW_5
* | 7 | 8 | 9 |
* +-----+-----+-----+ <-- TP_SCREEN_ROW_6
* | * | 0 | # |
* +-----+-----+-----+ <-- TP_SCREEN_ROW_7
*
* handwriting area:
* The region must be the rectangle and the points should be successive and end at {-1,-1}
*/
const mmi_pen_point_struct tp_lsk_region[]= {
{TP_SCREEN_COL_0, TP_SCREEN_ROW_0},
{TP_SCREEN_COL_1-1, TP_SCREEN_ROW_0},
{TP_SCREEN_COL_1-1, TP_SCREEN_ROW_1-1},
{TP_SCREEN_COL_0, TP_SCREEN_ROW_1-1},
{-1,-1}
};
const mmi_pen_point_struct tp_up_arrow_region[]={
{TP_SCREEN_COL_1, TP_SCREEN_ROW_0},
{TP_SCREEN_COL_2-1, TP_SCREEN_ROW_0},
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -