/**************************************************************************** * NAME: App_Debug.c *---------------------------------------------------------------------------- * Copyright (c) DIGITAL STREAM Technology Inc. *---------------------------------------------------------------------------- * CREATED_BY: Do Gon Lee * CREATION_DATE: 2009/08/28 * $Author: foxhunt $ * $Revision: 1.0 $ * $Date: 2009/08/28 10:47:19 $ *---------------------------------------------------------------------------- * PURPOSE: * - *****************************************************************************/ /*_____ I N C L U D E __________________________________________*/ #include "App_Main.h" #include "App_Fnc_NvRam.h" #include "App_Version.h" #include "App_Res_Resources.h" #include "DMG_Menu.h" #include "DMW_ChannelAPI.h" #include "DMW_EpgInterface.h" #include "DMW_SysTime.h" #include "DMW_Mutex.h" /* register mutex symbols. */ /*_____ D E F I N I T I O N ____________________________________*/ DHL_MODULE("@dbg", 0); #if COMMENT ____Config____(){} #endif #define MY_SYM_ENTRY(shortcut, fn) { #shortcut, (void *)fn, DHL_SYM_FN, } #if COMMENT ____Types____(){} #endif #if COMMENT ____Variables____(){} #endif int g_Trace_AppMain = 1; /*_____ F U N C T I O N ________________________________________*/ #if COMMENT ____Function____(){} #endif BOOL AppCheckPrintable(void) { return g_Trace_AppMain ? TRUE : FALSE; } /****************************************************************************************** FUNCTION: - App_PrintTextMessageBox2 Purpose: - ¿©·¯¶óÀÎ ¸Þ½ÃÁö Ãâ·Â Noet: cafrii 060621, add debug utils.. ******************************************************************************************/ void App_PrintTextMessageBox2(int n_msg, char **msglist, int width) { /* widthÀÇ ÃÖ´ë ±æÀÌ´Â 78. ¾çÂÊ side¸¦ Æ÷ÇÔÇØ¼­ ÃÖ´ë 80À¸·Î ¸ÂÃß±â À§ÇÔ. */ int spacelen, msglen, spaceodd; char bufline[80], bufspace[40]; char *msg; int i; if (msglist == NULL) return; width = min(78, width); /* width´Â ¾çÂÊ side bar¸¦ Á¦¿ÜÇÑ ½ÇÁ¦ ¹®ÀÚ¿­ Ãâ·Â °¡´ÉÇÑ °ø°£ÀÇ ÆøÀÌ´Ù. */ if (width < 1) width = 1; memset(bufline, '-', width); bufline[width] = 0; DHL_OS_Printf("+%s+\n", bufline); for (i=0; i width) { /* ¿øº» ¹®ÀÚ¿­¿¡¼­ ÀϺΰ¡ À߸° °æ¿ì truncate Ç¥½Ã.. */ bufline[width-1] = '.'; if (width >= 2) bufline[width-2] = '.'; } /* buflineÀº Áغñ ¿Ï·á. ÃÖ´ë±æÀÌ: width */ if (msglen > width) { spacelen = spaceodd = 0; } else { spacelen = (width - msglen)/2; /* oddÀÏ °æ¿ì °ø°£ 1°³ ºÎÁ·ÇÔ. ³ªÁß¿¡ º¸Ãæ. */ spaceodd = (width - msglen)&1; /* Â¥Åõ¸® ÇѱÛÀÚ °ø°£ */ } memset(bufspace, ' ', spacelen); bufspace[spacelen] = 0; /* bufspace Áغñ ¿Ï·á. ±æÀÌ´Â space. */ DHL_OS_Printf("|%s%s%s%s|\n", bufspace, bufline, bufspace, spaceodd ? " " : ""); } memset(bufline, '-', width); bufline[width] = 0; DHL_OS_Printf("+%s+\n", bufline); } /****************************************************************************************** FUNCTION: - App_PrintTextMessageBox Purpose: - ÇÑ ¶óÀÎ ¸Þ½ÃÁö Ãâ·Â. ******************************************************************************************/ void App_PrintTextMessageBox(char *msg, int width) { App_PrintTextMessageBox2(1, &msg, width); } #if COMMENT ____SignalCheck____(){} #endif #if 1//BKTEMP APP_PORTING /* Driver */ void sigstr() { int r1,r2,r3,r4,r5,r6,r7,r8; UINT32 lock,str,ser1,ser10,snr1000, quality, meter, ddmsnr; #if APP_PORTING r1 = DHL_FE_GetSignalStatus(TUNER_FAT, SIGNAL_LOCK, &lock); r2 = DHL_FE_GetSignalStatus(TUNER_FAT, SIGNAL_STRENGTH, &str); r3 = DHL_FE_GetSignalStatus(TUNER_FAT, SIGNAL_SER_1SEC, &ser1); r4 = DHL_FE_GetSignalStatus(TUNER_FAT, SIGNAL_SER_10SEC, &ser10); r5 = DHL_FE_GetSignalStatus(TUNER_FAT, SIGNAL_SNR2, &snr1000); r6 = DHL_FE_GetSignalStatus(TUNER_FAT, SIGNAL_QUALITY, &quality); r7 = DHL_FE_GetSignalStatus(TUNER_FAT, SIGNAL_METER, &meter); r8 = DHL_FE_GetSignalStatus(TUNER_FAT, SIGNAL_DDM10_SNR, &ddmsnr); #endif /* #if APP_PORTING */ DHL_OS_Printf("Signal lock %d, Strength %d, SER1 %d, SER10 %d, SNR %.3f\n", lock, str, ser1, ser10, (float)(snr1000/1000.)); DHL_OS_Printf("Signal quality %d, meter %.3f, DDM SNR %.3f\n", quality, (float)(meter/1000.), (float)(ddmsnr/1000.)); } void sigtune(int rf, int mod) { int err; DHL_OS_Printf("tuning.. (rf %d, mod %d)\n", rf, mod); err = DMW_HAL_TunerSetChannel(rf, (tDHL_Demod)mod, 0, FREQTUNE_FIXED, NULL); if (err) DHL_OS_Printf("!! tuning to rf %d err %d\n", rf, err); else DHL_OS_Printf(" tune %d (mod %d) ok..\n", rf, mod); } void sigreset(int ms) { #if 1 /* CB2¿¡´Â tuner/demod resetÀÌ ¾øÀ½. sw reset ÇÊ¿äÇÔ. */ #else DHL_SYS_SetGPIO(9); DHL_OS_Delay(ms); DHL_SYS_ResetGPIO(9); DHL_OS_Delay(ms); DHL_SYS_SetGPIO(9); DHL_OS_Delay(ms); DHL_OS_Printf("sigreset (tick %d) completed\n", tick); #endif // #if 1 } #endif // #if APP_PORTING #if COMMENT ____Utils____(){} #endif /* cafrii 050819 add */ void selfdie(UINT32 addr) { *(UINT8 *)(addr) = 0; } void reboot(int mode) { App_NVM_Sync(); DMW_CDB_WaitForNvRamSyncDone(); #if APP_PORTING DHL_SYS_SystemCommand(DHL_SYS_RESET, mode); #endif } #if APP_PORTING /****************************************************************************************** FUNCTION: - show_info Purpose: - show variety information : sw version, device info, etc.. Noet: cafrii 070725 add ******************************************************************************************/ void show_info(void) { char buf[2][80]; char *buflist[2] = { buf[0], buf[1], }; DHL_SYS_Info sys_info; char t_vendor[30] = {0, }; char f_vendor[40], f_device[40]; DHL_SYS_GetInfo(&sys_info); #if APP_PORTING sprintf(buf[0], " SW: %s(%d) %s %s %s %s", MODEL_NAME, SUBMODEL_ID, App_GetSwVersion(), App_GetBuildNumber(), App_GetBuildDateString(), App_GetBuildTimeString()); #else sprintf(buf[0], " SW: %s %s %s %s %s", MODEL_NAME, App_GetSwVersion(), App_GetBuildNumber(), App_GetBuildDateString(), App_GetBuildTimeString()); #endif /* #if APP_PORTING */ #if APP_PORTING DHL_FE_GetDeviceInfo(TUNER_FAT, FE_DEV_VENDOR_NAME, (UINT32 *)t_vendor); #endif /* #if APP_PORTING */ DHL_DEV_GetInfo(eDEV_INFO_VENDOR_NAME, (UINT32)f_vendor); DHL_DEV_GetInfo(eDEV_INFO_DEVICE_NAME, (UINT32)f_device); sprintf(buf[1], " HW: Board %u, Tuner %s, Flash %s %s", sys_info.board_verion, t_vendor, f_vendor, f_device); App_PrintTextMessageBox2(2, buflist, 60); } /****************************************************************************************** FUNCTION: - show_info Purpose: - °¢ Å×À̺íµéÀÇ Get/Print/Free Å×½ºÆ® ÇÔ¼ö. Noet: Monitor°¡ °É·Á ÀÖ´Â °æ¿ì¿¡´Â download°¡ ¾ÈµÉ ¼ö ÀÖÀ½. ******************************************************************************************/ void TestGetEit(int pid, int sid, int waitSeconds) { STATUS err; eitPtr_t eit; if (waitSeconds == 0) waitSeconds = 10; err = Dmc_GetEit(DHL_DMX_GetTsd(), pid, sid, &eit, waitSeconds*OS_GetTicksPerSecond(), NULL); if (err) { DHL_OS_Printf("!! eit (pid %x sid %x) get failed %d\n", err); return; } PrintEit(eit); DHL_OS_Printf("\n"); Dmc_PrintEit(eit, 8, NULL); Dmc_FreeAtscTable(&eit); } void TestGetEtt(int pid, UINT32 etmid, int waitSeconds) { STATUS err; ettSectionPtr_t ett; if (waitSeconds == 0) waitSeconds = 10; err = Dmc_GetEttSection(DHL_DMX_GetTsd(), pid, etmid, &ett, waitSeconds*OS_GetTicksPerSecond(), NULL); if (err) { DHL_OS_Printf("!! ett (pid %x etmid %x) get failed %d\n", err); return; } PrintEttSection(ett); DHL_OS_Printf("\n"); Dmc_PrintEtt(ett, 8); Dmc_FreeAtscTable(&ett); } #else void App_SWVer() { DHL_OS_Printf("-------------------------------------------------------\n"); DHL_OS_Printf(" Project : %s\n", App_GetPrjName()); DHL_OS_Printf(" SW Version : %s\n", App_GetSwVersion()); DHL_OS_Printf(" Build Date/Time : %s %s\n", __DATE__,__TIME__); DHL_OS_Printf("-------------------------------------------------------\n"); } #endif // #if APP_PORTING #if COMMENT ____RemoteControl____(){} #endif // cafrii 060616 // note! // for key simulation feature, do not use space // char *RCU_KEY_STR(UINT32 id) { return //id==APP_VK_CH_ADD?"CH_ADD": //id==APP_VK_CH_DEL?"CH_DEL": id==APP_VK_LEFT?"LEFT": id==APP_VK_RIGHT?"RIGHT": id==APP_VK_UP?"UP": id==APP_VK_DOWN?"DOWN": id==APP_VK_INFO?"INFO": id==APP_VK_CH_UP?"CH+": id==APP_VK_CH_DOWN?"CH-": id==APP_VK_VOL_UP?"VOL+": id==APP_VK_VOL_DOWN?"VOL-": id==APP_VK_SELECT?"OK": id==APP_VK_BACK?"BACK": id==APP_VK_MENU?"MENU": id==APP_VK_POWER_OFF?"POWER": id==APP_VK_1?"1": id==APP_VK_2?"2": id==APP_VK_3?"3": id==APP_VK_4?"4": id==APP_VK_5?"5": id==APP_VK_6?"6": id==APP_VK_7?"7": id==APP_VK_8?"8": id==APP_VK_9?"9": id==APP_VK_0?"0": id==APP_VK_MUTE?"MUTE": id==APP_VK_DOT?"DOT": //id==APP_VK_DRF?"DRF": id==APP_VK_EPG?"EPG": id==APP_VK_CC?"CC": id==APP_VK_ALANG?"ALANG": //id==APP_VK_SCREEN?"SCREEN": id==APP_VK_DMODE?"ZOOM": id==APP_VK_FAV?"FAV": id==APP_VK_STILL?"STILL": //id==APP_VK_EXIT?"EXIT": id==APP_VK_PREV_CH?"PREV_CH": //id==APP_VK_HELP?"HELP": id==APP_VK_SLEEP?"SLEEP": id==APP_VK_INFO?"INFO": //id==APP_VK_SRS_MODE?"SRS_MODE": id==APP_VK_SMART_PICTURE?"SMART_PICTURE": id==APP_VK_SMART_SOUND?"SMART_SOUND": //id==APP_VK_CH_BLOCK_EDIT?"CH_BLOCK_EDIT": //id==APP_VK_EXT_INPUT?"EXT_INPUT": id==APP_VK_AD?"ADT": "UNKNOWN" ; } // cafrii 060616 add for key simulation void SimulateRemoconKey(char *s) { UINT32 code; int i; char *name, input[20]; //COMM_PKT_INFO packet; // cafrii API »ç¿ëÀ¸·Î ´ëü.. // brute force search.. // UINT32 code_start = APP_VK_MIN; UINT32 code_end = APP_VK_MAX; if (s == NULL || s[0] == 0) { DHL_OS_Printf("-- key string help --\n"); for (code = code_start; code <= code_end; code++) { name = RCU_KEY_STR(code); if (name[0]=='U' && name[1]=='N' && name[2]=='K') continue; DHL_OS_Printf(" %08x %s\n", code, name); } DHL_OS_Printf("\n"); return; } strncpy(input, s, 19); input[19] = 0; for (i=0; i= 'a' && input[i] <= 'z') ? input[i]-'a'+'A' : input[i]; //memset(&packet, 0, sizeof(packet)); for (code = code_start; code <= code_end; code++) { name = RCU_KEY_STR(code); if (strstr(name, input)) // substringÀ¸·Î ¹ß°ß¸¸ µÇ¸é { DHL_OS_Printf("==> input '%s', simulate key '%s'\n", input, name); DMG_SetKeyInput(code); return; } } DHL_OS_Printf("!! no such key name '%s'\n", input); } void App_SimulateRcuKey(UINT32 key) { DMG_SetKeyInput(key); } void App_SimulateDigitKeys(char *str) { char *p = str; int i; for (i=0; *p && i<7; p++, i++) { if (*p >= '0' && *p <= '9') { printf("---- feed %c\n", *p); App_SimulateRcuKey(APP_VK_0 + (*p - '0')); } else if (*p == '.' || *p == '-') { printf("---- feed dot\n"); App_SimulateRcuKey(APP_VK_DOT); } else if (*p) { printf("---- feed OK\n"); App_SimulateRcuKey(APP_VK_SELECT); } } } #if COMMENT ____AgingTest____(){} #endif /****************************************************************************************** FUNCTION: - ChannelUpTest Purpose: - Channel Up againg test shell¿¡¼­ ÀÌ ¸í·ÉÀ» ½ÇÇàÇϸé shellÀÌ blocking µÇ¾î ¹ö¸®¹Ç·Î ¹Ýµå½Ã background ¸ðµå·Î ½ÇÇàÇØ¾ß ÇÑ´Ù. Shell> ChannelUpTest & Á» ´õ ´Ù¾çÇÑ ±â´ÉÀ» »ç¿ëÇÏ·Á¸é App_StartAgingTest ÇÔ¼ö¸¦ »ç¿ëÇÒ °Í. ******************************************************************************************/ void ChannelUpTest(BOOL bStop) { static UINT8 g_ChUpTestPeriod = 5; static UINT8 g_ChUpTestWorking; int count, sec; UINT32 msStart; if (1) { DHL_DBG_RegisterVarSymbol(DHL_VAR_SYM_ARGS(g_ChUpTestPeriod)); } if (bStop) { DHL_OS_Printf("Stop ch up test\n"); g_ChUpTestWorking = FALSE; return; } g_ChUpTestWorking = 1; count = 0; msStart = DHL_OS_GetMsCount(); while (g_ChUpTestWorking) { sec = (DHL_OS_GetMsCount() - msStart)/1000; DHL_OS_Printf("\n\n"); DHL_OS_Printf("----------------------------------------------------\n"); DHL_OS_Printf("[TEST] %d.. running %d:%02d \n", count++, sec/60, sec%60); DHL_OS_Printf("----------------------------------------------------\n"); App_SimulateRcuKey(APP_VK_CH_UP); DHL_OS_Delay(1000*g_ChUpTestPeriod); } DHL_OS_Printf("[TEST] test end\n"); } /****************************************************************************************** FUNCTION: - AudioTest Purpose: - audio stop/start test. usage is same as above two example. ******************************************************************************************/ void AudioTest(BOOL bStop) { static UINT8 s_AudioTestWorking; static UINT8 s_AudioTestPeriod100Ms = 5; int count, sec; UINT32 msStart; DHL_RESULT dhlResult; if (1) { DHL_DBG_RegisterVarSymbol(DHL_VAR_SYM_ARGS(s_AudioTestPeriod100Ms)); } if (bStop) { DHL_OS_Printf("Stop ch up test\n"); s_AudioTestWorking = FALSE; /* dhl_set_lgtrace(21, 0); // turn off ADEC log */ return; } /* dhl_set_lgtrace(21, 1); // enable ADEC log */ s_AudioTestWorking = 1; count = 0; msStart = DHL_OS_GetMsCount(); while (s_AudioTestWorking) { sec = (DHL_OS_GetMsCount() - msStart)/1000; DHL_OS_Printf("\n\n"); DHL_OS_Printf("----------------------------------------------------\n"); DHL_OS_Printf("[TEST] %d.. running %d:%02d \n", count++, sec/60, sec%60); DHL_OS_Printf("----------------------------------------------------\n"); /* this PID is for KBS */ dhlResult = DHL_AV_AudioStart(0x24, 0x21, eDHL_AUDIO_TYPE_AC3); if (dhlResult) break; DHL_AV_AudioStop(); DHL_OS_Delay(s_AudioTestPeriod100Ms*10); } DHL_OS_Printf("[TEST] test end\n"); } #if COMMENT ____RcuAgingTest____(){} #endif typedef struct { /* const char *cmd; */ int key; int count; int max_count; int interval; UINT32 ms_start; } AgingTestParam; AgingTestParam g_AgingTestParam; void App_StartAgingTest(int key, UINT32 count, int interval_sec); /****************************************************************************************** FUNCTION: - _TestFinalizeHandler Purpose: - ******************************************************************************************/ static void _TestFinalizeHandler(UINT32 nTimerID, UINT32 param) { printf("\n ***** finalize aging test..\n"); #if APP_PORTING DHL_SYS_EnableWatchdog(); #endif //App_SetRcuConfig(APP_RCU_SKIP_POWER_OFF, FALSE); } /****************************************************************************************** FUNCTION: - _AgingTestHandler Purpose: - ******************************************************************************************/ static void _AgingTestHandler(UINT32 nTimerID, UINT32 param) { AgingTestParam *p = (AgingTestParam *)param; printf("\n========== aging, key '%s', %d/%d ========\n", RCU_KEY_STR(p->key), p->count, p->max_count); #if 0 dhl_heap_status stat; os_heap_status(&stat); printf("heap: alloc %u(%u), free %u(%u)\n\n", stat.size_alloc, stat.num_alloc_chunk, stat.size_free, stat.num_free_chunk); #endif DMW_SYS_SetTimer(TIMER_ID_AGING_END, (p->interval+1)*1000, _TestFinalizeHandler, 0, TRUE); /* one shot timer */ App_SimulateRcuKey(p->key); p->count++; if (p->count >= p->max_count) /* stop test.. */ App_StartAgingTest(0, 0, 0); } /****************************************************************************************** FUNCTION: - App_StartAgingTest Purpose: - application aging test start function Shell> key // »ç¿ëÇÒ Å° ¹øÈ£¸¦ ±â¾ï. CHUPÀ» ÇÏ°í ½ÍÀ¸¸é 0À» ÁöÁ¤ÇÏ¸é µÊ. Shell> App_StartAgingTest key, 1000000, 3 // 3Ãʸ¶´Ù ÇØ´ç ۸¦ simulate. Shell> App_StartAgingTest // ÇöÀç ¼öÇàµÇ°í ÀÖ´Â aging test¸¦ Á¾·á. ******************************************************************************************/ void App_StartAgingTest(int key, UINT32 count, int interval_sec) { DMW_SYS_KillTimer(TIMER_ID_AGING_FIRST); DMW_SYS_KillTimer(TIMER_ID_AGING_CONT); if (interval_sec <= 0) interval_sec = 3; if (key == 0) { key = APP_VK_CH_UP; } printf("rcu key: %x\n", key); if (count > 0) { #if APP_PORTING DHL_SYS_DisableWatchdog(); #endif #if APP_PORTING // aging test µµÁß¿¡ ¸®¸ðÄÁ power off Ű ½ÅÈ£°¡ ¿ÀÀÔ·Â µÇ¾î Å×½ºÆ® ¸ÁÄ¡´Â °ÍÀ» ¹æÁö. // RCUÀÇ power off ۸¦ skip Çϴ Ư¼ö ¿É¼Ç »ç¿ë. App_SetRcuConfig(APP_RCU_SKIP_POWER_OFF, TRUE); #endif /* this will be resumed after some time. if aging test keep going, this will be delayed until test end. */ DMW_SYS_SetTimer(TIMER_ID_AGING_END, (interval_sec+2)*1000, _TestFinalizeHandler, 0, TRUE); /* one shot timer */ printf("aging test start. count %u, interval %d sec\n", count, interval_sec); g_AgingTestParam.ms_start = DHL_OS_GetMsCount(); g_AgingTestParam.key = key; g_AgingTestParam.count = 0; g_AgingTestParam.max_count = count; g_AgingTestParam.interval = interval_sec; DMW_SYS_SetTimer(TIMER_ID_AGING_FIRST, 0, // trigger now _AgingTestHandler, (UINT32)&g_AgingTestParam, TRUE); // one shot DMW_SYS_SetTimer(TIMER_ID_AGING_CONT, interval_sec*1000, _AgingTestHandler, (UINT32)&g_AgingTestParam, FALSE); // continuous } else { printf("\n======== aging test stopped\n\n"); printf("Usage: %s rcu_key count [interval_second]\n", __FUNCTION__); } } /****************************************************************************************** FUNCTION: - App_SetDebugLevel Purpose: - Set application debug level ******************************************************************************************/ void App_SetDebugLevel(int level) { #if APP_PORTING extern int g_Trace_DmcMain; extern int g_Trace_ChannelScan; extern BOOL g_Trace_bDmcPsiEvent; if (level) { DHL_OS_Printf("debug trace ON\n"); g_Trace_DmcMain = 4; g_Trace_ChannelScan = 4; g_Trace_bDmcPsiEvent = 1; g_Trace_AppMain = 1; DHL_DBG_SetModuleLevel("AV_P", 3); DHL_DBG_SetModuleLevel("@f_vid", 0); DHL_DBG_SetModuleLevel("@f_aud", 0); DHL_DBG_SetModuleLevel("@f_sim", 0); DHL_DBG_SetModuleLevel("@f_cht", 0); DHL_DBG_SetModuleLevel("@f_pod", 2); DHL_DBG_SetModuleLevel("@f_pwr", 2); DHL_DBG_SetModuleLevel("p_idl", 0); DHL_DBG_SetModuleLevel("GRP_M", 1); } else { DHL_OS_Printf("debug trace off\n"); g_Trace_DmcMain = 0; g_Trace_ChannelScan = 0; g_Trace_bDmcPsiEvent = 0; g_Trace_AppMain = 0; DHL_DBG_SetModuleLevel("AV_P", 0); DHL_DBG_SetModuleLevel("@f_vid", -1); DHL_DBG_SetModuleLevel("@f_aud", -1); DHL_DBG_SetModuleLevel("@f_sim", -1); DHL_DBG_SetModuleLevel("@f_cht", -1); DHL_DBG_SetModuleLevel("@f_pod", 0); DHL_DBG_SetModuleLevel("@f_pwr", 0); DHL_DBG_SetModuleLevel("p_idl", -1); DHL_DBG_SetModuleLevel("GRP_M", -1); } #endif } #if COMMENT ____Shell_Commands____(){} #endif static DHL_SymbolTable g_AppShellCommands[] = { MY_SYM_ENTRY(print_ver, App_PrintLogo), MY_SYM_ENTRY(debug, App_SetDebugLevel), /* ¸ðµç debug flag on/off */ MY_SYM_ENTRY(key, SimulateRemoconKey), MY_SYM_ENTRY(sigtune, sigtune), #if 0 MY_SYM_ENTRY(autoscan, App_StartAutoScan), MY_SYM_ENTRY(drf, App_StartAutoScan), MY_SYM_ENTRY(rf, App_StartAutoScan), MY_SYM_ENTRY(ch, App_ChTuneByDigitKey), MY_SYM_ENTRY(stop, App_ChTuneStopTV), MY_SYM_ENTRY(format, App_FormatNvRam), MY_SYM_ENTRY(print_param, App_PrintSysParam), MY_SYM_ENTRY(sigtune, sigtune), MY_SYM_ENTRY(sigstr, sigstr), MY_SYM_ENTRY(sigreset, sigreset), MY_SYM_ENTRY(siginit, siginit), MY_SYM_ENTRY(selfdie, selfdie), /* CC Test */ MY_SYM_ENTRY(ccstart, ccstart), MY_SYM_ENTRY(ccstop, ccstop), MY_SYM_ENTRY(Font_Test, Font_Test), MY_SYM_ENTRY(Screen_Clear, Screen_Clear), MY_SYM_ENTRY(App_ChangeResolution, App_ChangeResolution), #endif /* #if 0 */ }; /****************************************************************************************** FUNCTION: - App_InitDebug Purpose: - application debug initialize ******************************************************************************************/ void App_InitDebug(void) { #if 1 // APP_PORTING /* register MW debug symbols */ Dmc_RegisterChannelSymbols(); /* channeltask/av/tune/scan/util.c */ Dmc_RegisterChannelDemuxSymbols(); /* channeldemux.c */ DMW_HAL_RegisterChannelHalSymbols(); /* channelhal.c */ DMW_CDB_RegisterChannelUcmSymbols(); /* ucm.c */ DMW_CDB_RegisterChannelNvRamSymbols();/* channeldb.c nvram.c */ DMW_SYS_RegisterTimerSymbols(); /* systime.c */ DMW_RegisterSysTimeSymbols(); /* time.c */ DMW_RegisterMutexSymbols(); /* mutex.c */ Dmc_EpgRegisterEpgSymbols(); /* epgbase/debug/driver.c */ DMW_EPG_RegisterEpgIntfSymbols(); /* epgintf.c */ /* App_SetDebugLevel(1); */ #endif /* register App debug symbols */ DHL_DBG_RegisterSymbols(g_AppShellCommands, DHL_NUMSYMBOLS(g_AppShellCommands)); } /* end of file */