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

📄 play_com.c

📁 手机8032的完整代码。吐血推荐。小做改动就可以生产。
💻 C
📖 第 1 页 / 共 5 页
字号:
/**********************************************************************/
/***************    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 + -