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

📄 osd.c

📁 车载 液晶显示器的主控程序(主要使用芯片为 MYSON MTV512 单片机、RealTek 2323 Scare 芯片、TVP5147(视频解码)。配Sharp 8寸液晶显示器 )。
💻 C
📖 第 1 页 / 共 5 页
字号:
}

void COsdLanguagePageIRMessage(void)
{

}

//------------------------------------------
// Source Process
//------------------------------------------
void COsdSourcePageSelectMessage(void)
{
/*	if(stSystemData.InputSource == ucOsd_Item_Index0-1)		//save source, do nothing.
		return;

	stSystemData.InputSource = ucOsd_Item_Index0-1;
	ucOsdEventMsg = _CHANGE_SOURCE_MSG;

	//SET_INPUTSOURCE_TYPE(_SOURCE_VIDEO8);
	switch(GET_INPUTPORT_TYPE(stSystemData.InputSource))
	{
		#if(_VIDEO_SUPPORT == _ON)
		#if(_VIDEO_TYPE == _VIDEO_5147)
		case _VIDEO_AV_PORT:
			CVideoPowerState(_VIDEO_NORMAL);
			CTimerDelayXms(20);
			CVideoDataEnable(_ON);
			break;
		#endif
		#endif

		case _DSUB_A0_PORT:
		case _DSUB_A1_PORT:
			
			#if(_VIDEO_SUPPORT == _ON)
			#if(_VIDEO_TYPE == _VIDEO_5147)
			CVideoDataEnable(_OFF);
			CVideoPowerState(_VIDEO_POWER_SAVING);

			#endif
			#endif
			
			break;
			
		default:
			break;
	}
	*/
	//x.hu, update for source switch
	// if current source, redraw top level OSD page only:
	if(stSystemData.InputSource == ucOsd_Item_Index0-1) {		// if the select item is just the current source?
		if (GET_INPUTPORT_TYPE(stSystemData.InputSource) == _DSUB_A0_PORT)
		{
			// if VGA, we will draw VGA page's sub-page(MISC)
			SETOSDSTATE(_VGA_MENU_MISC);
			// point to MISC page source item
			SETOSDITEM0(_MISC_SOURCE);			
		}
		else if (GET_INPUTPORT_TYPE(stSystemData.InputSource) == _VIDEO_AV_PORT || \
				 GET_INPUTPORT_TYPE(stSystemData.InputSource) == _VIDEO_AV2_PORT)
		{
			// if VIDEO, we will draw video page's sub-page(MISC)
			SETOSDSTATE(_AV_MENU_MISC);
			// point to MISC page source item
			SETOSDITEM0(_MISC_SOURCE);			
		}
		SETOSDITEM1(0);
		COsdDispIconSelect();
		COsdDispItemSelect();
		return;
	}
	// else, if we request changing to a valid source, set status flag:
	SET_SOURCESTATUS(ucOsd_Item_Index0);	// see SET_SOURCESTATUS() for details

}

void COsdSourcePageItemAdjMessage(void)
{
	COsdIconItemSelection(&ucOsd_Item_Index0, ucKeyMessage, _SOURCE_NUM+1, _SOURCE_NUM, _SOURCE_1, COsdDispItemSelect);
}

void COsdSourcePageValueAdjMessage(void)
{
}

void COsdSourcePageExitMessage(void)
{
	/*
	switch(GET_INPUTSOURCE_TYPE())
	{
		case _SOURCE_VGA:
			SETOSDSTATE(_VGA_MENU_MISC);
			COsdFxCodeWrite((BYTE code *)tVGA_ITEM_TABLE[ucOsdState-1][stOsdUserData.Language]);
			break;

		#if(_VIDEO_SUPPORT == _ON)
		case _SOURCE_VIDEO8:
			SETOSDSTATE(_AV_MENU_MISC);
			COsdFxCodeWrite((BYTE code *)tAV_ITEM_TABLE[ucOsdState-1][stOsdUserData.Language]);
			break;
		#endif
		
		default:
			break;
	}
	*/
					//x.hu, for No signal osd show
				switch (GET_INPUTPORT_TYPE(stSystemData.InputSource))
				{
					case _DSUB_A0_PORT:
						SETOSDSTATE(_VGA_MENU_MISC);
						COsdFxCodeWrite((BYTE code *)tVGA_ITEM_TABLE[ucOsdState-1][stOsdUserData.Language]);
						COsdFxChange1bitColor(ROW(5), COL(1), WIDTH(10), HEIGHT(1), FGCOLOR(_CP_GRAY), BGCOLOR(_CP_BLACK));//
						break;
					#if(_VIDEO_SUPPORT == _ON)
					case _VIDEO_AV_PORT:
					case _VIDEO_AV2_PORT:
						SETOSDSTATE(_AV_MENU_MISC);
						COsdFxCodeWrite((BYTE code *)tAV_ITEM_TABLE[ucOsdState-1][stOsdUserData.Language]);
						break;
					#endif
					default:
						break;
				}

	//SETOSDITEM0(_MISC_SOURCE);
	SETOSDITEM0(_MISC_SOURCE);
	SETOSDITEM1(_ITEM_NONE);

	//COsdFxCodeWrite((BYTE code *)tVGA_ITEM_TABLE[ucOsdState-1][stOsdUserData.Language]);
	COsdDispItemSelect();
	
}

void COsdSourcePageSwitchMessage(void)
{

}

void COsdSourcePageIRMessage(void)
{

}

//-----------------------------------------
// System Timer
//-----------------------------------------
void COsdSystemTimerPageExit(void)
{
	CLR_KEYREPEATENABLE();
	
	if(ucOsd_Item_Index1 == _ITEM_NONE)
	{
		switch(GET_INPUTSOURCE_TYPE())
		{
			case _SOURCE_VGA:
				SETOSDSTATE(_VGA_MENU_MISC);

				COsdFxCodeWrite((BYTE code *)tVGA_ITEM_TABLE[ucOsdState-1][stOsdUserData.Language]);
				break;

			#if(_VIDEO_SUPPORT == _ON)
			case _SOURCE_VIDEO8:
				SETOSDSTATE(_AV_MENU_MISC);

				COsdFxCodeWrite((BYTE code *)tAV_ITEM_TABLE[ucOsdState-1][stOsdUserData.Language]);
				break;
			#endif
			
			default:
				break;
		}
	
		SETOSDITEM0(_MISC_TIMER);
		SETOSDITEM1(_ITEM_NONE);

		COsdDispItemSelect();
	}
	else
	{
		bValueAdj = 0;
		
		COsdFxChange1bitColor(ROW(ucOsd_Item_Index0+4), COL(0), WIDTH(28), HEIGHT(1), FGCOLOR(_CP_WHITE), BGCOLOR(_CP_BLACK));
		SETOSDITEM1(_ITEM_NONE);
		
		if(_SELECTED_MESSAGE == ucKeyMessage)	//User confirmed!
		{
			//save current setting
			stUserTimerData.Hour[ucOsd_Item_Index0-1] = stUserTimerData.Hour[3];
			stUserTimerData.Minute[ucOsd_Item_Index0-1] = stUserTimerData.Minute[3];

			//Initial time base
			stUserTimerData.Hour[3] = 0;
			stUserTimerData.Minute[3] = 0;

			ucUserTimerCount = 0;
			ucUserTimerCount2 = 0;
		}
		else if(_EXIT_MESSAGE == ucKeyMessage)	//User abort!
		{
			//restore pre setting
			COsdDispSystemTimer(ROW(ucOsd_Item_Index0+4), COL(21), stUserTimerData.Hour[ucOsd_Item_Index0-1]);		//hour
			COsdDispSystemTimer(ROW(ucOsd_Item_Index0+4), COL(24), stUserTimerData.Minute[ucOsd_Item_Index0-1]);		//minute
		}
		
	}
}

void COsdSystemTimerPageSelectMessage(void)
{
	if(ucOsd_Item_Index1 == _ITEM_NONE)
	{
		switch(ucOsd_Item_Index0)
		{
			case _TIMER_EXIT:
				COsdSystemTimerPageExit();
				break;
			case _TIMER_POWERUP:
			case _TIMER_POWERDOWN:
			case _TIMER_REMIND:
				bValueAdj = _TRUE;

				SET_KEYREPEATENABLE();	//enable key repeat function
				
				SETOSDITEM1(_ITEM_1);
				
				bUserTimerEn = _FALSE;		//Pause User Timer Counting
				
				COsdFxChange1bitColor(ROW(ucOsd_Item_Index0+4), COL(21), WIDTH(5), HEIGHT(1), FGCOLOR(_CP_RED), BGCOLOR(_CP_BLACK));

				//get current timer setting for preparing adjustment
				stUserTimerData.Hour[3] = stUserTimerData.Hour[ucOsd_Item_Index0-1];
				stUserTimerData.Minute[3] = stUserTimerData.Minute[ucOsd_Item_Index0-1];
				break;
		}
	}
	else
	{
		COsdSystemTimerPageExit();
	}
}

void COsdSystemTimerPageItemAdjMessage(void)
{
	COsdIconItemSelection(&ucOsd_Item_Index0, ucKeyMessage, _USER_TIMER_NUM+1, _USER_TIMER_NUM, _ITEM_1, COsdDispItemSelect);
}

void COsdSystemTimerPageValueAdjMessage(void)
{
	BYTE temp0, temp1;

	temp0 = stUserTimerData.Minute[3];
	temp1 = stUserTimerData.Hour[3];

	//check value is valid or not
	temp0 = (temp0 >= 60) ? 0 : temp0;
	temp1 = (temp1 >= _USER_TIMER_MAX) ? 0 : temp1;

	//Do adjust
	if(_VALUE_UP_MESSAGE == ucKeyMessage)
	{
		temp0 = (temp0+1 == 60) ? 0 : temp0+1;

		if(temp0 == 0)
		{
			temp1 = (temp1+1 < _USER_TIMER_MAX) ? temp1+1 : 0;
		}
	}
	else if(_VALUE_DOWN_MESSAGE == ucKeyMessage)
	{
		temp0 = (temp0-1 == 255) ? 59 : temp0-1;
		if(temp0 == 59)
		{
			temp1 = (temp1-1 == 255) ? _USER_TIMER_MAX-1: temp1-1;
		}
	}

	stUserTimerData.Minute[3] = temp0;	//save in time base for temp;
	stUserTimerData.Hour[3] = temp1;		//save in time base for temp;
	
	COsdDispSystemTimer(ROW(ucOsd_Item_Index0+4), COL(21), temp1);		//hour
	COsdDispSystemTimer(ROW(ucOsd_Item_Index0+4), COL(24), temp0);		//minute
}

void COsdSystemTimerPageExitMessage(void)
{
	COsdSystemTimerPageExit();
}

void COsdSystemTimerPageSwitchMessage(void)
{

}

void COsdSystemTimerPageIRMessage(void)
{

}

#if(_VIDEO_SUPPORT == _ON)
void COsdVideoColorPageSelectMessage(void)
{
	//x.hu, add for prevent from operating while no signal mode
	if (ucCurrState != _ACTIVE_STATE)
	{
		return;
	}

	if(ucOsd_Item_Index0 == _ITEM_NONE)
	{
		ucOsd_Item_Index0 = _ITEM_1;

		COsdDispItemSelect();
	}
	else
	{
		switch(ucOsd_Item_Index0)
		{
			case _VIDEO_COLOR_EXIT:
				COsdClearItemSelect();

				SETOSDITEM0(_ITEM_NONE);
				break;
			case _VIDEO_COLOR_CONTRAST:
				if(ucOsd_Item_Index1 == _ITEM_NONE)
				{
					//if enter contrast adjust, 
					SETOSDITEM1(1);
					bValueAdj = _TRUE;
					//show window
					COsdFxDrawWindow(WXSTART(0x9C, 0x40), WYSTART(0x40, 0x20), WXEND(0x30, 0x05), WYEND(0x05, 0x24), tOSD_WINDOW4_STYLE);
					//show bar
					//COsdDispFullSlider(ROW(12), COL(4), LENGTH(16), stVideoData.Contrast, 100 - 0, 0, _CP_WHITE, _CP_WHITE, _SHOW_RAW);
					COsdDispFullSlider(ROW(12), COL(4), LENGTH(16), stVideoData.Contrast, _SLIDER_MAX_CONTRAST - 0, 0, _CP_WHITE, _CP_WHITE, _SHOW_RAW);
				}
				else
				{
					bValueAdj = _FALSE;
					CLR_KEYREPEATENABLE();
					
					COsdFxCloseWindow(WINNO(4));
					COsdDispClearText(ROW(12), COL(0), WIDTH(_OSD_MAIN_COL), HEIGHT(1));	//Clear Bar

					SETOSDITEM1(0);
				}				
				break;
			case _VIDEO_COLOR_BRIGHT:
				if(ucOsd_Item_Index1 == _ITEM_NONE)
				{
					//if enter contrast adjust, 
					SETOSDITEM1(1);
					bValueAdj = _TRUE;
					//show window
					COsdFxDrawWindow(WXSTART(0x9C, 0x40), WYSTART(0x40, 0x20), WXEND(0x30, 0x05), WYEND(0x05, 0x24), tOSD_WINDOW4_STYLE);
					//show bar
					//COsdDispFullSlider(ROW(12), COL(4), LENGTH(16), stVideoData.Brightness, 100- 0, 0, _CP_WHITE, _CP_WHITE, _SHOW_RAW);
					COsdDispFullSlider(ROW(12), COL(4), LENGTH(16), stVideoData.Brightness, _SLIDER_MAX_BRIGHTNESS- 0, 0, _CP_WHITE, _CP_WHITE, _SHOW_RAW);
				}
				else
				{
					bValueAdj = _FALSE;
					CLR_KEYREPEATENABLE();
					
					COsdFxCloseWindow(WINNO(4));
					COsdDispClearText(ROW(12), COL(0), WIDTH(_OSD_MAIN_COL), HEIGHT(1));	//Clear Bar

					SETOSDITEM1(0);
				}				
				break;
			case _VIDEO_COLOR_SATURATION:
				if(ucOsd_Item_Index1 == _ITEM_NONE)
				{
					//if enter contrast adjust, 
					SETOSDITEM1(1);
					bValueAdj = _TRUE;
					//show window
					COsdFxDrawWindow(WXSTART(0x9C, 0x40), WYSTART(0x40, 0x20), WXEND(0x30, 0x05), WYEND(0x05, 0x24), tOSD_WINDOW4_STYLE);
					//show bar
					//COsdDispFullSlider(ROW(12), COL(4), LENGTH(16), stVideoData.Saturation, 100- 0, 0, _CP_WHITE, _CP_WHITE, _SHOW_RAW);
					COsdDispFullSlider(ROW(12), COL(4), LENGTH(16), stVideoData.Saturation, _SLIDER_MAX_SATURATION- 0, 0, _CP_WHITE, _CP_WHITE, _SHOW_RAW);
				}
				else
				{
					bValueAdj = _FALSE;
					CLR_KEYREPEATENABLE();
					
					COsdFxCloseWindow(WINNO(4));
					COsdDispClearText(ROW(12), COL(0), WIDTH(_OSD_MAIN_COL), HEIGHT(1));	//Clear Bar

					SETOSDITEM1(0);
				}				
				break;
			case _VIDEO_COLOR_SHARPNESS:
				if(ucOsd_Item_Index1 == _ITEM_NONE)
				{
					SETOSDITEM1((stVideoData.VSharpness)+1);
					bValueAdj = _TRUE;
					
					//show window
					COsdFxDrawWindow(WXSTART(0x9C, 0x40), WYSTART(0x40, 0x20), WXEND(0x30, 0x05), WYEND(0x05, 0x24), tOSD_WINDOW4_STYLE);
					//show current select(0, 1, 2, 3, 4)
					//COsdFxCodeWrite(tOSD_NUM_ROW3);
					//COsdFxChange1bitColor(ROW(12), COL(ucOsd_Item_Index1*5+1), WIDTH(1), HEIGHT(1), FGCOLOR(_CP_RED), BGCOLOR(_CP_BLACK));
					//x.hu, update for sharpness
					//COsdDispFullSlider(ROW(12), COL(4), LENGTH(16), stVideoData.VSharpness, 3 - 0, 0, _CP_WHITE, _CP_WHITE, _SHOW_RAW);
					COsdDispFullSlider(ROW(12), COL(4), LENGTH(16), stVideoData.VSharpness, _SLIDER_MAX_SHARPNESS- 0, 0, _CP_WHITE, _CP_WHITE, _SHOW_RAW);
				}
				else
				{
					bValueAdj = _FALSE;
					CLR_KEYREPEATENABLE();

					COsdFxCloseWindow(WINNO(4));
					COsdDispClearText(ROW(12), COL(0), WIDTH(_OSD_MAIN_COL), HEIGHT(1));	//Clear Bar

					SETOSDITEM1(0);
				}
				break;
			case _VIDEO_COLOR_HUE:
				if(ucOsd_Item_Index1 == _ITEM_NONE)
				{
					//if enter contrast adjust, 
					SETOSDITEM1(1);
					bValueAdj = _TRUE;
					//show window
					COsdFxDrawWindow(WXSTART(0x9C, 0x40), WYSTART(0x40, 0x20), WXEND(0x30, 0x05), WYEND(0x05, 0x24), tOSD_WINDOW4_STYLE);
					//show bar
					//COsdDispFullSlider(ROW(12), COL(4), LENGTH(16), stVideoData.Hue, 100- 0, 0, _CP_WHITE, _CP_WHITE, _SHOW_RAW);
					COsdDispFullSlider(ROW(12), COL(4), LENGTH(16), stVideoData.Hue, _SLIDER_MAX_HUE- 0, 0, _CP_WHITE, _CP_WHITE, _SHOW_RAW);
				}
				else
				{
					bValueAdj = _FALSE;
					CLR_KEYREPEATENABLE();
					
					COsdFxCloseWindow(WINNO(4));
					COsdDispClearText(ROW(12), COL(0), WIDTH(_OSD_MAIN_COL), HEIGHT(1));	//Clear Bar

					SETOSDITEM1(0);
				}				
				break;
			default:
				break;
		}
	}
}

void COsdVideoColorPageItemAdjMessage(void)
{
	if(ucOsd_Item_Index0 == 0)		//icon selection
	{
		BYTE temp;

		/*
		switch(GET_INPUTSOURCE_TYPE())
		{
			case _SOURCE_VIDEO8:
				temp = _AV_MENU_NUM;
				break;
			default:
				break;
		}
		*/
		//x.hu, osd no signal show
		switch(GET_INPUTPORT_TYPE(stSystemData.InputSource))
		{
#if (_VIDEO_SUPPORT == _ON)
			case _VIDEO_AV_PORT:
			case _VIDEO_AV2_PORT:
				temp = _AV_MENU_NUM;
				break;
#endif
			default:
				break;
		}


		COsdIconItemSelection(&ucOsdState, ucKeyMessage, temp+1, temp, _MENU_1, COsdDispIconSelect);
	}
	else		//item selection
	

⌨️ 快捷键说明

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