亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
综合欧美亚洲日本| 亚洲精品一区二区三区99| 成人午夜视频在线观看| 国产一区二区三区四区五区入口| 亚洲另类在线一区| 一区二区三区欧美亚洲| 亚洲精品视频自拍| 日欧美一区二区| 激情深爱一区二区| 国产电影精品久久禁18| www.在线欧美| 日韩欧美国产高清| 国产精品看片你懂得| 夜夜精品浪潮av一区二区三区| 亚洲成av人在线观看| 狠狠色丁香婷婷综合| 成人av午夜电影| 在线不卡中文字幕播放| 国产三级欧美三级日产三级99| 亚洲欧美日韩综合aⅴ视频| 日本中文字幕一区二区有限公司| 久久99国产乱子伦精品免费| aaa欧美日韩| 精品成人佐山爱一区二区| 亚洲特黄一级片| 黄色日韩三级电影| 91精品福利在线| 欧美激情综合在线| 免费av网站大全久久| 色婷婷av一区二区三区之一色屋| 精品国产1区二区| 亚洲成av人片在线| 在线日韩一区二区| 国产精品久久久爽爽爽麻豆色哟哟| 五月天激情综合| 欧美亚洲国产一区二区三区 | 337p日本欧洲亚洲大胆精品| 亚洲黄色录像片| av在线播放一区二区三区| 久久天天做天天爱综合色| 中文字幕在线一区| 黄网站免费久久| 精品人在线二区三区| 美国一区二区三区在线播放| 日韩一区二区三区四区| 日韩av一级电影| 国产精品66部| 欧美激情在线一区二区| 国产91色综合久久免费分享| 国产精品免费av| 91免费国产在线| 亚洲电影欧美电影有声小说| 欧美一区三区二区| 国产精品亚洲专一区二区三区| 久久美女高清视频| caoporm超碰国产精品| 亚洲国产精品影院| 欧美成人免费网站| 96av麻豆蜜桃一区二区| 日日夜夜精品视频天天综合网| 精品国产精品一区二区夜夜嗨 | 在线观看免费亚洲| 亚洲午夜精品在线| 久久免费精品国产久精品久久久久| 99视频精品全部免费在线| 亚洲成人自拍偷拍| 国产欧美一区二区精品性| 欧美高清视频在线高清观看mv色露露十八| 亚洲成人精品影院| 亚洲色图丝袜美腿| 国产亚洲美州欧州综合国| 欧美亚洲一区二区在线| 成人手机在线视频| 国产在线精品免费| 首页亚洲欧美制服丝腿| 亚洲日本在线a| 国产精品亲子乱子伦xxxx裸| 欧美老肥妇做.爰bbww| 在线亚洲人成电影网站色www| 精品无码三级在线观看视频| 丝袜国产日韩另类美女| 亚洲国产欧美一区二区三区丁香婷| 亚洲欧洲精品天堂一级| 久久精品视频在线免费观看| 欧美一区永久视频免费观看| 欧美亚洲尤物久久| 亚洲夂夂婷婷色拍ww47| 亚洲国产精品精华液ab| 日本一二三四高清不卡| 欧美韩国一区二区| 亚洲欧美另类在线| 亚洲欧美在线aaa| 亚洲欧美日韩国产另类专区| 亚洲三级电影网站| 一区二区激情小说| 日韩成人免费看| 美日韩一区二区| 高清av一区二区| 色综合天天综合色综合av| 一本久久综合亚洲鲁鲁五月天| 在线免费观看日韩欧美| 9191成人精品久久| 欧美国产日本视频| 亚洲综合丝袜美腿| 国产精品一区二区在线播放| 波多野结衣欧美| 欧美一区二区三区在| 26uuuu精品一区二区| 中文字幕一区二区视频| 视频一区在线播放| 成人免费看的视频| 911精品国产一区二区在线| 久久久久久久综合| 亚洲国产三级在线| 波多野结衣亚洲| 久久奇米777| 日韩成人dvd| 欧美三级视频在线观看| 久久久亚洲精品石原莉奈 | 9i看片成人免费高清| 日韩亚洲欧美中文三级| 亚洲一线二线三线视频| 成人久久久精品乱码一区二区三区| 精品视频在线免费看| 成人免费视频在线观看| 国产专区欧美精品| 日韩视频永久免费| 日韩在线一区二区三区| 欧美日韩在线播放| 亚洲一区日韩精品中文字幕| 欧美国产一区视频在线观看| 国产精品成人免费| 粉嫩绯色av一区二区在线观看| 日韩午夜在线影院| 久久se精品一区二区| 欧美日韩黄视频| 秋霞电影网一区二区| 欧美一区二区三区爱爱| 免费av成人在线| 精品国产123| 成人免费av在线| 亚洲精品国产成人久久av盗摄| 一本色道亚洲精品aⅴ| 亚洲一区二区成人在线观看| 欧美精品在线视频| 久草在线在线精品观看| 26uuu国产在线精品一区二区| 国产精品白丝jk黑袜喷水| 中文字幕制服丝袜成人av| 91福利国产成人精品照片| 蜜臀av亚洲一区中文字幕| 久久久综合视频| 欧美性videosxxxxx| 蜜桃在线一区二区三区| 中文字幕国产一区二区| 欧美性色欧美a在线播放| 免费观看一级欧美片| 国产精品久久久久久久久图文区| 在线观看不卡一区| 成人手机在线视频| 免费成人美女在线观看.| 一区二区三区日韩欧美| 欧美大片一区二区三区| 91丨九色丨蝌蚪富婆spa| 国产乱子伦一区二区三区国色天香| 亚洲欧美色一区| 国产精品色一区二区三区| 精品国产91久久久久久久妲己| 欧美三级电影精品| 一本久久a久久精品亚洲| 懂色av中文一区二区三区| 免费在线一区观看| 日本欧美肥老太交大片| 亚洲成av人综合在线观看| 亚洲欧美另类在线| 最新国产精品久久精品| 国产精品免费看片| 日韩毛片在线免费观看| 国产欧美一区二区精品忘忧草| 久久亚区不卡日本| 国产日产精品一区| 国产欧美日韩精品一区| 中文字幕va一区二区三区| 欧美激情一区三区| 亚洲免费在线视频| 偷拍日韩校园综合在线| 日本欧美肥老太交大片| 国内精品伊人久久久久av影院| 国产永久精品大片wwwapp| 国产福利不卡视频| 91麻豆精品在线观看| 在线精品视频一区二区三四| 欧美日韩免费在线视频| 欧美精品一区二区久久久| 国产亚洲一区字幕| 亚洲一区二区精品久久av| 久久国产精品露脸对白| 91色.com| 欧美精品一区二区三区在线播放 | 亚洲成人你懂的|