?? tv.c
字號:
// CChangeChannel
//==========================================================================
void CChangeChannel(bit bNext)
{
BYTE ucmaxchannel = CloadMaxChannelNumber();
COsdDispOsdTimerEvent();
#if (_OSD_TYPE == _OSD003)
bDrawMute = 0;
#endif
if (stTvInfo.CurChn > ucmaxchannel)
{
ucPrevChannel = 0;
stTvInfo.CurChn = 0;
return;
}
CMuteOn();
#if(_FM_DEVICE)
if (1 == bFM)
{
ucPrevChannel = stTvInfo.ucFMCurrCh;
}
else
#endif
{
ucPrevChannel = stTvInfo.CurChn;
CModeResetTVMode();
}
do
{
if (bNext) // Change next channel
stTvInfo.CurChn = (stTvInfo.CurChn == ucmaxchannel) ? 0 : (stTvInfo.CurChn+1);
else // Change prev channel
stTvInfo.CurChn = (stTvInfo.CurChn == 0) ? ucmaxchannel : (stTvInfo.CurChn-1);
if (!CLoadChannelSkip(stTvInfo.CurChn) || stTvInfo.CurChn == ucPrevChannel)
break;
}
while(1);
CSetTVChannel(stTvInfo.CurChn);
CEepromSaveTvData();
// CShowTVNumber(stTvInfo.CurChn, _SHOW_CH_TV_NUMBER | _SHOW_CH_TV_TYPE);
}
//==========================================================================
//bSearchAction: 0 --> Tuning down
// 1 --> Tuning up
//==========================================================================
void CTuningCurrentChannel(const bit bSearchAction, const BYTE ucCurrentChannel) small
{
bit bSkip = CLoadChannelSkip(ucCurrentChannel);
WORD iFreq = CLoadChannelFreq(ucCurrentChannel);
if ((iFreq < _MIN_FREQ || iFreq > _MAX_FREQ) && 0 == CloadMaxChannelNumber())
iFreq = _MIN_FREQ;
if (bSearchAction) // Tuning up
{
#if (_FM_DEVICE)
if (((iFreq < _MAX_FREQ) && 0 == bFM) || ((iFreq < _FM_MAX_FREQ) && 1 == bFM))
#else
if (iFreq < _MAX_FREQ)
#endif
iFreq++;
}
else // Tuning down
{
#if (_FM_DEVICE)
if (((iFreq > _MIN_FREQ) && 0 == bFM) || ((iFreq > _FM_MIN_FREQ) && 1 == bFM))
#else
if (iFreq > _MIN_FREQ)
#endif
iFreq--;
}
gmi_CSetTuner(_ADDR_TUNER, iFreq);
CSaveChannelFreq((iFreq | ((bSkip) ? 0x8000 : 0x0000)), ucCurrentChannel);
}
//==========================================================================
// CInitTV
//==========================================================================
void CInitTV(void)
{
#if(_IF_PLL_DE_CHIP == _IF_PLL_DE_1338)
CInitialTB1338();
#endif
// TUNER_PWR_ON();
CSetTVChannel(stTvInfo.CurChn);
ucPrevChannel = stTvInfo.CurChn;
CSetTvColor(ucTVType);
CTimerDelayXms(100);
}
#if(_IF_PLL_DE_CHIP == _IF_PLL_DE_1338)
//---------------------------------------------------------------------------
void CAudioCtrl(void)
{
if (_GET_INPUT_SOURCE() != _SOURCE_VIDEO_TV)
return;
if (!gmi_CModeLocked() && ucAudioState == 0)
ucAudioState = 1;
if (ucAudioState != 0)
ucAudioState++;
if (ucAudioState < 50)
return;
if (!gmi_CModeLocked() && bFM == 0) // TV no signal
CMuteOn();
else
CSetVolume();
ucAudioState = 0;
}
//---------------------------------------------------------------------------
#if(_FM_DEVICE)
void CChangeFM(void)
{
CMuteOn();
if (bFM)
{
CInitialTB1338();
CTimerDelayXms(10);
CFMInit();
CSetTVChannel(stTvInfo.ucFMCurrCh);
CInitSoundChannel(_SOURCE_VIDEO_TV);
}
else
{
if (_SOURCE_VIDEO_TV == _GET_INPUT_SOURCE())
CInitTV();
CInitSoundChannel(_GET_INPUT_SOURCE());
}
CTimerDelayXms(100);
CSetVolume();
}
#endif
#endif
//---------------------------------------------------------------------------
#if(_SLEEP_FUNC)
#if(_OSD_TYPE == _OSD002)
void CShowTimer(void) small
{
BYTE ucCurrentMin = ucAutoPowerDownTime - 1;
BYTE ucCurrentSec = 59 - (BYTE)(ucMinuteCount/1000);
if (!bTimerOnScreen)
{
COsdFxDisableOsd();
g_ucPageIndex = _P_MENU_NONE;
g_ucMenuItemIndex = _MENU_NONE;
SetOSDDouble(0x03);
SetOsdMap(tUserMenuOsdMap);
// Init OSD Ram
OSDClear(0, GET_OSD_MAP_ROWCOUNT(), 0, 30, 0x8C, BYTE_ATTRIB);
OSDClear(0, GET_OSD_MAP_ROWCOUNT(), 0, 30, 0x00, BYTE_DISPLAY);
OSDLine(0, 0, 30, 0x40, BYTE_COLOR);
OSDClear(1, GET_OSD_MAP_ROWCOUNT() - 1, 0, 30, 0x60, BYTE_COLOR);
COsdFxCodeWrite(ucCloseAllWindow);
OSDPosition(_MAINMENU_WIDTH * 12,_MAINMENU_HEIGHT * 18,50,1,0x03);
COsdFxEnableOsd();
bTimerOnScreen = 1;
}
Gotoxy(0, 0, BYTE_DISPLAY);
CShowNumber1(ucAutoPowerDownTime - 1, 0);
OutputChar(0x3a); // Show ":"
CShowNumber1(59 - (BYTE)(ucMinuteCount/1000), 2);
OutputChar(0x00);
CTimerReactiveTimerEvent(SEC(GET_OSDTIMEOUT()), COsdDispOsdTimerEvent);
}
#endif // OSD002
#if(_OSD_TYPE == _OSD003)
void CShowTimer(void) small
{
BYTE ucCurrentMin = ucAutoPowerDownTime;
BYTE ucCurrentSec = 60-(BYTE)(ucMinuteCount/1000);
if (!bTimerOnScreen)
{
COsdFxDisableOsd();
ucOsdState = _MI_MENU_NONE;
SetOSDDouble(0x03);
SetOsdMap(tMsgOsdMap);
// Init OSD Ram
OSDClear(0, 8, 0, 46, 0x8C, BYTE_ATTRIB);
OSDClear(0, 8, 0, 46, 0x00, BYTE_DISPLAY);
OSDClear(0, 8, 0, 46, 0xc0, BYTE_COLOR);
COsdFxCodeWrite(ucCloseAllWindow);
OSDPosition(_MAINMENU_WIDTH,_MAINMENU_HEIGHT,80,1,0x03);
COsdFxEnableOsd();
bTimerOnScreen = 1;
}
Gotoxy(3, 0, BYTE_DISPLAY);
CShowNumber1(ucAutoPowerDownTime , 0);
OutputChar(0x5E); // Show ":"
if(ucCurrentSec == 60)
CShowNumber1(0, 2);
else
CShowNumber1(60-(BYTE)(ucMinuteCount/1000), 2);
OutputChar(0x01);
CTimerCancelTimerEvent(COsdDispOsdTimerEvent);
}
#elif(_OSD_TYPE == _OSD007)
void CShowTimer(void) small
{
BYTE ucCurrentMin = ucAutoPowerDownTime - 1;
BYTE ucCurrentSec = 59 - (BYTE)(ucMinuteCount/1000);
if (!bTimerOnScreen)
{
COsdFxDisableOsd();
SetOsdMap(tUserMenuOsdMap);
SetOSDDouble(OSD_DOUBLE_HEIGHT_ENABLE | OSD_DOUBLE_WIDTH_ENABLE);
COsdFxCodeWrite(ucCloseAllWindow);
CClearWindow(0x20);
#if(_OSD_DISPLAY_SIZE_ADJ)
if (GET_OSD_SIZE())
{
OSDPosition(12*10, 18*3, 80, 1, 0x03);
DirectWOSDRam(0x00, 0x01, THE_BYTE0, 0x80|0x03); // Row 0 character double height and width
}
else
#endif
OSDPosition(30,30,38,1,0x01);
COsdFxEnableOsd();
bTimerOnScreen = 1;
}
Gotoxy(3,0,BYTE_DISPLAY);
CShowNumber1(ucAutoPowerDownTime - 1, 2);
OutputChar(0x3a); // Show ":"
CShowNumber1(59 - (BYTE)(ucMinuteCount/1000), 2);
CTimerReactiveTimerEvent(SEC(stOsdUserData.OsdTimeout),COsdDispOsdTimerEvent);
}
#endif // OSD003
#endif // #if(_SLEEP_FUNC)
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -