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

📄 osdproc003.c

📁 RTD2662板卡源代码
💻 C
📖 第 1 页 / 共 4 页
字号:


#define __OSDPROC003__

#include "Core\Header\Include.h"

#if(_OSD_TYPE == _OSD003)

#if(_VIDEO_TV_SUPPORT)
BYTE ucNoSigCount = 0;
#endif

//--------------------------------------------------
void COsdHandler(void)
{
    bit fTest = 0;

    bOSDTimeOut = 1;

    COsdSystemFlowProc();
    
    COsdEventMsgProc();

    if (_PWOFF_STATE == ucCurrState)
        return;

    if(_NOSIGNAL_STATE == ucCurrState && GET_BURNIN_STATE() == _BURNIN_ON)
    {
		BurnInRun();		
		return;
    }


    CKeyOSDMsgCover();

    // 执行当前菜单的私有处理函数
    if(CURRENT_MENU_ITEM.Proc != NULL)
    {
        CURRENT_MENU_ITEM.Proc();
    }

    
    if (ucKeyMessage != _NONE_KEY_MESSAGE)
    {            
        CTimerReactiveTimerEvent(SEC(10), COsdDispOsdTimerEvent);
    }

	DbgShowOSDState();

#if(_VIDEO_TV_SUPPORT)
#if(_SLEEP_FUNC)
  #if(_SHOW_TV_NO_SIGNAL)
    if (!ucOsdState && !bOSDOnScreen && !bTVNoSignal)
  #else
    if (!ucOsdState && !bOSDOnScreen)
  #endif
    {
        if((0xff != ucAutoPowerDownTime) && (0 != _GET_POWER_DOWN_TIME()))
           CShowTimer();
    }
#endif
#endif


	if(fTest)
	{
 		CNotUse();
	}

    if (bDrawMute)
    {
        bDrawMute = 0;
        if (GET_AUDIO_MUTE()) // Mute on 
           CDrawMuteState();
    }
}

//--------------------------------------------------
void CKeyOSDMsgCover(void)
{
    // Key Message -> Osd Message
    if(ucCurrState == _ACTIVE_STATE)
    {
        CCoverKeyMsgToOsdEvent(CURRENT_MENU_ITEM.KeyMsgToOsdEvnet,CURRENT_MENU_ITEM.Option & _EN_PUB_KEYEVENT);
    }
    else
    {	
    	if(CURRENT_MENU_ITEM.Option & _KEYMAP_EN_IN_NOSIGNAL)
		{
        	CCoverKeyMsgToOsdEvent(CURRENT_MENU_ITEM.KeyMsgToOsdEvnet,CURRENT_MENU_ITEM.Option & _EN_PUB_KEYEVENT);
		}
		else
		{
    	    CCoverKeyMsgToOsdEvent(tKONoSignal, 0x00);
    	}
	}
}
//--------------------------------------------------

void DbgShowOSDState(void)
{
/*
	CShowNumber(0, 0, ucOsdState);
	CShowNumber(0, 1, _MI_001_RESET);

	if(ucKeyMessage != 0)
	{
	 	CShowNumber(0, 2, ucKeyMessage);
		CShowNumber(0, 3, ucOsdEventMsg);
	}
*//*
    static BYTE ucMenuItemIndexBak = 0;

	if(ucMenuItemIndexBak != ucOsdState)
	{
		ucMenuItemIndexBak = ucOsdState;
		CUartPrintf("Osd State:",ucOsdState);
	}

    // debug info
    if(ucKeyMessage != _NONE_KEY_MESSAGE)
		CUartPrintf("Osd Event:",ucOsdEventMsg);
*/
}
//--------------------------------------------------
void COsdSystemFlowProc(void)
{
    switch(ucCurrState)
    {         
        case _PWOFF_STATE:
            break;
            
        case _INITIAL_STATE:
            break;
            
        case _SEARCH_STATE:
            break;
            
        case _ACTIVE_STATE:
            if(GET_OSD_READYFORDISPLAY() == _TRUE)
            {
            	CPowerLenOn();

                if (!bSourceVideo())
                    COsdDispOsdTimerEvent();

                CLR_OSD_READYFORDISPLAY();
                CAdjustBackgroundColor(0x00, 0x00, 0x00);
                
			#if(_VIDEO_TV_SUPPORT)
            	ucNoSigCount = 0;
 				#if(_IF_PLL_DE_CHIP == _IF_PLL_DE_1338)
                	if (_GET_INPUT_SOURCE() != _SOURCE_VIDEO_TV)
 					#endif
				#endif
                CSetVolume();
            }
                            
			#if(_VIDEO_TV_SUPPORT)
 				#if(_IF_PLL_DE_CHIP == _IF_PLL_DE_1338)
                	CAudioCtrl(); 
 				#endif
                
 				#if(_SHOW_TV_NO_SIGNAL)
            		CCheckTVSignal();
 				#endif
			#endif

            break;
            
        case _NOSUPPORT_STATE:
            if(GET_OSD_READYFORDISPLAY() == _TRUE)
            {
                CLR_OSD_READYFORDISPLAY();
                CAdjustBackgroundColor(0x00, 0x00, (_GET_BLUE_BACKGROUND()) ? 0xFF : 0x00);
                if (GET_FIRST_SHOW_NOTE())
                   ucOsdEventMsg = _DO_SHOW_NOTE;
                
                CTimerReactiveTimerEvent(SEC(1), CModeNoSupportEvent);
            }
            
            break;
            
        case _NOSIGNAL_STATE:
            /*if (ucOsdState >= _MI_SOURCE_VGA && ucOsdState <= _MI_SOURCE_TV)
            {
            	CTimerCancelTimerEvent(CModeNoSignalEvent);
            	CTimerCancelTimerEvent(CModePowerSavingEvent);
                SET_OSD_READYFORDISPLAY();
                return;
            }*/

            if(GET_OSD_READYFORDISPLAY() == _TRUE)
            {    
                CLR_OSD_READYFORDISPLAY(); 
    
                if (bSourceVideo())
                   CAdjustBackgroundColor(0x00, 0x00, (_GET_INPUT_SOURCE() == _SOURCE_VIDEO_TV) ? ((_GET_BLUE_BACKGROUND()) ? 0xFF : 0x00) : 0x00);

                if (GET_FIRST_SHOW_NOTE())
                {
                    ucOsdEventMsg = _DO_SHOW_NOTE;
                    CPowerPanelOn();
                    CPowerLightPowerOn();
                }
                
     			CAdjustBackgroundColor(0x00, 0x00, 0xFF);

    			if (_GET_INPUT_SOURCE() == _SOURCE_YPBPR) 
    			{
    				CTimerReactiveTimerEvent(SEC(1), CModeNoSignalEvent);
    				break;
    			}
    
    #if (_HDMI_SUPPORT == _ON)
    			if (_GET_INPUT_SOURCE() == _SOURCE_HDMI) 
    			{
    				CTimerReactiveTimerEvent(SEC(5), CModeNoSignalEvent);
    				break;
    			}		
		        
    #endif
    			// here comes for VGA, DVI input only
    #if(_TMDS_SUPPORT == _ON)
    			if (_GET_INPUT_SOURCE() == _SOURCE_DVI) 
    			{
                    if (bDVICONNECT)
        				CTimerReactiveTimerEvent(SEC(1), CModeNoCableEvent);
                    else
    			    	CTimerReactiveTimerEvent(SEC(1), CModeNoSignalEvent);
    			}		
    #endif


    			if (_GET_INPUT_SOURCE() == _SOURCE_VGA) 
    			{
        			if (bVGACONNECT)
        				CTimerReactiveTimerEvent(SEC(1), CModeNoCableEvent);
        			else       
        				CTimerReactiveTimerEvent(SEC(1), CModeNoSignalEvent);
    	        }

                if (bSourceVideo())
        			CTimerReactiveTimerEvent(SEC(1), CModeNoSignalEvent);

				if(stSystemData.InputSource == _SOURCE_VGA ||
					stSystemData.InputSource == _SOURCE_DVI)
				{	
    				CTimerReactiveTimerEvent(SEC(6), CModePowerSavingEvent);
				}
				else
				{
					CTimerCancelTimerEvent(CModePowerSavingEvent);
				}
            }
            
            break;
            
        case _SLEEP_STATE:
            break;
            
        default:
            break;
    }
}

//==========================================================================
//                          ChangeSourceState
//==========================================================================
void ChangeSourceState(void)
{
    CMuteOn();
#if(_VIDEO_TV_SUPPORT)
        if (_GET_INPUT_SOURCE() == _SOURCE_VIDEO_TV)
           CAdjustBackgroundColor(0x00, 0x00, (_GET_BLUE_BACKGROUND()) ? 0xFF : 0x00);
        else
#endif
           CAdjustBackgroundColor(0x00, 0x00, 0x00);
        CScalerSetBit(_VDISP_CTRL_28, 0xff, 0x20);
        CScalerSetBit(_VDISP_CTRL_28, ~_BIT3, _BIT5);
        CInitInputSource();
    
#if(_VIDEO_TV_SUPPORT)
 #if(_FM_DEVICE)  
        bFM = 0; // Close FM
 #endif
#endif


    if (_SLEEP_STATE == ucCurrState)
        CPowerLVDSOn();
                  
	// close OSD first to avoid dirty screen.
	COsdFxDisableOsd();
	switch(_GET_INPUT_SOURCE())
	{
		case _SOURCE_VGA:
		case _SOURCE_YPBPR:
			CScalerSetBit(_IPH_ACT_WID_H_16, ~_BIT5, 0x00);
			CVideoOutputDisable();
			break;
	#if((_TMDS_SUPPORT == _ON) || (_HDMI_SUPPORT == _ON))			
		case _SOURCE_DVI:
        case _SOURCE_HDMI:
			CVideoOutputDisable();
			break;
	#endif
		    break;
#if(_VIDEO_TV_SUPPORT)
		case _SOURCE_VIDEO_TV:
            CInitTV();
#endif
		case _SOURCE_VIDEO_AV:
		case _SOURCE_VIDEO_SV:
			CVideoOutputEnable();
			break;
	}
   
	COsdFxDisableOsd();
}

//-----------------------------------------------------------
void COsdEventMsgProc(void)
{                  
    if(ucOsdEventMsg > _OE_USER_CMD)
    {    
         ucOsdEventMsg = _NONE_MSG;
         return;
    }

    switch(ucOsdEventMsg)
    {
        case _SHOW_NOSIGNAL_MSG:
        case _SHOW_NOCABLE_MSG:
        case _SHOW_NOSUPPORT_MSG:
            if(GET_BURNIN_STATE() == _BURNIN_ON)
            {				
				CTimerCancelTimerEvent(CModePowerSavingEvent);				
				InitBurnIn();
            }
            else
            {            
            	//LoadCHIFont(_LF_OTHER);
            	LoadLanguageFont();
            	#if(LNG_CHI_S_EN)
    				if(GET_LANGUAGE() == LNG_CHI_S)
    					COsdLoad1BitFontWidth12(FntCH_S,0x80,48);      
				#endif
				#if(LNG_CHI_S_EN)
			    	if(GET_LANGUAGE() == LNG_CHI_T)
			    		COsdLoad1BitFontWidth12(FntCH_T,0x80,48);      
				#endif
			COsdDispFirstTimeLoadFont();//$$ Added by AndyLiu20080619
   			CShowNoSignal();
//                COsdDispFirstTimeLoadFont();//$$ Added by AndyLiu20080619
//                CDrawLogo(0x03);//$$ Added by AndyLiu20080619
    		}    		
            break;
            
        case _SAVE_EE_MODEUSERDATA_MSG:
            CEepromSaveModeData(stModeInfo.ModeCurr);
            break;
            
        case _SAVE_EE_SYSTEMDATA_MSG:
            CEepromSaveSystemData();
            break;
            
        case _SAVE_EE_OSDUSERDATA_MSG:
            CEepromSaveOsdUserData();
            break;
            
        case _SAVE_EE_ADCDATA_MSG:
            CEepromSaveAdcData();
            break;
            
        case _SAVE_EE_COLORPROC0_MSG:
            CEepromSaveBriConData();
            break;
            
        case _SAVE_EE_COLORPROC1_MSG:
            CEepromSaveColorTempData();
            break;

        case _SAVE_EE_AUDIO_DATA_MSG:
            CEepromSaveAudioData();
            break;

        case _SAVE_EE_HUE_SAT_DATA_MSG:
            CEepromSaveHueSatData();
            break;

        case _SAVE_EE_TV_DATA_MSG:
            CEepromSaveTvData();
            break;

        case _ENTER_FACTORY_MODE_MSG:
            break;
            
        case _CHANGE_SOURCE_MSG:
            ChangeSourceState();
            ucTVSyncFailCount = 250;
            CModeResetMode();
        	CLR_SOURCE_AUTOCHANGE();
        	CEepromSaveSystemData();
            CShowNote();
            SET_FIRST_SHOW_NOTE();
            break;
            
        case _DO_AUTO_CONFIG:
        	if(stSystemData.InputSource == _SOURCE_VGA)
        	{
				CShowAutoAdjust();
        	}
        	break;
        	
        case _DO_SHOW_NOTE:
            CLR_FIRST_SHOW_NOTE();

⌨️ 快捷键说明

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