📄 backdoor.c
字号:
#include "winav.h"#ifdef SUPPORT_STB#include "dvbcustm.h"#endif //SUPPORT_STB#include "gdi.h"#include "fontindex.h"#include "fontindex.h"#include "cc.h"#include "hal.h"#include "navigate.h"#include "osd.h"#include "osdnd.h"#include "menu.h"#include "mainmenu.h"#include "dvdsetup_op.h"#ifdef SUPPORT_STB#include "dvb_nim.h"#endif //SUPPORT_STB#define BACK_DOOR_DECLARE#include "storage.h"#include "dvdsetup.h"#ifdef SUPPORT_STB#include "..\\..\\OSDString\\strextrn.h"#else#include "OSDString\\strextrn.h"#endif //SUPPORT_STB#ifdef IMAGE_FRAME_SETUP#include "dmpcustm.h"#endif //IMAGE_FRAME_SETUP//Alan stb, add for backdoor#define BACKDOOR_DISPLAY_X 500#define BACKDOOR_DISPLAY_Y 5 #define BACKDOOR_DISPLAY_VERSION_START_V 40 #define BACKDOOR_DISPLAY_VERSION_START_H 30 #define VERSION_OFFSET 120#define BACKDOOR_DISPLAY_VERSION_START_H1 (BACKDOOR_DISPLAY_VERSION_START_H + 320) #ifndef CT950_STYLE#ifndef RELEASE_SETTINGBYTE _bBackDoor[] = {SETUP_BACK_DOOR_REGION, SETUP_BACK_DOOR_DEBUG_MODE}; #elseBYTE _bBackDoor[] = {SETUP_BACK_DOOR_DEBUG_MODE}; #endif#else //CT950_STYLEBYTE _bBackDoor[] = {SETUP_BACK_DOOR_DEBUG_MODE};#endifWORD aSTBFW[] = {3, CHAR_S, CHAR_T, CHAR_B};WORD aSTBNIM[] = {3, CHAR_N, CHAR_I, CHAR_M};DWORD _dwDebugMode;DWORD _dwBackupDebugMode;BYTE _bDebugIndex = 0;#define DEBUG_MODE_0 0x00000000#define DEBUG_MODE_1 0x00000011#define DEBUG_MODE_2 0x00000022#define DEBUG_MODE_3 0x00001100#define DEBUG_MODE_4 0x00001111#define DEBUG_MODE_5 0x00001122#define DEBUG_MODE_6 0x00002200#define DEBUG_MODE_7 0x00002211#define DEBUG_MODE_8 0x00002222#define DEBUG_MODE_9 0x00400222#define DEBUG_MODE_10 0x00400211#define DEBUG_MODE_11 0x00400200BYTE _bCARDPath, _bNIMPath;void _OutputAllSWVersion(void);void _OutputNumber(WORD wX, WORD wY, WORD wNum);BYTE _ConvertBackDoorRegionNum(BYTE bOriginalNum);//BYTE _GetDebugIndex(void);void _OutputVersion(DWORD dwVersion, BIT btFormat, PPARM_DRAW_STRING pVersion_StrAttr, PWORD pwVersionString);void _TranslateString(PBYTE pbAsciiString, PWORD pwString);void _OutputDebugInfo(void);WORD _TranslateNum(BYTE bNum);WORD* _TranslateDebugMode(BYTE bMode); BYTE _GetDebugIndex(DWORD dwMode);void _SetDebugMode(BYTE bIndex);void _GetUsefulDebugMode(BYTE bDIR);#ifndef SUPPORT_ATAPI_SOURCEextern BYTE SRVDBG_PCBNumber(void);extern BYTE SRVDBG_MotorDriver(void);extern BYTE SRVDBG_RFAmpChip(void);extern BYTE SRVDBG_MotorPower(void);#endifextern BYTE _bOSDLang;// ***************************************************************************// Function : BACKDOOR_ExitBackDoorControl// Description : Clean the flags and OSD// Arguments : none.// Return : None.// Side Effect :// ***************************************************************************void BACKDOOR_ExitBackDoorControl(void){ __bBackDoorSeqIndex = 0; _bDoBackDoor = FALSE; _bBackDoorIndex = 0;}void _ExitBackDoor(void){ //Draw the title#ifdef SUPPORT_STB#ifdef CT909P_IC_SYSTEM DVDSETUP_Recover();#else MAINMENU_DrawMainTitleBackground(__SetupInfo.bUIStyle - MENU_SYS_PREFERENCE_UI_STYLE_BEGIN); MAINMENU_DrawTitleString(aMENUMainMenu, NULL, NULL);#endif #else //SUPPORT_STB DVDSETUP_Recover();#endif //SUPPORT_STB //For back door BACKDOOR_ExitBackDoorControl();}void _OutputNumber(WORD wX, WORD wY, WORD wNum){ PARM_DRAW_STRING TitleStringAttr; PARM_RECT TitleRect; WORD TempStr[GDI_STRING_LENGTH]; BYTE bIndex;#ifdef SUPPORT_STB // Clear the region MAINMENU_DrawMainTitleBackground(__SetupInfo.bUIStyle - MENU_SYS_PREFERENCE_UI_STYLE_BEGIN); MAINMENU_DrawTitleString(aMENUMainMenu, aMENUGame, NULL);#endif //SUPPORT_STB TitleRect.rect.wLeft = wX; TitleRect.rect.wTop = 0; TitleRect.rect.wRight = TitleRect.rect.wLeft+48-1; TitleRect.rect.wBottom = TitleRect.rect.wTop+MAINMENU_TITLE_REGION_HEIGHT-1; MAINMENU_ClearMainTitleBackground(__SetupInfo.bUIStyle-SETUP_CUSTOM_UI_STYLE_BEGIN, &TitleRect); OSDUTL_PrepareOutputString(); OSDUTL_OutputNumFromIndex(wNum); for(bIndex = 0; bIndex <= __wOSDUTLStringBuf[0]; bIndex++) { TempStr[bIndex] = __wOSDUTLStringBuf[bIndex]; } MAINMENU_UseColorKey(&TitleStringAttr); TitleStringAttr.bTextColor = MAINMENU_PALETTE_ENTRY_TITLE_STRING_1ST; TitleStringAttr.wX = wX; TitleStringAttr.wY = wY; GDI_DrawString_909(0, &TitleStringAttr, TempStr);}BYTE BackDoor_ProcessKey(BYTE bKey){#ifndef SUPPORT_DMP BYTE bBackdoorValue;#endif //SUPPORT_DMP BYTE bReturnKey = bKey; if (KEY_NO_KEY == bKey) return bReturnKey; if (_bDoBackDoor == FALSE) { if (__bBackDoorSeqIndex == 0) { if (bKey == __bBackDoorSequence[__bBackDoorSeqIndex]) { __bBackDoorSeqIndex++; bReturnKey = KEY_NO_KEY; } } else if (__bBackDoorSeqIndex < BACK_DOOR_SEQUENCE_NUM) { if (bKey == __bBackDoorSequence[__bBackDoorSeqIndex]) { __bBackDoorSeqIndex++; bReturnKey = KEY_NO_KEY; } else { __bBackDoorSeqIndex = 0; } if (__bBackDoorSeqIndex == BACK_DOOR_SEQUENCE_NUM) { _bDoBackDoor = TRUE; #ifdef CT909P_IC_SYSTEM _bDebugSetMode = FALSE; _dwDebugMode = UTL_Get_DebugMode(); _bDebugIndex = _GetDebugIndex(_dwDebugMode); _dwBackupDebugMode = _dwDebugMode; MAINMENU_DrawMainContentBackground(); _OutputDebugInfo(); #endif // Set text color for back door case _OutputNumber(BACKDOOR_DISPLAY_X, BACKDOOR_DISPLAY_Y, 6000 + _bDebugIndex); bReturnKey = KEY_NO_KEY; } } return bReturnKey; } switch (bKey) { case KEY_MENU: case KEY_EXIT: if (TRUE == _bDoBackDoor) { _ExitBackDoor(); return KEY_NO_KEY; } break; case KEY_SETUP: if (TRUE == _bDoBackDoor) { _ExitBackDoor(); return KEY_NO_KEY; } else { return bKey; } break; case KEY_UP: _bBackDoorIndex--; if (_bBackDoorIndex == 0xff) _bBackDoorIndex = TOTAL_BACK_DOOR_NUM - 1;#ifdef CT909P_IC_SYSTEM if (SETUP_BACK_DOOR_DEBUG_MODE == _bBackDoor[_bBackDoorIndex]) { _bDebugSetMode = FALSE; _dwDebugMode = UTL_Get_DebugMode(); _bDebugIndex = _GetDebugIndex(_dwDebugMode); _dwBackupDebugMode = _dwDebugMode; MAINMENU_DrawMainContentBackground(); _OutputDebugInfo(); } else { _DVDSETUP_DrawAllUI(); _OutputNumber(BACKDOOR_DISPLAY_X, BACKDOOR_DISPLAY_Y, 6000 + _bDebugIndex); }#endif break; case KEY_DOWN: _bBackDoorIndex++; if (_bBackDoorIndex >= TOTAL_BACK_DOOR_NUM) _bBackDoorIndex = 0;#ifdef CT909P_IC_SYSTEM if (SETUP_BACK_DOOR_DEBUG_MODE == _bBackDoor[_bBackDoorIndex]) { _bDebugSetMode = FALSE; _dwDebugMode = UTL_Get_DebugMode(); _bDebugIndex = _GetDebugIndex(_dwDebugMode); _dwBackupDebugMode = _dwDebugMode; MAINMENU_DrawMainContentBackground(); _OutputDebugInfo(); } else { _DVDSETUP_DrawAllUI(); _OutputNumber(BACKDOOR_DISPLAY_X, BACKDOOR_DISPLAY_Y, 6000 + _bDebugIndex); }#endif break; case KEY_LEFT: if (SETUP_BACK_DOOR_REGION == _bBackDoor[_bBackDoorIndex]) { _bBackDoorRegion--; if (_bBackDoorRegion == 0xFF) _bBackDoorRegion = SETUP_REGION_NUM - 1; } else if (SETUP_BACK_DOOR_DEBUG_MODE == _bBackDoor[_bBackDoorIndex]) {/* _bDebugIndex = _GetDebugIndex(); if (0 == _bDebugIndex) { _bDebugIndex = MAX_DBG_MODE - 1; } else { _bDebugIndex--; } __bDebugMode = aDebugMode[_bDebugIndex]; UTL_Config_DebugMode(UTL_DBG_SET);*/#ifdef CT909P_IC_SYSTEM _bDebugSetMode = TRUE; _dwDebugMode = UTL_Get_DebugMode(); _bDebugIndex = _GetDebugIndex(_dwDebugMode); _GetUsefulDebugMode(FALSE); _SetDebugMode(_bDebugIndex); UTL_Config_DebugMode(UTL_DBG_SET,_dwDebugMode); MAINMENU_DrawMainContentBackground(); _OutputDebugInfo(); #endif } DVDSETUP_SaveDataToSetupInfo(_bBackDoor[_bBackDoorIndex]); break; case KEY_RIGHT: if (SETUP_BACK_DOOR_REGION == _bBackDoor[_bBackDoorIndex]) { _bBackDoorRegion++; if (_bBackDoorRegion == SETUP_REGION_NUM) _bBackDoorRegion = 0; } else if (SETUP_BACK_DOOR_DEBUG_MODE == _bBackDoor[_bBackDoorIndex]) {/* _bDebugIndex = _GetDebugIndex(); _bDebugIndex++; if (MAX_DBG_MODE == _bDebugIndex) { _bDebugIndex = 0; } __bDebugMode = aDebugMode[_bDebugIndex]; UTL_Config_DebugMode(UTL_DBG_SET);*/ #ifdef CT909P_IC_SYSTEM _bDebugSetMode = TRUE; _dwDebugMode = UTL_Get_DebugMode(); _bDebugIndex = _GetDebugIndex(_dwDebugMode); _GetUsefulDebugMode(TRUE); _SetDebugMode(_bDebugIndex); UTL_Config_DebugMode(UTL_DBG_SET,_dwDebugMode); MAINMENU_DrawMainContentBackground(); _OutputDebugInfo(); #endif } DVDSETUP_SaveDataToSetupInfo(_bBackDoor[_bBackDoorIndex]); break; // LLY2.78b-3, merge all action to display desired version within backdoor // [1] KEY_MUTE: Customer S/W version (maybe different to our F/W version) // [2] KEY_PAUSE: ATAPI servo code version // [3] KEY_ZOOM: Real F/W version case KEY_MUTE: case KEY_ZOOM: // Brian2.79, use KEY_ZOOM instead //KEY_ZOOM if (_bDoBackDoor) { MAINMENU_DrawMainContentBackground(); _OutputAllSWVersion();#ifdef SUPPORT_STB OS_DelayTime(COUNT_5_SEC); //CoCo1.20, reduce code size // Brian1.11b, move to here //CoCo1.11a, for backdoor#ifdef CT909P_IC_SYSTEM if (SETUP_BACK_DOOR_DEBUG_MODE == _bBackDoor[_bBackDoorIndex]) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -