📄 tuner.c
字号:
else{
//if( AFT(TVFreq)) ;
//else
SetTVFreq( TVFreq ); // AFT Fail
}
delay(10);
//SWReset();
//WriteDecoder(MISC3, val); // Disable Blue/black Screen
//WriteDecoder(0x2f, 0x91); // Rewrite Clroma low pass filter data for Noinput color killer problem.
DisplayTVChannel(TVChannel,1);
SetTVPrEE();
PanelBlack(0);
AudioOn(); //SetMSPVol();
}
//======================= Called from outside ==============================================
void ChangeTVChannel(BYTE NewCh)
{
TVChManual = 0;
if( NewCh >= MIN_TVCHN[TVInputSel - AIRTV] && NewCh <= MAX_TVCHN[TVInputSel - AIRTV] )
{
TVChannel = DummyChannel = NewCh;
SetTVChannel();
}
}
BYTE UpDownTVChannel(BYTE flag)
{
BYTE i=0, OldTVChannel;
BYTE MinChannel=0;
BYTE MaxCount;
ClearOSDInfo();
MinChannel = MIN_TVCHN[TVInputSel - AIRTV];
MaxCount = MAX_TVCHN[TVInputSel - AIRTV] - MinChannel + 1;
OldTVChannel = TVChannel;
do {
i++;
if( i > MaxCount )
{
TVChannel = DummyChannel = OldTVChannel;
break;
}
if(flag == UP) DummyChannel = ( TVChannel + 1 - MinChannel) % MaxCount + MinChannel;
else DummyChannel = ( TVChannel + MaxCount - 1 - MinChannel) % MaxCount + MinChannel;
TVChannel = DummyChannel;
} while( GetTVPrSystem(TVChannel) & SKIPCHN_MASK);
SetTVChannel();
return TRUE;
}
// TV Channel Auto Scan..
void ScanTVChannel(void)
{
BYTE i;
BYTE str[4];
DWORD TEMP_TVFREQ;
#ifdef SUPPORT_HRCIRC
BYTE HRC_Count = 0;
BYTE STD_Count = 0;
bit HRC_Flag=0, IRC_Flag = 0;
#endif
BYTE PreTVChannel;
PreTVChannel = TVChannel;
AudioOff();
for(i=MIN_TVCHN[TVInputSel-AIRTV]; i<= MAX_TVCHN[TVInputSel-AIRTV]; i++) {
if( WantToStopTVScan() )
break;
TVChannel = i;
SetTVPrSystem(TVChannel, SKIPCHN_MASK); // skip
SetFineTuneEE(TVChannel, 0);
TEMP_TVFREQ = Get_Channel2Divid(); // Get Freq Data from Channel table.
utoa( (WORD)i, str,10);
DisplayScanTVChannel(str);
#ifdef SUPPORT_HRCIRC
// HRC Check
if( (TVChannel != 5) && (TVChannel != 6)){
SetTVFreq( TEMP_TVFREQ-20 ); // STD-1.25 Mhz
delay(30); // Wait for 100mS
if(IsVideoInput())
{
HRC_Count++ ;
//Video_Status = TRUE;
SetTVPrSystem(TVChannel, 0); // Not skip
}
}
if( (TVChannel == 5) || (TVChannel == 6)){
// STD
SetTVFreq( TEMP_TVFREQ); // STD
delay(30);
if(IsVideoInput())
{
STD_Count++ ;
//Video_Status = TRUE;
SetTVPrSystem(TVChannel, 0); // Not skip
}
// HRC
SetTVFreq( TEMP_TVFREQ+12 ); // STD + 0.75 Mhz
delay(30);
if(IsVideoInput())
{
HRC_Count++ ;
//Video_Status = TRUE;
SetTVPrSystem(TVChannel, 0); // Not skip
}
// IRC
SetTVFreq( TEMP_TVFREQ+32 ); // STD + 2.0 Mhz
delay(30);
if(IsVideoInput())
{
HRC_Flag = 0;
IRC_Flag = 1;
//Video_Status = TRUE;
SetTVPrSystem(TVChannel, 0); // Not skip
}
}
#endif //SUPPORT_HRCIRC
// STD
SetTVFreq(TEMP_TVFREQ);
delay(30); // Wait for 100mS
if(IsVideoInput())
{
#ifdef SUPPORT_HRCIRC
STD_Count++ ;
#endif
//Video_Status = TRUE;
SetTVPrSystem(TVChannel, 0); // Not skip
}
//delay(10);
//if( IsVideoInput() )
// AddTVChannelEE(TVInputSel,i);
}
#ifdef SUPPORT_HRCIRC
if( !IRC_Flag )
if( HRC_Count > STD_Count ) {
HRC_Flag = 1;
}
for( TVChannel = 1; TVChannel<125; TVChannel++ )
{
TVFreq = 0;
if( (TVChannel == 5) || (TVChannel == 6))
{
if(IRC_Flag)
TVFreq = 30; // IRC=STD+2.00Mhz
else
{
if( HRC_Flag)
TVFreq = 12; // HRC=STD+0.75Mhz
}
}
else
{
if( HRC_Flag)
TVFreq = -20; // HRC=STD-1.25Mhz
}
SetFineTuneEE(TVChannel, TVFreq);
}// for
#endif // SUPPORT_HRCIRC
CheckAndClearMuteOn();
if( PreTVChannel > ( TVInputSel==CABLETV ? MAX_CABLETV : MAX_AIRTV ) )
TVChannel = 2;
else TVChannel = PreTVChannel;
SetTVChannel();
if( IsAudioMuteOn() ) DisplayMuteInfo();
else AudioOn();
}
CODE struct RegisterInfo OSDFineTuneRange={ -31, 31, 0 };
BYTE GetFineTune(void)
{
char val;
int rd;
val = GetFineTuneEE(TVChannel) ;
Mapping1( val, &OSDFineTuneRange, &rd, &UserRange );
return (BYTE)rd;
}
BYTE ChangeFineChannel(BYTE flag)
{
int rd;
char val;
WORD Freq;
val = GetFineTuneEE(TVChannel) ;
Printf("\r\nFine Tune:%d", (WORD)val);
// if( val & 0x80 ) rd = -(val&0x7f)
val = ( flag==UP ? val+1 : val-1 );
if( val < OSDFineTuneRange.Min || val > OSDFineTuneRange.Max )
return 0; // Retry!!
#ifdef PAL_TV
Freq = GetTVFreqEE(TVChannel);
#else
Freq = Get_Channel2Divid();
#endif
Freq = Freq + val;
SetTVFreq( Freq );
SetFineTuneEE(TVChannel, (BYTE)val);
Mapping1( val, &OSDFineTuneRange, &rd, &UserRange );
return (BYTE)rd;
}
void GetFirstChannel(void)
{
TVChannel = DummyChannel = GetTVPrEE();
SetTVChannel();
}
BYTE IsSavedCurChn(void)
{
return( ( GetTVPrSystem( TVChannel ) & SKIPCHN_MASK ) ? CLEARED_CHN : SAVED_CHN );
}
BYTE StoreClearCurChn(void)
{
BYTE val,cleared;
val = GetTVPrSystem( TVChannel );
if( val & SKIPCHN_MASK ) { val &= ( ~SKIPCHN_MASK ); cleared = SAVED_CHN ; }
else { val |= SKIPCHN_MASK; cleared = CLEARED_CHN ; }
SetTVPrSystem( TVChannel, val );
return cleared;
}
void EditTVChn(BYTE _RemoDataCode)
{
WORD TempChannel;
TempChannel = DummyChannel ;
if( TVChManual ) {
TempChannel*= 10;
TempChannel+= _RemoDataCode;
#if defined NTSC_TV
if( TempChannel > (TVInputSel==AIRTV ? MAX_AIRTV : MAX_CABLETV ) )
#elif defined NTSC_JAPAN_TV
if (TempChannel > MAX_AIRTV )
#endif
{
while( TempChannel >= 10 )
TempChannel -= 10;
}
}
else {
TempChannel = _RemoDataCode;
}
DummyChannel = TempChannel;
DisplayTVChannel(DummyChannel, 0);
TVChManual = 1; // Request to run channel after timeout.
}
BYTE GetTVType(void)
{
return TVInputSel;
}
BYTE ToggleTVType(void)
{
TVInputSel = (TVInputSel==AIRTV? CABLETV : AIRTV);
SetTVInputSelEE(TVInputSel);
return TVInputSel;
}
void InitTV(void)
{
TVInputSel = GetTVInputSelEE();
MTSType = MTS_STEREO;
#ifdef DEBUG_TV
dPrintf("\r\n++(InitTV) TunerI2CAddress:0x%04x", (WORD)TVTunerI2CAddress);
#endif
#if TVTunerDevice==TVAVA
WriteI2C(0x86, 0x00, 0x30);
WriteI2C(0x86, 0x01, 0x10); //Set NTSC audio
WriteI2C(0x86, 0x02, 0x0c); //Set NTSC Video
#endif
//070406-start
#if TVTunerDevice==LGTUNER_MK5 //Fix Tuner Video 2Vpp problem
WriteI2C(0x86, 0x00, 0x17);
WriteI2C(0x86, 0x01, 0x20); //Set NTSC audio
WriteI2C(0x86, 0x02, 0x44); //Set NTSC Video
#endif
//070406-end
}
void ResetTVValue(void)
{
//ResetTVChannelEE(AIRTV);
//ResetTVChannelEE(CABLETV);
}
#endif //defined( NTSC_TV ) && defined(SUPPORT_TV)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -