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

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

?? rc6_ir.c

?? ZORAN 962/966 SOURCE CODE,DVD chip
?? C
?? 第 1 頁 / 共 2 頁
字號:

#include "Config.h"		// Global Configuration - do not remove!

#ifdef D_REMOTE_RC6_FORMAT

#include "Kernel\ker_api.h"
#include "Kernel\eventdef.h"
#include "CPU\cpu_api.h"
#include "Playcore\Timing\Timing.h"
#include "Playcore\Coremain\coremain.h"
#include "Playcore\Coremain\coredefs.h"
#include "Playcore\Coremain\coregdef.h"
#include "Devices\Remote\ir_api.h"
#include "Devices\Remote\ir_ll.h"
#include "Devices\Remote\rc6_ir\rc6_ir.h"
#include "UI_Manager\UI_Input\ui_input_ir.h"
#if defined(D_HOLD_SKIP_2S_AS_FAST_SCAN)||defined(D_HOLD_STOP_3S_AS_EJECT_KEY)
#include "Kernel\Timers\Timers.h"
#include "CoreAPI\CoreAPI.h"
#ifdef I96_CPU_POWER_DOWN
#include "Dec_Power.h"
#endif

#define IRKC_NULL 0xFF
#define HOLDKEY_TIMEOUT_TIME 220 //millisecond, the time slice between two repeated skip key

#define HOLDKEY_CLEAR_TIMEOUT_TIME  300000UL

static UINT8 hHoldTimer = NULL; //the handler of the timer
static BYTE	lastKey = 0xFF; //to remember what is pressed and held
#endif

#ifdef D_HOLD_STOP_3S_AS_EJECT_KEY
#define STOPKEY_DELAY  0x1c //counter value for about 3 seconds
#endif

#ifdef D_HOLD_SKIP_2S_AS_FAST_SCAN
#define SKIPKEY_DELAY  0x12 //counter value for about 2 seconds
#define SKIPKEY_DELAY_FAST 0x8 //counter value for about 1 seconds
#endif //D_HOLD_SKIP_2S_AS_FAST_SCAN

extern CONST WORD g_ir_system_code;
extern CONST WORD g_ir_power_key_code;
extern CONST WORD g_ir_eject_key_code;

#ifdef I96_CPU_POWER_DOWN
extern BOOL bPowerUpKeyPressed;
extern BOOL bWakeFromPowerDown;
#endif

#define RC6_GROUPSIZE	        8			// bits
#define RC6_CODESIZE		8			// bits



#define RC6_SHORTPULSE 444UL
#define RC6_JITTER     220UL //200UL
#define RC6_LONGPULSE  888UL
#define RC6_HEADPULSE (6*RC6_SHORTPULSE)


// State of the remote key decoder
#define ERROR		   0
#define IDLE	    	1
#define HEADER1      2
#define HEADER2      3
#define HEADER3      4
#define MODE         5
#define REVERSE      6
#define DECODE		   7
#define RESYNC		   8

#define REPEAT_DELAY	5    // pre-delay before repeating.
#define REPEAT_STEP 2     // delay between repeated events.



#if defined(D_HOLD_SKIP_2S_AS_FAST_SCAN)||defined(D_HOLD_STOP_3S_AS_EJECT_KEY)
/**********************************************************************************
 * Name			:	HoldSkipTimerIR
 * Purpose		:	The timeout function for hold skip key, when timeout happens, it will send out
 *                                the skip key user pressed.
 * Input			:   
 * Return Value	:
 * Description		:
 * Comments		:
**********************************************************************************/
#pragma argsused
static void HoldSkipTimerIR(UINT8 hTimer)
{
	if (IRKC_SKIPB == lastKey || IRKC_SKIPF == lastKey || IRKC_STOP == lastKey)
	send_remote_event((WORD)KEY_SOURCE_IR|lastKey);
	
	//clear the timer
	if (hHoldTimer != NULL)
	{
		timer_service_delete(hHoldTimer); //use htimer to kill itself
		hHoldTimer = NULL;
	}
	lastKey = IRKC_NULL;
}
#endif //D_HOLD_SKIP_2S_AS_FAST_SCAN

void ir_init(void)
{
	ir_interrupt_init( FALLING_EDGE );
}


#ifdef ENABLE_REDUCE_CPU_FREQUENCY_FOR_STANDBY
#define NEW_RC6_JITTER    100UL
#define NEW_RC6_HEADPULSE 630UL
extern BYTE g_ReduceCPUFrequency;
#endif


void ir_isr( void )
{
	static BYTE interruptTypeFlag = 0;
	static BYTE state = IDLE;
	static BYTE bitCount;
	//static BYTE decode;
	static BYTE group;
	static BYTE code;
	static BYTE oldcode;
	static BYTE bit = 0;
	static BYTE check = 0;
	static BYTE repeating = 0;
	static BYTE repeatDelay = REPEAT_DELAY;	// Repeat code counter
	static BYTE repeatStep=0;

	static DWORD timeCountOld;
  	
	/* henry start */
	//static BYTE    model;                /* mode value */
	static BYTE    border;              /*indicator of a border of long cycle*/
	static BYTE    start;               /* indicator of starting next segment */
	/* henry end */
        
	DWORD timeCount;
	DWORD deltaTime;

	BYTE validRepeat = 0;
	BYTE key = 0;

/* for the Philips project */
#if defined(D_HOLD_SKIP_2S_AS_FAST_SCAN)||defined(D_HOLD_STOP_3S_AS_EJECT_KEY)
	static BYTE	holdkey_repeatDelay = 0;
#endif

#ifdef I96_CPU_POWER_DOWN
    if (bWakeFromPowerDown == TRUE)
    {
        DEC_PowerCpu(TRUE);       
    }
#endif

	timeCount =cpu_gen_timer();

	//deltaTime = timeCount - timeCountOld;
	deltaTime = timing_get_diff(timeCountOld, timeCount);

	timeCountOld = timeCount;

#if defined(D_HOLD_SKIP_2S_AS_FAST_SCAN)||defined(D_HOLD_STOP_3S_AS_EJECT_KEY)
	if (deltaTime > HOLDKEY_CLEAR_TIMEOUT_TIME)
	{
		//If longer than 1s without key input
		lastKey = IRKC_NULL;
	}
#endif       

	if (!interruptTypeFlag)
	{
		ir_interrupt_set_edge( RISING_EDGE );
		interruptTypeFlag = 1;
	}
	else
	{
		ir_interrupt_set_edge( FALLING_EDGE );
		interruptTypeFlag = 0;
	}

	switch (state) {

		case ERROR:
			// to be filled later when it is needed.
			state = IDLE;
			
		case IDLE:
			bitCount = 0;
			//model = 0;
			group = 0;
			code = 0;
			border = 0;
			start = 0;
			bit = 1;
                         
			if(interruptTypeFlag == 1)
				state = HEADER1;
			else
				state = ERROR;
			break;
			
		case HEADER1:
			if(deltaTime - RC6_JITTER < RC6_HEADPULSE && RC6_HEADPULSE < deltaTime + RC6_JITTER)
				state = HEADER2;
#ifdef ENABLE_REDUCE_CPU_FREQUENCY_FOR_STANDBY
			else if (g_ReduceCPUFrequency != 1 && deltaTime - NEW_RC6_JITTER < NEW_RC6_HEADPULSE && deltaTime + NEW_RC6_JITTER > NEW_RC6_HEADPULSE)
			{
				state = HEADER2;
			}
#endif
			else
				state = ERROR;
			break;
		        
		case HEADER2:
			if(deltaTime - RC6_JITTER < RC6_LONGPULSE && RC6_LONGPULSE < deltaTime + RC6_JITTER)
				state = HEADER3;
			else
				state = ERROR;
			break;
	        
		case HEADER3:
			if(deltaTime - RC6_JITTER < RC6_SHORTPULSE && RC6_SHORTPULSE < deltaTime + RC6_JITTER)                                                	
				state = MODE;
			else
				state = ERROR;
			break;
                        
		case MODE:
			if(deltaTime - RC6_JITTER < RC6_LONGPULSE && RC6_LONGPULSE < deltaTime + RC6_JITTER)
			{                         
				if(border)
				{
					state = ERROR;
					border = 0;
					break;
				}
				bit = !bit;
				bitCount++;
				//model <<= 1;
				//model |= bit & 1;
			}        
			else if(deltaTime - RC6_JITTER < RC6_SHORTPULSE && RC6_SHORTPULSE < deltaTime + RC6_JITTER)
			{
				if(border)
				{
					border = 0;
					bitCount++;
					//model <<= 1;
					//model |= bit & 1;
				}
				else
					border = 1;
			}
			else 
			{
				state = ERROR;
				break;
			}        
			if(bitCount == 3)
			{
				state = REVERSE;
				start = 1;
				bitCount = 0;
			}     
			break;     
                        
		case REVERSE:
			if(deltaTime - RC6_JITTER < RC6_SHORTPULSE && RC6_SHORTPULSE < deltaTime + RC6_JITTER)                         
			{
				if(border)
					state = ERROR;
				else
				{
					border = 1;
					start = 0;
				}      
			}
			else if(deltaTime - RC6_JITTER < RC6_LONGPULSE && RC6_LONGPULSE < deltaTime + RC6_JITTER)                         
			{
				if(!border)
					state = ERROR;
				else      
					state = DECODE;
			}
			else if(deltaTime - RC6_JITTER < (RC6_LONGPULSE + RC6_SHORTPULSE) 
                                                && (RC6_LONGPULSE + RC6_SHORTPULSE) < deltaTime + RC6_JITTER)                         
			{
				if(start)
				{
					start = 0;
					bit = !bit;
					state = DECODE;
				}
				else
					state = ERROR;
			}
			else
				state = ERROR;
			if(state == DECODE)
			{
				if((bit & 1) ^ check)
					repeating = 0;
				else 
					repeating = 1;
				check = bit & 1;       
				start = 1;
				border = 0;
			}
			break;
                        
		case DECODE:
			if (deltaTime - RC6_JITTER < RC6_SHORTPULSE  &&  RC6_SHORTPULSE < deltaTime + RC6_JITTER)
			{
				if(start)
					state = ERROR;
				else if(border)
				{
					border = 0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩免费看的电影| 亚洲婷婷综合久久一本伊一区| 粉嫩aⅴ一区二区三区四区五区| 亚洲成av人片www| 国产精品久久久久一区二区三区共 | 欧美中文字幕一区| 激情成人综合网| 天天av天天翘天天综合网| 中文字幕av一区二区三区高| 91精品国产综合久久久久| 色婷婷精品大在线视频| 丰满放荡岳乱妇91ww| 男男视频亚洲欧美| 亚洲国产精品久久久久秋霞影院| 欧美激情中文不卡| 精品国产乱码久久久久久图片 | 91麻豆6部合集magnet| 国产高清成人在线| 蜜桃久久久久久久| 视频在线在亚洲| 亚洲第一激情av| 亚洲福利视频三区| 亚洲综合激情另类小说区| ...xxx性欧美| 中文字幕亚洲区| 亚洲欧美影音先锋| 中文字幕欧美激情一区| 国产日本欧美一区二区| 久久综合色鬼综合色| 日韩精品一区二区三区中文精品| 欧美一区午夜视频在线观看| 88在线观看91蜜桃国自产| 欧美高清视频一二三区| 欧美精品丝袜中出| 制服丝袜中文字幕一区| 欧美日韩一区在线观看| 欧美性xxxxxx少妇| 欧美日韩国产高清一区二区| 欧美日韩国产高清一区二区| 欧美日韩国产一二三| 911精品产国品一二三产区| 在线综合+亚洲+欧美中文字幕| 69久久夜色精品国产69蝌蚪网| 制服丝袜中文字幕亚洲| 日韩欧美一区中文| www日韩大片| 国产精品色在线| 国产精品精品国产色婷婷| 亚洲免费在线观看视频| 亚洲成人在线免费| 日产欧产美韩系列久久99| 精品一区二区在线播放| 国产aⅴ综合色| 色婷婷av一区二区三区软件| 欧美群妇大交群中文字幕| 日韩欧美亚洲国产精品字幕久久久| 日韩精品一区二区三区老鸭窝| 日韩免费看网站| 欧美高清一级片在线观看| 综合激情成人伊人| 性做久久久久久免费观看欧美| 免费在线看成人av| 国产成人精品三级麻豆| 在线观看国产精品网站| 欧美一级黄色录像| 国产精品日韩精品欧美在线 | 国产一区二区主播在线| 99久久婷婷国产综合精品电影| 色综合天天综合网国产成人综合天| 在线观看亚洲成人| 精品日韩在线观看| 亚洲免费资源在线播放| 精品一区二区三区免费| 99免费精品视频| 欧美一区二区在线视频| 欧美激情在线看| 五月婷婷色综合| 成人avav在线| 欧美一级理论片| 亚洲三级小视频| 激情综合五月婷婷| 欧美综合一区二区| 日本一区二区成人| 天堂久久久久va久久久久| 国产很黄免费观看久久| 欧美日韩一区二区在线观看| 国产午夜亚洲精品不卡| 午夜免费久久看| 成人精品国产免费网站| 欧美videossexotv100| 亚洲一区在线电影| 国内成人自拍视频| 欧美丰满少妇xxxxx高潮对白| 国产精品理论片在线观看| 美腿丝袜亚洲三区| 欧美午夜精品理论片a级按摩| 国产日产欧美一区| 精品一区二区精品| 欧美三级三级三级爽爽爽| 成人免费一区二区三区视频 | 欧美体内she精高潮| 亚洲国产精品成人综合 | 国产精品不卡一区二区三区| 捆绑调教一区二区三区| 欧美日韩免费观看一区二区三区| 久久久久国产精品麻豆ai换脸| 午夜精品久久久久久久99樱桃| 99riav久久精品riav| 国产欧美综合在线观看第十页| 蜜臀av在线播放一区二区三区| 欧美三电影在线| 亚洲乱码日产精品bd| 成人免费看视频| 久久久精品免费免费| 国产综合色精品一区二区三区| 欧美一级夜夜爽| 蜜桃av一区二区三区| 欧美一区二区视频在线观看2022| 亚洲第一电影网| 欧美日韩国产高清一区二区| 亚洲影视资源网| 在线观看欧美精品| 亚洲在线观看免费视频| 欧美性三三影院| 亚洲国产日韩一级| 在线视频国内一区二区| 亚洲老司机在线| 欧美优质美女网站| 亚洲图片欧美色图| 欧美日韩国产在线观看| 偷窥少妇高潮呻吟av久久免费| 91福利小视频| 亚洲综合激情网| 欧美日韩国产综合视频在线观看| 亚洲国产美国国产综合一区二区| 欧美性感一类影片在线播放| 亚洲第一成人在线| 69堂国产成人免费视频| 久久国产欧美日韩精品| 337p粉嫩大胆噜噜噜噜噜91av| 国产一区二区久久| 中文在线免费一区三区高中清不卡| 粉嫩绯色av一区二区在线观看| 国产欧美精品国产国产专区 | 一本高清dvd不卡在线观看| 亚洲精品免费在线观看| 欧日韩精品视频| 日本午夜一本久久久综合| 26uuu精品一区二区三区四区在线| 国产精品一区免费在线观看| 国产精品视频看| 日本韩国精品在线| 人人爽香蕉精品| 久久伊人中文字幕| 成人av手机在线观看| 亚洲一区成人在线| 日韩欧美在线一区二区三区| 国产盗摄视频一区二区三区| 亚洲欧美怡红院| 91麻豆精品国产| 国产麻豆日韩欧美久久| 亚洲欧美一区二区久久 | 久久精品视频一区二区| 99久精品国产| 青草av.久久免费一区| 久久久91精品国产一区二区三区| 99久久久久久99| 日本视频在线一区| 中文字幕av在线一区二区三区| 欧美丝袜丝交足nylons图片| 免费成人在线播放| 国产精品久久久久一区| 精品视频在线免费| 国产精品亚洲一区二区三区妖精| 一区二区三区免费网站| 日韩欧美视频一区| 色哟哟一区二区在线观看| 黄页视频在线91| 亚洲一级二级三级| 国产欧美综合色| 欧美久久免费观看| 成人丝袜18视频在线观看| 亚洲国产三级在线| 中文字幕欧美日韩一区| 91精品国产美女浴室洗澡无遮挡| 成人午夜在线免费| 免费人成精品欧美精品| 亚洲男帅同性gay1069| 久久亚区不卡日本| 欧美日本一道本在线视频| 不卡的电视剧免费网站有什么| 日本不卡一二三区黄网| 亚洲精品国产a久久久久久| 久久久久国产精品麻豆| 欧美日韩亚洲综合一区| 99re视频这里只有精品| 精品无人码麻豆乱码1区2区| 香蕉久久一区二区不卡无毒影院| 中文字幕佐山爱一区二区免费| 久久综合九色综合97婷婷女人|