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

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

?? touch_panel.c

?? 代碼用簡單的4個IO口外加兩個ADC轉換接口實現了觸摸屏全套控制流程.
?? C
?? 第 1 頁 / 共 4 頁
字號:
   if(TP.ext_enable==KAL_FALSE)/*not extend handwriting area*/
   {
      for(i=0;i<TP.hand_num;i++)
      {
         if((x>=TP.handarea[i].min.x)&&(y>=TP.handarea[i].min.y)&&
         (x<=TP.handarea[i].max.x)&&(y<=TP.handarea[i].max.y))
         {
            TP.area=HAND_WRITING;
            /*check if ext_handwriting exists?*/
            if((TP.ext_handarea.min.x!=TP.ext_handarea.max.x)&&
               (TP.ext_handarea.min.y!=TP.ext_handarea.max.y))
            {
               TP.ext_enable=KAL_TRUE;/*use extended handwriting area*/
            }   
            break;   
         }
         else/*non-handwriting*/
         {
            TP.area=NON_HAND_WRITING;                  
         }                  
      }      
   }         
   else/*extend handwriting area*/
   {
      if((x>=TP.ext_handarea.min.x)&&(y>=TP.ext_handarea.min.y)&&
         (x<=TP.ext_handarea.max.x)&&(y<=TP.ext_handarea.max.y))
      {
         TP.area=HAND_WRITING;         
      }
      else/*non-handwriting*/
      {
         TP.area=NON_HAND_WRITING;                  
      }
   }   
   if(TP.area==HAND_WRITING)            
   {            
      tp_data_pop(STROKE_DOWN, x, y);            
      touch_panel_stroke_hdr();
      touch_start_handwriting_longtap();      
   }
   else/*non-handwriting*/
   {            
      tp_data_pop(PEN_DOWN, x, y);            
      touch_panel_event_hdr();
      touch_start_longtap();
   }   
} 
/*************************************************************************
* FUNCTION
*	touch_panel_sendilm
*
* DESCRIPTION
*	This function is to send touch event indication to upper layer.
*
* PARAMETERS
*	None
*
* RETURNS
*	None
*
* GLOBALS AFFECTED
*
*************************************************************************/  
/*send touch event indication to upper layer*/
void touch_panel_sendilm(void *para, Touch_Panel_Event_enum state)
{
   ilm_struct *tp_ilm;
   module_type owner=0;
   
   
   if (send_touch_ilm)
   {
   	#ifdef TOUCH_PANEL_DEBUG
   		owner=MOD_SSDBG1;
   	#else
   		owner=MOD_MMI;
   	#endif
   	
      send_touch_ilm = KAL_FALSE;
      DRV_BuildPrimitive(tp_ilm,
                         MOD_TP_TASK,
                         owner,
                         MSG_ID_TP_EVENT_IND,
                         NULL);   
      msg_send_ext_queue(tp_ilm);
   }   
}  
/*************************************************************************
* FUNCTION
*	touch_panel_conf_handwriting
*
* DESCRIPTION
*	This function is to configure handwriting area.
*
* PARAMETERS
*	area: handwriting area
*  n: number of handwriting areas
*  ext_area: extended handwriting area
* RETURNS
*	None
*
* GLOBALS AFFECTED
*
*************************************************************************/ 
void touch_panel_conf_handwriting(TouchPanelHandAreaStruct *area, kal_uint16 n, 
                              TouchPanelHandAreaStruct  *ext_area)
{
   kal_uint32 i;
      
   /*n handwriting area*/       
   for(i=0;i<n;i++)
   {      
      TP.handarea[i]=*(area+i);
   }   
   /*extended handwriting area*/
   TP.ext_handarea=*ext_area;
   TP.hand_num=n;
}                                     
/*************************************************************************
* FUNCTION
*	touch_panel_reset_handwriting
*
* DESCRIPTION
*	This function is to reset handwriting area as normal.
*
* PARAMETERS
*	None
*
* RETURNS
*	None
*
* GLOBALS AFFECTED
*
*************************************************************************/ 
void touch_panel_reset_handwriting(void)                               
{
   kal_uint32 savedMask;
   savedMask = SaveAndSetIRQMask();
   /*MMI will reset handwriting area*/
   TP.ext_enable=KAL_FALSE;
   RestoreIRQMask(savedMask);
}                     
/*************************************************************************
* FUNCTION
*	touch_panle_conf_sample_period
*
* DESCRIPTION
*	This function is to configure sample period in handwriting and non-handwriting area.
*
* PARAMETERS
*	low:  sample period in non-handwriting area
*  high: sample period in handwriting area
*
* RETURNS
*	None
*
* GLOBALS AFFECTED
*
*************************************************************************/                       
/*configure sample period in non-handwriting and handwriting area*/
void touch_panle_conf_sample_period(kal_uint32 low, kal_uint32 high)
{
   TP.low_sample_period=low;
   TP.high_sample_period=high;
}   
/*************************************************************************
* FUNCTION
*	touch_panle_conf_timeout_period
*
* DESCRIPTION
*	This function is to configure period of long tap and repeat event.
*
* PARAMETERS
*	long tap: long tap event period
*  repeat:  repeat event period
*
* RETURNS
*	None
*
* GLOBALS AFFECTED
*
*************************************************************************/                       
/*configure longtap and repeat period*/
void touch_panle_conf_timeout_period(kal_uint32 longtap, 
                                     kal_uint32 repeat,
                                     kal_uint32 handwriting_longtap)
{
   TP.handwriting_longtap_cnt=handwriting_longtap;
   TP.longtap_cnt=longtap;
   TP.repeat_cnt=repeat;
}
/*************************************************************************
* FUNCTION
*	touch_panel_event_hdr
*
* DESCRIPTION
*	This function is to handle down event in non-handwriting area.
*
* PARAMETERS
*	None
*
* RETURNS
*	None
*
* GLOBALS AFFECTED
*
*************************************************************************/ 
/*start timer in non-handwriting area*/
void touch_panel_event_hdr(void)
{
   if(TP.low_sample_period!=0)
   {
      GPTI_StartItem(touch_panel_handle,                  
                     TP.low_sample_period,
                     touch_panel_event_cb,
                     NULL);
   }                     
}  
/*************************************************************************
* FUNCTION
*	touch_start_longtap
*
* DESCRIPTION
*	This function is to long tap timer.
*
* PARAMETERS
*	None
*
* RETURNS
*	None
*
* GLOBALS AFFECTED
*
*************************************************************************/
void touch_start_longtap(void)
{
   if(TP.longtap_cnt!=0)          
   {
      TP.longtap_state=KAL_TRUE;
      GPTI_StartItem(touch_panel_repeat_handle,                  
                     TP.longtap_cnt,
                     touch_panel_longtap_cb,
                     NULL);  
   }   
}   
/*************************************************************************
* FUNCTION
*	touch_start_handwriting_longtap
*
* DESCRIPTION
*	This function is to start long tap timer in handwriting area.
*
* PARAMETERS
*	None
*
* RETURNS
*	None
*
* GLOBALS AFFECTED
*
*************************************************************************/
void touch_start_handwriting_longtap(void)
{
   if(TP.handwriting_longtap_cnt!=0)          
   {
      TP.longtap_state=KAL_TRUE;
      GPTI_StartItem(touch_panel_repeat_handle,                  
                     TP.handwriting_longtap_cnt,/*stroke long tap*/
                     touch_panel_longtap_cb,
                     NULL);  
   }   
}
/*************************************************************************
* FUNCTION
*	touch_panel_stroke_hdr
*
* DESCRIPTION
*	This function is to handle down event in handwriting area.
*
* PARAMETERS
*	None
*
* RETURNS
*	None
*
* GLOBALS AFFECTED
*
*************************************************************************/
void touch_panel_stroke_hdr(void)
{
     if(TP.high_sample_period!=0)
   {
      GPTI_StartItem(touch_panel_handle,                  
                     TP.high_sample_period,
                     touch_panel_stroke_cb,
                     NULL);
   }    
}                              
/*************************************************************************
* FUNCTION
*	touch_panel_get_event
*
* DESCRIPTION
*	This function is to get event from ring buffer.
*
* PARAMETERS
*	data: touch event
*
* RETURNS
*	None
*
* GLOBALS AFFECTED
*
*************************************************************************/
/*Get touch panel coord. value*/
kal_bool touch_panel_get_event(TouchPanelEventStruct *touch_data)
{
   kal_bool result;
   kal_uint8 hign_data=0, low_data=0;
   kal_int8 diff;
   kal_uint16 avail=0;
   //TouchPanelEventStruct data;
   IRQMask(IRQ_GPT_CODE);
   /* only mask eint when it's unmasked. */
   if (tp_eint_mask == KAL_FALSE)
   EINT_Mask(TP.eint_chan);   
   
   if(TP.is_buff_full==KAL_TRUE)
   {
      touch_data->event=PEN_ABORT;
      touch_data->x_adc=0;
      touch_data->y_adc=0;
      if (tp_eint_mask == KAL_FALSE)
         EINT_UnMask(TP.eint_chan);
      IRQUnmask(IRQ_GPT_CODE);
      return KAL_TRUE;
   }
   
   tp_get_buf_avail(avail); 
   if(touch_panel_data_buffer.touch_buffer_rindex != touch_panel_data_buffer.touch_buffer_windex)   	
   {            
      if(tp_decode_state==TP_UNKNOWN_EVENT)            
      {/*complete x and y*/         
         touch_pop_data_from_buffer(touch_data->event);          
         if(touch_data->event!=STROKE_UP)/*stroke end*/
         {
            touch_pop_data_from_buffer(hign_data);/*high*/
            touch_pop_data_from_buffer(low_data);/*low*/
            touch_data->x_adc=(hign_data<<8);     
            touch_data->x_adc|=low_data;     
            touch_pop_data_from_buffer(hign_data);/*high*/
            touch_pop_data_from_buffer(low_data);/*low*/
            touch_data->y_adc=(hign_data<<8);               
            touch_data->y_adc|=low_data;     
         }   
         if(touch_data->event==STROKE_DOWN)
         {
            tp_decode_state=STROKE_MOVE;
            tp_stroke_pre.x=touch_data->x_adc;
            tp_stroke_pre.y=touch_data->y_adc;
         }    
      }
      else if(tp_decode_state==STROKE_MOVE)    
      { 
         touch_pop_data_from_buffer(diff);
         if((kal_uint8)diff==STROKE_UP) 
         {
            touch_data->event=STROKE_UP;
            touch_data->x_adc=tp_stroke_pre.x;//0;
            touch_data->y_adc=tp_stroke_pre.y;//0;
            tp_decode_state=TP_UNKNOWN_EVENT;
            tp_stroke_pre.x=0;
            tp_stroke_pre.y=0;
         }                         
         else if((kal_uint8)diff==STROKE_LONGTAP) 
         {
            //touch_pop_data_from_buffer(diff);
            touch_data->x_adc=tp_stroke_pre.x;//0;
            touch_data->y_adc=tp_stroke_pre.y;//0;
            touch_data->event=STROKE_LONGTAP;
         }   
         else/*delta x, delta y*/
         {     
            /*x*/    
            touch_data->x_adc=(kal_int16)((kal_int16)tp_stroke_pre.x+(kal_int16)diff);
            tp_stroke_pre.x=touch_data->x_adc;
            /*y*/
            touch_pop_data_from_buffer(diff);         
            touch_data->y_adc=(kal_int16)((kal_int16)tp_stroke_pre.y+(kal_int16)diff);;
            tp_stroke_pre.y=touch_data->y_adc;
            touch_data->event=STROKE_MOVE;
         }
      } 
     result = KAL_TRUE;
   }
   else
   {
      send_touch_ilm = KAL_TRUE;
      result = KAL_FALSE;
   }      
   if (tp_eint_mask == KAL_FALSE)
   EINT_UnMask(TP.eint_chan);
   IRQUnmask(IRQ_GPT_CODE);
   return result;      
}   
/*************************************************************************
* FUNCTION
*	touch_panel_peek_event
*
* DESCRIPTION
*	This function is to peek event from ring buffer.
*
* PARAMETERS
*	data: touch event
*
* RETURNS
*	None
*
* GLOBALS AFFECTED
*
*************************************************************************/
kal_bool touch_panel_peek_event(TouchPanelEventStruct *touch_data)
{
   kal_bool result;
   //kal_uint8 hign_data=0, low_data=0;
   kal_uint8 peek_data[5];
   //kal_int8 diff;
   //TouchPanelEventStruct data;
   IRQMask(IRQ_GPT_CODE);
   /* only mask eint when it's unmasked. */
   if (tp_eint_mask == KAL_FALSE)
   EINT_Mask(TP.eint_chan);   
   if (touch_panel_data_buffer.touch_buffer_rindex != touch_panel_data_buffer.touch_buffer_windex)
   {                  
      if(tp_decode_state==TP_UNKNOWN_EVENT)            
      {/*complete x and y*/         
         touch_peek_data_from_buffer(peek_data,5);   
         touch_data->event=peek_data[0];            
         if(peek_data[0]!=STROKE_UP)/*stroke end*/
         {
            touch_data->x_adc=(peek_data[1]<<8);     
            touch_data->x_adc|=peek_data[2];     
            touch_data->y_adc=(peek_data[3]<<8);               
            touch_data->y_adc|=peek_data[4];                       
         }            
      }
      else if(tp_decode_state==STROKE_MOVE)    
{
         touch_peek_data_from_buffer(peek_data,3);   
         if((kal_uint8)peek_data[0]==STROKE_UP) 
         {
            touch_data->event=STROKE_UP;
            touch_data->x_adc=0;
            touch_data->x_adc=0;            
         }                         
         else/*delta x, delta y*/
         {     
            /*x*/    
            touch_data->x_adc=(kal_int16)((kal_int16)tp_stroke_pre.x+(kal_int16)peek_data[1]);            
            /*y*/            
            touch_data->y_adc=(kal_int16)((kal_int16)tp_stroke_pre.y+(kal_int16)peek_data[2]);;                        
         }
      }       
     result = KAL_TRUE;
   }
   else   

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久桃色tv| 91精品在线观看入口| 精品蜜桃在线看| 精品一二线国产| 国产午夜亚洲精品理论片色戒 | 丁香婷婷综合激情五月色| 精品国产一区二区三区不卡| 国产剧情在线观看一区二区| 一区在线播放视频| 91麻豆精品国产91久久久| 欧美日韩免费高清一区色橹橹| 国产欧美日韩三级| 欧美午夜精品久久久久久超碰| 激情五月播播久久久精品| 亚洲色图19p| 精品久久久久久久久久久久久久久| 日韩免费观看高清完整版| 91在线精品一区二区| 毛片av一区二区| 亚洲欧洲精品一区二区精品久久久| 亚洲图片另类小说| 亚洲一区在线看| 国产精品美女久久久久久久久久久 | 欧美第一区第二区| 国产亚洲欧美激情| 亚洲欧美日韩在线| 欧美国产1区2区| 91麻豆精品国产91久久久久久久久| 制服丝袜亚洲网站| 久久这里只有精品6| 欧美一区二区在线看| 在线观看日韩一区| 不卡的电视剧免费网站有什么| 久色婷婷小香蕉久久| 三级欧美韩日大片在线看| 一区二区三区精品| 亚洲一区在线播放| 极品销魂美女一区二区三区| 91亚洲午夜精品久久久久久| av欧美精品.com| 成人18精品视频| 91精品欧美久久久久久动漫| 国产精品久久久久久久久久久免费看 | 精品国产亚洲在线| 一区二区三区视频在线看| 激情伊人五月天久久综合| 日本韩国一区二区三区视频| 色悠久久久久综合欧美99| caoporm超碰国产精品| 日韩一区二区电影网| 欧美成人bangbros| 亚洲国产视频一区| 日本aⅴ精品一区二区三区| 美日韩一区二区三区| 欧美午夜精品一区| 自拍偷拍亚洲欧美日韩| 国产精品中文字幕日韩精品| 在线成人av网站| 精品欧美久久久| 亚洲成人动漫在线观看| 蜜桃视频一区二区三区| 在线观看一区二区视频| 亚洲视频每日更新| 成人免费视频一区| 欧美日韩电影在线播放| 亚洲狼人国产精品| 日本欧洲一区二区| 国产精品一区一区三区| 精品久久久影院| 青青国产91久久久久久| 欧美妇女性影城| 日韩在线观看一区二区| 欧美一区二区三区成人| 丝瓜av网站精品一区二区| 欧美群妇大交群的观看方式| 亚洲午夜影视影院在线观看| 3751色影院一区二区三区| 亚洲在线免费播放| 在线精品视频免费播放| 午夜精品久久久久久久99水蜜桃 | 精品国产亚洲在线| 精品无人码麻豆乱码1区2区 | 国产伦精一区二区三区| 成人性生交大片免费看在线播放| 久久亚洲精品国产精品紫薇| 国产精品一品二品| 国产精品久久久久7777按摩| aaa欧美色吧激情视频| 亚洲欧美日韩小说| 欧美色精品天天在线观看视频| 天堂精品中文字幕在线| 日韩欧美国产三级| 国产成人欧美日韩在线电影| 欧美肥妇free| 国内久久精品视频| 中文字幕一区二区三区四区| 91国偷自产一区二区三区成为亚洲经典 | 国产91精品一区二区麻豆亚洲| 日本一区二区三区四区| 99国产精品一区| 亚洲成人动漫在线观看| 久久免费视频色| 日本中文字幕不卡| 国产日韩精品视频一区| 99久久精品免费| 日韩电影在线一区二区| 日本一区二区三区电影| 欧美特级限制片免费在线观看| 蜜臀久久99精品久久久久宅男| 国产日韩av一区| 欧美日韩aaaaaa| 丁香啪啪综合成人亚洲小说| 五月天亚洲精品| 国产精品久久久久久亚洲伦| 欧美喷水一区二区| 成人免费高清在线| 全部av―极品视觉盛宴亚洲| 国产精品美女久久久久久| 欧美美女激情18p| 欧美日韩一级黄| 成人亚洲一区二区一| 日韩av电影免费观看高清完整版在线观看 | 91九色02白丝porn| 国产精品一二三四五| 亚洲国产视频网站| 日韩美女视频一区二区| wwwwxxxxx欧美| 欧美日韩高清一区二区三区| www.欧美亚洲| 国产一区二区视频在线播放| 亚洲成a人在线观看| 综合久久国产九一剧情麻豆| 久久亚洲影视婷婷| 欧美区一区二区三区| 欧美综合在线视频| 91在线精品一区二区| 国产白丝精品91爽爽久久| 蜜桃精品视频在线| 日韩福利电影在线| 亚洲h动漫在线| 亚洲一区电影777| 自拍偷拍国产精品| 亚洲私人黄色宅男| 国产精品人妖ts系列视频| 久久久综合激的五月天| 精品人在线二区三区| 日韩一区二区电影在线| 日韩一区二区在线看| 欧美一区二区在线视频| 欧美一级一级性生活免费录像| 欧美日韩中文字幕一区| 欧美日韩国产在线观看| 欧美日韩一级黄| 91精品国产综合久久婷婷香蕉| 欧美日韩一区久久| 9191久久久久久久久久久| 欧美剧情片在线观看| 91精品国产免费久久综合| 91精品国产品国语在线不卡| 欧美一级日韩免费不卡| 日韩欧美国产午夜精品| 亚洲精品在线网站| 中日韩av电影| 亚洲欧美一区二区不卡| 亚洲影视在线播放| 日韩1区2区日韩1区2区| 精品在线免费观看| 丁香婷婷综合色啪| 在线国产电影不卡| 欧美一区二区啪啪| 国产视频一区不卡| 亚洲欧洲中文日韩久久av乱码| 亚洲夂夂婷婷色拍ww47| 青青草原综合久久大伊人精品| 久久99国产精品免费网站| 国产福利一区二区三区视频在线| 北条麻妃国产九九精品视频| 欧美综合亚洲图片综合区| 91精品欧美福利在线观看 | 91亚洲资源网| 欧美欧美欧美欧美| 国产日韩欧美综合一区| 一区二区三区加勒比av| 久久成人av少妇免费| 99热精品国产| 666欧美在线视频| 中文字幕国产一区| 亚洲成av人片| 国产乱子轮精品视频| 色综合天天综合色综合av| 懂色一区二区三区免费观看| 色女孩综合影院| 精品日韩一区二区| 亚洲精品精品亚洲| 久色婷婷小香蕉久久| 91官网在线观看| 久久精品一区二区三区四区| 亚洲狠狠爱一区二区三区| 国产成人综合亚洲91猫咪| 欧美网站一区二区|