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

📄 player.c

📁 MTK portableDVD 采用mtk1389方案的代码
💻 C
📖 第 1 页 / 共 4 页
字号:
          }
//BillDen bg 2003.3.17          
          else
          {
            _bScrSaverTimer = SCR_SAVER_TIMEOUT;
            _bScrSaverBeepCnt = SCR_SAVER_OFF_BEEP_COUNT;
          }  
//BillDen end            
        }
        else /* if (_bScrSaverTimer > 0) */
        {
          _bScrSaverTimer--;
          _bScrSaverBeepCnt = SCR_SAVER_OFF_BEEP_COUNT;
        }
      }
      else /* not allow to enter screen save mode */
      {
        /* reset counter */
        vScrSaverSetTimeOut(SCR_SAVER_TIMEOUT);
      }
    } /* screen saver off */
  } /* _bScrSaverBeepCnt */

#ifdef SRV_SHOW_ERROR_COUNTER
  vPlayerShowSrvErr();
#endif
  vAdspTimerJob();

#ifdef SUPPORT_BROWSER
  vBrowserTimer();
#endif

#ifdef BBK_NEW_GUI
  vFlItemInfoTimer();
#endif

}


#ifdef GUI_DC_SELECT
static void vDCTimer(void) large
{
   BYTE bMCRId;
#ifdef USB_CARD_READER
   BYTE bUSBId;
#endif


   if (_bDCTimer)
   {
	   _bDCTimer--;
   }

#ifdef  USB_CARD_READER
   if(_bSlotTimer)
   {
	   _bSlotTimer--;
   }
#endif

   switch(_bDevType)
   {
     case DEVICE_DVD:
	   if(_bDCTimer == 15)
	   {
	     vClearWB(WB_NORMAL_INITMSG);
	     vEnableWB(WB_NORMAL_INITMSG);
	     vPlayerShowLogo(DVD_STOP_LOGO, LOGO_STAND);
	   }

	   if(_bDCTimer == 10)
	   {
	     _fgInitMsgKeep = FALSE;
	     vSendUopCmd(UOP_CHG_DEV, SV_ASSIGN_DEV, SV_DEVID_CDVDROM, 0);
	   }
	   break;

	 case DEVICE_USB:
	   if (_bDCTimer == 150)
	   {
#ifdef USB_CARD_READER
              vSetSharedInfo(SI_FAT_ERR_CODE, 0x00);

	     if(bSharedInfo(SI_EMD_ATTACH) & 0x01)
	     {
		     bUSBId = SV_DEVID_USB_SLOT_1;
	     }
	     else if(bSharedInfo(SI_EMD_ATTACH) & 0x02)
	     {
	       bUSBId = SV_DEVID_USB_SLOT_2;
	     }
	     else if(bSharedInfo(SI_EMD_ATTACH) & 0x04)
	     {
	       bUSBId = SV_DEVID_USB_SLOT_3;
	     }
	     else if(bSharedInfo(SI_EMD_ATTACH) & 0x08)
	     {
	       bUSBId = SV_DEVID_USB_SLOT_4;
	     }
	     else if(bSharedInfo(SI_EMD_ATTACH) & 0x10)
	     {
	       bUSBId = SV_DEVID_USB_SLOT_5;
	     }
	     else if(bSharedInfo(SI_EMD_ATTACH) & 0x20)
	     {
	       bUSBId = SV_DEVID_USB_SLOT_6;
	     }
       #ifndef SUPPORT_MCR
	     else if(bSharedInfo(SI_EMD_ATTACH) & 0x40)
	     {
	       bUSBId = SV_DEVID_USB_SLOT_7;
	     }
	     else if(bSharedInfo(SI_EMD_ATTACH) & 0x80)
	     {
	       bUSBId = SV_DEVID_USB_SLOT_8;
	     }
	#endif
	     else 
	     {
		     bUSBId = SV_DEVID_USB_SLOT_1;
	     }
			 
	     vSendUopCmd(UOP_CHG_DEV, SV_ASSIGN_DEV, bUSBId, 0);
#else
            vSendUopCmd(UOP_CHG_DEV, SV_ASSIGN_DEV, SV_DEVID_USB_SLOT_1, 0);
#endif

       _fgInitMsgKeep = FALSE;
	   }
	   break;	

#ifdef SUPPORT_MCR
	   case DEVICE_CARD:
	   	 if(_bDCTimer == 150)
		   {
		     bMCRId = bSharedInfo(SI_MCR_ATTACH); 
				 
                 switch(bMCRId)
		     {
			     case 0x01:
			     case 0x09:
			       vSendUopCmd(UOP_CHG_DEV, SV_ASSIGN_DEV, SV_DEVID_MS_CARD, 0);   //MS 
			       break;
						 
			     case 0x02:
			     case 0x0a:
			       vSendUopCmd(UOP_CHG_DEV, SV_ASSIGN_DEV, SV_DEVID_SD_CARD, 0);    //SD&MMC 
			       break;
						 
		            case 8:
			       vSendUopCmd(UOP_CHG_DEV, SV_ASSIGN_DEV, SV_DEVID_CF_CARD, 0);    //CF
		     	       break;
						 
			     case 0x04:
			     case 0x0c:
			       vSendUopCmd(UOP_CHG_DEV, SV_ASSIGN_DEV, SV_DEVID_SM_CARD, 0);    //SM
			       break;
						 
			     default:
			       vSendUopCmd(UOP_CHG_DEV, SV_ASSIGN_DEV, SV_DEVID_SM_CARD, 0);    //SM
			       if(bSharedInfo(SI_MCR_ATTACH) == 0)
			       {
			         vOsdShowInitState(SV_NO_DISC);
				  #ifdef VFD_SUPPORT
			          vVfdShowInitStatus(SV_NO_DISC);
				  #endif
			       }
			       break;                                                                                                         //linshangbo     051005   end
			  }

			  _fgInitMsgKeep = FALSE;
			  break;  
		  } 
#endif

	    default:
		    break;	
   }

   if((DEVICE_USB == _bDevType) || (DEVICE_CARD == _bDevType))
   {
	   if(198 == _bDCTimer)
	   {
	     vClearWB(WB_NORMAL_INITMSG);
	     vOsdPosClear(OSD_POS_PLAY_STATUS);
	   }
	   else if(190 == _bDCTimer)	
	   {
#ifdef USB_CARD_READER
	     _bSlotTimer = 150;
	     _fgClear = FALSE;
#endif
		
       if(bKeyState() == KEY_SCRSAV)
       {
    	   _bPlayPostKey = IR_ESCAPE_SCRSAV;
       }
	   
       if(fgIsInSetupMenu())
       {
         vSetupMenuClose(); 
       }

	  vPlayerShowLogo(DVD_STOP_LOGO, LOGO_STAND);
	  vSetSharedInfo(SI_INIT_STATE,SV_EMD_LOADING);
	  vEnableWB(WB_NORMAL_INITMSG);
	  vOsdShowInitState(SV_EMD_LOADING);
	  #ifdef VFD_SUPPORT
	  vVfdMessage(VFD_MESSAGE_LOADING);
	  #endif
	   }

#ifdef USB_CARD_READER
	   if((bSharedInfo(SI_INIT_STATE) == SV_DISC_IDENTIFIED) && (_bSlotTimer == 0) &&  (!fgIsScrSaverOn()))
	   {
	 	   _fgClear = FALSE;	
		   _bSlotTimer = 40;	
	   }
	 
	   if((bSharedInfo(SI_INIT_STATE) == SV_NO_DISC) && (_bSlotTimer == 0) &&  (!fgIsScrSaverOn()))
     {
	 	   if((!_fgClear) && (!fgIsInSetupMenu()) && 0 == bSharedInfo(SI_EMD_ATTACH))
		   {
		     _fgClear = TRUE;
	  	     vISOExit(); 
  		     _bPlayType = PLAY_TYPE_NONE;
  		     vSetKeyState(KEY_INIT);  
		     vOsdPosClear(OSD_POS_PLAY_STATUS);
		     vEnableWB(WB_NORMAL_INITMSG);

		 #ifdef VFD_SUPPORT
		     if(DEVICE_CARD == _bDevType)
		     {
			     vVfdMessage(VFD_MESSAGE_NO_CARD);
		     }
		     else
		     {
			     vVfdMessage(VFD_MESSAGE_NO_USB);
		     }
		 #endif
		
	  	   vPlayerShowLogo(DVD_STOP_LOGO, LOGO_STAND);			
	 	   }
		
	   	 if(bSharedInfo(SI_EMD_ATTACH))
		   {
		     vPlayerReset();
		     vSetSharedInfo(SI_INIT_STATE,SV_EMD_LOADING);
	      	     vEnableWB(WB_NORMAL_INITMSG);
		     vOsdShowInitState(SV_EMD_LOADING);
		     #ifdef VFD_SUPPORT
	            vVfdMessage(VFD_MESSAGE_LOADING);
		     #endif
		     _bDCTimer = 170;
		     _fgClear = FALSE;
		   }
	   }
    #endif	  
  }

  if((DEVICE_USB == _bDevType) || (DEVICE_CARD == _bDevType))
  {
    if(_bDCEmpty & 0x80)
	  {
	    if(_bDCEmpty & 0x3f)
	    {
	      _bDCEmpty--;
	    }
	    else
	    {
		    _bDCEmpty = 0;
			  _fgInitMsgKeep = TRUE;
		    vEnableWB(WB_NORMAL_INITMSG);
			  _wStartX = 0;
			  _wStartY = 0;
	      	    vOsdMsgShowCenter(WB_NORMAL_INITMSG, OSD_MSG_ERR_DISC_NOT_SUPPORT, OSD_NO_DISAPPEAR, NOMAL_INITMSG_WIDTH);
		    #ifdef VFD_SUPPORT
       	    vVfdMessage(VFD_MESSAGE_ERROR);	
		    #endif
	    }
	  }
	  else if(_bDCEmpty & 0x40)
	  {
	    if(_bDCEmpty & 0x3f)
	    {
	      _bDCEmpty--;
	    }
	    else
	    {
		    _bDCEmpty = 0;
			  _fgInitMsgKeep = TRUE;
		    vEnableWB(WB_NORMAL_INITMSG);
			  _wStartX = 0;
			  _wStartY = 0;
	           vOsdMsgShowCenter(WB_NORMAL_INITMSG, OSD_MSG_EMPTY_CARD, OSD_NO_DISAPPEAR, NOMAL_INITMSG_WIDTH);
		    #ifdef VFD_SUPPORT
                  vVfdMessage(VFD_MESSAGE_ERROR);				
		    #endif
	    }
	  }
		
	  if ((_bUSBDsct == FALSE) && (bSharedInfo(SI_EMD_ATTACH) == 0) && (_bDCStChged == DEVICE_NONE))
	  {  
	  	if(fgIsInSetupMenu())
	           {
                    vSetupMenuClose();  
	           }

			if(_bFlMnState == FL_ST_IN_INFO)   //add by linshangbo 06.03.24
			{
                      vSetExitInputState(); 
			}
			
	              vSendUopCmd(UOP_STOP,0,0,SV_STOP_ALL_TARGET);
			vPlayerShowLogo(DVD_STOP_LOGO, LOGO_STAND);
	              _bUSBDsct = TRUE;
	  }
#ifdef SUPPORT_MCR
    else if((_bMCRDsct == FALSE) && (bSharedInfo(SI_MCR_ATTACH) == 0) && (_bDCStChged == DEVICE_NONE))
	  {
	    if(fgIsInSetupMenu())
	    {
              vSetupMenuClose();  
	    } 

	    if(_bFlMnState == FL_ST_IN_INFO)   //add by linshangbo 06.03.24
		{
                vSetExitInputState(); 
		}
		
         vSendUopCmd(UOP_STOP,0,0,SV_STOP_ALL_TARGET);
	  vPlayerShowLogo(DVD_STOP_LOGO, LOGO_STAND);
	    _bMCRDsct = TRUE;
	  }
#endif
  }


  if ((_bUSBDsct == TRUE) && (bSharedInfo(SI_EMD_ATTACH) != 0) && (DEVICE_USB == _bDevType))     //在选择USB的状态下,检测是否有USB设备连接
  {
    if(bSharedInfo(SI_DEVICE_ID) >= SV_DEVID_USB_SLOT_1 && 
#ifndef SUPPORT_MCR
       bSharedInfo(SI_DEVICE_ID) <= SV_DEVID_USB_SLOT_8)
#else
       bSharedInfo(SI_DEVICE_ID) <= SV_DEVID_USB_SLOT_6)
#endif
         {
	    _bUSBDsct = FALSE;
	    if(_bDCTimer == 0)
	      {    
	      _bDCTimer = USB_SEL_TIME;
	      }
         }
  }
#ifdef SUPPORT_MCR
  else
  {
    if((_bMCRDsct == TRUE )&&(bSharedInfo(SI_MCR_ATTACH) != 0) && (DEVICE_CARD== _bDevType))
     {
      if(bSharedInfo(SI_DEVICE_ID) >= SV_DEVID_MS_CARD && bSharedInfo(SI_DEVICE_ID) <= SV_DEVID_CF_CARD)
              {
  		  _bMCRDsct = FALSE;
		    if(_bDCTimer == 0)
		     {
		      _bDCTimer = CARD_SEL_TIME;
   	            }    
		  vPlayerShowLogo(DVD_STOP_LOGO, LOGO_STAND);
	       }
     }
  } 
#endif  
}
#endif




// *********************************************************************
// Function : void vIrTimer(void)
// Description :
// Parameter : None
// Return    : None
// *********************************************************************
static void vIrTimer(void) large
{
  BOOL fgRet = UOP_OK;

  /* error check */
  if (_bIRKey >= IR_KEY_MAX)
  {
    _bIRKey = IR_NONE;
    return;
  }

  /* screen saver */
  if (!fgIsScrSaverOn())
  {
    vScrSaverSetTimeOut(SCR_SAVER_TIMEOUT);
  }

  vPlayerKeyProc();
}

#ifdef RUSSIAN_BUYER_REQUEST2			//songchen 061210
#ifdef SUPPORT_DUBLE_FUNCTION_KEY
#define IR_TIMER_OVERFLOW     7
#define IR_CNT_NUM           10

BYTE xdata _bIRKeyStore = IR_NONE;
BYTE xdata _bHoldKeyCnt = 0;
BYTE xdata _bKeyCnt = 0;
extern BYTE xdata  _bIRStatus;

static void vHoldPressKey(void) large
{
  switch(_bIRKey0)
  {
	case IR_PLAY_PAUSE:
	{
	  if(EXIST_IR_KEY())
	  {
             _bHoldKeyCnt = 0;
	     if(0 == _bKeyCnt)
            {
               _bIRKeyStore = _bIRKey0;
            }
	     if((++_bKeyCnt) > IR_CNT_NUM)
	     {
	        _bKeyCnt = 0;
	        _bIRKeyStore = IR_NONE;
               _bIRKey0 = IR_DEFAULT;   
	        _bIRStatus = 2;      //_bIRStatus = IR_WAIT_NEW_CODE;
	     }
	     else
	     {
               _fgIRKeyValid = FALSE;
	     }
	  }
	  else
	  {
             if((IR_NONE != _bIRKeyStore) && (_bIRKey0 == _bIRKeyStore))
             {
                 _bHoldKeyCnt ++;
						
		   if(_bHoldKeyCnt > IR_TIMER_OVERFLOW)
		   {
			_fgIRKeyValid = TRUE;
			_bIRKeyStore = IR_NONE;
			_bHoldKeyCnt = 0;
			_bKeyCnt = 0;
                 }
		}
	   }
	   break;
	}	

	default:
          _bIRKeyStore = IR_NONE;
          _bKeyCnt = 0;
	   break;
  }
}
#endif
#endif
/***************************************************************************
     Function : void vGetCurrKey(void)
  Dsecription :
    Parameter : None
       Return : None
***************************************************************************/
static void vGetCurrKey(void) large
{
  /* TODO: the emergency key should abort ther current key operation */
#ifdef SUPPORT_DUBLE_FUNCTION_KEY			//songchen 061210
	vHoldPressKey();
#endif

#ifdef IR_CHECK_KEY_LOCK
  if (fgIsIrKeyLock())
  {
    vIrKeyPressTimeoutCheck();
  }
#endif

  if (_bIRKey == IR_NONE) /* check this to prevent command conflict */
  {
    /* note the internal state transition priority is higher than user operation */
    if (_bPlayPostKey != IR_NONE)
    {
      if ((_bPWRMode == SV_PWR_ACTIVE) || (_bPlayPostKey == IR_ESCAPE_SCRSAV))
      {
        _bIRKey = _bPlayPostKey;
        _bPlayPostKey = IR_NONE;
      }
      else if (_bPlayPostKey == IR_MANUAL_EJECT)
      /* && ((_bPWRMode == SV_PWR_IDLE_PAUSE) || (_bPWRMode == SV_PWR_IDLE_STOP)) */
      {
        _bIRKey = IR_EJECT;
        _bPlayPostKey = IR_NONE;
      }
      else if (_bPlayPostKey == IR_POWER)
      /* && ((_bPWRMode == SV_PWR_IDLE_PAUSE) || (_bPWRMode == SV_PWR_IDLE_STOP)) */
      {
        _bIRKey = IR_POWER;
        _bPlayPostKey = IR_NONE;
      }
    }
    /* for UI timer */
    else if (_bIrTimer == IR_TIMER_TIMEOUT)
    {
      _bIRKey = IR_TIME_OUT;
      _bIrTimer = IR_TIMER_VOID;
    }
    /* note here must be the only one entry point for user operation input */
    /* VFD key's priority is higher than IR key */
	 //bywhy 04/06/24 
#ifdef VFD_SUPPORT
    else if (_bVfdKeyScan != IR_NONE)
    {
      _bIRKey = _bVfdKeyScan;
      _bVfdKeyScan = IR_NONE;

⌨️ 快捷键说明

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