📄 play_com.c
字号:
/**********************************************************************/
/*************** MTK CONFIDENTIAL & COPYRIGHTED ****************/
/*************** ****************/
/*************** $Modtime:: 08-05-22 13:39 $ ****************/
/*************** $Revision:: 1 $ ****************/
/*************** ****************/
/*************** Description : Play module for ****************/
/*************** non-disc dependant ****************/
/*************** key processing ****************/
/*************** ****************/
/*************** Company : MediaTek Inc. ****************/
/*************** Programmer : ****************/
/**********************************************************************/
#pragma NOAREGS
#include "general.h"
#include "..\..\procdef.h"
#include "../../custom/demo/fslist/flcomm.h" //0728
#include "..\..\..\common\dsp\dspshm.h"
#ifndef PLAYER_2_CHANNEL
#include "setupmn\stpadsp.h" /* for echo key, assume no back issue */
#endif
#ifdef MTK_TVE
#include "setupmn\stprisc.h" /* for component key */
#endif
#ifdef SUPPORT_ONEKEY_SWITCH_USB_MCR
extern xdata BYTE _bShareValUSB;
extern xdata BYTE _bShareValMCR;
BOOL _fgShowFlMnPageEnable;
#endif
#ifdef CANCEL_UPG_SWITCH_TO_DVD
extern BOOL _fgInUpgradeState;
#endif
#ifdef AUTO_SWITCH_USB_MCR2
void vAutoSwitchUSBMCR(void) large;
BOOL fgJudgeScrsavstatus(void) large;
BOOL fgJudgeUSBMCRExist(void) large;
BYTE xdata _bInswitchStateCnt = 0;
BYTE xdata _bSwitchUSBMCRFlag = 0;
BOOL _fgAutoSwitchEnable = TRUE;
#endif
#ifdef AUTO_SWITCH_USB_MCR
void vAutoSwitchUSBMCR(void) large;
void vSwtichtoDVD(void) large ;
void vSwtichtoUSB(void) large ;
void vSwtichtoMCR(void) large ;
BOOL vJudgeMCRExist(void) large ;
BOOL vJudgeUSBExist(void) large;
BOOL vJudgeScrsavstatus(void) large;
void vInitialSwitchFlag(void) large ;
BYTE xdata _bSwitchUSBMCRFlag = 0;
/**************************************
_bSwitchUSBMCRFlag STATE:
0: INIT STATE
0XE0: EMPTY CARD READER SWTICHING
0XF0: IN SWITCHING
0XF1: IN SWITCHING TO DVD
0X0F: SWITCH ABORT OR UNATTACH DEV
0XFF: SWITCH FINISH
0X1F: NO LONGER SWITCH
0X2F: PROHIBIT SWICH
***************************************/
BIT _fgSwitchtoUSBFlag = FALSE;
BIT _fgSwitchtoMCRFlag = FALSE;
BIT _fgSwitchtoDVDFlag = FALSE;
BIT _fgInFileMenuFlag ;
BYTE xdata _bInswitchStateCnt = 0;
BYTE xdata _bCurrentUSBMCR = 0;
/*********************************************
//the current device FLAG, high 4 bits for USB and low 4bits for MCR
_bCurrentUSBMCR:
0x00: NONE DEV
0x01: MS CARD
0x02: SD CARD
0x03: MMC CARD
0x10: USB1
0x20: USB2
0x30: USB3
0x40: USB4
0x50: USB5
0x60: USB6
0xF0: FOR EMPTY CARD READER AND UNIDENTIFIED USB
0x0F: FOR UNIDENTIFIED CARD
**********************************************/
extern BYTE xdata _CardReaderTimeCnt;
extern BYTE xdata _bCardReaderSwitchCnt ;
void vSwtichtoDVD(void) large
{
_bSwitchUSBMCRFlag = 0;
_bCurrentUSBMCR = 0;
_fgSwitchtoUSBFlag = FALSE;
_fgSwitchtoMCRFlag = FALSE;
_fgInFileMenuFlag = FALSE;
vSendUopCmd(UOP_CHG_DEV, SV_ASSIGN_DEV, SV_DEVID_CDVDROM, 0);
}
void vInitialSwitchFlag(void) large
{
_bSwitchUSBMCRFlag = 0;
_fgSwitchtoUSBFlag = FALSE;
_fgSwitchtoMCRFlag = FALSE;
_fgInFileMenuFlag = FALSE;
_bCurrentUSBMCR = 0;
}
BOOL vJudgeUSBExist(void) large
{
if(bSharedInfo(SI_USB_EXIST) == 0)
{
//add it for when there is one card in card reader,pop card should not switch to empty card reader one time.
if((bSharedInfo(SI_DEVICE_ID) >= SV_DEVID_USB_SLOT_1) && (bSharedInfo(SI_DEVICE_ID) <= SV_DEVID_USB_SLOT_6))
{
if(bSharedInfo(SI_EMD_ATTACH) == 0)
{
_fgSwitchtoDVDFlag = TRUE;
return (FALSE);
}
}
//add it for when there is one card in card reader,pop card should not switch to empty card reader one time.
if(vJudgeScrsavstatus())
{
return(TRUE);
}
_fgInFileMenuFlag = FALSE;
_fgSwitchtoUSBFlag =TRUE;
_fgSwitchtoMCRFlag =FALSE;
_fgSwitchtoDVDFlag = FALSE;
_bSwitchUSBMCRFlag = 0xF0;
//vOsdPosClear(OSD_POS_INIT);
//vOsdPosShow(OSD_POS_INIT, OSD_MSG_WAITING, OSD_NO_DISAPPEAR);
vSendUopCmd(UOP_CHG_DEV, SV_ASSIGN_DEV, SV_DEVID_USB_SLOT_1, 0);
return (TRUE);
}
return (FALSE);
}
void vSwtichtoUSB(void) large
{
_bSwitchUSBMCRFlag = 0xF0;
if ((bSharedInfo(SI_EMD_ATTACH) == 0))
{
if(_bInswitchStateCnt == 5)
{
_CardReaderTimeCnt = 0;
_bCardReaderSwitchCnt= 0;
vSendUopCmd(UOP_CHG_DEV, SV_ASSIGN_DEV, SV_DEVID_USB_SLOT_1, 0);
}
_bSwitchUSBMCRFlag = 0xE0; //0xE0 : the flag for Card reader.
_bCurrentUSBMCR = 0xF0;
}
else if ((bSharedInfo(SI_EMD_ATTACH)&0x01) != 0)
{
_bCurrentUSBMCR = 0x10; // USB 1 //0xf0 : the flag for Card reader.
}
else if((bSharedInfo(SI_EMD_ATTACH)&0x02) != 0)
{
_bCurrentUSBMCR = 0x20;//USB2
if (_fgInFileMenuFlag != TRUE)
vSendUopCmd(UOP_CHG_DEV, SV_ASSIGN_DEV, SV_DEVID_USB_SLOT_2, 0);
}
else if((bSharedInfo(SI_EMD_ATTACH)&0x04) != 0)
{
_bCurrentUSBMCR = 0x30;//USB3
if (_fgInFileMenuFlag != TRUE)
vSendUopCmd(UOP_CHG_DEV, SV_ASSIGN_DEV, SV_DEVID_USB_SLOT_3, 0);
}
else if((bSharedInfo(SI_EMD_ATTACH)&0x08) != 0)
{
_bCurrentUSBMCR = 0x40;//USB4
if (_fgInFileMenuFlag != TRUE)
vSendUopCmd(UOP_CHG_DEV, SV_ASSIGN_DEV, SV_DEVID_USB_SLOT_4, 0);
}
else if((bSharedInfo(SI_EMD_ATTACH)&0x10) != 0)
{
_bCurrentUSBMCR = 0x50;//USB5
if (_fgInFileMenuFlag != TRUE)
vSendUopCmd(UOP_CHG_DEV, SV_ASSIGN_DEV, SV_DEVID_USB_SLOT_5, 0);
}
else if((bSharedInfo(SI_EMD_ATTACH)&0x20) != 0)
{
_bCurrentUSBMCR = 0x60; //USB6
if (_fgInFileMenuFlag != TRUE)
vSendUopCmd(UOP_CHG_DEV, SV_ASSIGN_DEV, SV_DEVID_USB_SLOT_6, 0);
}
if ((bSharedInfo(SI_EMD_ATTACH) != 0))
{
_fgSwitchtoUSBFlag = FALSE;
}
}
#ifdef SUPPORT_MCR
BOOL vJudgeMCRExist(void) large
{
if(bSharedInfo(SI_MCR_EXIST) == 0)
{
if(vJudgeScrsavstatus())
{
return(TRUE);
}
_fgInFileMenuFlag = FALSE;
_fgSwitchtoMCRFlag = TRUE;
_fgSwitchtoUSBFlag = FALSE;
_fgSwitchtoDVDFlag = FALSE;
_bSwitchUSBMCRFlag = 0xF0;
//vOsdPosClear(OSD_POS_INIT);
//vOsdPosShow(OSD_POS_INIT, OSD_MSG_WAITING, OSD_NO_DISAPPEAR);
vSendUopCmd(UOP_CHG_DEV, SV_ASSIGN_DEV, SV_DEVID_MS_CARD, 0);
return (TRUE);
}
return (FALSE);
}
void vSwtichtoMCR(void) large
{
_bSwitchUSBMCRFlag = 0xF0;
switch (bSharedInfo(SI_MCR_ATTACH))
{
case 0x00:
if(_bInswitchStateCnt == 5)
{
_CardReaderTimeCnt = 0;
_bCardReaderSwitchCnt= 0;
vSendUopCmd(UOP_CHG_DEV, SV_ASSIGN_DEV, SV_DEVID_USB_SLOT_1, 0);
}
_bCurrentUSBMCR = 0x0F;
break;
case 0x01:
_bCurrentUSBMCR = 0x01;//MS CARD
break;
case 0x02:
_bCurrentUSBMCR = 0x02;//SD CARD
if (_fgInFileMenuFlag != TRUE)
vSendUopCmd(UOP_CHG_DEV, SV_ASSIGN_DEV, SV_DEVID_SD_CARD, 0);
break;
case 0x04:
_bCurrentUSBMCR = 0x03;//mmc card
if (_fgInFileMenuFlag != TRUE)
vSendUopCmd(UOP_CHG_DEV, SV_ASSIGN_DEV, SV_DEVID_SD_CARD, 0);
break;
default :
_bCurrentUSBMCR = 0x0F;
break;
}
if ((bSharedInfo(SI_MCR_ATTACH) != 0))
{
_fgSwitchtoMCRFlag = FALSE;
}
}
#endif
void vAutoSwitchUSBMCR(void) large
{
if(((_bSwitchUSBMCRFlag == 0)&&( bSharedInfo(SI_INIT_STATE) == SV_NO_DISC))||(_bSwitchUSBMCRFlag == 0x0F))
{
if(vJudgeUSBExist())
{
return;
}
#ifdef SUPPORT_MCR
else if (vJudgeMCRExist())
{
return ;
}
#endif
}
else if ((/*(bSharedInfo(SI_USB_EXIST) == 0)&&*/(_fgSwitchtoUSBFlag == TRUE))
&&(_bSwitchUSBMCRFlag != 0x1F)&&(_fgInFileMenuFlag != TRUE))
{
vSwtichtoUSB();
}
#ifdef SUPPORT_MCR
else if((/*(bSharedInfo(SI_MCR_EXIST) == 0)&&*/(_fgSwitchtoMCRFlag == TRUE))
&&(_bSwitchUSBMCRFlag != 0x1F)&&(_fgInFileMenuFlag != TRUE))
{
vSwtichtoMCR();
}
#endif
if (_bInswitchStateCnt >6)
{
if (((_bSwitchUSBMCRFlag == 0x1F)||((_bSwitchUSBMCRFlag == 0xF0)))
&&(((bSharedInfo(SI_USB_EXIST) != 0)&&((_bCurrentUSBMCR & 0xF0) !=0 ))
#ifdef SUPPORT_MCR
||((bSharedInfo(SI_MCR_EXIST) != 0)&&((_bCurrentUSBMCR & 0x0F) !=0 ))
#endif
))
{
if(vJudgeScrsavstatus())
{
return;
}
_bSwitchUSBMCRFlag = 0;
//if((bSharedInfo(SI_DEVICE_ID) != SV_DEVID_CDVDROM)&&(bSharedInfo(SI_INIT_STATE) == SV_NO_DISC))
if((bSharedInfo(SI_DEVICE_ID) != SV_DEVID_CDVDROM))// for PL00107971 PL00107970
{
vSwtichtoDVD();
//_bCurrentUSBMCR = 0;//add it for when there is one card in card reader,pop card should not switch to empty card reader one time.
}
}
}
if(( (_bSwitchUSBMCRFlag == 0x0F)
&&(bSharedInfo(SI_USB_EXIST) != 0)
#ifdef SUPPORT_MCR
&&(bSharedInfo(SI_MCR_EXIST) != 0)
#endif
)||( _fgSwitchtoDVDFlag == TRUE) ) //switch to DVD when no USB or MCR attached.
{
if(vJudgeScrsavstatus())
{
return;
}
vSwtichtoDVD();
if( _fgSwitchtoDVDFlag == TRUE)//add it for when there is one card in card reader,pop card should not switch to empty card reader one time.
{
_fgSwitchtoDVDFlag = FALSE;
_bSwitchUSBMCRFlag = 0x1F;
}
}
if ((bSharedInfo(SI_DEVICE_ID) == SV_DEVID_CDVDROM)&&(_bSwitchUSBMCRFlag == 0x1F))
{
if((bSharedInfo(SI_USB_EXIST) != 0)
#ifdef SUPPORT_MCR
&&(bSharedInfo(SI_MCR_EXIST) != 0)
#endif
)
{
vInitialSwitchFlag();
}
}
if ((_fgInFileMenuFlag != TRUE)&& (_bSwitchUSBMCRFlag == 0xF0)) // for sometime not switch toEMD successfully
{
_bInswitchStateCnt ++;
//wxm : 20 -> 50
/****************marked for keep consistent with manual switch, it will wait until switch successfully. *****/
/* if (_bInswitchStateCnt == 50) // counter switching to EMD ,if 20ms*30*10 time is over and it do not switch to object EMD successfully,switch to DVD
{
vOsdPosShow(OSD_POS_INIT, OSD_MSG_SWITCH_ERROR, OSD_NO_DISAPPEAR); //show MSG:" switch error" and then switch to DVD
}
if (_bInswitchStateCnt == 53)//wxm : 23 -> 53
{
vSwtichtoDVD();
_bInswitchStateCnt = 0;
_bSwitchUSBMCRFlag = 0x1F; //set the flag not to switch again.
}*/
}
else
{
_bInswitchStateCnt = 0;
}
}
BOOL vJudgeScrsavstatus(void) large
{
BYTE bScrsavetmp,bScrSaverSwitch;
if (fgIsScrSaverOn()) //if in screan save state, exit screan saver
{
bScrsavetmp=bEepromReadByte(SCR_SAVER_POSITION);
if ( bScrsavetmp == EV_ON)
{
_bIRKey0 = 0;
_fgIRKeyValid = TRUE;
return(TRUE);
}
}
return(FALSE);
}
#endif
#ifdef AUTO_SWITCH_USB_MCR2
BOOL fgJudgeScrsavstatus(void) large
{
BYTE bScrsavetmp,bScrSaverSwitch;
if (fgIsScrSaverOn()) //if in screan save state, exit screan saver
{
bScrsavetmp=bEepromReadByte(SCR_SAVER_POSITION);
if ( bScrsavetmp == EV_ON)
{
_bIRKey0 = IR_NUM0;
_fgIRKeyValid = TRUE;
return(TRUE);
}
}
return(FALSE);
}
BOOL fgJudgeUSBMCRExist(void) large
{
if((bSharedInfo(SI_USB_EXIST) == 0)
#ifdef SUPPORT_MCR
||(bSharedInfo(SI_MCR_EXIST) == 0)
#endif
)
{
if(fgJudgeScrsavstatus())
{
return(FALSE);
}
return (TRUE);
}
return (FALSE);
}
void vAutoSwitchUSBMCR(void) large
{
if((bSharedInfo(SI_DEVICE_ID) == SV_DEVID_CDVDROM)&&( bSharedInfo(SI_INIT_STATE) == SV_NO_DISC)
&&(_fgAutoSwitchEnable == TRUE)&&(_bSwitchUSBMCRFlag == 0))
{
if(fgJudgeUSBMCRExist())
{
fgSetPlayPostKey(IR_MUTE) ;
_fgAutoSwitchEnable = FALSE;
}
}
else if (_fgAutoSwitchEnable == FALSE)
{
_bInswitchStateCnt ++;
if (_bInswitchStateCnt == 5)
{
_bInswitchStateCnt = 0;
_fgAutoSwitchEnable = TRUE;
}
}
if ((bSharedInfo(SI_DEVICE_ID) == SV_DEVID_CDVDROM)&&(_bSwitchUSBMCRFlag != 0))
{
if(_bSwitchUSBMCRFlag == 0x1F)
{
if((bSharedInfo(SI_USB_EXIST) != 0)
#ifdef SUPPORT_MCR
||(bSharedInfo(SI_MCR_EXIST) == 0)
#endif
)
{
_bSwitchUSBMCRFlag = 0;
}
}
#ifdef SUPPORT_MCR
else if (_bSwitchUSBMCRFlag == 0x4F)
{
if((bSharedInfo(SI_USB_EXIST) == 0)
#ifdef SUPPORT_MCR
||(bSharedInfo(SI_MCR_EXIST) != 0)
#endif
)
{
_bSwitchUSBMCRFlag = 0;
}
}
#endif
}
/*else if((bSharedInfo(SI_DEVICE_ID) != SV_DEVID_CDVDROM)&&(_bSwitchUSBMCRFlag == 0x3F))//danvar070926
{
if(((bSharedInfo(SI_USB_EXIST) != 0)&&((bSharedInfo(SI_DEVICE_ID) >= SV_DEVID_USB_SLOT_1)
&&(bSharedInfo(SI_DEVICE_ID) <= SV_DEVID_USB_SLOT_6)))
#ifdef SUPPORT_MCR
||((bSharedInfo(SI_MCR_EXIST) != 0)&&((bSharedInfo(SI_DEVICE_ID) >= SV_DEVID_MS_CARD)
&&(bSharedInfo(SI_DEVICE_ID) <= SV_DEVID_SM_CARD)))
#endif
)
{
fgSetPlayPostKey(IR_MUTE) ;
_fgAutoSwitchEnable = FALSE;
}
}*/
}
#endif
void vDoEject(BYTE bMode) large
{
BYTE bState;
/* update OSD and VFD ASAP */
// let the icon and message show at the same time
vOsdSetSt(OSD_ST_BURST);
if (bMode & DO_CLOSE)
{
if (bSharedInfo(SI_DEVICE_ID) == SV_DEVID_CDVDROM) {
vOsdShowInitState(SV_TRAY_CLOSING);
VfdShowInitStatus(SV_TRAY_CLOSING);
}
}
else
{
if (bSharedInfo(SI_DEVICE_ID) == SV_DEVID_CDVDROM) {
vOsdShowInitState(SV_TRAY_OPENING);
VfdShowInitStatus(SV_TRAY_OPENING);
}
}
vOsdSetSt(OSD_ST_NML);
if (bMode & DO_OPEN_CLOSE_FORCE)
{
if (bMode & DO_CLOSE)
{
bState = SV_FORCE_CLOSE;
}
else
{
bState = SV_FORCE_OPEN;
}
}
else
{
bState = 0;
}
vSendUopCmd(UOP_OPEN_CLOSE, bState, 0, 0);
#ifdef SUPPORT_DEVMNG
if (bSharedInfo(SI_DEVICE_ID) == SV_DEVID_CDVDROM)
#endif
{
#ifdef PLAY_AUDIO_CLIP
/* note this must after UOP_OPEN_CLOSE but use the prevois state */
if (bMode & DO_OPEN_CLOSE_DING)
{
vSendUopCmd(UOP_AUDIO_CLIP, SV_ACLIP_FLASH, ACLIP_DING, 0);
}
#endif
}
}
// *********************************************************************
// Function : void vSetupMenuEnter(void)
// Description :
// Parameter : None
// Return : None
// *********************************************************************
#ifdef REAL_TIME_SAVE_FLASH_SHADOW
extern BYTE xdata _bStpInitTimer;
extern BYTE xdata _bPNSwitchTimer;
extern BYTE xdata _bFlashSaveTimer;
#endif
void vSetupMenuEnter(void) large
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -