📄 dvd-player(mtk).txt
字号:
main()
void main(void)
{
#ifdef MANUFACTURE_BUNGLE
vCheckBungleType();
#endif
MDisableINT(); // disable all interrupt
_bErrCode = bReadDEC(RC_DISTA); // clear Decode Interrupt Status Register
_bErrCode = bReadBIM(BIM_RISCI); // clear RISC Interrupt status register
UnlockChip(); // Unlock Chip
WriteDEC(RW_BSTEST, 0);
#ifdef USE_VRAM2
WriteBIM(BIM_MAP, VRAM2);
#else
WriteBIM(BIM_MAP, 0);
#endif
// Power On XDATA test
PostXDATA();
GetInitState(); // determine system boot state
#ifdef PLAYER_POWERDOWN
if (fgIsSoftReset() == FALSE)
#endif
{
_bPlayerErrCode = PLAYER_ERR_NO_ERROR;
}
#ifdef PLAYER_POWERDOWN
if (_bPWRMode >= SV_PWR_STANDBY)
{
PowerDownResetHardware();
}
#endif // PLAYER_POWERDOWN
#ifdef TRACE_RESTART
#ifdef PLAYER_POWERDOWN
if (fgIsSoftReset() == FALSE)
#endif
{
XBYTE[XDATA_END_ADDR] = XBYTE[XDATA_END_ADDR] + 1;
}
#endif
SetDRAMType(); // set DRAM type and size
_fgRstCntrEn = TRUE;
// Power On DRAM test
PostDRAM();
// Reset Hardware -- RISC, Servor, Power-On Diag, ... etc
ResetHardware();
bStackTop = SP;
MainLoop();
// uncalled function
#ifdef TRAY_NOT_CONNECT
SRVTrayIn();
fgSRVTrayIsIn();
SRVTrayStop();
#endif
SRVPauseOff();
SRVSetDVDBookType(0);
#ifdef VCODAC_IN_DRAM
SRVWakeUpVCODAC();
#endif
#ifdef _PCM1604_
bDA1604Read(1);
#endif
#ifdef DRS232_DEBUG
#ifndef RS232_LOG_UI
DBGLogS("");
DBGLogB(1,2,3,4);
#endif
cDBGGetC();
#endif
#ifdef RISC_ICE_MODE
MoveRISCCode();
#endif
#if (defined(RISC_ICE_MODE) || defined(USE_FLASH_DMA))
fgMoveRISCDRAMCode(0);
#endif
vADACFormat(0);
#ifdef MTK_TVE
MVisionChangeType(0);
#endif
#ifndef PLAYER_POWERDOWN
vADACPower(0);
#if defined(MTK_ADAC)&&(defined(BOTH_INT_EXT_ADAC))
vIntADACPower(0);
#endif
TerminateUI();
SRVPowerDown(1);
SRVWakeUp();
#endif
#ifdef TOP_LOADER
SRVTrayIn();
#endif
#ifndef SUPPORT_CAPTURE_LOGO
FlashWriteLogo();
#endif
}
/************************************************************************
Function : void v(void)
Description : MAIN loop to polling and handle device event/status
Parameter : None
Return : None
************************************************************************/
void MainLoop(void)
{
SP = bStackTop;
MEnableINT(); // enable interrupt (if it was disabled by ReturnMain())
#ifdef RS232_LOG
DBGLogS("Enter MainLoop.\n");
#endif
/*=======================================================================*/
/*========================= IDE MAIN LOOP ===============================*/
/*=======================================================================*/
while (TRUE)
{
// Peripheral device service routine
PeriDevService();
/**** Channel decoder CMD PROCESS BEGINS HERE ****/
if (_fgCDVDCmd)
{
CDVDCmd();
}
if (_testbit_(_fgTimeout))
{
if ((_bEEvtCode != 0) && (_rUI.bState == UI_EEVT_HANDLE))
{
EventHandler(_bEEvtCode);
}
#if (!defined(TRAY_NOT_CONNECT) && !defined(TOP_LOADER))
#ifdef THOMSON_TRAY
// if ((fgTrayIsIn()) && (_bTrayStatus != TRAY_ST_MIDDLE))
// {
// _bPlayPostKey = IR_MANUAL_EJECT; // send pseudo IR key
// _bTrayStatus = TRAY_ST_MIDDLE;
// }
#else
if (fgTrayIsIn())
{
_bTrayStatus = TRAY_ST_IN;
}
else if (fgTrayIsOut())
{
_bTrayStatus = TRAY_ST_OUT;
}
else if (_bTrayStatus == TRAY_ST_OUT)
{
_bPlayPostKey = IR_MANUAL_EJECT; // send pseudo IR key
_bTrayStatus = TRAY_ST_MIDDLE;
}
#endif
#endif
// CHECK THE FEATURES ONLY AVAILABLE WHEN DISC RECOGNIZED
if (_bTotalSen)
{
// CHECK FOR PAUSE REQUIRED AND AVAILABLE
if (_fgPause)
{
if (_wPauseTimer >= SRV_PAUSE_TIME_OUT) // Pause After 2 Second
{
_fgPause = FALSE;
if (_fgSpinStatus)
{
if (!_fgDiskIsDVD)
{
#ifndef HIGH_SPEED_PAUSE
// Audio Disc : Remain Current Speed
&nbs
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -