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

📄 osdpub501.c

📁 LCD TV,uVision2 Project, (C) Keil Software
💻 C
📖 第 1 页 / 共 3 页
字号:
     for(i=0;i<ucCount;i++)
     {
         if(tMenuItem[i + 1] == fucOsdState)
         {
              return i;
         }
     }
     return ucCount;

}
//######################################################################
void OsdMenuExit()
{
	unsigned int pageNum = 0;
	
	pageNum = menuFuncEixt[ucOsdState];	

	if(pageNum == 0)
	{
		ucOsdState = menuItemEixt[ucOsdState];
        COsdFxDisableOsd();
		CCheckShowHinit();
	}
	else
	{
	    CLEAR_CLIENTOSD();
		CLEAR_CLIENTOSDCOLOR();

		switch(pageNum)
		{
			case 1:
				ucOsdState = menuItemEixt[ucOsdState];
				if(stSystemData.InputSource == _SOURCE_VGA)
				{
					DrawMenuItem(tVgaColorPage);
				}

				if(stSystemData.InputSource == _SOURCE_VIDEO8_AV || stSystemData.InputSource == _SOURCE_VIDEO8_AV2)
				{
					DrawMenuItem(tVideoColorPage);
				}

				if(stSystemData.InputSource == _SOURCE_VIDEO8_TV)
				{
					DrawMenuItem(tTvColorPage);
				}
				break;

			case 2:
				ucOsdState = menuItemEixt[ucOsdState];
				DrawMenuItem(tVgaPicturePage);
				break;

			case 3:
				ucOsdState = menuItemEixt[ucOsdState];
				DrawMenuItem(tVgaSoundPage);
				break;

			case 4:
				ucOsdState = menuItemEixt[ucOsdState];
				DrawMenuItem(tVgaFeaturePage);
				break;

			case 5:
				ucOsdState = menuItemEixt[ucOsdState];
				DrawMenuItem(tColorTempPage);
				break;

			case 9:
				ucOsdState = menuItemEixt[ucOsdState];
				DrawMenuItem(tInstallPage);
				break;

			case 7:
				ucOsdState = menuItemEixt[ucOsdState];
				DrawMenuItem(tVideoColorPage);
				break;

			default:
				ucOsdState = menuItemEixt[ucOsdState];
             	COsdFxDisableOsd();
				CCheckShowHinit();
				break;

		}
	
	}
}
//######################################################################

#if(_IR_ENABLE)        
//######################### Shortcut key proc ##########################

void CClearOsd()
{
             ucOsdState = _MENU_NONE;
             COsdFxDisableOsd();
             CCheckShowHinit();
}
//######################################################################
void irSetChennel()
{
	BYTE ucInputIrNumber = ucKeyMessage & 0x0f;
	BYTE inputChSum = _GET_INPUTCH_STATE();

	if(_GET_INPUTCHSWITCH_STATE())
		{
//			CShowTVNumber(stVDCColor.CurrentChannel, _SHOW_CH_TV_NUMBER);
			
			if(inputChSum == 0)			
				pData[15] = 0;

			if(inputChSum < _GET_NUM)
			{
				pData[15] = pData[15] * 10 + ucInputIrNumber;
				_SET_INPUTCH_STATE(inputChSum + 1);
			}
	
			if(inputChSum == _GET_NUM)
			{
				pData[15] = pData[15] * 10 + ucInputIrNumber;
				_SET_INPUTCH_STATE(0);
				//_SET_INPUTCHSWITCH_STATE(0);	//do not clear inputswitch
			}
			
			CShowTVNumber(pData[15], _SHOW_CH_TV_NUMBER | _SHOW_CH_INPUT_SWITCH_ON);

	}		
	else
		pData[15] = ucInputIrNumber;

	if(pData[15] < 0)
		pData[15] = 0;
	if(pData[15] > 127)
		pData[15] = 127;

	if(_GET_INPUTCH_STATE() == 0)
	{ 
		
		ucPrevChannel =	stVDCColor.CurrentChannel;
	 	stVDCColor.CurrentChannel = pData[15];
		
		SET_MUTE_STATE(STATE_MUTEON);
		MUTE_ON();
		CTimerDelayXms(80);
		CTimerDelayXms(80);

	    CShowTVNumber(stVDCColor.CurrentChannel, _SHOW_CH_TV_NUMBER);
    	CEepromSaveVideoColor();
	 	CSetTVChannel(stVDCColor.CurrentChannel);
		
		SET_MUTE_STATE(STATE_MUTEOFF);
		MUTE_OFF();
	}
}
//######################################################################
void irGetMultiNumber()	//only use for 2 or 3 number now
{
	BYTE ucInputIrNumber = ucKeyMessage & 0x0f;	
	BYTE inputChSum = _GET_INPUTCH_STATE();
	
			switch (inputChSum)
			{
				case _GET_ONE_NUM:
										pData[14] = 0;
					 					pData[15] = 0;
										pData[15] += ucInputIrNumber;
										_SET_INPUTCH_STATE(inputChSum + 1);
										if(inputChSum == _GET_NUM)
												_SET_INPUTCH_STATE(_GET_ONE_NUM);
										break;
				case _GET_TWO_NUM:
										pData[15] = pData[15] * 10 + ucInputIrNumber;
										_SET_INPUTCH_STATE(inputChSum + 1);
										if(inputChSum == _GET_NUM)
												_SET_INPUTCH_STATE(_GET_ONE_NUM);
										break;
				case _GET_THREE_NUM:	
										pData[14] += ucInputIrNumber;
										_SET_INPUTCH_STATE(inputChSum + 1);
										if(inputChSum == _GET_NUM)
												_SET_INPUTCH_STATE(_GET_ONE_NUM);
										break;
				case _GET_FOUR_NUM:
										pData[14] = pData[14] * 10 + ucInputIrNumber;
										_SET_INPUTCH_STATE(inputChSum + 1);
										if(inputChSum == _GET_NUM)
												_SET_INPUTCH_STATE(_GET_ONE_NUM);
										break;
			}
	CShowTVNumber((pData[14] * 100 + pData[15]), _SHOW_CH_TV_NUMBER);	
}

//######################################################################
void STVInputCHSwitch()
{

	int i;
	switch (_GET_INPUTCHSWITCH_STATE())
	{
		case _ADV_IR_NUM_INPUT_DISENABLE:
				_SET_INPUTCHSWITCH_STATE(1);
				for(i = _GET_NUM;i >= 0; i--)
					{
					Gotoxy(i,0,BYTE_DISPLAY);
					OutputChar('-');
					}
				break;

		case _ADV_IR_NUM_INPUT_ENABLE:
				_SET_INPUTCHSWITCH_STATE(0);
				for(i = _GET_NUM;i > 0; i--)
				{
				Gotoxy(i,0,BYTE_DISPLAY);
				OutputChar(0x20);
				}
				Gotoxy(0,0,BYTE_DISPLAY);
				OutputChar('-');
//				CShowTVNumber(stVDCColor.CurrentChannel, _SHOW_CH_TV_NUMBER);
				break;
	}

	_SET_INPUTCH_STATE(0);			
	CEepromSaveOsdUserData();
}

//##############################################################################
void tvChannelSwap()
{
	BYTE ucSound = 0;
    WORD iFreq   = _MIN_FREQ;

	if(_GET_INPUTCH_STATE() == _GET_ONE_NUM)
	{
		ucSound  = CLoadChannelSoundType(stVDCColor.CurrentChannel); 
		iFreq = CLoadChannelFreq(stVDCColor.CurrentChannel);
		
		if(pData != 0)		
		{

			CSaveChannelData(CLoadChannelFreq(pData[15]),CLoadChannelSoundType(pData[15]),stVDCColor.CurrentChannel);

    		CTimerDelayXms(5);

			CSaveChannelData(iFreq,ucSound,pData[15]);

			CSetTVChannel(pData[15]);		

		}
								
		_SET_INPUTCHSWITCH_STATE(_OFF);

//		_SET_INPUTCHSWITCH_STATE(_ON);
		
		ucOsdState = _MENU_NONE;
	}
	//fenix do swap;
}
//######################################################################
void CShowMuteIcon(void)
{
    Gotoxy(1,1,BYTE_DISPLAY);
    OutputChar(0x1e);
}
//######################################################################
void CShowMuteState(void)
{
    COsdFxDisableOsd();
    SetOSDDouble(3);
    SetOSDRamAddress(ROW_COUNT,COL_WIDTH,FONT_BASE_ADDRESS);
    SetRowCmds(ROW_COUNT,COL_WIDTH);
    COsdFxCodeWrite(ucCloseAllWindow);
    OSDClear(0, ROW_COUNT, 0, COL_WIDTH, 0x8C, THE_BYTE0);
    OSDClear(0, ROW_COUNT, 0, COL_WIDTH, 0x00, THE_BYTE1);
    OSDClear(0, ROW_COUNT, 0, COL_WIDTH, 0x20, THE_BYTE2);
    OSDPosition(0,0,0,0,0x01);
    bMuteOnScreen = 1;
	
    COsdFxEnableOsd();

   CTimerReactiveTimerEvent(SEC(10),COsdDispOsdTimerEvent);

}
//#####################################################################
void CSetMuteState(void)
{
    CShowMuteState();

    if (STATE_MUTEON == GET_MUTE_STATE())
    {
        SET_MUTE_STATE(STATE_MUTEOFF);
		MUTE_OFF();	//FENIX
        Gotoxy(1,1,BYTE_DISPLAY);
        OutputChar(0x1f);

    }
    else
    {
        SET_MUTE_STATE(STATE_MUTEON);
		MUTE_ON();	//FENIX
		ucOsdEventMsg = _DO_SHOW_MUTE;
   //     CShowMuteIcon();
    }

    CEepromSaveOsdUserData();
}
//#####################################################################
void tvChannelRecall()
{

	SET_MUTE_STATE(STATE_MUTEON);
	MUTE_ON();
	CTimerDelayXms(80);
	CTimerDelayXms(80);
	
    pData[15]                  = stVDCColor.CurrentChannel;
    stVDCColor.CurrentChannel = ucPrevChannel;
    ucPrevChannel             = pData[15];
    
    CSetTVChannel(stVDCColor.CurrentChannel);
    CShowTVNumber(stVDCColor.CurrentChannel,_SHOW_CH_TV_NUMBER);
//    ucOsdEventMsg = _SAVE_EE_VEDIOCOLOR_MSG;

	CEepromSaveOsdUserData();

	SET_MUTE_STATE(STATE_MUTEOFF);
	MUTE_OFF();
}
#endif
//######################################################################
//void osdFatherPage(unsigned int code * tMenuItem)
//######################################################################
void NotUseFunc()
{
    SetOSDRamAddress(0,0,0);
    DirectWOSDRam(0,0,0,0);
    SetRowCmds(0,0);
    Gotoxy(0,0,0);
    OutputChar(0);
    Textout(0);
    PrintfDec(0);
    PrintfHex(0);
    OSDPosition(0,0,0,0,0);
    OSDLine(0,0,0,0,0);
    OSDClear(0,0,0, 0,0,0);
    OutputDisplaySize();       //在当前的位置输出显示尺寸
    OutputRefrushRate();       //在当前的位置输出刷新频率
    OutputHSync();             //在当前的位置输出HSync
    COsdFxCodeWrite(0);
    COsdFxDisableOsd();
    COsdFxDrawWindow(0,0,0,0,0);
    COsdFxChangeWindowColor(0,0);
    OutputDisplaySize();
    OutputRefrushRate();
    OutputHSync();    
    StrLen(0);
    ValueInRangeChange(0,0,0,0,0);
    SetRTDPWM(0,0);
    CAutoDoAutoConfig();
    CAutoDoWhiteBalance();
    CEepromSaveOsdUserData();
    CEepromSaveBriConData();
    CEepromSaveColorTempData();
   // CScalerLoadFont(0, 0, 0, 0);
    ShowMode();
    OSDSlider(0, 0, 0, 0, 0,0);   
    GetLanguegeCount();
    GetNextLanguage(0);
    GetPrevLanguage(0);
    CheckLanguage();
    FirstLanguage();
    LastLanguage();
    PrintfInt(0);
    COsdFxEnableOsd();
    DoReset();
    VPosGuage();
    HPosGuage();
    ClockGuage();
    CenterTextout(0,0,0);
    RightAlignTextOut(0,0,0);
    ChangeSource();
    SetOSDDouble(0);
    GetCurrLanguagePos();
    IndexofLanuguage(0);

//    COsdFxCloseWindow(0);
    CShowFiveNumber(0, 0);
    CShowAutoSearchSlider(0);
    CStopAutoSearch();
	CheckSum();		//fenix
	DrawHex();		//fenix
	InitVolume();	//fenix
	MuteVolume();	//fenix
	CDrawChannel();	//FENIX
	CClearOsd();		//fenix
	//CSetBlackBackGround(0);		//FENIX
/*
#if(_VIDEO_TV_SUPPORT)
    CEepromSaveVideoColor();	//target
#endif
*/
#if(_VIDEO_TV_SUPPORT && _TV_CHIP != _TV_NONE)
    CSaveChannelFreq(0,0);
    CSaveChannelColorType(0,0);
    CSaveChannelSkip(0,0);
    CSaveChannelSoundType(0, 0);
    CPrevChannel();
    CNextChannel();
    CTvAutoSearch();
    CManualSearch(0,0);
    CTuningCurrentChannel(0, 0);    
#endif
}
//----------------------------------------------------------------------------------------------------
#endif        //#if(OSD_TYPE == OSD01)

⌨️ 快捷键说明

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