📄 osdproc003.c
字号:
#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 + -