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

📄 benq_osd.c

📁 realtek LCD monitor, TV开发源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
//**********************************************************************************************************
//  The  Software  is  proprietary,  confidential,  and  valuable to Realtek Semiconductor
//  Corporation  ("Realtek").  All  rights, including but not limited  to  copyrights,
//  patents,  trademarks, trade secrets, mask work rights, and other similar rights and interests,
//  are reserved to Realtek. Without  prior  written  consent  from  Realtek,  copying, reproduction,
//  modification,  distribution,  or  otherwise  is strictly prohibited. The Software  shall  be
//  kept  strictly  in  confidence,  and  shall  not be  disclosed to or otherwise accessed by
//  any third party. @ <2003> - <2008>   The Software is provided "AS IS" without any warranty of any kind,
//  express, implied, statutory or otherwise.
//**********************************************************************************************************
//----------------------------------------------------------------------------------------------------
// ID Code      : Osd.c No.0000
// Update Note  :
//----------------------------------------------------------------------------------------------------

#define __BENQ_OSD__

#include "Common\Header\Include.h"
#if(_OSD_TYPE == _BENQ_OSD)
//--------------------------------------------------
// Description  :
// Input Value  :
// Output Value :
//--------------------------------------------------
void COsdHandlerBenq(void)
{
    COsdSystemFlowProcBenq();

    COsdEventMsgProcBenq();

    if((ucCurrState==_ACTIVE_STATE)&&(ucOsdState<_MenuShowInputBenq))
    {
        if(ucKeyMessage<_NONE_KEY_MESSAGE)
        {
#if(_TOUCH_SENSOR == _ON)
            CKeyBuzzerBeep();
#endif
            (*OperationTableBenq[ucOsdState][ucKeyMessage])();

            if((ucOsdState != _MenuNoneBenq) && (!GET_FACTORY_MODE()) && (bServiceMode == _FALSE))
                CTimerReactiveTimerEvent(SEC(stGlobalData1.OsdTimeoutBenq),COsdFxOsdTimerBenq);
            else if((((ucOsdState == _MenuNoneBenq) && (bHotKeyEnterConBri == _ON)) || ((ucOsdState == _MenuNoneBenq) && (bHotKeySelectColorMode == _ON))) && (!GET_FACTORY_MODE()))
                CTimerReactiveTimerEvent(SEC(3),COsdFxOsdTimerBenq);
        }
        else if(ucKeyMessage==_AUTO_KEY_MESSAGE)
        {
            if(stGlobalData3.OSDLock!=_OSD_LOCK)
            {
#if(_TOUCH_SENSOR == _ON)
                CKeyBuzzerBeep();
#endif
                if(!GET_FACTORY_MODE())
                {
                    SET_SENSEYE_STATUS(_OFF);

                    if((bHotKeySelectColorMode==_OFF)&&(bHotKeyEnterConBri==_OFF)&&(ucOsdState==_MenuNoneBenq))
                    {
                        COsdFxOsdTimerBenq();//睲埃 SENSEYE DEMO OSD
                    }

                    if(ucOsdState != _MenuFastInputBenq)
                    {
                        COsdEnter1stAutoBenq();
                        ucOsdEventMsg=_SAVE_EE_GLOBALDATA0_MSG;
                        CAdjustDemoWindow();

                    }
                }
                else
                {
                    if((ucOsdState<_MenuFactoryWhiteBalanceBenq)||(ucOsdState>_MenuFactoryAdcAdjustBenq))
                    {
                        DisplayFactoryPageBenq();
                        COsdRightFactoryAdcBenq();
                    }
                }
            }
            else if(ucOsdState==_MenuNoneBenq) // osd locked
            {
                COsdRightNoneBenq();
            }
        }
    }

#if(0)//TIMING
    COsdFxShowValueBenq(16,0,stModeInfo.ModeCurr,4,_NON_PERCENT,0,0);
    COsdFxShowValueBenq(16,5,stModeInfo.IVTotal,4,_NON_PERCENT,0,0);
    COsdFxShowValueBenq(16,10,stModeInfo.IHSyncPulseCount,4,_NON_PERCENT,0,0);
    COsdFxShowValueBenq(16,15,stModeInfo.IVFreq,4,_NON_PERCENT,0,0);
    COsdFxShowValueBenq(16,20,GET_MODE_SEARCH_TYPE(),4,_NON_PERCENT,0,0);
    COsdFxShowValueBenq(16,30,bHPD_D0,4,_NON_PERCENT,0,0);
#endif
#if(0)//KEY
    COsdFxShowValueBenq(16,0, MCU_ADC0_RESULT_FF09,8,_NON_PERCENT,0,0);
    COsdFxShowValueBenq(16,10,MCU_ADC1_RESULT_FF0A,8,_NON_PERCENT,0,0);
    COsdFxShowValueBenq(16,20,MCU_ADC2_RESULT_FF0B,8,_NON_PERCENT,0,0);
#endif
#if(0)//OVER SCAN
    COsdFxShowValueBenq(16,0,ucOverScanH,4,_NON_PERCENT,0,0);
    COsdFxShowValueBenq(16,5,ucOverScanV,4,_NON_PERCENT,0,0);
    COsdFxShowValueBenq(16,10,stModeInfo.IHWidth,4,_NON_PERCENT,0,0);
    COsdFxShowValueBenq(16,15,stModeInfo.IVHeight,4,_NON_PERCENT,0,0);
#endif
#if(0)
    COsdFxShowValueBenq(16,0,stModeUserData.VPosition,4,_NON_PERCENT,0,0);
    COsdFxShowValueBenq(16,5,ucDdcciVPositionRatio,4,_NON_PERCENT,0,0);
    COsdFxShowValueBenq(16,10,COsdFxGetVPositionRangeBenq(_MAX),4,_NON_PERCENT,0,0);
    COsdFxShowValueBenq(16,15,COsdFxGetVPositionRangeBenq(_MIN),4,_NON_PERCENT,0,0);

#endif
#if(0)
    COsdFxShowValueBenq(16,15,bD0_CONNECT,4,_NON_PERCENT,0,0);
    COsdFxShowValueBenq(16,20,bA0_CONNECT,4,_NON_PERCENT,0,0);
#endif


}

//--------------------------------------------------
// Description  :
// Input Value  :
// Output Value :
//--------------------------------------------------
void COsdSystemFlowProcBenq(void)
{
    BYTE connect = 1;

    switch(ucCurrState)
    {
        case _PWOFF_STATE:
            break;

        case _INITIAL_STATE:
#if(_TOUCH_SENSOR == _ON)
            CKeyOneTouchSensorLedOn();
#endif
            DisplayPowerOnLogoBenq();
            ucCurrState = _SEARCH_STATE;

            if(GET_FACTORY_MODE())
            {
                CSourceSwitchInputPort(_A0_INPUT_PORT);
            }
            else
            {
                if(GET_INPUTSOURCE_STATUS() == _SOURCE_DVI)
                    CSourceSwitchInputPort(_D0_INPUT_PORT);
                else
                    CSourceSwitchInputPort(_A0_INPUT_PORT);
            }
            break;

        case _SEARCH_STATE:
            break;

        case _ACTIVE_STATE:
            if(GET_OSD_READYFORDISPLAY() == _TRUE)
            {
                CLR_OSD_READYFORDISPLAY();
                CAdjustBackgroundColor(0x00, 0x00, 0x00);

                if(((((tINPUTMODE_PRESET_TABLE[stModeInfo.ModeCurr].PolarityFlag)&_FAIL_SAFE_TIMING)==_FAIL_SAFE_TIMING))/* || (bFailSafeTiming == _TRUE)*/)
                {
                   ucCurrState = _NOSUPPORT_STATE;
                   CTimerActiveTimerEvent(SEC(0.1), DisplayNoSupportHintBenq);
                   return;
                }
#if(_HDMI_SUPPORT == _ON)
                if(GET_INPUTSOURCE_TYPE() == _SOURCE_HDMI)
                {
                    if(CHdmiFormatDetect())
                    {
                        if(stGlobalData4.Mute==_MUTE_ON)
                            CAdjustAudioMute(_ON);
                        else
                            CAdjustAudioMute(_OFF);
                    }
                    else
                        CAdjustAudioMute(_ON);
                }
#endif
                if(!GET_FACTORY_MODE())
                    DisplayChangeSourceChangeBenq();
                else
                    DisplayAutoAndNonpresetBenq();
            }
            break;

        case _NOSUPPORT_STATE:
            if(GET_OSD_READYFORDISPLAY() == _TRUE)
            {
                CEepromSaveGlobalData0();
                CLR_OSD_READYFORDISPLAY();
                CTimerActiveTimerEvent(SEC(0.1), DisplayNoSupportHintBenq);
            }
            else if((((tINPUTMODE_PRESET_TABLE[stModeInfo.ModeCurr].PolarityFlag)&_FAIL_SAFE_TIMING) == _FAIL_SAFE_TIMING)
            && (ucOsdState == _MenuNoneBenq) && (ucKeyMessage != _NONE_KEY_MESSAGE) && (ucKeyMessage != _ENTER_KEY_MESSAGE))
            {
                DisplayNoSupportHintBenq();
            }
            break;

        case _NOSIGNAL_STATE:
            if(GET_OSD_READYFORDISPLAY() == _TRUE)
            {
                CEepromSaveGlobalData0();
                CLR_OSD_READYFORDISPLAY();
                CTimerActiveTimerEvent(SEC(1.5), DisplayNoSignalOrNoCableHintBenq);
            }
            break;

        case _SLEEP_STATE:

            if(bNoWakeUp) break;

            if((ucKeyMessage != _NONE_KEY_MESSAGE) && (ucKeyMessage != _ENTER_KEY_MESSAGE) && (bPressAnyKeytoWakeUp == _TRUE))
            {

#if(_MCU_TYPE == _REALTEK_EMBEDDED)
                    CMcuSelectFlashClk(_FLASH_CLK);
#endif

#if(_TOUCH_SENSOR == _ON)
                CKeyBuzzerBeep();
#endif
                CModeResetMode();
                bPressAnyKeytoWakeUp=_TRUE;
            }
            break;

        default:
            break;
    }
}

//--------------------------------------------------
// Description  :
// Input Value  :
// Output Value :
//--------------------------------------------------
void COsdEventMsgProcBenq(void)
{
    bHotKeyMenuFirstOn=_FALSE;
    switch(ucOsdEventMsg)
    {
        case _SAVE_EE_MODEUSERDATA_MSG:
            CEepromSaveModeData();
        break;
        case _SAVE_EE_GLOBALDATA0_MSG:
            CEepromSaveGlobalData0();
        break;
        case _SAVE_EE_GLOBALDATA1_MSG:
            CEepromSaveGlobalData1();
        break;
        case _SAVE_EE_GLOBALDATA3_MSG:
            CEepromSaveGlobalData3();
        break;
        case _SAVE_EE_GLOBALDATA4_MSG:
            CEepromSaveGlobalData4();
        break;
        case _SAVE_EE_ADCDATA_MSG:
            CEepromSaveAdcData();
        break;
        case _SAVE_EE_COLORDATA_MSG:
            CEepromSaveColorTempData();
        break;
        case _SAVE_EE_PICTUREDATA_MSG:
            CEepromSavePictureData();
        break;
        case _SAVE_EE_SYSTEMDATA_MSG:
            CEepromSaveSystemData();
        break;

        default:
            break;
    }
#if(_DDCCI_SUPPORT==_ON)
    if(ucOsdEventMsg != _NONE_MSG) CDdcciNewControlValue();
#endif
    ucOsdEventMsg = _NONE_MSG;
}
void COsdEnterNoneBenq(void)
{
   BYTE i;

⌨️ 快捷键说明

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