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

📄 combine.c

📁 MTK 1389E SOURCE CODE
💻 C
📖 第 1 页 / 共 5 页
字号:
/**********************************************************************/
/***************    MTK CONFIDENTIAL & COPYRIGHTED     ****************/
/***************                                       ****************/
/***************  $Modtime:: 05/09/05 3:52p    $       ****************/
/***************  $Revision:: 18               $       ****************/
/***************                                       ****************/
/***************   Description : Key-Combine State     ****************/
/***************                 Machine               ****************/
/***************                                       ****************/
/***************       Company : MediaTek Inc.         ****************/
/***************    Programmer : Sung-Ching Lin        ****************/
/**********************************************************************/
#define _COMBINE_C_

#pragma NOAREGS
#include "general.h"
#include "posi.h"
#include "../../custom/demo/fslist/flcomm.h"
#include "../../procdef.h"


#ifdef MT1379_MANUFACTURE_TEST
extern void vOsdShowTestInfo(BYTE bIndex) large;
extern void vCheckTestStatus(void) large;
extern BOOL  fgCheckIfTested() large;
#ifdef RS232_LOG
extern void DRS232LogS(char *pcStr);
extern void DRS232LogB(BYTE bV1, BYTE bV2, BYTE bV3, BYTE bV4);
#endif
#endif
extern void vSetupMenuClose(void) large;
extern void vShowMenuAfterPause(void) large;
extern void vSetPreviewTimer() large;
// *********************************************************************
// Static Function Prototype
// *********************************************************************
static void vShowDiscType(BYTE bDiscType) large;

/************************************************************************
     Function : void vSetPlayType(BYTE bType)
  Description : 8032 play type define, set play type dependant setting
    Parameter : None
    Return    : None
************************************************************************/
void vSetPlayType(BYTE bType) large
{
#if 0//def MT1379_MANUFACTURE_TEST
	  vWBDisable(WB_SELMENU);
	if ((bType != SV_DVD_VIDEO))// && (bType != SV_DATA))
	{
		vOsdShowTestInfo(5);
		_bPlayPostKey = IR_EJECT;
		return;
	}
/*
	else
	{
		if (fgCheckIfTested())
		{
			_bPlayPostKey=IR_EJECT;
			return;
		}
	}
	*/
#endif

  switch (bType)
  {
    case SV_DVD_VIDEO:
    case SV_DVD_AUDIO:
    case SV_MINI_DVD:
    {
#ifdef DVD_DISC_ID_CHK
      if (!fgIsDiscInitChecked())
      {
        return;
      }
      else
#endif
      {
        _bPlayType = PLAY_TYPE_DVD;
        vSetKeyState(KEY_NONISO);
        if ( fgIsInSetupMenu() )
        {
          vSetKeyState(KEY_SETUP);
        }
        vDVDInit(bType);
      }
      break;
    }


    case SV_SVCD:
    case SV_CVD:
    case SV_VCD3_0:
    case SV_VCD2_0:
    case SV_VCD1_1:
    case SV_VCD6_0:
    case SV_VCD6_1:
    {
#ifdef VCD_SUPPORT
  #ifdef VCD_DISC_ID_CHK
      if (!fgIsDiscInitChecked())
      {
        return;
      }
      else
  #endif
      {
        _bPlayType = PLAY_TYPE_VCD;
        vSetKeyState(KEY_NONISO);
        if ( fgIsInSetupMenu() )
        {
          vSetKeyState(KEY_SETUP);
        }
        vVCDInit(bType);
      }
#else
      _bPlayPostKey = IR_EJECT;
#endif /* #ifdef VCD_SUPPORT */
      break;
    }


#ifdef SUPPORT_DATA_DISC
    case SV_DATA:
    {
#ifdef ISO_DISC_ID_CHK
      if (!fgIsDiscInitChecked())
      {
        return;
      }
      else
#endif
      {
        _bPlayType = PLAY_TYPE_ISO;
        vSetKeyState(KEY_ISO);
        if ( fgIsInSetupMenu() )
        {
          vSetKeyState(KEY_SETUP);
        }
        vISOInit(bType);
      }
      break;
    }

#ifdef SUPPORT_PCD
    case SV_PCD:
    {
#ifdef PCD_DISC_ID_CHK
      if (!fgIsDiscInitChecked())
      {
        return;
      }
      else
#endif
      {
        _bPlayType = PLAY_TYPE_PCD;
        vSetKeyState(KEY_ISO);
        if ( fgIsInSetupMenu() )
        {
          vSetKeyState(KEY_SETUP);
        }
        vPCDInit(bType);
      }
      break;
    }
#endif /* SUPPORT_PCD */
#endif /* SUPPORT_DATA_DISC */

    case SV_DTS_CS:
    case SV_CDDA:
    case SV_SACD:
    case SV_CDG:
    case SV_HDCD:
    {
#ifdef CDDA_DISC_ID_CHK
      if (!fgIsDiscInitChecked())
      {
        return;
      }
      else
#endif
      {

#ifdef CDDA_USE_CDFS
        _bPlayType = PLAY_TYPE_ISO;
        vSetKeyState(KEY_ISO);
#else
        _bPlayType = PLAY_TYPE_CDDA;
        vSetKeyState(KEY_NONISO);
#endif
        if ( fgIsInSetupMenu() )
        {
          vSetKeyState(KEY_SETUP);
        }
#ifdef CDDA_USE_CDFS
        vISOInit(bType);
#else
        vCDDAInit(bType);
#endif
      }
      break;
    }

    case SV_AUDIO_IN:
    {
      _bPlayType = PLAY_TYPE_AIN;
      vSetKeyState(KEY_NONISO);
      if ( fgIsInSetupMenu() )
      {
        vSetKeyState(KEY_SETUP);
      }
      vAINInit(bType);
      break;
    }

    default:
    {
      vSetKeyState(KEY_INIT);

      if ( fgIsInSetupMenu() )
      {
        vSetKeyState(KEY_SETUP);
      }

       _bPlayType = PLAY_TYPE_NONE;
      break;
    }
  } /* switch (bType) */

  vOsdDisplayChange(DISP_INIT, 0);

#ifdef DISC_IDENT_AUTO_MUTE_OFF
  if (_bPlayType != PLAY_TYPE_NONE)
  {
    if (fgIsMute()) // if mute on
    {
      vAdspMute(ADSP_OFF, 0);
      vOsdShowMute(OSD_MUTE_CLEAR);
    }
  }
#endif

  vShowDiscType(bType);
}

/************************************************************************
     Function : void vClearPlayType(void)
  Description : Clear play type related setting
    Parameter : None
    Return    : None
************************************************************************/
void vClearPlayType(void) large
{
  if (fgIsDvdPlay())
  {
    vDVDExit();
  }
#ifdef VCD_SUPPORT
  else if (fgIsVcdPlay())
  {
    vVCDExit();
  }
#endif
#ifdef SUPPORT_DATA_DISC
  else if (fgIsIsoPlay())
  {
    vISOExit();
  }
  #ifdef SUPPORT_PCD
  else if (fgIsPcdPlay())
  {
    vPCDExit();
  }
  #endif
#endif /* SUPPORT_DATA_DISC */
#ifndef CDDA_USE_CDFS
  else if (fgIsCddaPlay())
  {
    vCDDAExit();
  }
#endif
#ifdef AUDIO_IN_EN
  else if (fgIsAinPlay())
  {
    vAINExit();
  }
#endif
  _bPlayType = PLAY_TYPE_NONE;
  vSetKeyState(KEY_INIT);

  if ( fgIsInSetupMenu() )
  {
    vSetKeyState(KEY_SETUP);
  }

}

#ifdef AUDIO_IN_EN
// *********************************************************************
// Function : void vPlayerFuncSwitch(BYTE bMode) large
// Description :
// Parameter : None
// Return    : None
// *********************************************************************
void vPlayerFuncSwitch(BYTE bMode) large
{
  if (_fgNotify == FALSE) // system init stage
  {
    if (bMode == PLAYER_FUNC_AIN)
    {
      _bPlayerFuncMode = PLAYER_FUNC_AIN;
    }
    else /* if (bMode == PLAYER_FUNC_DVD) */
    {
      _bPlayerFuncMode = PLAYER_FUNC_DVD;
    }
  }
  else // system run stage
  {
    if (bMode == PLAYER_FUNC_AIN)
    {
      if (fgIsFuncAin() == FALSE)
      {
        vPlayerReset();

        _bPlayerFuncMode = PLAYER_FUNC_AIN;

        vSendUopCmd(UOP_OPEN_CLOSE, SV_PSEUDO_OPEN, 0, 0);

        _bUISrvStatus = PLAYER_SRV_STOP;

        if (_bDiscLoadSt >= DISC_LOAD_STARTUP)
        {
          _fgSkipSrvStart = TRUE;
        }
      }
    }
    else /* if (bMode == PLAYER_FUNC_DVD) */
    {
      if (fgIsFuncDvd() == FALSE)
      {
        vPlayerReset();

        _bPlayerFuncMode = PLAYER_FUNC_DVD;

        vSendUopCmd(UOP_OPEN_CLOSE, SV_PSEUDO_CLOSE, 0, 0);
      }
    }
  }
}
#endif /* AUDIO_IN_EN */

// *********************************************************************
// Function : void vPlayerReset(void) large
// Description : called from playback
// Parameter : None
// Return    : None
// *********************************************************************
void vPlayerReset(void) large
{
  BYTE i;

  /* check setup menu exist moved to WB reset */

  // clear play type, call every play module exit function
  vClearPlayType();

  // reset player timer beep count
#if (defined(DVD_MENU_SHOW_VFD_WHEEL) || defined(JPEG_DECODING_SHOW_VFD_WHEEL))
  _bPlayerTimerBeepCnt = PLAYER_TIMER_BEEP_PERIOD*2;
#else
  _bPlayerTimerBeepCnt = PLAYER_TIMER_BEEP_PERIOD;
#endif

  // reset display mode
  vOsdShowWb(OSD_WB_RESET);

  // reset zoom indicator flag
  _rOsdStateCtx.fgZoomBrShow = FALSE;

  // reset EQ state
  _rEqState.bDispType = OSD_EQ_TYPE_DISABLE;

  // reset input state
  vResetInputState();

  // for RISC communication states
  _bLastSyncUop = UOP_NONE;
  _bLastPbcState = SV_PBC_INIT;

  // reset osd state
  vOsdDisplayChange(DISP_INIT, 0);

  // reset search state
  _rSearchStateCtx.bType = SEARCH_NONE;

  // reset program state
#ifdef PLAYER_PROGRAM
  vSelMenuReset();
#endif
  // this is play type dependant
#ifdef PLAYER_KARAOKE
  if (bAdspCurrVocal() != VOCAL_NO_ASSIST)
  {
    vAdspVocalAssist(VOCAL_NO_ASSIST);
  }
  #ifdef KARAOKE_MIC_REC
  vMicRecCtrl(MIC_REC_CTRL_RESET);
  #endif
#else /* not define PLAYER_KARAOKE */
  if (bAdspCurrVocal() != AUDIO_STEREO)
  {
    vAdspLR(AUDIO_STEREO);
  }
#endif /* PLAYER_KARAOKE */
  vAdspReset();

#if !defined(NO_SM_NOTIFY)
  SmInit();
#endif

  // for vocal assist
#ifdef PLAYER_KARAOKE
  _fgVocalOn = FALSE;
#endif

#ifdef AUDIO_STREAM_CHANGE_MUTE
  _fgAstChg = FALSE;
#endif
}

/************************************************************************
     Function :
  Description : This function must be moved to screen saver moudle
    Parameter :
    Return    :  = 0 -> screen saver not allowed
                 > 0 -> screen saver allowed
************************************************************************/
BOOL fgScrSaverCheck(void) large
{
  BYTE bInitState = bSharedInfo(SI_INIT_STATE);
  BYTE bPbcState = bSharedInfo(SI_PBC_STATE);

  switch (bInitState)
  {
    case SV_LOADING_DISC:
    case SV_TRAY_CLOSING:
    case SV_TRAY_ERROR:
      return (FALSE); /* not allowed */

    case SV_TRAY_OPENING:
    case SV_NO_DISC:
    case SV_UNKNOWN_DISC:
      return (TRUE); /* allowed */

    case SV_DISC_IDENTIFIED:
    default:
      break; /* not determined */

  }

  switch (bPbcState)
  {
    case SV_STOP:
    case SV_STOP_RESUME:
    case SV_PAUSE:
    case SV_STEP:
    case SV_STEP_BACK:
    case SV_SETUP_PAUSE:
    case SV_PTL_ERR:
    case SV_REGION_ERR:
    case SV_DISC_ERR:
    case SV_SET_TMP_PTL:
      return (TRUE); /* allowed */

    case SV_PLAY:
    case SV_FF:
    case SV_SF:
    case SV_FR:
    case SV_SR:
    case SV_FREEZE:
    case SV_DIGEST9:
    case SV_DIGEST4:
    case SV_PBC_INIT:
      return (FALSE); /* not allowed */

    case SV_DIGEST:
    case SV_STILL:
#ifdef SUPPORT_DATA_DISC
      if (fgIsIsoPlay()
  #ifdef SUPPORT_PCD
        || fgIsPcdPlay()
  #endif
        )
      {
        //if (fgFsMenuIsDecoding() == FALSE)
        if (fgFlCheckStatus(FL_STATUS_BUSY) == FALSE)
        {
          /* if not decoding, allowed */
          return (TRUE);
        }
        else
        {
          /* if is decoding, not allowed */
          return (FALSE);
        }
      }
      else
      {
        /* DVD/VCD is not allowed in still mode */
        return (FALSE);
      }
      break;
#endif /* SUPPORT_DATA_DISC */
    default:
      break; /* not determined */
  }

  return (FALSE); /* default is not allowed */
}

#ifdef PLAYER_STOP_SRV_STOP
/************************************************************************
     Function :
  Description :
    Parameter :
    Return    :  = 0 -> servo stop is not allowed
                 > 0 -> servo stop is allowed
************************************************************************/
BOOL fgSrvStopCheck(void) large
{
  BYTE bInitState = bSharedInfo(SI_INIT_STATE);
  BYTE bPbcState = bSharedInfo(SI_PBC_STATE);

  switch (bInitState)
  {
    case SV_LOADING_DISC:
    case SV_TRAY_CLOSING:
    case SV_TRAY_OPENING:
    case SV_TRAY_ERROR:
    case SV_NO_DISC:
      return (FALSE); /* not allowed */

    case SV_UNKNOWN_DISC:
      return (TRUE); /* allowed */

    case SV_DISC_IDENTIFIED:
    default:
      break; /* not determined */

  }

  #if (STOP_RESUME_STYLE == STOP_RESUME_TWO_KEYS)
  if (bPbcState == SV_STOP_RESUME)

⌨️ 快捷键说明

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