亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? touch_panel.c

?? MTK6225
?? C
?? 第 1 頁 / 共 5 頁
字號:
/*****************************************************************************
*  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:
 * ---------
 *    touch_panel.c
 *
 * Project:
 * --------
 *   Maui_Software
 *
 * Description:
 * ------------
 *   This Module is touch panel driver.
 *
 * Author:
 * -------
 * -------
 *
 *============================================================================
 *             HISTORY
 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
 *------------------------------------------------------------------------------
 *------------------------------------------------------------------------------
 * 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 	"stack_common.h"
#include    "syscomp_config.h"   /*MOD_BMT*/
#include 	"stack_msgs.h"
#include 	"app_ltlcom.h"       /* Task message communiction */
#include    "stacklib.h"         /* Basic type for dll, evshed, stacktimer */
#include    "event_shed.h"       /* Event scheduler */
#include    "stack_timer.h"     /*Timer*/
#include    "app_buff_alloc.h"   /*buffer*/
#include    "task_config.h"      /* Task creation */
#include    "stack_ltlcom.h"       /*msg_send_ext_queue.....definitions*/
#include    "reg_base.h"
#include    "gpio_hw.h"
#include    "gpio_sw.h"
#include    "touch_panel_spi.h"   ///Yh888_6225_V004.B&N001
//#include    "touch_panel_i2c.h"//qsh
#include    "eint.h"
#include    "intrCtrl.h"
#include 	"touch_panel.h"
#include 	"touch_panel_buff.h"
#include 	"gpt_sw.h"

#ifndef TOUCH_PANEL_I2C_SUPPORT
#define TOUCH_PANEL_I2C_SUPPORT  //qsh
#endif

#ifdef TOUCH_PANEL_I2C_SUPPORT   ////Yh888_6225_V004.B&N002
typedef enum 
{
	TP_LEVEL_DOWN = 0,
	TP_LEVEL_UP ,
	TP_LEVEL_SLIDE,
	TP_LEVEL_GESTURE   ///light tap
}I2C_TP_STATE;
#endif
#define   touch_down_level   LEVEL_LOW   /*touch down level*/
#define   touch_up_level     LEVEL_HIGH  /*touch up level*/

TouchPanelBufferStruct    touch_panel_data_buffer;
kal_bool    touch_panel_state = touch_down_level; /*touch panel inq level*/


kal_bool send_touch_ilm=KAL_TRUE;
TouchPanelCoordStruct tp_stroke_pre;
static Touch_Panel_Event_enum tp_decode_state=TP_UNKNOWN_EVENT;/*get event state*/

/*GPT timer handle*/
kal_uint8   touch_panel_handle=0;  /*gpt handle*/
kal_uint8   touch_panel_repeat_handle=0;
kal_uint8   touch_panel_timer=0;//qsh 04-21
/*Screen ADC Value*/
//#ifdef TOUCH_PANEL_I2C_SUPPORT   ////Yh888_6225_V004.B&N002
#if 1
kal_uint32 ADC_X_START=0;
kal_uint32 ADC_X_END=3968;
kal_uint32 ADC_Y_START=0;
kal_uint32 ADC_Y_END=5264;
#else
kal_uint32 ADC_X_START=230;
kal_uint32 ADC_X_END=3867;
kal_uint32 ADC_Y_START=287;
kal_uint32 ADC_Y_END=3853;
#endif
kal_uint32 SCREEN_X_START=0;
#if defined(__MMI_MAINLCD_240X320__)   // jonson
/* SZVT  KevinPi  2007/05/16  change parameters for QVGA touch screan */
kal_uint32 SCREEN_X_END=240;// 176;
kal_uint32 SCREEN_Y_START=0;
/* SZVT  KevinPi  2007/05/16  change parameters for QVGA touch screan */
kal_uint32 SCREEN_Y_END=  320 ;//320;// 220;
#elif defined(__MMI_MAINLCD_176X220__)
kal_uint32 SCREEN_X_END=176;
kal_uint32 SCREEN_Y_START=0;
kal_uint32 SCREEN_Y_END=220;
#endif

/*Calibration*/
#define TOUCH_CALIBRATION_POINT_NUM 3
TouchPanelCaliStruct TPCali;  /*Calibration offset and slope*/
static TouchPanelCoordStruct cali_point[TOUCH_CALIBRATION_POINT_NUM];
static TouchPanelCoordStruct cali_point_adc[TOUCH_CALIBRATION_POINT_NUM];
static kal_bool tp_cali_mode=KAL_FALSE;
static kal_uint16 tp_cali_cnt=0;
static kal_bool tp_eint_mask = KAL_FALSE;

extern TouchPanel_customize_function_struct *tp_GetFunc(void);
TouchPanel_customize_function_struct *tp_fun_ptr;

extern kal_uint8	      tp_tapcode ;
extern kal_uint8	      tp_zoom ;
extern kal_uint8	      tp_flick ;
extern kal_uint8	      tp_press;
extern kal_uint8	       finger_num ;//qsh

extern kal_uint8       zoomY;
extern kal_uint8       zoomX;
/*************************************************************************
* FUNCTION
*	touch_panel_tuning
*
* DESCRIPTION
*	This function is to calculate slope and offset.
*
* PARAMETERS
*  coord1: coordinate of calibration point 1
*  coord2: coordinate of calibration point 2
*  adc1:   ADC of calibration point 1
*  adc2:   ADC of calibration point 1
*  slope:  slope of calibration
*  offset: offset of calibration
* RETURNS
*	None
*
* GLOBALS AFFECTED
*
*************************************************************************/
void touch_panel_tuning(kal_int16 coord1, kal_uint16 adc1,
                        kal_int16 coord2, kal_uint16 adc2,
                        double *slope,     double *offset)
{
char str[100];

//coord1=SCREEN_X_START=0,adc1= ADC_X_START=287,coord2= SCREEN_X_END=339,adc2= ADC_X_END=3853
//x_slop=0.0657135
//x_offset=-15.114105

//y_slop=0.095064498
//y_offset=-27.2835109


   *slope=((double)(coord2-coord1)/((double)(adc2-adc1)));
   *offset=(double)coord1-(*slope)*(double)adc1;      

   //sprintf(str,"coord2=%d,coord1=%d,adc2=%d,adc1=%d,slope=%f",coord2,coord1,adc2,adc1,*slope);
   //kal_print(str);

   //sprintf(str,"offset=%f",*offset);
   //kal_print(str);
}
/*************************************************************************
* FUNCTION
*	touch_panel_flush
*
* DESCRIPTION
*	This function is to flush all data in ring buffer.
*
* PARAMETERS
*  None
*
* RETURNS
*	None
*
* GLOBALS AFFECTED
*
*************************************************************************/   
void touch_panel_flush(void)
{

   //kal_print("tp touch_panel_flush");

   IRQMask(IRQ_GPT_CODE);
   /* only mask eint when it's unmasked. */
 if (tp_eint_mask == KAL_FALSE)	//xiong 07/06/06  //qsh 4-15
   EINT_Mask(TP.eint_chan);
   touch_flush_data_buffer();
   /*reset decode state*/
   tp_decode_state=TP_UNKNOWN_EVENT;
   /*recover from buffer full*/
   TP.is_buff_full=KAL_FALSE;
   GPTI_StopItem(touch_panel_handle);
   GPTI_StopItem(touch_panel_repeat_handle);
   TP.skip_unrelease_state=KAL_TRUE;

      
   if (tp_eint_mask == KAL_FALSE)	//xiong 07/06/06  //qsh 4-15
   EINT_UnMask(TP.eint_chan);
   IRQUnmask(IRQ_GPT_CODE);
   
}
/*************************************************************************
* FUNCTION
*	touch_panel_flush
*
* DESCRIPTION
*	This function is to reset touch panel driver. 
*
* PARAMETERS
*  skip_unrelease_enable: skip the first unrelease events or not.
*
* RETURNS
*	None
*
* GLOBALS AFFECTED
*
*************************************************************************/  
void touch_panel_reset(kal_bool skip_unrelease_enable)
{
    //kal_prompt_trace(MOD_TP_TASK, "touch_panel_reset()" );
kal_print("tp touch_panel_reset");
   IRQMask(IRQ_GPT_CODE);
   EINT_Mask(TP.eint_chan);
   /*stop calibration*/
   touch_panel_stop_cali();
   /*flush ring buffer*/   
   touch_flush_data_buffer();
   /*reset decode state*/
   tp_decode_state=TP_UNKNOWN_EVENT;
   /*configure default pen/move offset*/
   //touch_panel_conf_move_offset(MIN_PEN_MOVE_OFFSET, MAX_STROKE_MOVE_OFFSET, 10);
   /*buff full flag*/
   TP.is_buff_full=KAL_FALSE;
   TP.ext_enable=KAL_FALSE;   //qsh 4-15
   /*skip the first unrelease events or not*/
   TP.skip_unrelease_enable=skip_unrelease_enable;
   if(TP.skip_unrelease_enable)
   {
      TP.skip_unrelease_state=KAL_TRUE;
      #ifdef TOUCH_PANEL_DEBUG
      dbg_printWithTime("reset and skip");
      #endif
   }   
   else
   {
      TP.skip_unrelease_state=KAL_FALSE;   
      #ifdef TOUCH_PANEL_DEBUG
      dbg_printWithTime("reset but not skip");
      #endif
   }   
   /*stop polling*/
   GPTI_StopItem(touch_panel_handle);
   GPTI_StopItem(touch_panel_repeat_handle);

   touch_panel_state = 0; //qsh 
   EINT_Set_Polarity(TP.eint_chan,touch_panel_state);//qsh
   
   EINT_UnMask(TP.eint_chan);
   IRQUnmask(IRQ_GPT_CODE);
  
}
/*************************************************************************
* FUNCTION
*	touch_panel_start_cali
*
* DESCRIPTION
*	This function is to do coordinate calibration. 
*
* PARAMETERS
*  point: coordiante of calibration points
*  num:   number of calibration points
*
* RETURNS
*	None
*
* GLOBALS AFFECTED
*
*************************************************************************/
void touch_panel_start_cali(TouchPanelCoordStruct *point, kal_uint16 num)
{
   #if 0
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
   #else
   
   kal_uint32 i;
  kal_print("tp touch_panel_start_cali");
   for(i=0;i<num;i++)
   {
      cali_point[i].x=point[i].x;   
      cali_point[i].y=point[i].y;
   }      
   #endif
   tp_cali_mode=KAL_TRUE;
}
/*************************************************************************
* FUNCTION
*	touch_panel_stop_cali
*
* DESCRIPTION
*	This function is to stop coordinate calibration.
*
* PARAMETERS
*	None
*
* RETURNS
*	None
*
* GLOBALS AFFECTED
*
*************************************************************************/
void touch_panel_stop_cali(void)
{
    //kal_prompt_trace(MOD_TP_TASK, "touch_panel_stop_cali()" );
  kal_print("tp touch_panel_stop_cali");
   tp_cali_mode=KAL_FALSE;  
   tp_cali_cnt=0;  
   cali_point[0].x=0;   
   cali_point[0].y=0;
   cali_point[1].x=0;
   cali_point[1].y=0;      
}
/*************************************************************************
* FUNCTION
*	touch_panel_set_cali
*
* DESCRIPTION
*	This function is to set coordinate calibration.
*
* PARAMETERS
*	cali: calibration data
*
* RETURNS
*	None
*
* GLOBALS AFFECTED
*
*************************************************************************/
/*MMI configures calibration accodring to the value in the NVRAM*/
void touch_panel_set_cali(TouchPanelCaliStruct cali)
{

  // kal_print("tp touch_panel_set_cali");
   TPCali.x_slope= cali.x_slope;
   TPCali.x_offset= cali.x_offset;
   TPCali.y_slope= cali.y_slope;
   TPCali.y_offset= cali.y_offset;
}
/*************************************************************************
* FUNCTION
*	touch_panel_read_cali
*
* DESCRIPTION
*	This function is to read coordinate calibration.
*
* PARAMETERS
*	cali: the pointer to read calibraion data
*
* RETURNS
*	None
*
* GLOBALS AFFECTED
*
*************************************************************************/
/*MMI reads calibration after receiving MSG_ID_TP_CALI_DONE*/
/*and stores it in NVRAM*/
void touch_panel_read_cali(TouchPanelCaliStruct *cali)
{
   //kal_print("tp touch_panel_read_cali");
   cali->x_slope =TPCali.x_slope;  
   cali->x_offset=TPCali.x_offset;
   cali->y_slope =TPCali.y_slope;  
   cali->y_offset=TPCali.y_offset;
}  
   
/*************************************************************************
* FUNCTION
*	touch_panel_cb_registration
*
* DESCRIPTION
*	This function is to register touch event callback function.
*
* PARAMETERS
*	None
*
* RETURNS
*	None
*
* GLOBALS AFFECTED
*
*************************************************************************/
void touch_panel_cb_registration (TP_EVENT_FUNC Callback, void *parameter)
{

   TP.touch_panel_event_cb=Callback;
   TP.cb_para=parameter;
}
/*************************************************************************
* FUNCTION
*	touch_panel_up_hdr
*
* DESCRIPTION
*	This function is to handle up event.
*
* PARAMETERS
*	None
*
* RETURNS
*	None
*
* GLOBALS AFFECTED

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一区在线观看你懂的| 91精品国产黑色紧身裤美女| 日本丶国产丶欧美色综合| 欧美自拍偷拍一区| 欧美国产禁国产网站cc| 午夜在线成人av| 国产成人av电影| 777亚洲妇女| 亚洲色图制服诱惑| 国产激情一区二区三区桃花岛亚洲| 在线观看视频91| 亚洲欧洲av在线| 国产很黄免费观看久久| 日韩免费在线观看| 一区av在线播放| 91麻豆蜜桃一区二区三区| 久久奇米777| 九色综合狠狠综合久久| 欧美日韩中文一区| 一区二区三区中文字幕电影| 成人黄色在线网站| 中文字幕第一区二区| 国产精品亚洲第一| 久久人人97超碰com| 激情六月婷婷久久| 69堂精品视频| 天天操天天干天天综合网| 欧美在线小视频| 亚洲一本大道在线| 91免费在线看| 亚洲蜜臀av乱码久久精品| 成年人网站91| 亚洲色图视频网站| 99久久婷婷国产综合精品| 亚洲欧美一区二区三区久本道91 | 成人性色生活片| 26uuu精品一区二区| 国产精品原创巨作av| 国产午夜精品一区二区三区嫩草| 国产一区二区不卡老阿姨| 久久综合九色欧美综合狠狠| 国产在线播放一区二区三区| 国产色产综合产在线视频| 国产999精品久久久久久| 国产女主播在线一区二区| 成人免费视频caoporn| 亚洲免费观看高清完整版在线观看| 91成人在线观看喷潮| 亚洲高清免费观看高清完整版在线观看| 欧美嫩在线观看| 韩国v欧美v亚洲v日本v| 中文字幕一区视频| 欧美日韩黄色影视| 蜜臀99久久精品久久久久久软件| 久久综合网色—综合色88| 成人爱爱电影网址| 亚洲综合色网站| 欧美变态tickle挠乳网站| 成人精品免费网站| 亚洲成人午夜影院| 久久精品视频网| 欧美色区777第一页| 国产精品资源在线观看| 亚洲欧美日韩一区二区三区在线观看| 欧美日韩国产中文| 国产中文字幕精品| 亚洲午夜久久久| 国产欧美日韩久久| 精品视频一区三区九区| 国产一区二区网址| 亚洲福利视频导航| 中文天堂在线一区| 欧美一级片在线| 波多野结衣精品在线| 琪琪一区二区三区| 亚洲欧美色一区| 精品美女在线观看| 欧美日韩色综合| 丁香网亚洲国际| 免费的成人av| 夜夜亚洲天天久久| 国产精品色一区二区三区| 91精品黄色片免费大全| 91免费看视频| 高清不卡在线观看av| 久久99深爱久久99精品| 亚洲国产视频网站| 国产精品麻豆久久久| 久久夜色精品一区| 91精品国产全国免费观看| 91官网在线免费观看| 成人在线综合网站| 国产精品一二一区| 久久成人免费网| 理论电影国产精品| 秋霞午夜鲁丝一区二区老狼| 亚洲日本免费电影| 国产精品免费久久| 国产校园另类小说区| 日韩精品一区国产麻豆| 正在播放一区二区| 911精品国产一区二区在线| 日本韩国欧美国产| 91麻豆福利精品推荐| 99re成人精品视频| www.在线欧美| 成人免费观看视频| 国产v日产∨综合v精品视频| 国模娜娜一区二区三区| 国内精品久久久久影院色| 日本午夜精品视频在线观看 | 欧美天堂一区二区三区| 色综合中文字幕| 色综合久久中文字幕| 色综合色综合色综合色综合色综合 | 欧美人xxxx| 日韩一区二区三区三四区视频在线观看| 欧美性生活大片视频| 欧美优质美女网站| 欧美午夜精品一区二区三区| 欧美日韩视频第一区| 91精品欧美综合在线观看最新| 3atv在线一区二区三区| 欧美一级黄色大片| 精品对白一区国产伦| 中日韩免费视频中文字幕| 国产精品国产a| 一区二区三区在线看| 亚洲国产sm捆绑调教视频| 日韩精品国产精品| 国产一区久久久| 不卡一区二区在线| 欧亚一区二区三区| 日韩免费看的电影| 国产精品亲子乱子伦xxxx裸| 亚洲精品久久嫩草网站秘色| 五月天久久比比资源色| 久久超碰97中文字幕| 不卡的av电影| 欧美色男人天堂| 久久综合视频网| 1024国产精品| 日本在线播放一区二区三区| 国产一区二区三区国产| 91丨九色丨国产丨porny| 欧美精品一级二级三级| 久久精品欧美一区二区三区不卡 | 国产精品久久久久影院老司| 亚洲人成亚洲人成在线观看图片| 亚洲电影一级黄| 国产精品一区二区在线播放| 日本丶国产丶欧美色综合| 精品国产3级a| 亚洲国产视频在线| 国产大片一区二区| 欧美年轻男男videosbes| 国产精品色噜噜| 免费人成网站在线观看欧美高清| 成人av在线资源| 精品国产三级a在线观看| 亚洲综合激情另类小说区| 国产精品1区2区3区在线观看| 欧美丝袜第三区| 亚洲欧美一区二区在线观看| 久久99国产乱子伦精品免费| 色天天综合久久久久综合片| 久久先锋资源网| 亚洲综合免费观看高清完整版 | 欧美亚洲一区三区| 国产日韩三级在线| 美女视频网站黄色亚洲| 色诱视频网站一区| 精品国产百合女同互慰| 午夜视频一区在线观看| 一本到一区二区三区| 日本一区二区三区久久久久久久久不 | 国产白丝精品91爽爽久久| 日韩一级视频免费观看在线| 亚洲午夜激情av| 91老司机福利 在线| 中文字幕欧美国产| 国产乱子伦视频一区二区三区 | 亚洲午夜视频在线| 成人免费三级在线| 久久女同精品一区二区| 捆绑调教美女网站视频一区| 91精品国产综合久久久蜜臀图片| 亚洲影院久久精品| 色综合久久中文综合久久97| 1024精品合集| 91色.com| 一二三四区精品视频| 色噜噜狠狠成人中文综合| 国产精品萝li| 北条麻妃一区二区三区| 中文字幕乱码一区二区免费| 国产老女人精品毛片久久| 久久亚洲精华国产精华液| 国产一区二区三区免费在线观看| 日韩欧美专区在线|