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

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

?? ui_input_pool.c

?? ZORAN 962/966 SOURCE CODE,DVD chip
?? C
?? 第 1 頁 / 共 2 頁
字號:
****************************************************************************************************/
static BOOL _GetHistory(pKEY_POOL_CODE pkeypool_code, UINT8 start_point, UINT8 key_code_size);

/****************************************************************************************************
*	DEFINITION: Public functions
****************************************************************************************************/


/************************************************************
* Function name	: UI_INPUT_POOL_Push
* Purpose		: Check repeat status and HOLD status, and put it into pKeyPool
* Input Parameters	: key_code - keycode that will be save in pKeyPool
*				  uicc_code - UICC for key thst will be save in pKeyPool
* Return type		: TRUE - success
*				  FALSE-Fail
* Output Parameters: None
************************************************************/
BOOL UI_INPUT_POOL_Push(UINT16 key_code, UINT16 uicc_code)
{
	KEY_POOL_CODE kp_code;
	UINT32	gtimer;
	//check repeat key
#ifdef D_GINGER_I96
	gtimer = cpu_gen_timer();
#else //D_GINGER_I96
	gtimer = gen_timer();
#endif //D_GINGER_I96
	if(KEY_STATUS_HOLD == (key_code&KEY_STATUS_MARSK))
		gcst.mKeyHold = TRUE;
	else
		gcst.mKeyHold = FALSE;
	gcst.mKeyRepeat = FALSE;
	if((uicc_code == key_pool.last_uicc) \
	   && (timing_get_diff(key_pool.last_time, gtimer) < REPEATKEY_3000MS) \
	   && (KEY_STATUS_NORMAL == (key_code&KEY_STATUS_MARSK)))
	{
		dbg_printf(("Set repeat key flag.\n"));
		key_code |= KEY_STATUS_REPEAT;
		gcst.mKeyRepeat = TRUE;
	}
	key_pool.last_time = gtimer;
	key_pool.last_uicc = uicc_code;
	//store key information into sc_pad
	kp_code.key_code = key_code;
	kp_code.uicc_code = uicc_code;
	kp_code.key_timer = gtimer;
	key_pool.ucHead++;
	if(key_pool.ucHead >= KEYPOOL_DEPTH)
		key_pool.ucHead = 0;
#ifdef D_GINGER_I96
	//sc_SetBytes(SC_KEY_POOL_ADDR, sizeof(KEY_POOL_CODE)*key_pool.ucHead, sizeof(KEY_POOL_CODE), (BYTE*)(&kp_code));
	kpKeepKeyPoolCode[key_pool.ucHead] =  kp_code;
#else //D_GINGER_I96
	sc_SetBytes(SC_KEY_POOL_ADDR, sizeof(KEY_POOL_CODE)*key_pool.ucHead, sizeof(KEY_POOL_CODE), (BYTE*)(&kp_code));
#endif //D_GINGER_I96
	return TRUE;
}
/************************************************************
* Function name	: UI_GetSecretUIOP
* Purpose		: Check Secret Key and call Secret function
* Input Parameters	: 
* Return type		: BOOL TRUE - Find a Secret Key 
*					     FALSE - Don't find Secret Key
* Output Parameters:  NONE
************************************************************/
BOOL UI_SecretOP(void)
{
	int i,j;
	KEY_POOL_CODE key_pool_buf[SECRET_KEY_MAX_LONG];
	_GetHistory(key_pool_buf, 0, SECRET_KEY_MAX_LONG);
	for(i = 0; i < MAX_SECRET_KEY; i++)
	{
		for(j = 0; j<Secret_Key_Tab[i]->wKeyCnt; j++)
		{
			if((Secret_Key_Tab[i]->wUicc[j] != key_pool_buf[Secret_Key_Tab[i]->wKeyCnt-j-1].uicc_code)
			     && Secret_Key_Tab[i]->wUicc[j] != SECRET_WILDCARD)
				break;
		}
		if(j == Secret_Key_Tab[i]->wKeyCnt)
		{
			dbg_printf(("Find a Secret KEY!\n"));
			return Secret_Key_Tab[i]->secret_op();
		}
	}
	return FALSE;
}

#if 0
/************************************************************
* Function name	: KeyPool_SetHistoryPoint
* Purpose		: Clean up the key information by the special point
* Input Parameters	: point-special point for pKeyPool's KEY_POOL_CODE that will be clean 
* Return type		: None
* Output Parameters: None
************************************************************/
void KeyPool_Clean(UINT8 point)
{
	KEY_POOL_CODE kp_code;
	if(point < KEYPOOL_DEPTH)
	{
		kp_code.key_code = NULL;
		kp_code.uicc_code = UICC_NULL;
		sc_SetBytes(SC_KEY_POOL_ADDR, sizeof(KEY_POOL_CODE)*point, sizeof(KEY_POOL_CODE), (BYTE*)(&kp_code));
	}
}

#endif
/************************************************************
* Function name	: _GetHistory
* Purpose		: Get history keypool-code from KeyPool
* Input Parameters	: key_code_size - number  for KEY_POOL_CODE
*				  start_point - index from head
* Return type		: TRUE -success
*				  FALSE - error or History is empty
* Output Parameters: pkeypool_code - KEY_POOL_CODE pointer which used to save the history KEY_POOL_CODE 
************************************************************/
static BOOL _GetHistory(pKEY_POOL_CODE pkeypool_code, UINT8 start_point, UINT8 key_code_size)
{
	int i;
	UINT8 ucHistory;
	if(KEYPOOL_DEPTH <= start_point)
		start_point = 0;
	if(start_point > key_pool.ucHead)
		ucHistory = KEYPOOL_DEPTH+key_pool.ucHead-start_point;
	else
		ucHistory = key_pool.ucHead-start_point;
	if(KEYPOOL_DEPTH <= ucHistory)
		ucHistory -= KEYPOOL_DEPTH;
	if(key_code_size>KEYPOOL_DEPTH)
		key_code_size = KEYPOOL_DEPTH;
	for(i=0; i<key_code_size; i++)
	{
#ifdef D_GINGER_I96
		//sc_GetBytes(SC_KEY_POOL_ADDR, sizeof(KEY_POOL_CODE)*ucHistory, sizeof(KEY_POOL_CODE), (BYTE *)pkeypool_code+i*sizeof(KEY_POOL_CODE));      
		pkeypool_code[i] = kpKeepKeyPoolCode[ucHistory];
#else //D_GINGER_I96
		sc_GetBytes(SC_KEY_POOL_ADDR, sizeof(KEY_POOL_CODE)*ucHistory, sizeof(KEY_POOL_CODE), (BYTE *)pkeypool_code+i*sizeof(KEY_POOL_CODE));
#endif //D_GINGER_I96
		if(ucHistory == 0)
			ucHistory = KEYPOOL_DEPTH-1;
		else
			ucHistory--;
	}
	return TRUE;
}
/////////////////////////////////////////////////////////////////////////////////////

/*************************************************************************
Function for Secret Key
**************************************************************************/
static BOOL SECRET_GetVersion(void)
{
	if (DEVICE_NO_DEVICE == DeviceManager_GetDeviceState(DEVICE_DISC))
	{
		MS_SendOp(MS_OP_MSG_SYS_BE_VERSION, 0);
		return TRUE;
	}
	return FALSE;
}
static BOOL SECRET_GetFEVersion(void)
{
	if (DEVICE_NO_DEVICE == DeviceManager_GetDeviceState(DEVICE_DISC))
	{
		MS_SendOp(MS_OP_MSG_SYS_FE_VERSION, 0);
		return TRUE;
	}
	return FALSE;
}
#ifndef D_GINGER_I86
static BOOL SECRET_GetChipID(void)
{
	if (DEVICE_NO_DEVICE == DeviceManager_GetDeviceState(DEVICE_DISC))
	{
		MS_SendOp(MS_OP_MSG_SYS_CHIP_ID, 0);
		return TRUE;
	}
	return FALSE;
}
#endif // not D_GINGER_I86
#ifndef D_GINGER_I96
static BOOL SECRET_GetBoardVersion(void)
{
	if (DEVICE_NO_DEVICE == DeviceManager_GetDeviceState(DEVICE_DISC))
	{
		MS_SendOp(MS_OP_MSG_SYS_BOARD_VERSION, 0);
		return TRUE;
	}
	return FALSE;
}
#endif //D_GINGER_I96
//Mars 10/20/2005
static BOOL SECRET_TVoutRecover(void)
{
	if ((DeviceManager_GetDeviceState(DEVICE_DISC) == DEVICE_TRAY_OPENING) 
		|| (DeviceManager_GetDeviceState(DEVICE_DISC) == DEVICE_TRAY_OPENED))
	{
		dbg_printf(("Reset TV out mode to default value\n"));
		CoreAPI_SetVideoOutMode(g_default_factory_settings.vid_out);
		return TRUE;
	}
	return FALSE;
}
static BOOL SECRET_TVformat_Recover(void)
{
	if ((DeviceManager_GetDeviceState(DEVICE_DISC) == DEVICE_TRAY_OPENING) 
		|| (DeviceManager_GetDeviceState(DEVICE_DISC) == DEVICE_TRAY_OPENED))
	{
		dbg_printf(("Reset TV out mode to default value\n"));
		CoreAPI_UpdatePlayerSetting(PS_UPDATE_TV_STANDARD, g_default_factory_settings.tv_standard);
		return TRUE;
	}
	return FALSE;
}
static BOOL SECRET_SetRegionCode(void)
{
	KEY_POOL_CODE keypool_code;
	if(DeviceManager_GetDeviceState(DEVICE_DISC) == DEVICE_TRAY_OPENED)
	{
		_GetHistory(&keypool_code, 0, 1);
		if(((UICC_1 <= keypool_code.uicc_code)&&(UICC_6 >= keypool_code.uicc_code))||(keypool_code.uicc_code == UICC_9))
		{
			dbg_printf(("Set Region code %d\n",keypool_code.uicc_code-UICC_0));
			CoreAPI_UpdatePlayerSetting(PS_UPDATE_REGION_CODE, keypool_code.uicc_code-UICC_0);
			MS_SendOp(MS_OP_MSG_SYS_NUMBER_INPUT, keypool_code.uicc_code-UICC_0);
			return TRUE;
		}
	}
	return FALSE;
}

static BOOL SECRET_GetChecksum(void)
{
	if (DEVICE_NO_DEVICE == DeviceManager_GetDeviceState(DEVICE_DISC))
	{
		UINT16 wCheckSum = 0;

		unsigned short huge * pFlash = MK_FP(0x4000,0);
		unsigned short huge * PS_POINTER = MK_FP(PS_SEG,0);
		
		while(pFlash < PS_POINTER)
		{
			wCheckSum += pFlash[0] & 0x00ff;
			wCheckSum += (pFlash[0] >> 8) & 0x00ff;
			pFlash += 1;
		}

		MS_SendOp(MS_OP_MSG_SECRET_KEY_CHECKSUM, (UINT32)wCheckSum);
		return TRUE;
	}
	return FALSE;
}

//if find a sequence key then return related uiop
//else return UIOP_LAST
#define NUM_SEQUENCE_KEY	(sizeof(oSequenceKeyTable)/sizeof(SEQUENCE_KEY))
BOOL UI_GetSequenceKey(UINT16 wUicc, UINT16* pUiop)
{
	//sequence key: A0~A9, B0~B9, C0~C9, ....G0~G9
	if (UICC_0 <= wUicc && UICC_9 >= wUicc)
	{
		KEY_POOL_CODE oKeyPoolBuffer[SEQUENCE_KEY_LENGTH];
		UINT8 i,j;
		_GetHistory(oKeyPoolBuffer, 0, SEQUENCE_KEY_LENGTH);
		for(i =0; i< NUM_SEQUENCE_KEY; i++)
		{
			for(j = 0;j< SEQUENCE_KEY_LENGTH;j++)
			{
				if(oSequenceKeyTable[i].wUicc[j] != oKeyPoolBuffer[SEQUENCE_KEY_LENGTH-j-1].uicc_code)
					break;		
			}
			if (SEQUENCE_KEY_LENGTH == j)
			{
				*pUiop = oSequenceKeyTable[i].wUiop;
				return TRUE;
			}
		}
	}
	return FALSE;	
};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩免费视频一区二区| 欧美日韩一卡二卡三卡| 一区二区三区中文字幕在线观看| 色婷婷av一区| 精品亚洲免费视频| 亚洲色图在线看| 欧美一区二区二区| 首页国产欧美久久| 欧美国产激情一区二区三区蜜月| 色老综合老女人久久久| 国模无码大尺度一区二区三区| 中文字幕视频一区二区三区久| 欧美日韩国产大片| 国产成人av福利| 国产精品色眯眯| 337p粉嫩大胆噜噜噜噜噜91av| 欧美在线制服丝袜| 99精品黄色片免费大全| 国产成人免费高清| 国产在线乱码一区二区三区| 日韩av一区二| 午夜av一区二区三区| 综合欧美一区二区三区| 国产欧美1区2区3区| 日韩欧美一二三| 日韩一区二区三区在线| 欧美丝袜自拍制服另类| 91搞黄在线观看| 91高清在线观看| 欧美性一级生活| 欧美亚洲丝袜传媒另类| 欧美综合视频在线观看| 91福利国产精品| 欧美三级中文字幕在线观看| 在线观看日韩一区| 欧美色男人天堂| 欧美日本一道本| 777奇米四色成人影色区| 欧美精品v国产精品v日韩精品 | 国产日本欧洲亚洲| 精品国产成人系列| 精品国产91乱码一区二区三区| 91精品国产综合久久国产大片| 欧美视频一区在线| 欧美四级电影在线观看| 欧美日本韩国一区二区三区视频 | 久久久久久99精品| 久久久久久久久岛国免费| 国产婷婷精品av在线| 欧美高清在线精品一区| 中文字幕亚洲不卡| 亚洲综合免费观看高清完整版 | 亚洲欧美一区二区三区孕妇| 亚洲精品免费在线| 亚洲高清在线精品| 日韩电影免费一区| 国产一区免费电影| 成人污视频在线观看| 91免费在线看| 欧美日韩国产精选| www国产精品av| 国产精品久久午夜夜伦鲁鲁| 亚洲美女在线国产| 免费成人在线影院| 丰满白嫩尤物一区二区| 一本到不卡免费一区二区| 欧美日韩中文字幕精品| 久久综合网色—综合色88| 亚洲色图一区二区三区| 日本最新不卡在线| 粉嫩av一区二区三区在线播放| 色悠悠亚洲一区二区| 欧美福利视频导航| 国产欧美精品一区二区色综合朱莉| 亚洲三级视频在线观看| 免费精品视频在线| proumb性欧美在线观看| 91麻豆精品国产91久久久更新时间| 精品国产乱码久久久久久浪潮| 国产精品国产三级国产aⅴ无密码| 亚洲高清中文字幕| 粉嫩aⅴ一区二区三区四区| 欧美性videosxxxxx| 精品国产精品网麻豆系列| 亚洲激情第一区| 国产美女一区二区| 欧美日韩午夜影院| 中文字幕乱码亚洲精品一区| 亚洲国产精品一区二区久久恐怖片 | 六月丁香综合在线视频| 色综合天天做天天爱| 91精品在线麻豆| 亚洲激情图片小说视频| 韩国一区二区视频| 欧美日本在线播放| 亚洲人成在线播放网站岛国| 久久精品国产免费| 亚洲高清中文字幕| 精品一区二区三区香蕉蜜桃| 在线看日本不卡| 国产人成一区二区三区影院| 免费观看久久久4p| 欧美吻胸吃奶大尺度电影 | 欧美日韩国产综合视频在线观看 | 亚洲天堂精品视频| 国产精品1024| 日韩三级伦理片妻子的秘密按摩| 亚洲欧美激情小说另类| 国产成人丝袜美腿| 精品国产一区二区在线观看| 香蕉av福利精品导航| 91免费国产在线| 国产精品免费观看视频| 国产一区二区美女| 精品成人a区在线观看| 日韩一区欧美二区| 在线观看国产一区二区| 中文字幕亚洲视频| youjizz久久| 中文字幕av资源一区| 国产精品一区不卡| 久久亚洲免费视频| 黄色小说综合网站| 欧美电影免费观看完整版| 免费观看成人av| 日韩视频123| 毛片一区二区三区| 欧美一区二区三区喷汁尤物| 亚洲福中文字幕伊人影院| 色国产精品一区在线观看| 亚洲欧美日本在线| 一道本成人在线| 亚洲男人电影天堂| 欧美在线啊v一区| 亚洲一区二区在线免费看| 在线视频中文字幕一区二区| 一区二区欧美精品| 欧美日韩高清一区二区不卡| 天天亚洲美女在线视频| 91.com视频| 久久99国产精品久久| 2023国产精品自拍| 国产suv一区二区三区88区| 欧美激情一二三区| 色综合久久久久综合99| 一区二区三区国产| 欧美日韩国产精品成人| 捆绑变态av一区二区三区| 精品国产一区二区三区久久影院| 国产一区二区中文字幕| 日韩午夜在线影院| 国产精品亚洲成人| 自拍偷自拍亚洲精品播放| 色婷婷av久久久久久久| 三级久久三级久久久| 日韩视频一区在线观看| 国产成人一级电影| 一区二区三区不卡在线观看| 欧美美女网站色| 激情五月婷婷综合网| 日韩一区日韩二区| 欧美日韩免费视频| 老司机免费视频一区二区三区| 久久久久久久久久美女| 91亚洲精品久久久蜜桃| 日本中文字幕一区二区视频| 久久九九全国免费| 色综合天天综合| 蜜臀久久99精品久久久画质超高清| 久久亚洲一级片| 在线免费精品视频| 精品午夜久久福利影院| 国产精品进线69影院| 欧美撒尿777hd撒尿| 国产精品一二三四区| 亚洲高清免费视频| 久久日一线二线三线suv| 日本福利一区二区| 国产精品中文字幕日韩精品| 国产精品美女久久久久久2018| 欧美日本一区二区在线观看| 国产成人综合视频| 天堂影院一区二区| 国产精品美女久久福利网站| 欧美一区二区在线免费观看| 国产精品系列在线观看| 午夜伦欧美伦电影理论片| 国产日产精品一区| 日韩一区二区视频| 欧美综合视频在线观看| 国产高清一区日本| 奇米888四色在线精品| 亚洲精品视频在线看| 亚洲精品一区在线观看| 欧美亚洲国产一区二区三区| 成人夜色视频网站在线观看| 青草国产精品久久久久久| 一区二区三区国产精华| 国产精品天干天干在观线| 欧美大片日本大片免费观看|