⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stpcheck.c

📁 手机8032的完整代码。吐血推荐。小做改动就可以生产。
💻 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 + -