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

📄 sync.c

📁 车载 液晶显示器的主控程序(主要使用芯片为 MYSON MTV512 单片机、RealTek 2323 Scare 芯片、TVP5147(视频解码)。配Sharp 8寸液晶显示器 )。
💻 C
📖 第 1 页 / 共 2 页
字号:
//----------------------------------------------------------------------------------------------------
// ID Code      : Sync.c No.0002
// Update Note  : 
//
//----------------------------------------------------------------------------------------------------

#define __SYNC__

#include "..\Header\Include.h"


//--------------------------------------------------
// Description  : Measure sync type
// Input Value  : None
// Output Value : Return _TRUE if succeed
//--------------------------------------------------
bit CSyncHandler(void)
{
	if(GET_INPUTSYNC_TYPE() == _NO_SYNC_STATE)
	{
		if(!CSourceHandler())
		{
			SET_INPUTSYNC_TYPE(_NO_SYNC_STATE);	//if no signal in any port, set to no sync state. note by zhang_dc
			return _FALSE;
		}

		SET_INPUTSYNC_TYPE(CSyncMeasureSyncType());	//if find signal, measure sync type and set to it. note by zhang_dc

		switch(GET_INPUTSYNC_TYPE())
		{
			case _NO_SYNC_STATE:
				SET_INPUTSOURCE_TYPE(_SOURCE_NONE);
				return _FALSE;
				break;

			case _SS_STATE:
			case _CS_STATE:
			case _SOG_STATE:
				#if(_VIDEO_SUPPORT == _ON)
				CVIDEO_POWER_OFF();
				CVideoDataEnable(_OFF);
				CVideoPowerState(_VIDEO_POWER_SAVING);
				#endif
				/*
				#if(_YPBPR_SUPPORT == _ON)
				if((GET_INPUTPORT_TYPE(stSystemData.InputSource) == _YPBPR_A0_PORT) || (GET_INPUTPORT_TYPE(stSystemData.InputSource) == _YPBPR_A1_PORT))
				{
					SET_INPUTSOURCE_TYPE(_SOURCE_YPBPR);
				}
				else
				#endif
				{
					SET_INPUTSOURCE_TYPE(_SOURCE_VGA);
				}
				*/
				//version 200D
				SET_INPUTSOURCE_TYPE(_SOURCE_VGA);

				return _TRUE;
				break;
				
//version 200D add
#if(_YPBPR_SUPPORT == _ON)

            case _SOY_STATE:
                SET_INPUTSOURCE_TYPE(_SOURCE_YPBPR);
                return _TRUE;

#endif

#if(_TMDS_SUPPORT == _ON)
			case _DSS_STATE:
				#if(_VIDEO_SUPPORT == _ON)
				CVIDEO_POWER_OFF();
				CVideoDataEnable(_OFF);
				CVideoPowerState(_VIDEO_POWER_SAVING);
				#endif
				SET_INPUTSOURCE_TYPE(_SOURCE_DVI);
				return _TRUE;
				break;
#endif

#if(_VIDEO_SUPPORT == _ON)
			case _VIDEO8_STATE:		
				//Video power has been on while in port searching.
				SET_INPUTSOURCE_TYPE(_SOURCE_VIDEO8);
				return _TRUE;
				break;
#endif
			
            default:
                SET_INPUTSYNC_TYPE(_NO_SYNC_STATE);
                SET_INPUTSOURCE_TYPE(_SOURCE_NONE);
                return _FALSE;
		}
	}

	/*
	else		//if current state is having signal. note by zhang_dc
	{
		switch(GET_INPUTSOURCE_TYPE())
		{	
			//Measure HSYNC/VSYNC Source Select.  note by zhang_dc
			#if(_YPBPR_SUPPORT == _ON)
			case _SOURCE_YPBPR:
			#endif
			case _SOURCE_VGA:
				CScalerSetBit(_SYNC_CTRL_49, ~(_BIT1 | _BIT0), _BIT1);		//AHS/ADC_VS.  note by zhang_dc
				break;
			#if(_TMDS_SUPPORT == _ON)
			case _SOURCE_DVI:
				CScalerSetBit(_SYNC_CTRL_49, ~(_BIT1 | _BIT0), 0x00);		//TMDS. note by zhang_dc
				break;
			#endif

			#if(_VIDEO_SUPPORT == _ON)
			case _SOURCE_VIDEO8:
				//CVideoPowerState(_VIDEO_NORMAL);		//Add by zhang_dc
				CScalerSetBit(_SYNC_CTRL_49, ~(_BIT1 | _BIT0), _BIT0);		//VIDEO8. note by zhang_dc
				break;
			#endif
		}

		return _TRUE;
	}
	*/
	// .xhu, 20050803, update
	else
	{
		switch(GET_INPUTPORT_TYPE(stSystemData.InputSource))
		{	
			//Measure HSYNC/VSYNC Source Select.  note by zhang_dc
			#if(_YPBPR_SUPPORT == _ON)
			case _YPBPR_A0_PORT:
			case _YPBPR_A1_PORT:
			#endif
			case _DSUB_A0_PORT:
			case _DSUB_A1_PORT:
				CScalerSetBit(_SYNC_CTRL_49, ~(_BIT1 | _BIT0), _BIT1);		//AHS/ADC_VS.  note by zhang_dc
				break;
			#if(_TMDS_SUPPORT == _ON)
			case _DVI_I_A0_PORT:
			case _DVI_I_A1_PORT:
				CScalerSetBit(_SYNC_CTRL_49, ~(_BIT1 | _BIT0), 0x00);		//TMDS. note by zhang_dc
				break;
			#endif

			#if(_VIDEO_SUPPORT == _ON)
			case _VIDEO_AV_PORT:
			case _VIDEO_AV2_PORT:
				//CVideoPowerState(_VIDEO_NORMAL);		//Add by zhang_dc
				CScalerSetBit(_SYNC_CTRL_49, ~(_BIT1 | _BIT0), _BIT0);		//VIDEO8. note by zhang_dc
				break;
			#endif
		}
		/*
		//version 200D
		switch(GET_INPUTSOURCE_TYPE())
        {

#if(_YPBPR_SUPPORT == _ON)
            case _SOURCE_YPBPR:
#endif
            case _SOURCE_VGA:
                CScalerSetBit(_SYNC_CTRL_49, ~(_BIT1 | _BIT0), _BIT1);
                break;

#if(_TMDS_SUPPORT == _ON)

            case _SOURCE_DVI:
                CScalerSetBit(_SYNC_CTRL_49, ~(_BIT1 | _BIT0), 0x00);
                break;

#endif

#if(_VIDEO_SUPPORT == _ON)

            case _SOURCE_VIDEO8:
                CScalerSetBit(_SYNC_CTRL_49, ~(_BIT1 | _BIT0), _BIT0);
                break;

#endif

        }
		*/


		return _TRUE;
	}
	
}

/* v200c
//--------------------------------------------------
// Description  : Measure sync type
// Input Value  : None
// Output Value : Return sync type we measured
//--------------------------------------------------
BYTE CSyncMeasureSyncType(void)	//Updated by Realtek at 20050617 
{
    BYTE synctypetemp;
    switch(GET_INPUTPORT_TYPE(stSystemData.InputSource))
    {

#if(_YPBPR_SUPPORT == _ON)
        case _YPBPR_A0_PORT:
#endif
        case _DSUB_A0_PORT:
            CScalerSetBit(_SYNC_SELECT_47, ~(_BIT3 | _BIT2), 0x00);
            CScalerSetBit(_ADC_RGB_CTRL_DC, ~_BIT3, 0x00);
            CScalerSetBit(_SYNC_SELECT_47, ~_BIT4, ((BYTE)GET_INPUT_HS_SELECTION(stSystemData.InputSource) << 4));
            synctypetemp    = CSyncSearchSyncTypeVGA();
            break;

#if(_YPBPR_SUPPORT == _ON)
        case _YPBPR_A1_PORT:
#endif
        case _DSUB_A1_PORT:
            CScalerSetBit(_SYNC_SELECT_47, ~(_BIT3 | _BIT2), (_BIT3 | _BIT2));
            CScalerSetBit(_ADC_RGB_CTRL_DC, ~_BIT3, _BIT3);
            CScalerSetBit(_SYNC_SELECT_47, ~_BIT4, ((BYTE)GET_INPUT_HS_SELECTION(stSystemData.InputSource) << 4));
            synctypetemp    = CSyncSearchSyncTypeVGA();
            break;

#if(_TMDS_SUPPORT == _ON)

        case _DVI_PORT:
            synctypetemp    = CSyncSearchSyncTypeDVI();
            break;

        case _DVI_I_A0_PORT:
            synctypetemp    = CSyncSearchSyncTypeDVI();

            if(synctypetemp == _NO_SYNC_STATE)
            {
                CScalerSetBit(_SYNC_SELECT_47, ~(_BIT3 | _BIT2), 0x00);
                CScalerSetBit(_ADC_RGB_CTRL_DC, ~_BIT3, 0x00);
                CScalerSetBit(_SYNC_SELECT_47, ~_BIT4, ((BYTE)GET_INPUT_HS_SELECTION(stSystemData.InputSource) << 4));
                synctypetemp    = CSyncSearchSyncTypeVGA();
            }
            break;

        case _DVI_I_A1_PORT:
            synctypetemp    = CSyncSearchSyncTypeDVI();

            if(synctypetemp == _NO_SYNC_STATE)
            {
                CScalerSetBit(_SYNC_SELECT_47, ~(_BIT3 | _BIT2), (_BIT3 | _BIT2));
                CScalerSetBit(_ADC_RGB_CTRL_DC, ~_BIT3, _BIT3);
                CScalerSetBit(_SYNC_SELECT_47, ~_BIT4, ((BYTE)GET_INPUT_HS_SELECTION(stSystemData.InputSource) << 4));
                synctypetemp    = CSyncSearchSyncTypeVGA();
            }
            break;

#endif

#if(_VIDEO_SUPPORT == _ON)

        case _VIDEO_SV_PORT:
            CVideoIsExist(_SV_CHANNEL);
            synctypetemp    = _VIDEO8_STATE;
            break;

        case _VIDEO_AV_PORT:
            CVideoIsExist(_AV_CHANNEL);
            synctypetemp    = _VIDEO8_STATE;
            break;

        case _VIDEO_AV2_PORT:
            CVideoIsExist(_AV2_CHANNEL);
            synctypetemp    = _VIDEO8_STATE;
            break;


#endif

    }

    if((synctypetemp != _SS_STATE) && (synctypetemp != _VIDEO8_STATE))
    {
        CAdjustSyncProcessorMeasureStart();
        if(CTimerPollingEventProc(60, CMiscModeMeasurePollingEvent))
        {
            if(CModeMeasureData())
            {
                CSyncModifyPolarityVGA();
            }
        }    
    }

    return synctypetemp;
}

*/
//version 200D
//--------------------------------------------------
// Description  : Measure sync type
// Input Value  : None
// Output Value : Return sync type we measured
//--------------------------------------------------
BYTE CSyncMeasureSyncType(void)
{
    BYTE synctypetemp;

    switch(GET_INPUTPORT_TYPE(stSystemData.InputSource))
    {

#if(_YPBPR_SUPPORT == _ON)
        case _YPBPR_A0_PORT:
#endif
        case _DSUB_A0_PORT:
            CScalerSetBit(_SYNC_SELECT_47, ~(_BIT3 | _BIT2), 0x00);
            CScalerSetBit(_ADC_RGB_CTRL_DC, ~_BIT3, 0x00);
            CScalerSetBit(_SYNC_SELECT_47, ~_BIT4, ((BYTE)GET_INPUT_HS_SELECTION(stSystemData.InputSource) << 4));
            synctypetemp    = CSyncSearchSyncTypeVGA();
            break;

#if(_YPBPR_SUPPORT == _ON)
        case _YPBPR_A1_PORT:
#endif
        case _DSUB_A1_PORT:
            CScalerSetBit(_SYNC_SELECT_47, ~(_BIT3 | _BIT2), (_BIT3 | _BIT2));
            CScalerSetBit(_ADC_RGB_CTRL_DC, ~_BIT3, _BIT3);
            CScalerSetBit(_SYNC_SELECT_47, ~_BIT4, ((BYTE)GET_INPUT_HS_SELECTION(stSystemData.InputSource) << 4));
            synctypetemp    = CSyncSearchSyncTypeVGA();
            break;

#if(_TMDS_SUPPORT == _ON)

        case _DVI_PORT:
            synctypetemp    = CSyncSearchSyncTypeDVI();
            break;

        case _DVI_I_A0_PORT:

#if(_DVI_I_SOURCE_SWITCH_SUPPORT == _ON)
            if(GET_DVI_I_SOURCE_SWITCH())
#endif
            {
                synctypetemp    = CSyncSearchSyncTypeDVI();

                if(synctypetemp == _NO_SYNC_STATE)
                {
                    CScalerSetBit(_SYNC_SELECT_47, ~(_BIT3 | _BIT2), 0x00);
                    CScalerSetBit(_ADC_RGB_CTRL_DC, ~_BIT3, 0x00);
                    CScalerSetBit(_SYNC_SELECT_47, ~_BIT4, ((BYTE)GET_INPUT_HS_SELECTION(stSystemData.InputSource) << 4));
                    synctypetemp    = CSyncSearchSyncTypeVGA();
                }
            }
#if(_DVI_I_SOURCE_SWITCH_SUPPORT == _ON)
            else
            {
                CScalerSetBit(_SYNC_SELECT_47, ~(_BIT3 | _BIT2), 0x00);
                CScalerSetBit(_ADC_RGB_CTRL_DC, ~_BIT3, 0x00);
                CScalerSetBit(_SYNC_SELECT_47, ~_BIT4, ((BYTE)GET_INPUT_HS_SELECTION(stSystemData.InputSource) << 4));
                synctypetemp    = CSyncSearchSyncTypeVGA();

                if(synctypetemp == _NO_SYNC_STATE)
                {
                    synctypetemp    = CSyncSearchSyncTypeDVI();
                }
            }
#endif
            break;

        case _DVI_I_A1_PORT:
#if(_DVI_I_SOURCE_SWITCH_SUPPORT == _ON)
            if(GET_DVI_I_SOURCE_SWITCH())
#endif
            {
                synctypetemp    = CSyncSearchSyncTypeDVI();

                if(synctypetemp == _NO_SYNC_STATE)
                {
                    CScalerSetBit(_SYNC_SELECT_47, ~(_BIT3 | _BIT2), (_BIT3 | _BIT2));
                    CScalerSetBit(_ADC_RGB_CTRL_DC, ~_BIT3, _BIT3);
                    CScalerSetBit(_SYNC_SELECT_47, ~_BIT4, ((BYTE)GET_INPUT_HS_SELECTION(stSystemData.InputSource) << 4));
                    synctypetemp    = CSyncSearchSyncTypeVGA();
                }
            }
#if(_DVI_I_SOURCE_SWITCH_SUPPORT == _ON)
            else
            {
                CScalerSetBit(_SYNC_SELECT_47, ~(_BIT3 | _BIT2), (_BIT3 | _BIT2));
                CScalerSetBit(_ADC_RGB_CTRL_DC, ~_BIT3, _BIT3);
                CScalerSetBit(_SYNC_SELECT_47, ~_BIT4, ((BYTE)GET_INPUT_HS_SELECTION(stSystemData.InputSource) << 4));
                synctypetemp    = CSyncSearchSyncTypeVGA();

                if(synctypetemp == _NO_SYNC_STATE)
                {
                    synctypetemp    = CSyncSearchSyncTypeDVI();
                }
            }
#endif
            break;

#endif

#if(_VIDEO_SUPPORT == _ON)

        case _VIDEO_SV_PORT:
            CVideoIsExist(_SV_CHANNEL);
            synctypetemp    = _VIDEO8_STATE;
            break;

        case _VIDEO_AV_PORT:
            CVideoIsExist(_AV_CHANNEL);
            synctypetemp    = _VIDEO8_STATE;
            break;
			
        case _VIDEO_AV2_PORT:
            CVideoIsExist(_AV2_CHANNEL);
            synctypetemp    = _VIDEO8_STATE;
            break;

#endif

    }

    // Modify polarity
    if((synctypetemp != _SS_STATE) && (synctypetemp != _VIDEO8_STATE))
    {
        CAdjustSyncProcessorMeasureStart();

        if(CTimerPollingEventProc(60, CMiscModeMeasurePollingEvent))
        {
            if(CModeMeasureData())
            {
                CSyncModifyPolarityVGA();
            }
            else
            {
                synctypetemp = _NO_SYNC_STATE;
            }
        }
        else
        {
            synctypetemp = _NO_SYNC_STATE;
        }
    }

    return synctypetemp;
}

/*
//--------------------------------------------------
// Description  : Search VGA sync type
// Input Value  : None
// Output Value : Return sync type
//--------------------------------------------------
BYTE CSyncSearchSyncTypeVGA(void)
{
#define _SYNCTYPE_CONFIRM_TIMES   3 // 2.Updated by Realtek at 20050617

    BYTE synctypeprev, synctypecurr, cnt;

    cnt = _SYNCTYPE_CONFIRM_TIMES;
    do
    {
        synctypecurr = CSyncGetSyncTypeStep1VGA();

        if(synctypecurr == _CS_STATE)
            synctypecurr = CSyncGetSyncTypeStep2VGA();

        if(cnt == _SYNCTYPE_CONFIRM_TIMES)
        {
            synctypeprev = synctypecurr;
            continue;
        }

        if(synctypecurr != synctypeprev)
        {
            return _NO_SYNC_STATE;
        }

    }
    while(--cnt);

    return synctypecurr;

#undef _SYNCTYPE_CONFIRM_TIMES
}
*/
//version 200D
//--------------------------------------------------

⌨️ 快捷键说明

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