📄 osdtv501.c
字号:
#define __OSDTV501___
#include "Header\Include.h"
#if(_OSD_TYPE == _OSD501)
#if(_VIDEO_TV_SUPPORT && _TV_CHIP != _TV_NONE)
//------------------------------------------------------------
void OSDTVProc()
{
switch(ucOsdState)
{
case _MENU_NONE: MTVNoneProc(); break;
case _M_COLOR:
case _M_SOUND:
case _M_FEATURE:
case _M_SOURCE_INFO:
case _M_INSTALL:
case _M_EXIT: MTVMainMenuProc(); break;
case _M_BRIGHTNESS:
case _M_CONTRAST:
case _M_SHARPNESS:
case _M_SAUTRATION:
case _M_HUE:
case _M_COLOR_EXIT: MVideoColorProc(); break;
case _M_VOLUME:
case _M_SOUND_EXIT: MSoundProc(); break;
case _M_INPUT_SOURCE:
case _M_LANGUAGE:
case _M_RESET:
case _M_FEATURE_EXIT: MVideoFeatureProc(); break;
case _M_CHANNEL:
case _M_SKIP:
case _M_AFC:
case _M_FINE_TUNE:
case _M_SYSTEM:
case _M_AUTO_SEARCH:
case _M_MANUAL_ADJUST:
case _M_INSTALL_EXIT: MTVMenuProc(); break;
case _M_BRIGHTNESS_ADJ: MBrightnessProc(); break;
case _M_CONTRAST_ADJ: MContrastProc(); break;
case _M_SHARPNESS_ADJ: MSharpnessProc(); break;
case _M_SAUTRATION_ADJ: MSautrationProc(); break;
case _M_HUE_ADJ: MHueProc(); break;
case _M_VOLUME_ADJ: MVolumeAdjProc(); break;
case _M_INPUTSOURCE_ADJ: MInputSourceProc(); break;
case _M_LANGUAGE_ADJ: MLanguageAdjProc(); break;
case _M_CHANNEL_ADJ: MChannelProc(); break;
case _M_SKIP_ADJ: MSkipProc(); break;
case _M_AFC_ADJ: MAFCProc(); break;
case _M_FINE_TUNE_ADJ: MFineTuneProc(); break;
case _M_SYSTEM_ADJ: MTVSystemProc(); break;
case _M_MANUAL_ADJUST_ADJ: MTVManualAdjustProc(); break;
case _M_SP_VOLUME: MSPVolumeProc(); break;
case _M_SP_BRIGHTNESS: MSPBrightProc(); break;
case _M_CHANNEL_SWAP: tvChannelSwapProc(); break;
default:
break;
}
}
//------------------------------------------------------------
//-------------------------------------------------------------------------
//
// ucOption: 0x01: Only show ucTvNumber _SHOW_CH_TV_NUMBER
// 0x02: Show tv type _SHOW_CH_TV_TYPE
// 0x04: Show sound type _SHOW_CH_SOUND_TYPE
//
//-------------------------------------------------------------------------
void CShowTVNumber(BYTE ucTvNumber, BYTE ucOption)//gg
{
unsigned char x;
unsigned char y;
x = 0;
y = 1;
COsdFxDisableOsd();
SetOSDRamAddress(ROW_COUNT,COL_WIDTH,FONT_BASE_ADDRESS);
SetOSDDouble(OSD_DOUBLE_HEIGHT_ENABLE | OSD_DOUBLE_WIDTH_ENABLE);
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,2,0,0,0x01);
COsdFxEnableOsd();
CTimerReactiveTimerEvent(SEC(stOsdUserData.OsdTimeout),COsdDispOsdTimerEvent);
if(ucOption & _SHOW_CH_TV_NUMBER)
{
if(_GET_INPUTCHSWITCH_STATE())
{
Gotoxy(x,0,BYTE_DISPLAY);
PrintfDec(ucTvNumber);
x++;
if(ucTvNumber < 10)
{
Gotoxy(x,0,BYTE_DISPLAY);
if(ucOption & _SHOW_CH_INPUT_SWITCH_ON)
OutputChar('-');
else
OutputChar(0x20);
x++;
}
}
else
{
Gotoxy(x,0,BYTE_DISPLAY);
PrintfDec(ucTvNumber);
x++;
}
}
x = 0;
if(ucOption & _SHOW_CH_TV_TYPE)
{
Gotoxy(x,y,BYTE_DISPLAY);
RightAlignTextOut((unsigned char code *)sTVType[ucTVType],8,y);
y++;
}
if(ucOption & _SHOW_CH_SOUND_TYPE)
{
Gotoxy(x,y,BYTE_DISPLAY);
RightAlignTextOut((unsigned char code *)sTVSoundType[CLoadChannelSoundType(stVDCColor.CurrentChannel)], 8, y);
y++;
}
}
//-------------------------------------------------------------------------
void CShowAutoSearchSlider(BYTE ucCurrentValue)
{
SLIDER(ucCurrentValue);
}
//----------------------------------------------------------------------------------------------------
bit CStopAutoSearch(void)
{
BYTE ucKeyState = CKeyScan();
if (_LEFT_KEY_MASK == ucKeyState)
return 1;//while stop auto search
return 0; // Continue auto search
}
//----------------------------------------------------------------------------------------------------
void CShowAutoSerachTotal(BYTE ucSearchTotal)
{
Gotoxy(14,16,BYTE_DISPLAY);
PrintfDec(ucSearchTotal);
}
//----------------------------------------------------------------------------------------------------
void MTVNoneProc()
{
switch(ucKeyMessage)
{
case VK_MENU: MTVNoneMenu(); break;
case VK_LEFT: MTVNoneLR(1); break;
case VK_RIGHT: MTVNoneLR(0); break;
//FENIXADD
case VK_UP:
SET_MUTE_STATE(STATE_MUTEON);
MUTE_ON();
CTimerDelayXms(80);
CTimerDelayXms(80);
CPrevChannel();
SET_MUTE_STATE(STATE_MUTEOFF);
MUTE_OFF(); break;
case VK_DOWN:
SET_MUTE_STATE(STATE_MUTEON);
MUTE_ON();
CTimerDelayXms(80);
CTimerDelayXms(80);
CNextChannel();
SET_MUTE_STATE(STATE_MUTEOFF);
MUTE_OFF(); break;
//FENIXEND
//################################################################
#if(IR_ENABLE)
case _IR_TVTYPE_KEY_MESSAGE: //fenix add mannuladjchannel
CTuningCurrentChannel(0,stVDCColor.CurrentChannel);//CTVChannelManualAdjust(0);
printMsg("TV MANUL ADJUST+");//FENIX TV MANUL ADJUST-
break;
case _IR_SOUND_KEY_MESSAGE: //fenix add mannuladjchannel
CTuningCurrentChannel(1,stVDCColor.CurrentChannel);//CTVChannelManualAdjust(1);
printMsg("TV MANUL ADJUST-");//FENIX TV MANUL ADJUST-
break;
case _IR_RETURN_KEY_MESSAGE: //FENIX ADD FOR SOUND CHANNEL CHANGE
if(bAMP_SELECT)
bAMP_SELECT = 0;
else
bAMP_SELECT = 1;
break;
case _IR_DISPLAY_KEY_MESSAGE: //fenix add swap
pData[14] = 0;
pData[15] = 0;
_SET_INPUTCHSWITCH_STATE(_OFF);
_SET_INPUTCH_STATE(_GET_ONE_NUM);
STVInputCHSwitch();
ucOsdState = _M_CHANNEL_SWAP;
break;
case _IR_DISP_KEY_MESSAGE: //gg
CShowTVNumber(stVDCColor.CurrentChannel,_SHOW_CH_TV_NUMBER | _SHOW_CH_TV_TYPE | _SHOW_CH_SOUND_TYPE);
break;
case _IR_MUTE_KEY_MESSAGE:
CSetMuteState();
break;
case _IR_RECALL_KEY_MESSAGE:
tvChannelRecall();
break;
case _IR_NUM0_KEY_MESSAGE:
case _IR_NUM1_KEY_MESSAGE:
case _IR_NUM2_KEY_MESSAGE:
case _IR_NUM3_KEY_MESSAGE:
case _IR_NUM4_KEY_MESSAGE:
case _IR_NUM5_KEY_MESSAGE:
case _IR_NUM6_KEY_MESSAGE:
case _IR_NUM7_KEY_MESSAGE:
case _IR_NUM8_KEY_MESSAGE:
case _IR_NUM9_KEY_MESSAGE:
irSetChennel(); break;
case _IR_NUM10_KEY_MESSAGE:
STVInputCHSwitch();
break;
#endif
//################################################################
}
}
//---------------------------------------------------------------------------
void MTVNoneMenu()
{
ucOsdState = _M_COLOR;
InitOSDFrame();
DrawMainIcon(tTVMainIcon);
MainMenuItemState(0,1);
DrawMenuItem(tVideoColorPage);
COsdFxEnableOsd();
}
//---------------------------------------------------------------------------
void MTVNoneLR(unsigned char LR)
{
if(LR)
{
EnterSPVolume();
}
else
{
EnterSPVolume();//EnterSPBright(); //fenix disable SPBright
}
}
//---------------------------------------------------------------------------
void MTVMainMenuProc()
{
//############################ fenix add fine tune ################ //gg
FineTuneBaseFreq = CLoadChannelFreq(stVDCColor.CurrentChannel);
//##########
switch(ucKeyMessage)
{
case VK_MENU: break;//MTVMainMenuMenu(_UP); break;
case VK_LEFT: MTVMainMenuLR(1); break;
case VK_RIGHT: MTVMainMenuLR(0); break;
//FENIXADD
case VK_UP: MTVMainMenuMenu(_UP); break;
case VK_DOWN: MTVMainMenuMenu(_DOWN); break;
//FENIXEND
}
}
//---------------------------------------------------------------------------
void MTVMainMenuMenu(unsigned char ucUD)
{
switch(ucOsdState)
{
case _M_COLOR: if(ucUD) ucOsdState = _M_HUE_ADJ;
else ucOsdState = _M_BRIGHTNESS_ADJ;
fDrawCurrentLine(tVideoColorItem); break;
case _M_SOUND: if(ucUD) ucOsdState = _M_VOLUME_ADJ;
else ucOsdState = _M_VOLUME_ADJ;
fDrawCurrentLine(tVgaSoundItem); break;
case _M_FEATURE: //gg1
//fenix target
ucInputSourceTemp = stSystemData.InputSource; //gg
// printData("ucInputSourceTemp0 =%x",ucInputSourceTemp);
if(ucUD) ucOsdState = _M_RESET;
else ucOsdState = _M_INPUTSOURCE_ADJ;
fDrawCurrentLine(tVideoFeatureItem); break;
case _M_INSTALL: if(ucUD) ucOsdState = _M_MANUAL_ADJUST_ADJ;
else ucOsdState = _M_CHANNEL_ADJ;
fDrawCurrentLine(tInstallItem); break; //fenix
case _M_EXIT:
// Close OSD
ucOsdState = _MENU_NONE;
COsdFxDisableOsd();
CCheckShowHinit();
return;
}
}
//---------------------------------------------------------------------------
void MTVMainMenuLR(unsigned char LR)
{
// 1 . clear old item
unsigned char ucPos = CurrMenuPos(tTVMainItem);
MainMenuItemState(ucPos,0);
// Clear Old Screen
CLEAR_CLIENTOSD();
// 2. change item
if(LR)
{
NextMenuItem(tTVMainItem);
}
else
{
PrevMenuItem(tTVMainItem);
}
// 3. draw item
ucPos = CurrMenuPos(tTVMainItem);
MainMenuItemState(ucPos,1);
// Draw New Page
switch(ucOsdState)
{
case _M_COLOR: DrawMenuItem(tVideoColorPage); break;
case _M_SOUND: DrawMenuItem(tVgaSoundPage); break;
case _M_FEATURE: DrawMenuItem(tVideoFeaturePage); break;
case _M_INSTALL: DrawMenuItem(tInstallPage); break; //fenix
case _M_EXIT: DrawMenuItem(tExitPage); break;
}
}
//---------------------------------------------------------------------------
void MTVMenuProc()
{
switch(ucKeyMessage)
{
case VK_MENU: break;//MTVMenuMenu(); break;
case VK_LEFT: MTVMenuMenu(); break;
case VK_RIGHT: CStopAutoSearch(); break;
//FENIXADD
case VK_UP: MenuItemUD(tInstallItem,1); break;
case VK_DOWN: MenuItemUD(tInstallItem,0); break;
//FENIXEND
}
}
//---------------------------------------------------------------------------
void MTVMenuMenu()
{
switch(ucOsdState)
{
case _M_AUTO_SEARCH:
CTvAutoSearch();
// Clear auto search msg
OSDLine(15,1,31,0x00,BYTE_DISPLAY);
OSDLine(16,10,10,0x00,BYTE_DISPLAY);
break;
}
}
//---------------------------------------------------------------------------
void MChannelProc()
{
CDrawChannel();
switch(ucKeyMessage)
{
case VK_MENU: MChannelMenu(); break;
case VK_LEFT: MChannelLR(1);
FineTuneBaseFreq = CLoadChannelFreq(stVDCColor.CurrentChannel); break;
case VK_RIGHT: MChannelLR(0);
FineTuneBaseFreq = CLoadChannelFreq(stVDCColor.CurrentChannel); break;
//FENIXADD
case VK_UP: MenuItemUD(tInstallItem,1); break;
case VK_DOWN: MenuItemUD(tInstallItem,0); break;
//FENIXEND
}
}
//---------------------------------------------------------------------------
void MChannelMenu()
{
ucOsdState = _M_CHANNEL;
CLR_SLIDER();
}
//---------------------------------------------------------------------------
void MChannelLR(unsigned char LR)
{
SET_MUTE_STATE(STATE_MUTEON);
MUTE_ON();
//############### fenix disable channel lr sound ######################
CTimerDelayXms(80);
CTimerDelayXms(80);
CTimerDelayXms(80);
CTimerDelayXms(80);
//######################################################################
ucPrevChannel = stVDCColor.CurrentChannel;
stVDCColor.CurrentChannel = ValueInRangeChange(0,CloadMaxChannelNumber(),stVDCColor.CurrentChannel,LR,1);
CSetTVChannel(stVDCColor.CurrentChannel);
CDrawChannel();
CEepromSaveVideoColor();
SET_MUTE_STATE(STATE_MUTEOFF);
MUTE_OFF();
}
//---------------------------------------------------------------------------
void CDrawChannel(void)
{
Gotoxy(5,15,BYTE_DISPLAY);
OutputChar(0x3b);
Gotoxy(27,15,BYTE_DISPLAY);
OutputChar(0x3c);
Gotoxy(16,15,BYTE_DISPLAY);
PrintfDec(stVDCColor.CurrentChannel);
OutputChar(0x20);
}
//---------------------------------------------------------------------------
void MSkipProc()
{
CDrawSkip();
switch(ucKeyMessage)
{
case VK_MENU: MSkipMenu(); break;
case VK_LEFT: MSkipLR(1); break;
case VK_RIGHT: MSkipLR(0); break;
//FENIXADD
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -