📄 stpcheck.c
字号:
/**********************************************************************/
/*************** MTK CONFIDENTIAL & COPYRIGHTED ****************/
/*************** ****************/
/*************** $Modtime:: 08-05-22 13:39 $ ****************/
/*************** $Revision:: 1 $ ****************/
/*************** ****************/
/*************** Description : Setup Menu ****************/
/*************** ****************/
/*************** Company : MediaTek Inc. ****************/
/*************** Programmer : ****************/
/**********************************************************************/
#include "general.h"
#include "stpmain.h"
#include "stpmenu1.h"
#pragma NOAREGS
#ifdef SUPPORT_HDMI
static void vChkHDMI(void) large;
#endif //#ifdef SUPPORT_HDMI
// *********************************************************************
// Function : void vChkGen(void) large
// Description :
// Parameter : None
// Return : None
// *********************************************************************
static void vChkGen(void) large
{
BYTE bDefMode;
BYTE bInitState = bSharedInfo(SI_INIT_STATE);
BYTE bPbcState = bSharedInfo(SI_PBC_STATE);
bDefMode = bSharedInfo(SI_ASPECT_CHG_VALID);
if (bInitState == SV_DISC_IDENTIFIED)
{
switch(bPbcState)
{
case SV_STOP:
case SV_STOP_RESUME:
break;
default:
#if ((!defined(SETUP_PAUSE_PLAY)) && (!defined(SPDIF_MODE_CHANGE_MUTE)))
_wInvalid &= ~AUDIO_OUT_ITEM;
#endif
break;
}
}
#ifdef CHECK_TV_ASPECT_SET
if (fgIsDvdPlay())
{
if (bDefMode & SV_BLOCK_ON)
{
_wInvalid &= ~TV_ASPECT_ITEM;
}
}
#endif
#ifdef MP3_LYRICS_V2_SUPPORT
if (bSharedInfo(SI_MP3_KARA_DISC_TYPE) == SV_ID_MATCH)
{
_wInvalid &= ~TV_ASPECT_ITEM;
}
#endif
}
// *********************************************************************
// Function : void vCheckMain(void) large
// Description : preference page only enable in FULL stop mode
// Parameter : None
// Return : None
// *********************************************************************
static void vCheckMain(void) large
{
BYTE bPbcState = bSharedInfo(SI_PBC_STATE);
BYTE bInitState = bSharedInfo(SI_INIT_STATE);
switch (bInitState)
{
case SV_TRAY_OPENING:
case SV_TRAY_ERROR:
case SV_NO_DISC:
case SV_UNKNOWN_DISC:
// allowed
break;
case SV_DISC_IDENTIFIED:
// need to check
if ((bPbcState != SV_STOP) && (bPbcState != SV_PTL_ERR))
{
_wInvalid &= ~PREF_ITEM;
}
break;
case SV_LOADING_DISC:
case SV_TRAY_CLOSING:
default:
_wInvalid &= ~PREF_ITEM;
// not allowed
break;
}
}
// *********************************************************************
// Function : void vChkVdo(void) large
// Description :
// Parameter : None
// Return : None
// *********************************************************************
static void vChkVdo(void) large
{
#ifdef PSCAN_EN
BYTE bTvOut = bEepromReadByte(TV_COMP_POS);
BYTE bPScan = bEepromReadByte(TV_PSCAN_EN_POS);
BYTE bMode = bEepromReadByte(TV_PSCAN_MODE_POS);
#endif
#ifdef SUPPORT_HDMI
if(bEepromReadByte(HDMI_POS) == SV_ON)
{
_wInvalid &= ~(VDO_PSCAN_EN|VDO_COMP_MODE);
}
#endif //#ifdef SUPPORT_HDMI
#ifdef SUPPORT_CAPTURE_LOGO
if (fgIsLogoCaptureAllow() == FALSE)
{
_wInvalid &= ~LOGO_CAPTURE_ITEM;
}
#endif /* SUPPORT_CAPTURE_LOGO */
#ifdef SUPPORT_DRM
if (fgIsDiscReady(bSharedInfo(SI_INIT_STATE)) && fgIsDiscPlay(bSharedInfo(SI_PBC_STATE)))
{
_wInvalid &= ~DRM_REG_CODE_ITEM;
}
#endif
#ifdef PSCAN_EN
if ((bTvOut != SV_TVE_YCBCR) && (bTvOut != SV_TVE_RGB))
{
_wInvalid &= ~VDO_PSCAN_EN;
if (bTvOut != SV_TVE_VGA)
{
#ifndef PSCAN_SIMPLE_MENU
#ifdef PSCAN_SQUEEZE
_wInvalid &= ~(VDO_PSCAN_MODE | VDO_PSCAN_VIDEO | VDO_PSCAN_SQUEEZE);
#else
_wInvalid &= ~(VDO_PSCAN_MODE | VDO_PSCAN_VIDEO);
#endif
#endif
}
return;
}
if (bPScan != SV_ON)
{
#ifndef PSCAN_SIMPLE_MENU
#ifdef PSCAN_SQUEEZE
_wInvalid &= ~(VDO_PSCAN_MODE | VDO_PSCAN_VIDEO | VDO_PSCAN_SQUEEZE);
#else
_wInvalid &= ~(VDO_PSCAN_MODE | VDO_PSCAN_VIDEO);
#endif
#else
#ifdef PSCAN_SQUEEZE
_wInvalid &= ~(VDO_PSCAN_SQUEEZE);
#endif
#endif
}
#ifndef PSCAN_SIMPLE_MENU
if ((bMode != SV_PSCAN_AUTO) && (bMode != SV_PSCAN_VIDEO))
{
_wInvalid &= ~VDO_PSCAN_VIDEO;
}
#endif
#endif /* PSCAN_EN */
}
#ifdef PLAYER_51_CHANNEL
// *********************************************************************
// Function : void vChkAdo(void) large
// Description :
// Parameter : None
// Return : None
// *********************************************************************
void vChkAdo(void) large
{
BYTE bPbcState = bSharedInfo(SI_PBC_STATE);
BYTE bInitState = bSharedInfo(SI_INIT_STATE);
#define FNT_SPK_SZ 1
#define CNT_SPK_SZ 2
#define REAR_SPK_SZ 3
#ifdef MPEG_FNT_SUB_CHK
#define SUB_SPK_SZ 4
#endif
#ifdef DOLBY_PL2
#define DB_PROLOGIC 5
#ifdef SUPPORT_8M_AUDIO_EFFECT
#define REVERB_MODE 6
#define EQ_TYPE 7
#define TEST_MODE 8
#define DIALOG_GIAN 9
#else
#define TEST_MODE 6
#define DIALOG_GIAN 7
#endif
#else
#define TEST_MODE 5
#define DIALOG_GIAN 6
#endif
#ifdef MPEG_FNT_SUB_CHK
if(fgFlCheckStatus(FL_STATUS_IN_MPEG))
{
_wInvalid&=~((1<<FNT_SPK_SZ)|(1<<SUB_SPK_SZ));
}
#endif
if ((bEepromReadByte(SPEAKER_POSITION) == EV_DOWN_OFF)
#ifdef SPDIF_PCM_FORCE_DOWNMIX
&& (bEepromReadByte(IEC958_POSITION) != EV_PCM)
#endif
)
{
_wInvalid &= ~(1<<DIALOG_GIAN);
}
else // downmix on
{
_wInvalid &= ~((1<<CNT_SPK_SZ) | (1<<REAR_SPK_SZ) | (1<<TEST_MODE));
#ifdef SET_VSURR_IN_SPKCFG
if (bEepromReadByte(SPEAKER_POSITION) == EV_DOWN_VSURR)
{
_wInvalid &= ~(1<<DIALOG_GIAN);
}
#endif // SET_VSURR_IN_SPKCFG
}
#ifdef DOLBY_PL2
// We have the prologicII on, only when both of the conditions stands:
// 1. The adsp lib supports; (not 2 channel)
// 2. The DownMix was turned "off".
// Commented by Alfonso, 2005/09/20
if (//(bSharedInfo(SI_DSP_FEATURE) & SV_PROGIC_II) && // support 1.
(bEepromReadByte(SPEAKER_POSITION) == EV_DOWN_OFF)) // support 2.
{
_wInvalid |= (1<<DB_PROLOGIC);
}
else
{
_wInvalid &= ~(1<<DB_PROLOGIC);
}
#ifdef DDISC_FTYPE_WMA_SUPPORT // temp. added
if( bSharedInfo(SI_A_CODE_MODE) == SV_A_CODE_WMA)
{
_wInvalid |= (1<<DB_PROLOGIC);
}
#endif
#endif
// if SPDIF output is enabled, no test tone is allowed
#ifdef SPDIF_ON_NO_TEST_TONE
if (bEepromReadByte(IEC958_POSITION) != EV_AO_OFF)
{
_wInvalid &= ~(1<<TEST_MODE);
}
#endif
// not implement TEST tone
#ifdef SETUP_ENABLE_TEST_TONE
// note we can not enable test tone here
switch (bInitState)
{
case SV_TRAY_OPENING:
case SV_TRAY_ERROR:
case SV_NO_DISC:
case SV_UNKNOWN_DISC:
// allowed
break;
case SV_DISC_IDENTIFIED:
// need to check
// if ((bPbcState != SV_STOP) && (bPbcState != SV_STOP_RESUME))
{
_wInvalid &= ~(1<<TEST_MODE);
}
break;
case SV_LOADING_DISC:
case SV_TRAY_CLOSING:
default:
_wInvalid &= ~(1<<TEST_MODE);
// not allowed
break;
}
#else
_wInvalid &= ~(1<<TEST_MODE);
#endif
}
#endif /* #ifdef PLAYER_51_CHANNEL */
#ifdef SUPPORT_8M_AUDIO_EFFECT
#if (defined(PLAYER_SURROUND) || defined(DOLBY_PROLOGIC) || defined(DOLBY_PROLOGIC2))
// *********************************************************************
// Function : void vChk3D(void) large
// Description :
// Parameter : None
// Return : None
// *********************************************************************
void vChk3D(void) large
{
// ProLogic is not available for downmix mode
#ifndef PLAYER_2_CHANNEL
if (bEepromReadByte(SPEAKER_POSITION) != EV_DOWN_OFF)
{
#if (defined(DOLBY_PROLOGIC) || defined(DOLBY_PROLOGIC2))
_wInvalid &= ~(DDD_PROLOGIC);
#endif
}
#endif /* PLAYER_2_CHANNEL */
#if 1
// We have the prologicII on, only when both of the conditions stands:
// 1. The adsp lib supports; (not 2 channel)
// 2. The DownMix was turned "off".
// Commented by Alfonso, 2005/09/20
if (//(bSharedInfo(SI_DSP_FEATURE) & SV_PROGIC_II) && // support 1. //DANVAR070823
(bEepromReadByte(SPEAKER_POSITION) == EV_DOWN_OFF)) // support 2.
{
_wInvalid |= (DDD_PROLOGIC);
}
else
{
_wInvalid &= ~(DDD_PROLOGIC);
}
#else
// AlanCheng wanna make the PL2 option(in setup menu) be grayout, in run time, through the share info.
// by alfonso, 2005 0704.
{
BYTE bAllowPL2 = bSharedInfo(SI_PROLOGIC_II_SUPPORT);
if (bAllowPL2 == SV_OFF)
{
_wInvalid &= ~(DDD_PROLOGIC);
} else if (bAllowPL2 == SV_ON)
{
_wInvalid |= (DDD_PROLOGIC);
}
}
#endif
#ifdef CHK_PASSWD_VCD_EN
if (bEepromReadByte(VCD_PASSWRD_POSITION) == FALSE)
{
_wInvalid &= ~(0x01);
}
#endif
#ifdef DDISC_FTYPE_WMA_SUPPORT // temp. added
if( bSharedInfo(SI_A_CODE_MODE) == SV_A_CODE_WMA)
{
_wInvalid |= (DDD_PROLOGIC);
}
#endif
}
#endif // PLAYER_SURROUND || DOLBY_PROLOGIC || DOLBY_PROLOGIC2
#endif
// *********************************************************************
// Function : void vChkValid(BYTE bType) large
// Description :
// Parameter : None
// Return : None
// *********************************************************************
void vChkValid(BYTE bType) large
{
switch(bType)
{
case CHK_MAIN:
vCheckMain();
break;
case CHK_VDO:
vChkVdo();
break;
#ifdef PLAYER_51_CHANNEL
case CHK_ADO:
vChkAdo();
break;
#endif
case CHK_GENERAL:
vChkGen();
break;
#ifdef SUPPORT_8M_AUDIO_EFFECT
#if (defined(PLAYER_SURROUND) || defined(DOLBY_PROLOGIC) || defined(DOLBY_PROLOGIC2))//||defined(SUPPORT_8M_AUDIO_EFFECT))
case CHK_3D:
vChk3D();
break;
#endif
#endif
#ifdef SUPPORT_HDMI
case CHK_HDMI:
vChkHDMI();
break;
#endif //#ifdef SUPPORT_HDMI
default:
break;
}
}
#ifdef SUPPORT_HDMI
void vChkHDMI(void) large
{
if(bEepromReadByte(HDMI_POS) == EV_OFF)
{
_wInvalid &= ~(HDMI_RES_SWITCH|HDMI_HDCP_SWITCH|HDMI_VIDEO_SWITCH|HDMI_AUDIO_SWITCH|HDMI_SRC_SWITCH);
}
}
#endif //#ifdef SUPPORT_HDMI
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -