⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ui_input_pool.c

📁 ZORAN 962/966 SOURCE CODE,DVD chip
💻 C
📖 第 1 页 / 共 2 页
字号:
/****************************************************************************************************
*  Copyright (c) 2005 ZORAN Corporation, All Rights Reserved
*  THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF ZORAN CORPORATION
*
*  File: ui_input_pool.c
*
* Description:
* =========
*      Used for UI Key Pool 
****************************************************************************************************/
#include "Config.h"		// Global Configuration - do not remove!
#include "include\sysdefs.h"	// Global definition - do not remove!

#ifdef DEBUG_UI_TRACE
#undef IFTRACE
#define IFTRACE if (gTraceUI)
#include "Debug\DbgMain.h"
#endif //DEBUG_UI_TRACE

#ifndef DEBUG_UI_TRACE
#undef dbg_printf(sMsg)
#define dbg_printf(sMsg)
#undef	dbgm_printf(sMsg, mode)
#define dbgm_printf(sMsg, mode)
#endif

/****************************************************************************************************
*	INCLUDE FILES
****************************************************************************************************/
// Include C Standard

// Include project specific
#include "Kernel\eventdef.h"
#include "Cpu\cpu_api.h"
#ifndef D_GINGER_I96
#include "Cpu\Timefunc.h"
#endif //D_GINGER_I96
#include "Playcore\Timing\Timing.h"
#include "CoreAPI\coreapi.h"
#include "CoreAPI\DeviceManager.h"
#include "Menu\menu_operation_def.h"
#include "UI_Manager\UI_Input\ui_input_pool.h"

/****************************************************************************************************
*	DEFINITION: Private named CONSTants 
****************************************************************************************************/
/****************************************************************************************************
*	DEFINITION: Private macros
****************************************************************************************************/
#define SECRET_KEY_MAX_LONG	8
#define SECRET_WILDCARD		0xff
#define SEQUENCE_KEY_LENGTH		2
/****************************************************************************************************
*	DEFINITION: Private typedefs
****************************************************************************************************/
enum 
{
	SECRET_KEY_VERSION,
	SECRET_KEY_TVOUTRECOVER,
	SECRET_KEY_TVFORMATRECOVER,
	SECRET_KEY_SETREGIONCODE,
	SECRET_KEY_GETCHECKSUM,
	SECRET_KEY_FEVERSION,
#ifndef D_GINGER_I96
	SECRET_KEY_BOARDVERSION,
#endif
#ifdef D_GINGER_I96
    SECRET_KEY_CHIPID,
#endif // D_GINGER_I96
	MAX_SECRET_KEY
};

typedef BOOL (* SECRET_FUNC)(void);
typedef struct SECRET_KEY_TAG
{
	UINT16 			wKeyCnt;
	SECRET_FUNC		secret_op;
	UINT16			wUicc[];
}SECRET_KEY,*pSECRET_KEY;
typedef struct KEY_POOL_TAG
{
	UINT32	last_time;
	UINT16	last_uicc;
	UINT8	ucHead;
}KEY_POOL,*pKEY_POOL;

typedef struct{	
	UINT16			wUicc[SEQUENCE_KEY_LENGTH];
	UINT16			wUiop;//uiop
}SEQUENCE_KEY;

/****************************************************************************************************
*	DEFINITION: Public (global) variables
****************************************************************************************************/
/****************************************************************************************************
*	DEFINITION: Private (static) variables
****************************************************************************************************/
static KEY_POOL __RAMTYPE key_pool;
#ifdef D_GINGER_I96
static KEY_POOL_CODE __RAMTYPE kpKeepKeyPoolCode[KEYPOOL_DEPTH];
#endif //D_GINGER_I96
static BOOL SECRET_GetVersion(void);
#ifndef D_GINGER_I86
static BOOL SECRET_GetChipID(void);
#endif
static BOOL SECRET_TVoutRecover(void);
static BOOL SECRET_TVformat_Recover(void);
static BOOL SECRET_SetRegionCode(void);
static BOOL SECRET_GetChecksum(void);
static BOOL SECRET_GetFEVersion(void);//Mars 10/20/2005
#ifndef D_GINGER_I96
static BOOL SECRET_GetBoardVersion(void);//Mars 10/20/2005
#endif

STATIC CONST SECRET_KEY secret_key_version = {3, SECRET_GetVersion, {UICC_1,UICC_6,UICC_4}};
STATIC CONST SECRET_KEY secret_key_tvoutrecover = {3, SECRET_TVoutRecover, {UICC_EJECT,UICC_LEFT,UICC_MUTE}};
STATIC CONST SECRET_KEY secret_key_tvformatrecover = {3, SECRET_TVformat_Recover, {UICC_EJECT,UICC_LEFT,UICC_SUBTITLE}};
STATIC CONST SECRET_KEY secret_key_setregioncode = {5, SECRET_SetRegionCode, {UICC_9,UICC_9,UICC_9,UICC_9,SECRET_WILDCARD}};
STATIC CONST SECRET_KEY secret_key_getchecksum = {4, SECRET_GetChecksum, {UICC_2,UICC_8,UICC_1,UICC_2}};
STATIC CONST SECRET_KEY secret_key_FEversion = {3, SECRET_GetFEVersion, {UICC_1,UICC_6,UICC_5}};
#ifndef D_GINGER_I96
STATIC CONST SECRET_KEY secret_key_Boardversion = {3, SECRET_GetBoardVersion, {UICC_1,UICC_6,UICC_6}};
#endif
#ifdef D_GINGER_I96
STATIC CONST SECRET_KEY secret_key_chipid = {3, SECRET_GetChipID, {UICC_1,UICC_9,UICC_6}};
#endif // D_GINGER_I96
	// TODO: add other SecretKey here and change the MAX_SECRET_KEY define
CONST pSECRET_KEY Secret_Key_Tab[MAX_SECRET_KEY] = {(CONST pSECRET_KEY)&secret_key_version,
													(CONST pSECRET_KEY)&secret_key_tvoutrecover,
													(CONST pSECRET_KEY)&secret_key_tvformatrecover,
													(CONST pSECRET_KEY)&secret_key_setregioncode,
													(CONST pSECRET_KEY)&secret_key_getchecksum,
													(CONST pSECRET_KEY)&secret_key_FEversion,
												#ifndef D_GINGER_I96
													(CONST pSECRET_KEY)&secret_key_Boardversion,
												#endif
                                                #ifndef D_GINGER_I86
                                                    (CONST pSECRET_KEY)&secret_key_chipid,
                                                #endif
													// TODO:Add other defined Secret Key here
													}; 

STATIC CONST SEQUENCE_KEY oSequenceKeyTable[] = {
	 {{UICC_A, UICC_0},		UIOP_REPEAT}
	,{{UICC_A, UICC_1},		UIOP_SHUFFLE}
 	,{{UICC_A, UICC_2},		UIOP_PROGRAM}
	,{{UICC_A, UICC_3},		UIOP_INTRO_PLAY}
	,{{UICC_A, UICC_4},		UIOP_PBC}
// <<< Ram.wang_1125_05: modify I86_AV_RECEIVER FUNCTION LIKE AS THOMSON
#ifdef D_I86_AV_RECEIVER
	,{{UICC_A, UICC_5},		UIOP_SOURCE}
#else
	,{{UICC_A, UICC_5},		UIOP_NONE}
#endif
// >>> Ram.wang_1125_05
#ifdef D_MULTI_CDDA_SHUFFLE_PLAY
	,{{UICC_A, UICC_6},		UIOP_MULTI_CDDA_SHUFFLE}
#else
	,{{UICC_A, UICC_6},		UIOP_NONE}
#endif
	,{{UICC_A, UICC_7},		UIOP_NONE}
	,{{UICC_A, UICC_8},		UIOP_NONE}
	,{{UICC_A, UICC_9},		UIOP_NONE}

	,{{UICC_C, UICC_0},		UIOP_TV_SYS}
	,{{UICC_C, UICC_1},		UIOP_VIDEO_OUTMODE}
#ifdef EZVIEW_ENABLED
	,{{UICC_C, UICC_2},		UIOP_EZVIEW}
#else
	,{{UICC_C, UICC_2},		UIOP_NONE}
#endif//#ifdef EZVIEW_ENABLED
	,{{UICC_C, UICC_3},		UIOP_MAESTROLINK}
	,{{UICC_C, UICC_4},		UIOP_JPEG_ROTATION}
	,{{UICC_C, UICC_5},		UIOP_MPP}
	,{{UICC_C, UICC_6},		UIOP_DD_EX}
	,{{UICC_C, UICC_7},		UIOP_MIC_ON_OFF}
	,{{UICC_C, UICC_8},		UIOP_VOLUME_UP}
	,{{UICC_C, UICC_9},		UIOP_VOLUME_DOWN}

	,{{UICC_D, UICC_0},		UIOP_10P}
#ifdef D_LCD_FLIP  
	,{{UICC_D, UICC_1},		UIOP_LCD_FLIP}
#else
	,{{UICC_D, UICC_1},		UIOP_NONE}
#endif 
#ifdef D_LCD_DISPLAY_MODE
 	,{{UICC_D, UICC_2},		UIOP_LCD_DISPLAY_MODE}
#else
 	,{{UICC_D, UICC_2},		UIOP_NONE}
#endif
	,{{UICC_D, UICC_3},		UIOP_NONE}
	,{{UICC_D, UICC_4},		UIOP_NONE}
	,{{UICC_D, UICC_5},		UIOP_NONE}
	,{{UICC_D, UICC_6},		UIOP_NONE}
	,{{UICC_D, UICC_7},		UIOP_NONE}
	,{{UICC_D, UICC_8},		UIOP_NONE}
	,{{UICC_D, UICC_9},		UIOP_NONE}

	,{{UICC_E, UICC_0},		UIOP_PLAY_PAUSE}
	,{{UICC_E, UICC_1},		UIOP_PAGE_UP}
	,{{UICC_E, UICC_2},		UIOP_PAGE_DOWN}
	,{{UICC_E, UICC_3},		UIOP_NEXT_INDEX}
	,{{UICC_E, UICC_4},		UIOP_PREV_INDEX}
	,{{UICC_E, UICC_5},		UIOP_NEXT_CHAPTER}
	,{{UICC_E, UICC_6},		UIOP_PREV_CHAPTER}
	,{{UICC_E, UICC_7},		UIOP_NONE}
	,{{UICC_E, UICC_8},		UIOP_NONE}
	,{{UICC_E, UICC_9},		UIOP_NONE}

	,{{UICC_F, UICC_0},		UIOP_NONE}
	,{{UICC_F, UICC_1},		UIOP_NONE}
 	,{{UICC_F, UICC_2},		UIOP_NONE}
	,{{UICC_F, UICC_3},		UIOP_NONE}
	,{{UICC_F, UICC_4},		UIOP_NONE}
	,{{UICC_F, UICC_5},		UIOP_NONE}
#ifdef FTA_SUPPORT											
	,{{UICC_F, UICC_6},		UIOP_FTA_TAB_EXIT}
#else	
	,{{UICC_F, UICC_6},		UIOP_NONE}
#endif
#ifdef FTA_SUPPORT
	,{{UICC_F, UICC_7},		UIOP_FTA_TAB_ADD}
#else
	,{{UICC_F, UICC_7},		UIOP_NONE}
#endif
#ifdef FTA_SUPPORT
	,{{UICC_F, UICC_8},		UIOP_FTA_TAB_DELETE}
#else
	,{{UICC_F, UICC_8},		UIOP_NONE}
#endif
	,{{UICC_F, UICC_9},		UIOP_NONE}


#if 0
#ifdef FTA_SATELLITE
	,{{UICC_F, UICC_6},		UIOP_FTA_TRANSPORT_TABLE}
#else  // FTA_SATELLITE
	,{{UICC_F, UICC_6},		UIOP_NONE}
#endif // FTA_SATELLITE
#ifdef FTA_SUPPORT
	,{{UICC_F, UICC_7},		UIOP_FTA_CHANNEL_TABLE}
#else  // FTA_SUPPORT
	,{{UICC_F, UICC_7},		UIOP_NONE}
#endif // FTA_SUPPORT
#if defined( FTA_SUPPORT ) && defined(FTA_SATELLITE)
	,{{UICC_F, UICC_8},		UIOP_CHNL_SCANNING}
#else // defined( FTA_SUPPORT ) && defined(FTA_SATELLITE) 
	,{{UICC_F, UICC_8},		UIOP_NONE}
#endif // defined( FTA_SUPPORT ) && defined(FTA_SATELLITE)
#ifdef FTA_SUPPORT
	,{{UICC_F, UICC_9},		UIOP_FTA_SELECTION}
#else
	,{{UICC_F, UICC_9},		UIOP_NONE}
#endif//#ifdef FTA_SUPPORT
#endif
	

	,{{UICC_G, UICC_0},		UIOP_BOOKMARK}
	,{{UICC_G, UICC_1},		UIOP_DEVICE_SWITCH}
#ifdef D_GUI_COMPONENT_BRIGHTNESS_EDGE_CONTROLLER
	,{{UICC_G, UICC_2},		UIOP_BRIGHTNESS_EDGE_CONTROL}
#else
	,{{UICC_G, UICC_2},		UIOP_NONE}
#endif//#ifdef D_GUI_COMPONENT_BRIGHTNESS_EDGE_CONTROLLER
	,{{UICC_G, UICC_3},		UIOP_DIGEST}
	,{{UICC_G, UICC_4},		UIOP_EQUALIZER}
	,{{UICC_G, UICC_5},		UIOP_SPECTRUM}
	,{{UICC_G, UICC_6},		UIOP_PROLOGIC}
	,{{UICC_G, UICC_7},		UIOP_BASS_MGR}
#ifdef D_ENABLE_MUSIC_MODE_SUPPORT
	,{{UICC_G, UICC_8},		UIOP_MUSIC_MODE}
#else
	,{{UICC_G, UICC_8},		UIOP_NONE}
#endif// D_ENABLE_MUSIC_MODE_SUPPORT
	,{{UICC_G, UICC_9},		UIOP_VOLUME}

};


/****************************************************************************************************
*	DECLARATION: Private (static) functions

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -