📄 osdtv003.c
字号:
#define __OSDTV003___
#include "Header\Include.h"
#if(OSD_TYPE == OSD003)
#if(_VIDEO_TV_SUPPORT)
//------------------------------------------------------------
void OSDTVProc()
{
#if(_AUTO_POWER_DOWN)
if (MENU_SHOW_CHANNEL_SATAE == ucOsdState)
{
if (_NONE_KEY_MESSAGE != ucKeyMessage)
ucOsdState = _MENU_NONE;
else
return;
}
#endif
switch(ucOsdState)
{
case _MENU_NONE: MTVNoneProc(); break;
case MENU_ITEM_BRIGHT:
case MENU_ITEM_CONTRAST:
case MENU_AV_HUE:
case MENU_AV_SATURATION:
case MENU_TV_SYSTEM:
case MENU_SOUND_SYSTEM:
case MENU_AUTO_SEARCH:
case MENU_MANUAL_SEARCH:
case MENU_TUNING:
case MENU_CHANNEL:
case MENU_SWAP:
case MENU_SKIP:
case MENU_BLUE:
case MENU_AUTO_POWER_DOWN:
case MENU_ITEM_LANGUAGE:
case MENU_ITEM_AUTO:
case MENU_ITEM_RESET:
case MENU_ITEM_CLOSE: MTVMainProc(); break;
case MENU_ITEM_BRIGH_ADJ: MBrightAdjProc(); break;
case MENU_ITEM_CONTRAST_ADJ: MContrastAdjProc(); break;
case MENU_AV_HUE_ADJ: MAVHueAdjProc(); break;
case MENU_AV_SATURATION_ADJ: MAVSaturationAdjProc(); break;
case MENU_TV_SYSTEM_ADJ: MTVSystemAdjProc(); break;
case MENU_SOUND_SYSTEM_ADJ: MSoundSystemAdjProc(); break;
case MENU_AUTO_SEARCH_ADJ: MAutoSearchAdjProc(); break;
case MENU_MANUAL_SEARCH_ADJ: MManualSearchAdjProc(); break;
case MENU_TUNING_ADJ: MTuningAdjProc(); break;
case MENU_CHANNEL_ADJ: MChannelAdjProc(); break;
case MENU_SWAP_ADJ: MSwapAdjProc(); break;
case MENU_SKIP_ADJ: MSkipAdjProc(); break;
case MENU_BLUE_ADJ: MBlueAdjProc(); break;
case MENU_AUTO_POWER_DOWN_ADJ: MAutoPowerDownAdjProc(); break;
case MENU_ITEM_LANGUAGE_ADJ: MLanguageAdjProc(); break;
// Shorcut key proc
#if(_IR_ENABLE)
case ITEM_SHORTCUT_INPUTCH_NUM: SInputCHNumber(); break;
case MENU_VOLUME_SP: MVolumeAdjProc(); break;
#endif
default: break;
}
}
//------------------------------------------------------------
void MTVNoneProc()//GG
{
switch(ucKeyMessage)
{
case VK_MENU: MTVNoneMenu(); break;
//case VK_LEFT: MTVNoneLR(1); break;
//case VK_RIGHT: MTVNoneLR(0); break;
case VK_LEFT: stVDCColor.CurrentChannel = 0;
MVolumeAdjLR(1);
// CTvAutoSearch(); //fenix
break;
case VK_RIGHT: stVDCColor.CurrentChannel = 0;
MVolumeAdjLR(0);
// CTvAutoSearch(); //fenix
break;
case VK_ENTER: MTVNoneEnter(); break;
#if(_IR_ENABLE)
// Add adjust volume menu
// Shortcut key proc
case VK_IR_MUTE:
SSetMuteState();
ucOsdEventMsg = _SAVE_EE_OSDUSERDATA_MSG;
break;
case VK_IR_VOLDEC:
MVolumeAdjLR(1);
break;
case VK_IR_VOLINC:
MVolumeAdjLR(0);
// GotoAdjustVolume();
break;
case VK_IR_DISPLAY:
CShowTVNumber(stVDCColor.CurrentChannel,_SHOW_CH_TV_NUMBER | _SHOW_CH_TV_TYPE | _SHOW_CH_SOUND_TYPE);
break;
case VK_IR_CHINC:
CNextChannel();
ucOsdEventMsg = _SAVE_EE_VEDIOCOLOR_MSG;
break;
case VK_IR_CHDEC:
CPrevChannel();
ucOsdEventMsg = _SAVE_EE_VEDIOCOLOR_MSG;
break;
case VK_IR_NUM0:
case VK_IR_NUM1:
case VK_IR_NUM2:
case VK_IR_NUM3:
case VK_IR_NUM4:
case VK_IR_NUM5:
case VK_IR_NUM6:
case VK_IR_NUM7:
case VK_IR_NUM8:
case VK_IR_NUM9:
STVInputCHNumber(); break;
case VK_IR_INPUTCH: STVInputCHEnter(); break;
case VK_IR_RETURN:
stVDCColor.CurrentChannel = 0;
CTvAutoSearch(); //fenix
break;
// STVReturnCH(); break;
#endif
}
#if(_AUTO_POWER_DOWN)
if (_NONE_MSG == ucOsdEventMsg && _MENU_NONE == ucOsdState && 0xff != ucAutoPowerDownTime)
CShowTimer(); // Show auto power down timer
#endif
}
//------------------------------------------------------------
void MTVNoneMenu()
{
InitOSDFrame();
SelectState();
DrawBrightPage();
ucOsdState = MENU_ITEM_BRIGHT;
ShowPageIndex(1,17);
COsdFxEnableOsd();
}
//------------------------------------------------------------
void MTVNoneLR(unsigned char LR)
{
if(LR)
{
CPrevChannel();
/*
GotoAdjustBrightness();
ShowPageIndex(1,17);*/
}
else
{
CNextChannel();
}
ucOsdEventMsg = _SAVE_EE_VEDIOCOLOR_MSG;
}
//------------------------------------------------------------
void MTVNoneEnter()
{
}
//------------------------------------------------------------
#if(_IR_ENABLE)
//----------- Shortcut key proc ---------------------------
#define _INPUT_NO_NUMBER 0
#define _INPUT_ONE_NUMBER 1
#define _INPUT_TWO_NUMBER 2
#define _INPUT_THREE_NUMBER 3
void STVInputCHEnter(void)
{
BYTE ucInputState = _GET_INPUTCH_STATE()+1;
// Reset input number and state
ucCurrentInputNumber = 0;
ucCurrentInputState = _INPUT_NO_NUMBER; // 0: no input number 1: input one number 2: input two number 3: input three number
if (ucInputState > 3)
{ // Input state err reset input state to input one channel -
ucInputState = 1;
_SET_INPUTCH_STATE(0);
CEepromSaveOsdUserData();
}
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(30,30,38,1,0x01);
Gotoxy(5, 1, BYTE_DISPLAY);
for(;ucInputState > 0;ucInputState--)
OutputChar(0x2d); // Show "-"
COsdFxEnableOsd();
CTimerReactiveTimerEvent(SEC(stOsdUserData.OsdTimeout),COsdDispOsdTimerEvent);
ucOsdState = ITEM_SHORTCUT_INPUTCH_NUM;
}
//---------------------------------------------------------
void SInputCHNumber(void)
{
BYTE ucInputState = _GET_INPUTCH_STATE() + 1;
switch(ucKeyMessage)
{
case VK_IR_NUM0:
case VK_IR_NUM1:
case VK_IR_NUM2:
case VK_IR_NUM3:
case VK_IR_NUM4:
case VK_IR_NUM5:
case VK_IR_NUM6:
case VK_IR_NUM7:
case VK_IR_NUM8:
case VK_IR_NUM9:
SInceptNumber(ucKeyMessage & 0x0f);
break;
case VK_IR_INPUTCH:
ucInputState = ValueInRangeChange(1, 3, ucInputState, 1, 1);
_SET_INPUTCH_STATE(ucInputState-1);
CEepromSaveOsdUserData();
// Reset input number and state
ucCurrentInputNumber = 0;
ucCurrentInputState = 0; // 0: no input number 1: input one number 2: input two number 3: input three number
break;
}
SShowCurrentInputState(ucInputState);
if (ucInputState == ucCurrentInputState)
{
BYTE ucMaxChannel = CloadMaxChannelNumber();
ucOsdState = _MENU_NONE;
CTimerDelayXms(200);
ucPrevChannel = stVDCColor.CurrentChannel;
stVDCColor.CurrentChannel = (ucCurrentInputNumber > ucMaxChannel) ? ucMaxChannel : ucCurrentInputNumber;
CSetTVChannel(stVDCColor.CurrentChannel);
CShowTVNumber(stVDCColor.CurrentChannel,_SHOW_CH_TV_NUMBER | _SHOW_CH_TV_TYPE | _SHOW_CH_SOUND_TYPE);
ucOsdEventMsg = _SAVE_EE_VEDIOCOLOR_MSG;
}
}
//---------------------------------------------------------
void SInceptNumber(const BYTE ucNumber)
{
switch(ucCurrentInputState)
{
case _INPUT_NO_NUMBER: // not input number
ucCurrentInputNumber = ucNumber;
ucCurrentInputState = _INPUT_ONE_NUMBER;
break;
case _INPUT_ONE_NUMBER: // Input on number alrady
case _INPUT_TWO_NUMBER: // Input two number alrady
ucCurrentInputNumber = (ucCurrentInputNumber*10) + ucNumber;
ucCurrentInputState = (ucCurrentInputState == _INPUT_TWO_NUMBER) ? _INPUT_THREE_NUMBER : _INPUT_TWO_NUMBER;
break;
/*
case _INPUT_TWO_NUMBER: // Input two number alrady
ucCurrentInputNumber = (ucCurrentInputNumber*10) + ucNumber;
ucCurrentInputState = _INPUT_THREE_NUMBER;
break;*/
}
}
//---------------------------------------------------------
void SShowCurrentInputState(BYTE ucInputState)
{
Gotoxy(5, 1, BYTE_DISPLAY);
switch(ucCurrentInputState)
{
case _INPUT_NO_NUMBER: // not input number
for(;ucInputState > 0;ucInputState--)
OutputChar(0x2d); // Show "-"
OutputChar(0x00); // Show " "
OutputChar(0x00); // Show " "
break;
case _INPUT_ONE_NUMBER: // Input on number alrady
CShowFiveNumber(ucCurrentInputNumber,1);
break;
case _INPUT_TWO_NUMBER: // Input two number alrady
CShowFiveNumber(ucCurrentInputNumber,2);
break;
case _INPUT_THREE_NUMBER: // Input three number alrady
CShowFiveNumber(ucCurrentInputNumber,3);
break;
}
}
//---------------------------------------------------------
void STVInputCHNumber(void)
{
STVInputCHEnter();
ucOsdState = ITEM_SHORTCUT_INPUTCH_NUM;
SInputCHNumber();
}
//---------------------------------------------------------
void STVReturnCH(void)
{
pData[0] = stVDCColor.CurrentChannel;
stVDCColor.CurrentChannel = ucPrevChannel;
ucPrevChannel = pData[0];
CSetTVChannel(stVDCColor.CurrentChannel);
CShowTVNumber(stVDCColor.CurrentChannel,_SHOW_CH_TV_NUMBER | _SHOW_CH_TV_TYPE | _SHOW_CH_SOUND_TYPE);
ucOsdEventMsg = _SAVE_EE_VEDIOCOLOR_MSG;
}
#endif
//--------- TV MAIN PROC ----------------------------------
void MTVMainProc()
{
switch(ucKeyMessage)
{
case VK_MENU:
CTvAutoSearch();// MTVMainMenu();
break;
case VK_LEFT: MVolumeAdjLR(1); break;
//MTVMainLR(1); break; //fenix
case VK_RIGHT: MVolumeAdjLR(0); break;
//MTVMainLR(0); break; //fenix
case VK_ENTER: MTVMainEnter(); break;
}
}
//------------------------------------------------------------
void MTVMainMenu()
{
AdjustState();
// Enter Sub Item
switch(ucOsdState)
{
case MENU_ITEM_BRIGHT:
SLIDER1(BRIGHTNESS_GUAGE);
ucOsdState = MENU_ITEM_BRIGH_ADJ;
break;
case MENU_ITEM_CONTRAST:
SLIDER1(CONTRAST_GUAGE);
ucOsdState = MENU_ITEM_CONTRAST_ADJ;
break;
case MENU_AV_HUE:
SLIDER1(HUE_GUAGE);
ucOsdState = MENU_AV_HUE_ADJ;
break;
case MENU_AV_SATURATION:
SLIDER1(SATURATION_GUAGE);
ucOsdState = MENU_AV_SATURATION_ADJ;
break;
case MENU_TV_SYSTEM:
ucOsdState = MENU_TV_SYSTEM_ADJ;
break;
case MENU_SOUND_SYSTEM:
ucOsdState = MENU_SOUND_SYSTEM_ADJ;
break;
case MENU_AUTO_SEARCH:
// printData("MaxChannelNumber = %x",CloadMaxChannelNumber()); //fenix
stVDCColor.CurrentChannel = 0;
// CTvAutoSearch();
ClearClientDisplay();
SelectState();
DrawAutoSearchPage();
ucOsdEventMsg = _SAVE_EE_VEDIOCOLOR_MSG;
// ucOsdState = MENU_AUTO_SEARCH_ADJ;
break;
case MENU_MANUAL_SEARCH:
ucOsdState = MENU_MANUAL_SEARCH_ADJ;
break;
case MENU_TUNING:
ucOsdState = MENU_TUNING_ADJ;
break;
case MENU_CHANNEL:
ucOsdState = MENU_CHANNEL_ADJ;
break;
case MENU_SWAP:
ucPrevChannel = stVDCColor.CurrentChannel;
ucOsdState = MENU_SWAP_ADJ;
break;
case MENU_SKIP:
ucOsdState = MENU_SKIP_ADJ;
break;
case MENU_BLUE:
ucOsdState = MENU_BLUE_ADJ;
break;
case MENU_AUTO_POWER_DOWN:
ucOsdState = MENU_AUTO_POWER_DOWN_ADJ;
break;
case MENU_ITEM_LANGUAGE:
ucOsdState = MENU_ITEM_LANGUAGE_ADJ;
break;
case MENU_ITEM_RESET:
DoReset();
SelectState();
break;
case MENU_ITEM_CLOSE:
COsdFxDisableOsd();
ucOsdState = _MENU_NONE;
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -