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

📄 stpcheck.c

📁 MTK portableDVD 采用mtk1389方案的代码
💻 C
字号:
/**********************************************************************/
/***************    MTK CONFIDENTIAL & COPYRIGHTED     ****************/
/***************                                       ****************/
/***************  $Modtime:: 03/09/10 5:51p    $       ****************/
/***************  $Revision: 2.0 $       ****************/
/***************   Description : Setup check valid     ****************/
/***************                 relative routine      ****************/
/***************                                       ****************/
/***************       Company : MediaTek Inc.         ****************/
/***************    Programmer : Peter Huang           ****************/
/**********************************************************************/

#include "general.h"
#include "stpmain.h"

#include "stpmenu.h"

#pragma NOAREGS




static void vCheckMain(void) large
{

  BYTE bPbcState = bSharedInfo(SI_PBC_STATE);
  BYTE bInitState = bSharedInfo(SI_INIT_STATE);

  //_wInvalid &= ~(01<<(MENU_INITIAL_SETUP - 1));

/*
  if (fgFlCheckStatus(FL_STATUS_IN_MENU))
  {
    _wInvalid &= ~(01<<(MENU_PLAYBACK - 1));
  }
*/

  switch (bInitState)
  {
    case SV_TRAY_OPENING:
    case SV_TRAY_ERROR:
    case SV_NO_DISC:
    case SV_UNKNOWN_DISC:
      // allowed
      break;
      
    case SV_LOADING_DISC:
    case SV_TRAY_CLOSING:
    case SV_DISC_IDENTIFIED:
      // need to check
      if ((bPbcState != SV_STOP) && (bPbcState != SV_PTL_ERR))
      {
        _wInvalid &= ~(01<<(MENU_INITIAL_SETUP - 1));
        _wInvalid &= ~(01<<(MENU_RESET_TO_DEFAULTS - 1));
        _wInvalid &= ~(01<<(MENU_PLAYBACK - 1));
      }
/*songchen 060331 add for check the busy condition, for example,jpg and mp3 is playing simultaneitily.although jpeg 
play over,but system is busying,si_pbc_state will be change to sv_stop,so must process "specially sv_stop" condition*/
      if (fgIsIsoPlay() || fgIsPcdPlay())
      {
        if((bSharedInfo(SI_JPG_SLIDE_SHOW_DONE) == JPEG_SLIDESHOW_FSH) && (fgFlCheckStatus(FL_STATUS_BUSY) == TRUE))			
        {
           /* if JPEG decoding, NOT allowed,and DON'T care the mpic or mp3. */
          _wInvalid &= ~(01<<(MENU_INITIAL_SETUP - 1));
          _wInvalid &= ~(01<<(MENU_RESET_TO_DEFAULTS - 1));
          _wInvalid &= ~(01<<(MENU_PLAYBACK - 1));
        }
      }
      break;

    default:
      // not allowed
      break;
  }

}





#if defined(PLAYER_KARAOKE) && defined(KARA_IN_SETUP)
static void vChkKok(void) large
{
  if(fgIsMute())
    _wInvalid &= ~(01<<(KARAOKE_MICROPHONE - 1));

}
#endif /* PLAYER_KARAOKE */


static void vCheckSoundMix(void) large
{
  BYTE bMixCfg = bEepromReadByte(SPEAKER_POSITION);
	BYTE bType = bEepromReadByte(IEC_MAX_FREQ_POSITION);
  switch(bMixCfg)
  {
    case EV_CFG_STEREO:
#ifdef STP_BALANCE
      _wInvalid &= ~(01<<(SOUND_MIX_BALANCE - 1));
#endif
#ifndef GUI_2_CHANNEL
      _wInvalid &= ~(01<<(SOUND_MIX_PRO_II - 1));
#endif
      break;
    case EV_DOWN_OFF:
     #ifndef GUI_2_CHANNEL
      _wInvalid &= ~(01<<(SOUND_MIX_SER_MIX - 1));
      _wInvalid &= ~(01<<(SOUND_MIX_SUR_MIX - 1));
     #endif
      break;
  }

#ifndef GUI_2_CHANNEL
  if(bEepromReadByte(IEC958_POSITION) == EV_PCM || 
		 bSharedInfo(SI_A_CODE_MODE) == SV_A_CODE_WMA ||
		 (bSharedInfo(SI_DISC_TYPE) == SV_DVD_AUDIO && (EV_192K == bType || EV_96K == bType))
		)
  {
    _wInvalid &= ~(01<<(SOUND_MIX_PRO_II - 1));
  }
#endif
}


static void vCheckSoundTone(void) large     //060321
{
  BYTE bCode = bSharedInfo(SI_A_CODE_MODE);
  BYTE bDisc = bSharedInfo(SI_DISC_TYPE);
  BYTE bType = bEepromReadByte(IEC_MAX_FREQ_POSITION);
  BYTE bIsoAType = bSharedInfo(SI_ISO_ITEM_TYPE) ;//billy[060410]
			
  if(bSharedInfo(SI_INIT_STATE) != SV_TRAY_OPENING && 
	(SV_A_CODE_DTS == bCode /* || SV_A_CODE_WMA == bCode  */  \
	||(SV_DVD_AUDIO == bDisc && (EV_192K == bType || EV_96K == bType)) )
    )  
  {
       _wInvalid &= ~(01<<(TUNING_EQ - 1));
	_wInvalid &= ~(01<<(TUNING_ECHO - 1));
	_wInvalid &= ~(01<<(TUNING_TUNE - 1));
  }

#ifdef SUPPORT_OGG//billy[060411]
if(SV_ISO_OGG == bIsoAType||bCode == SV_A_CODE_VORBIS)
  {
	_wInvalid &= ~(01<<(TUNING_TUNE - 1));
  }
#endif

}


static void vCheckLowBand(void) large
{
  BYTE bMixCfg = bEepromReadByte(SPEAKER_POSITION);


  switch(bMixCfg)
  {
    case EV_DOWN_OFF:
      break;
    default:
      _wInvalid &= ~(01<<LOW_BAND_C - 1);
      _wInvalid &= ~(01<<LOW_BAND_SR - 1);
      break;
  }
}



static void vCheckChDelay(void) large
{
  BYTE bMixCfg = bEepromReadByte(SPEAKER_POSITION);

  switch(bMixCfg)
  {
    case EV_DOWN_OFF:
      break;
    default:
      _wInvalid &= ~(01<<(CH_DELAY_C - 1));
      _wInvalid &= ~(01<<(CH_DELAY_SR - 1));
      break;
  }
}

static void vCheckImage(void) large
{
#ifdef PSCAN_EN   //billy[060508]  for no pscan  function 
  if(bEepromReadByte(TV_PSCAN_EN_POS) == SV_ON)
  {
    _wInvalid &= ~(01<<(IMAGE_VIDEO_OUTPUT - 1));
  }
#endif
}

static void vCheckChsVol(void) large
{
  BYTE bMixCfg = bEepromReadByte(SPEAKER_POSITION);

  switch(bMixCfg)
  {
    case EV_DOWN_OFF:
      break;
    default:
      _wInvalid &= ~(01<<(CH_VOL_SR_L - 1));
      _wInvalid &= ~(01<<(CH_VOL_SR_R - 1));
      _wInvalid &= ~(01<<(CH_VOL_CNT - 1));
      break;
  }
}






static void vCheckPlayback(void) large
{
  BYTE bPlayDataD = bEepromReadByte(DATA_DISC_PLAY_POS);

  switch(bPlayDataD)
  {
    case EV_NO_TYPE_FILE:
    case EV_AUDIO_FILE:
    case EV_VIDEO_FILE:
		case EV_AU_VD_FILE:
      _wInvalid &= ~(01<<(PLAYBACK_JPEG_LOADING - 1));
      break;
  }
}



static void vCheckLanguage(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_LOADING_DISC:
    case SV_TRAY_CLOSING:
    case SV_DISC_IDENTIFIED:
      // need to check
      if ((bPbcState != SV_STOP) && (bPbcState != SV_PTL_ERR))
      {
        _wInvalid &= ~(01<<(LANGUAGE_DVD_MENU - 1));
        _wInvalid &= ~(01<<(LANGUAGE_SOUNDTRACK - 1));
        _wInvalid &= ~(01<<(LANGUAGE_SUBTITLES - 1));
	#ifdef RUSSIAN_BUYER_SPECIAL2		//songchen 061205
	   if( !fgIsIsoPlay())		/*fjw*/
	   {
		 _wInvalid &= ~(01<<(LANGUAGE_MP4SUBTITLES - 1));
	   }	
       #endif	   
      }
      break;

    default:
      // not allowed
      break;
  }

}


static void vCheckPref(void) large
{
  BYTE bInitState = bSharedInfo(SI_INIT_STATE);

#ifdef SUPPORT_CAPTURE_LOGO
	if (SV_NO_DISC != bInitState && SV_UNKNOWN_DISC != bInitState && SV_TRAY_OPENING != bInitState)
	{
    _wInvalid &= ~(01<<(PREFERENCE_BACKGROUND_PICTURE - 1));
	}
#endif

  if ( bSharedInfo(SI_INIT_STATE) == 0 ||
		   ( bSharedInfo(SI_INIT_STATE) > 5 && ( fgIsNonPlay() || fgIsIsoPlay() || fgIsPcdPlay()||(bSharedInfo(SI_DISC_TYPE) == SV_DATA) 
#ifdef SUPPORT_DVD_AUDIO	
       || (bSharedInfo(SI_DISC_TYPE) == SV_DVD_AUDIO)
#endif
     )))
	{
    _wInvalid &= ~(01<<(PREFERENCE_GRAPHIC_EQUALISER - 1));
	}

#ifdef CELL_CAP_IN_MENU
if(fgFlCheckStatus(FL_STATUS_IN_MENU))
	{
    _wInvalid &= ~(01<<(PREFERENCE_CELL_DISPLAY - 1));
	}
#endif

}

void vChkValid(BYTE bType) large
{
  switch(bType)
  {
    case CHK_MAIN:
      vCheckMain();
      break;
#if defined(PLAYER_KARAOKE) && defined(KARA_IN_SETUP)
    case CHK_KARAOKE:
      vChkKok();
      break;
#endif

    case CHK_IMAGE:
			vCheckImage();
			break;
    case CHK_SOUNDMIX:
      vCheckSoundMix();
      break;
    case CHK_SOUND_TONE:  //060321
			vCheckSoundTone();
			break;
    case CHK_LOW_BAND:
      vCheckLowBand();
      break;
    case CHK_CHDELAY:
      vCheckChDelay();
      break;
    case CHK_CHANNEL:
      vCheckChsVol();
      break;
    case CHK_PLAYBACK:
      vCheckPlayback();
      break;
    case CHK_LAGUAGE:
      vCheckLanguage();
      break;
    case CHK_PREF:
			vCheckPref();
			
    default:
      break;
  }
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -