📄 monitor.c
字号:
HAL_Reset(HAL_RESET_AUDIO); HAL_WriteAM(HAL_AM_PLAY_COMMAND, 1); HAL_Reset(HAL_RESET_VIDEO); HAL_PlayCommand(COMMAND_PLAY,0); CHIPS_OpenAudio(TRUE); HAL_ReadAM(HAL_AM_BIT_RATE, &_dwMONTemp1); // LLY2.35, give start and end time for UTL_PlayFromTime() since the API is updated UTL_PlayFromTime(__dwTimeNow+(75*5*(_dwMONJumpCnt+1)), __dwTimeEnd); } _MONITOR_CheckStageInitVars(6); _dwMONJumpCnt++; if (_dwMONJumpCnt > 5) _dwMONNextStage = RECOVER_STAGE_HW_RESET; else _dwMONNextStage = RECOVER_STAGE_JUMP_SECTOR; break; case RECOVER_STAGE_HW_RESET: PRINTF("\nR_S H/W Reset!"); _MONITOR_CheckStageInitVars(6); _dwMONNextStage = RECOVER_STAGE_RESET_SERVO; break; case RECOVER_STAGE_RESET_SERVO: PRINTF("\nR_S Reset Servo!"); _MONITOR_CheckStageInitVars(6); SrcFilter_Reset(TRUE); HAL_ControlParser(HAL_PARSER_STOP, 0); PARSER_Command(0, PARSER_CMD_START, 0); _dwMONNextStage = RECOVER_STAGE_NEXT_ITEM; break; case RECOVER_STAGE_NEXT_ITEM: PRINTF("\nR_S Next Item!"); // when Next don't allow, just enter menu#ifndef NO_DISC_MODE //CoCo2.37p if (__wDiscType & BOOK_DVD) { if ( !NV_Action ( ACTION_NEXT, (WORD)NULL) ) // don't allow next { // ** 2.76-TCHM; begin... // DVD-Title, 1/16(PBC) KEY_NEXT inhibit. Just go MENU_ROOT. If can't, do STOP. if ( __bNVPlayMode ) { if ( ! NV_MenuCall ( MENU_ROOT ) ) { // LLY2.37p, assign KEY_STOP from F/W // To avoid IR and F/W key conflict issue //__bISRKey= KEY_STOP; __bFWKey=KEY_STOP; } } else { // Non-NV mode, just jump to TT/CC= 1/1 NV_TitlePlay ( 1, 1 ); } // ** 2.76-TCHM; end... } } else#endif //#ifndef NO_DVD //CoCo2.37p { // ** TCH1.61-1; begin... If VCD 2.0 and PBC mode. Check the valid of LIST_NEXT // If invalid, let's to LINEAR mode#ifndef NO_DISC_MODE //++CoCo2.37p if ( __wDiscType & VCD_2_0 ) { if ( __btPBC ) { if ( ! VCD20_IsValid_Command ( LIST_NEXT ) ) { __bFWKey=KEY_PBC; break; } } }#endif //#ifndef NO_VCD20 //++CoCo2.37p __bFWKey=KEY_NEXT; } break; }#endif //#endif //}void MONITOR_InitialValue(void){ __dwMONRecoverStage = 0; // wyc1.02-909, initial it here. __bResetRecover = 0; _bMaxNextTimes = 0;}void MONITOR_Debug(void){ // ** TCH1.07; begin... DBG_Printf(DBG_THREAD_MONITOR, DBG_INFO_PRINTF, "\nCC PlayMode=%hx, PlayCmd=%hx; Playing %hx, %hx, %hx;", __bModePlay, __bModeCmd, __btPlaying, __btPause, __btPlayEnd );#ifndef NO_DISC_MODE //CoCo2.37p DBG_Printf(DBG_THREAD_MONITOR, DBG_INFO_PRINTF, "\nCC PBC %hx, NV %hx,", __btPBC, __bNVPlayMode );#endif //#ifndef NO_DVD //CoCo2.37p // ** TCH1.07; end... // wyc1.02a-909, re-arrange the printf message. DBG_Printf(DBG_THREAD_MONITOR, DBG_INFO_PRINTF,"\nR_S:%lx,play mode:%hx,A/V Rem:%lx, %lx",__dwMONRecoverStage,__btPlaying,_dwMONPreARemain,_dwMONPreVRemain); DBG_Printf(DBG_THREAD_MONITOR, DBG_INFO_PRINTF,"\nSE_Code:%lx, PPCnt:%lx, PTCnt:%lx",__dwSeqEndCode,_dwMONParPlayCnt,_dwMONParTotCnt);}// Micky2.17c#ifdef ENABLE_READ_AUDIO_REMvoid _MONITOR_ReadAudioRem(DWORD* pdata){ /* if (_bHALABuf2Def) { *pdata = ( (REG_MCU_A1REM+1) & 0xffffff ) *2; //DW } else { *pdata = 0; } *pdata += ( (REG_MCU_A0REM+1) & 0xffffff ) *2; //DW */ if (_bHALABuf2Def) { *pdata = MCU_A1_BS_BUF_REMAINDER; } else { *pdata = 0; } *pdata += MCU_A0_BS_BUF_REMAINDER; *pdata /= 4; // Unit DW}#endif //#ifdef ERROR_CONCEALvoid MONITOR_AlarmInit(void){ //Micky_PORTING_OSWRAP ALARM_INFO AlarmInfo; AlarmInfo.fpAlarmFunction = MONITOR_INTERRUPT; AlarmInfo.wEntryData = 0; AlarmInfo.dwInterval = SLICE_TICK; OS_InitialAlarm(&AlarmInfo);/* cyg_alarm_create(__ClockHandle, MONITOR_INTERRUPT, (cyg_addrword_t) NULL, &__AlarmHandle, &__AlarmObj); cyg_alarm_initialize(__AlarmHandle, cyg_current_time()+1, 2);*/ }//VOID MONITOR_INTERRUPT(cyg_handle_t alarmH, cyg_addrword_t data)// Micky2.17c, can't use data as parameterVOID MONITOR_INTERRUPT(HANDLE_T alarmH, WORD data1){ DBG_INT();// elmer2.37, move the watchdog mechanism to from CC to alarm#ifdef SUPPORT_WATCH_DOG if ((REG_PLAT_SYSTEM_CONFIGURATION1 & WATCHDOG_SINGAL_ENABLE)) { REG_PLAT_WATCHDOG = WATCHDOG_DOWN_COUNT_VALUE; }#endif if (!(OS_GetSysTimer() % COUNT_200_MSEC)) {#ifdef STACK_OVERFLOW_DETECTION _MONITOR_StackStatus();#endif#ifdef ERROR_CONCEAL#ifdef SUPPORT_STB if( __bChooseMedia == MEDIA_SELECT_STB) { MONITOR_CheckDVBHang(); } else#endif //SUPPORT_STB { MONITOR_CheckHang(); }#endif#ifdef SUPPORT_WATCH_DOG // elmer2.37, move the watchdog mechanism to from CC to alarm if (REG_SRAM_WATCHDOG != _dwWatchdogPrevCounter) { _dwWatchdogFailCount = 0; } else { _dwWatchdogFailCount++; if (_dwWatchdogFailCount >= (WATCHDOG_TIME_TO_ENABLE / COUNT_200_MSEC)) {#ifndef NO_DISC_MODE#ifdef SUPPORT_WATCHDOG_BURNIN // elmer2.78, support burn-in testing _bWatchdogData = 0x78; HAL_WriteStorage(SETUP_ADDR_WATCHDOG, &_bWatchdogData, EPROM_WATCHDOG_BYTE); HAL_WriteStorage(SETUP_ADDR_NVPLAYMODE, &__bNVPlayMode, EPROM_NVPLAYMODE_BYTE); HAL_WriteStorage(SETUP_ADDR_REPEATMODE, &__bRepeat, EPROM_REPEATMODE_BYTE);#endif#endif HAL_REORDER_BARRIER(); _dwWatchdogFailCount = 0; REG_PLAT_WATCHDOG = 0x000000; } } _dwWatchdogPrevCounter = REG_SRAM_WATCHDOG;#endif }}// elmer2.32#ifdef SUPPORT_NO_AUDIO_IO_MUTEvoid MONITOR_CheckMute(void){ DWORD dwTemp; if ( __btPlaying ) { _MONITOR_ReadAudioRem(&dwTemp); if (dwTemp < 0x100) return; if ( _MONITOR_CheckMuteStatus( )) { if (_bIOMuteMode == FALSE) { _bMuteCount++; //printf("Count = %lx\n", _bMuteCount); if (_bMuteCount == MUTE_THRESHOLD) { HAL_IOMute(TRUE); _bIOMuteMode = TRUE; _bMuteCount = 0; } } } else { if (_bIOMuteMode == TRUE) { HAL_IOMute(FALSE); _bIOMuteMode = FALSE; _bMuteCount = 0; } } } else { if (_bIOMuteMode == TRUE) { HAL_IOMute(FALSE); _bIOMuteMode = FALSE; _bMuteCount = 0; } }}BYTE _MONITOR_CheckMuteStatus(void){ int ignor_bits,left,right; ignor_bits=3+16; //total 32 bits for serial port output left=((int)REG_AIU_TXLMIX)>>ignor_bits; right=((int)REG_AIU_TXRMIX)>>ignor_bits; if(left<0) left=~left; if(right<0) right=~right; if( left | right ) return FALSE; else return TRUE;}#endif#ifdef STACK_OVERFLOW_DETECTIONWORD _MONITOR_StackStatus(VOID){ WORD wRet = MONITOR_STACK_ERROR_NONE; if (__cCTKDVDStack[0] != STACK_MAGIC_NUMBER) { wRet |= MONITOR_STACK_ERROR_CTKDVD; } if (__cDecStack[0] != STACK_MAGIC_NUMBER) { wRet |= MONITOR_STACK_ERROR_DECODER; } if (__cPARSERStack[0] != STACK_MAGIC_NUMBER) { wRet |= MONITOR_STACK_ERROR_PARSER; } if (__cInfoFilterStack[0] != STACK_MAGIC_NUMBER) { wRet |= MONITOR_STACK_ERROR_INFO; }#ifdef SUPPORT_ATAPI_SOURCE if (__cATAPIStack[0] != STACK_MAGIC_NUMBER) { wRet |= MONITOR_STACK_ERROR_ATAPI; }#endif#ifdef SUPPORT_USB_SOURCE if (__cUSBSRCStack[0] != STACK_MAGIC_NUMBER) { wRet |= MONITOR_STACK_ERROR_USBSRC; }#endif #ifdef SUPPORT_SERVO_SOURCE { extern char stack[2][4096]; if (stack[0][0] != STACK_MAGIC_NUMBER) { wRet |= MONITOR_STACK_ERROR_SERVO; } if (stack[1][0] != STACK_MAGIC_NUMBER) { wRet |= MONITOR_STACK_ERROR_SRV_BM; } }#endif if (wRet != MONITOR_STACK_ERROR_NONE) { DBG_Printf(DBG_THREAD_MONITOR, DBG_INFO_PRINTF,"Stack Overflow: %hx", wRet); } return wRet;}#endif//////////////////////////////////////////////////////////////////////// Protected function begin ...////////////////////////////////////////////////////////////////////////----------------------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -