亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mode.c

?? RTD2662板卡源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
//----------------------------------------------------------------------------------------------------
// ID Code  	: Mode.c No.0002
// Update Note  :
//
//----------------------------------------------------------------------------------------------------

#define __MODE__

#include "Core\Header\Include.h"




unsigned char code HDMI_ModeMap[] =
{
	0,  1,  2,  2,  3,  4,  
	1,  1,  1,  1,  1,  1,  
	1,  1,  2,  2,  5,  2,  
	2,  3,  4,  1,  1,  1,  
	1,  1,  1,  1,  1,  2,	 
	2,  5,  5,  5,  5
};

//--------------------------------------------------
// Description  : Mode handler, the main control flow
// Input Value  : None
// Output Value : None
//--------------------------------------------------
void CModeHandler(void)
{
	if (CPowerHandler()) 
	{
		ucCurrState = GET_POWERSTATUS() ? _INITIAL_STATE : _PWOFF_STATE;
	}
	switch (ucCurrState)
	{
		case _PWOFF_STATE:
			ucCurrState = GET_POWERSTATUS() ? _INITIAL_STATE : _PWOFF_STATE;
			break;

#if(_OSD_TYPE == _OSD007)
        case _SOURCE_CHANGE_STATE:
#if(_CHANGE_SOURCE_METHOD == _CHANGE_SOURCE_METHOD_0)
            CTimerDelayXms(20);
#endif
            break;
#endif

		case _INITIAL_STATE:
			if (bSourceVideo())
            {
               CVideoInitial();
            }

            SET_FIRST_SHOW_NOTE();
			ucCurrState = _SEARCH_STATE;

/*
#if(_LOGO_ENABLE
#if(_OSD_TYPE == _OSD003)
            CModeSetFreeRun();
            CDrawLogo(0x03);
            CPowerPanelOn();
            CPowerLightPowerOn();
            CPattenChange();
#endif
#endif
*/


            if (_GET_INPUT_SOURCE() == _SOURCE_DVI || _GET_INPUT_SOURCE() == _SOURCE_HDMI)
            {
                 CShowNote();//ucOsdEventMsg = _DO_SHOW_NOTE;
                CPowerPanelOn();
    			if (GET_LIGHTPOWERSTATUS() == _OFF) 
    			{
                    CPowerLightPowerOn();
    			}
            }

            if(GET_FIRST_LOADFONT() == _TRUE)
            {
                CLR_FIRST_LOADFONT();
                COsdDispFirstTimeLoadFont();
			    #if(LNG_CHI_S_EN)
			    	if(GET_LANGUAGE() == LNG_CHI_S)
			    		COsdLoad1BitFontWidth12(FntCH_S,0x80,48);      
				#endif
				#if(LNG_CHI_T_EN)
			    	if(GET_LANGUAGE() == LNG_CHI_T)
			    		COsdLoad1BitFontWidth12(FntCH_T,0x80,48);      
				#endif
#if(_OSD_TYPE == _OSD002)
                g_ucMenuItemIndex = _MENU_NONE;
#endif
            }
			break;
					
        case _SEARCH_STATE:
        case _ACTIVE_STATE:
        case _NOSIGNAL_STATE:
		case _NOSUPPORT_STATE:
		case _SLEEP_STATE:
			switch (_GET_INPUT_SOURCE()) 
			{
				case _SOURCE_YPBPR:
				case _SOURCE_VGA:
				case _SOURCE_DVI:
	            case _SOURCE_HDMI:
					CSyncProcess();
				break;
			#if(_VIDEO_SUPPORT == _ON)
				case _SOURCE_VIDEO_AV:
				case _SOURCE_VIDEO_SV:
				case _SOURCE_VIDEO_TV:
					CVideoProcess();
				break;
			#endif
				case _SOURCE_NONE:   // Don't need to do anything
				break;
				
			default:
				break;
    		}
    		break;
    				
    	default:
    		while(_TRUE);
	}
}
//--------------------------------------------------
// Description  : Check measure ready process
// Input Value  : None
// Output Value : Return _TRUE if measure finished, _FALSE if timeout
//--------------------------------------------------
bit CModeMeasureReady(void)
{
	CScalerSetBit(_SYNC_SELECT_47, ~_BIT0, 0x00);
	CAdjustSyncProcessorMeasureStart();
	if (CTimerPollingEventProc(60, CMiscModeMeasurePollingEvent)) 
	{
		return _TRUE;
	} 
	else
	{
		CScalerSetBit(_MEAS_HS_PERIOD_H_52, ~_BIT5, 0x00);
		return _FALSE;
	}
}

/**
* CSyncMeasureSyncType
* Get measure data and convert into system information
* @param <none>
* @return {_TRUE if success, _FALSE if the measurement result is out of range}
*
*/
bit CModeMeasureData(void)
{

	if(_GET_INPUT_SOURCE() == _SOURCE_DVI || _GET_INPUT_SOURCE() == _SOURCE_HDMI)
    {
		CScalerSetBit(_SYNC_SELECT_47, ~_BIT6, _BIT6);	
		CScalerSetBit(_SYNC_CTRL_49, ~_BIT2, _BIT2);
	}
	
	// Read measurement status bit
	CScalerRead(_MEAS_HS_PERIOD_H_52, 3, &pData[8], _AUTOINC);// 
	if((bit)(pData[8] & _BIT4) || (bit)(pData[10] & _BIT4) || (bit)(pData[10] & _BIT5))
    {
		// Hsync period overflow ,  Vsync period timeout       ,  Vsync period timeout
		//DebugPrintf("\n CModeMeasureData.0.%c",0x20);		
		return _FALSE;
	}			
	
	// Pop up measurement result
	CScalerSetBit(_MEAS_HS_PERIOD_H_52, ~_BIT6, _BIT6);
	CScalerSetBit(_MEAS_HS_VS_HI_SEL_58, ~_BIT0, 0x00);
	CScalerRead(_MEAS_HS_PERIOD_H_52, 6, &pData[8], _AUTOINC);
	
	// Calculate measurement result
	((WORD *)pData)[0] = ((pData[8] & 0x1f) << 8) | pData[9];
	((WORD *)pData)[1] = ((pData[10] & 0x1f) << 8) | pData[11];
	((WORD *)pData)[2] = ((pData[12] & 0xf0) << 4) | pData[13];
	
	if((((WORD *)pData)[0] >=  0x07ff) || (((WORD *)pData)[1] >= 0x07ff) || (((WORD *)pData)[0] == 0) || (((WORD *)pData)[1] == 0))
	{
		// The measurement result is out of range
		//DebugPrintf("\n CModeMeasureData.1.%c",0x20);
		return _FALSE;
	}
	else
	{
		// Store measurement results in global system variable
		stModeInfo.Polarity = (pData[10] & 0xc0) >> 6;
		stModeInfo.IHCount = ((WORD *) pData)[0];
		stModeInfo.IHFreq = (WORD) ((DWORD) _RTD_XTAL * 10 * 2 / stModeInfo.IHCount);
		stModeInfo.IHFreq = (stModeInfo.IHFreq >> 1) + (stModeInfo.IHFreq & 0x01);
		stModeInfo.IVTotal = ((WORD *) pData)[1];
		stModeInfo.IVFreq = (WORD)((DWORD) (stModeInfo.IHFreq) * 1000 * 2 / stModeInfo.IVTotal);
		stModeInfo.IVFreq = (stModeInfo.IVFreq >> 1) + (stModeInfo.IVFreq & 0x01);
		stModeInfo.IHSyncPulseCount = ((WORD *) pData)[2];
		
		if((_GET_INPUT_SOURCE()==_SOURCE_DVI || _GET_INPUT_SOURCE() == _SOURCE_HDMI) && (ucCurrState==_SEARCH_STATE))	//for philips dvd player(dvp5965k) hdmi timing
			CTimerDelayXms(40);
		//DebugPrintf("\n stModeInfo.IHFreq=%x",(BYTE)(stModeInfo.IHFreq>>8));	
		//DebugPrintf(",%x",(BYTE)(stModeInfo.IHFreq));	
		//DebugPrintf("\n stModeInfo.IVFreq=%x",(BYTE)(stModeInfo.IVFreq>>8));	
		//DebugPrintf(",%x",(BYTE)(stModeInfo.IVFreq));	
		return _TRUE;
	}
}

//----------------------------------------------------------------------------------------------------
// Mode Detect Functions
//----------------------------------------------------------------------------------------------------
/**
* CModeDetect
* mode detect according to the input port
* @param <none>
* @return {TRUE if sync type is identified;FALSE if no sync}
*
*/
//--------------------------------------------------
// Description  : Mode detect process
// Input Value  : None
// Output Value : Return _TRUE if we get a stable mode
//--------------------------------------------------
bit CModeDetect(void)
{
	switch (_GET_INPUT_SOURCE()) 
	{
	case _SOURCE_VGA:
#if(_TMDS_SUPPORT == _ON)
	case _SOURCE_DVI:
#endif
#if(_YPBPR_SUPPORT == _ON)
	case _SOURCE_YPBPR:
#endif
    case _SOURCE_HDMI:
		if (CModeDetectCommon())
			return _TRUE;
		break;
	}
	return _FALSE;
}

/**
* CModeDetect
* Mode detect process for VGA and DVI
* first decide if mode is exist,then decide if the signal is stable
* if there is nosignal but it is stable,also return TRUE
* @param <none>
* @return {_TRUE if there is a stable mode;_FALSE if not}
*
*/
//--------------------------------------------------
// Description  : Mode detect process for VGA and DVI
// Input Value  : None
// Output Value : Return _TRUE if we get a stable mode
//--------------------------------------------------
bit CModeDetectCommon(void)
{
	BYTE modetemp = _MODE_NOSIGNAL;
	BYTE polaritytemp;
	WORD hcount, vtotal;
	
	if (CModeMeasureReady()) 
	{
		polaritytemp = stModeInfo.Polarity;
		hcount = stModeInfo.IHCount;
		vtotal = stModeInfo.IVTotal;
		
		// Get measure results and decide " modetemp = _MODE_NOSIGNAL/_MODE_NOSUPPORT/_MODE_EXIST "
		
		if (CModeMeasureData()) 
		{
            CSyncModifyPolarityVGA();
			stModeInfo.ModeCurr = _MODE_NOSIGNAL;
			
			if (abs(stModeInfo.IHCount - hcount) <= 1)
				stModeInfo.IHCount = hcount;
			
			if (abs(stModeInfo.IVTotal - vtotal) <= 2)
				stModeInfo.IVTotal = vtotal;
			
			if ((stModeInfo.IHCount != hcount) ||(stModeInfo.IVTotal != vtotal) ||	(stModeInfo.Polarity != polaritytemp))
			{
				modetemp = _MODE_NOSIGNAL;
			}
			else 
			{
				if ((stModeInfo.IHFreq < Panel[ucPanelSelect]->HSyncMinFreq) ||(stModeInfo.IHFreq > Panel[ucPanelSelect]->HSyncMaxFreq) ||
					(stModeInfo.IVFreq < Panel[ucPanelSelect]->VSyncMinFreq) ||(stModeInfo.IVFreq > Panel[ucPanelSelect]->VSyncMaxFreq)) 
				{
					modetemp = _MODE_NOSUPPORT;
				}
				else 
				{
					modetemp = _MODE_EXIST;
				}
			}
		}
		else 
		{
			modetemp = _MODE_NOSIGNAL;
		}
		// Wait mode stable and decide the mode type for current source
		if (modetemp != ucModeFound) 
		{
			ucModeFound = modetemp;
			ucEvent1 = _INACTIVE_COUNTDOWN_EVENT;
			CLR_MODESTABLE();
			CTimerCountDownEventProc(&ucEvent1, 3, CModeStableCountDownEvent);
			return _FALSE;
		}
		else 
		{
			CTimerCountDownEventProc(&ucEvent1, 3, CModeStableCountDownEvent);
			if (GET_MODESTABLE()) 
			{
				if (ucModeFound == _MODE_EXIST)
				{
					CModeInterlaceCheck();//v003_interlace_check
					stModeInfo.ModeCurr = CModeSearchDisplayMode();
				}
				else 
				{
					stModeInfo.ModeCurr = ucModeFound;
				}
				return _TRUE;
			}
			else 
			{
				return _FALSE;
			}
		}
	}
	else 
	{
		return _FALSE;
	}
}

/**
* CModeIsChange
* Check if mode is changed
* check the current mode compare with the previous mode
* @param <none>
* @return {_TRUE if mode is changed;_FALSE if not}
*
*/
bit CModeIsChange(void)
{
	BYTE polaritytemp;
	WORD hcount, vtotal;
	
	polaritytemp = stModeInfo.Polarity;
	hcount = stModeInfo.IHCount;
	vtotal = stModeInfo.IVTotal;
	
	if(_GET_INPUT_SOURCE() == _SOURCE_VGA)
	{
		if(CScalerGetBit(_HSYNC_TYPE_DETECTION_FLAG_4E, _BIT6 | _BIT5))
			return _TRUE;
	}
	//DebugPrintf("\nMMD.1.%c",0x20);	
	if(CModeMeasureData())
	{
		if(abs(stModeInfo.IHCount - hcount) <= 1)
			stModeInfo.IHCount = hcount;
       	if(abs(stModeInfo.IVTotal - vtotal) <= 2)
			stModeInfo.IVTotal = vtotal;
		
       	if((stModeInfo.IHCount != hcount) || (stModeInfo.IVTotal != vtotal) || (stModeInfo.Polarity != polaritytemp))
			return _TRUE;
		else
			return _FALSE;
	}
	else
		return _TRUE;
}

/**
* CModeSearchDisplayMode
* Search display mode according to the input source
* called only by CModeDetectCommon
* @param <none>
* @return {_TRUE if there is a stable mode;_FALSE if not}
*
*/
//--------------------------------------------------
// Description  : Search display mode process
// Input Value  : None
// Output Value : Mode number
//--------------------------------------------------
BYTE CModeSearchDisplayMode(void)
{
	BYTE modetemp;

	switch (_GET_INPUT_SOURCE())
	{
	case _SOURCE_VGA:
		modetemp = CModeSearchModeVGA();
		break;
		
#if(_YPBPR_SUPPORT == _ON)
	case _SOURCE_YPBPR:
		modetemp = CYPbPrSearchMode();
		break;
#endif
		
#if((_TMDS_SUPPORT == _ON) || (_HDMI_SUPPORT == _ON))
	case _SOURCE_DVI:
    case _SOURCE_HDMI:
		modetemp = CModeSearchModeDVI();
		break;
#endif
	}
	return modetemp;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产综合久久精品app| 国产午夜精品在线观看| 欧美一二三区在线| 国产精品你懂的在线欣赏| 一区二区三区在线播放| 久久99久久99精品免视看婷婷| 成人h动漫精品一区二区| 91精品国产麻豆国产自产在线| 亚洲国产精品成人综合| 五月天精品一区二区三区| www.av亚洲| 26uuuu精品一区二区| 亚洲成av人片在线观看| 成人avav影音| 久久精品一级爱片| 麻豆成人综合网| 欧美日韩高清一区| 亚洲综合男人的天堂| 91污片在线观看| 国产精品美女久久久久久久久| 美女国产一区二区三区| 欧美丰满少妇xxxbbb| 亚洲与欧洲av电影| 99精品在线观看视频| 国产精品少妇自拍| 国产91丝袜在线播放| 久久精品人人做人人爽97| 琪琪一区二区三区| 91精品国产乱| 三级成人在线视频| 欧美精品亚洲二区| 婷婷久久综合九色综合绿巨人 | 日本伦理一区二区| 中文字幕日本不卡| 成人少妇影院yyyy| 国产精品看片你懂得| 国产成人免费视频一区| 欧美国产日韩一二三区| 成人免费毛片app| 国产精品动漫网站| 91老师国产黑色丝袜在线| 美女www一区二区| 2022国产精品视频| 国产成人在线网站| 国产欧美一区二区精品忘忧草| 国产原创一区二区| 国产三级精品视频| 成人av网站大全| 亚洲裸体xxx| 在线观看视频一区二区| 亚洲动漫第一页| 日韩视频一区二区| 国产一区二区主播在线| 国产亚洲自拍一区| 91丨九色丨国产丨porny| 亚洲一二三区在线观看| 在线综合视频播放| 国产91精品一区二区麻豆网站| 中文字幕日韩欧美一区二区三区| 欧美亚洲国产一区二区三区 | 99久久婷婷国产精品综合| 国产精品狼人久久影院观看方式| 不卡视频一二三四| 亚洲午夜av在线| 精品国产一区二区三区四区四| 国产精品18久久久久久久久久久久| 国产精品久线在线观看| 欧美性色黄大片手机版| 久久精品国产**网站演员| 国产精品三级av在线播放| 在线免费不卡视频| 紧缚奴在线一区二区三区| 亚洲婷婷综合久久一本伊一区 | 日韩精彩视频在线观看| 国产女主播视频一区二区| 欧美三级中文字| 国产精品中文字幕日韩精品| 一区二区不卡在线播放 | 久久九九久精品国产免费直播| 一本一本大道香蕉久在线精品| 偷窥国产亚洲免费视频| 国产欧美日韩在线看| 欧美老女人第四色| 高清不卡在线观看| 日韩av成人高清| 成人欧美一区二区三区在线播放| 3751色影院一区二区三区| 成人黄色片在线观看| 美女一区二区三区| 亚洲午夜久久久久久久久久久| 久久人人爽爽爽人久久久| 欧美偷拍一区二区| 91亚洲精华国产精华精华液| 久久99国内精品| 午夜亚洲福利老司机| 日本一区二区三区dvd视频在线| 欧美日韩精品二区第二页| 99国产精品久| 国产 欧美在线| 免播放器亚洲一区| 亚洲国产一区在线观看| 国产精品狼人久久影院观看方式| 日韩免费看的电影| 欧美成人精品1314www| 欧美午夜电影一区| 欧美性猛交一区二区三区精品| 波多野洁衣一区| 国产精品一二三四区| 精品亚洲免费视频| 奇米色777欧美一区二区| 午夜精品久久一牛影视| 亚洲精品乱码久久久久久久久| 日本一区二区三区在线观看| 久久这里只有精品视频网| 亚洲精品第1页| 中文字幕在线一区免费| 国产亚洲精品久| www一区二区| 337p日本欧洲亚洲大胆色噜噜| 日韩精品一区二区三区蜜臀| 欧美变态tickle挠乳网站| 日韩一区二区三区在线| 日韩欧美国产一区二区在线播放 | 亚洲aaa精品| 日韩精品免费视频人成| 三级欧美在线一区| 久久精品二区亚洲w码| 国产乱码精品一区二区三区忘忧草| 激情综合色综合久久综合| 韩日av一区二区| 粉嫩一区二区三区性色av| 99久久婷婷国产| 欧美在线你懂的| 欧美一区二区精品久久911| 久久综合成人精品亚洲另类欧美| 久久伊99综合婷婷久久伊| 欧美国产激情二区三区| 亚洲欧美另类在线| 亚洲国产精品一区二区www在线 | 一区二区三区日韩欧美精品| 亚洲成人av一区二区| 热久久一区二区| 国产成人午夜高潮毛片| 91婷婷韩国欧美一区二区| 欧美探花视频资源| www成人在线观看| 日韩理论片在线| 三级欧美韩日大片在线看| 国产999精品久久久久久绿帽| 91福利国产精品| 精品国偷自产国产一区| 亚洲色图制服丝袜| 美国十次综合导航| 成人免费av网站| 欧美日韩视频在线第一区| 欧美xxxxx牲另类人与| 中文字幕在线免费不卡| 日韩精品乱码免费| 99精品视频免费在线观看| 欧美精三区欧美精三区 | 欧美日韩第一区日日骚| 欧美精品一区二区久久婷婷| 一区二区三区四区五区视频在线观看| 亚洲va在线va天堂| 成人性生交大片免费| 欧美日韩大陆在线| 中文字幕欧美一| 黄色精品一二区| 欧美蜜桃一区二区三区| 国产午夜精品一区二区三区视频| 亚洲综合色丁香婷婷六月图片| 国产成人av电影| 精品剧情v国产在线观看在线| 一区二区三区四区在线播放| 风流少妇一区二区| 日韩视频一区二区三区在线播放| 亚洲精品自拍动漫在线| 高清国产一区二区三区| 欧美成人video| 亚洲午夜av在线| 91视视频在线观看入口直接观看www| 欧美成人高清电影在线| 欧美a一区二区| 91精品国产色综合久久| 午夜精品一区在线观看| 欧美无砖专区一中文字| 中文字幕一区二区三区在线播放 | 日韩不卡免费视频| 欧美丝袜自拍制服另类| 一区二区三区精品久久久| 成人动漫av在线| 国产精品你懂的在线欣赏| 成人性生交大片免费看在线播放 | 国产精品一区二区免费不卡 | 国产精品网友自拍| 国产精品综合二区| 精品国产一区二区在线观看| 精品一区二区在线视频| 日韩一区二区在线看片| 久久99久久99|