📄 radio_mv114_kst.c
字号:
if(search_dir)
{
tuner_auto_search();
}
if(write2mem)
{
write2mem=0;
tuner.memory_status=MEM_MODE;
save_tuner_E2PROM();//xyy 2003-9-23 9:02
//printf("write\n");
}
}
}
void tuner_auto_search( void )
{
if( search_dir == 1 ) //auto search up
{
if( tuner.bandswitch )//am
{//am auto search up
//Amautosearchup();
Amautosearch( AUTOSEARCHUP );
}else
{ // fm auto search up
//Fmautosearchup();
Fmautosearch( AUTOSEARCHUP );
}
}else // search_dir == 2, auto search down
{
if( tuner.bandswitch )//am
{ //am auto search down
//Amautosearchdown();
Amautosearch( AUTOSEARCHDOWN );
}else
{// fm auto search down
//Fmautosearchdown();
Fmautosearch( AUTOSEARCHDOWN );
}
}
}
void d_ms(BYTE ms)
{
delay_1ms(ms);
}
void disfreq(void)
{
#if !defined(TUNER_DISABLE_VIDEO)//xyy 2004-11-9
if(tuner.bandswitch)
{
psprintf(RegionValStr[2],"AM CH:%d %03d KHZ",tuner.am_ch+1,(tuner.ambak>>4)*3-450); //ITEM number
}
else
{
//int x=tuner.fmbak*5-1070;
int x = tuner.fmfreq[tuner.fm_ch]*5-1070;
psprintf(RegionValStr[2],"FM CH:%d %d.%02d MHZ",tuner.fm_ch+1,x/100,x%100); //ITEM number
}
PrintOsdMsg(STR_OS_SPACE,0x2,0,1);
#endif
vfd_set_power_state(0);
}
void search(BYTE search_status)
{
tuner_mute(1);
if(tuner.bandswitch)
{
if(search_status==SEARCHADD)
{
tuner.ambak=(tuner.ambak+0x30);
if(tuner.ambak>AM_FREQ_MAX) tuner.ambak=AM_FREQ_MIN;
}
else if(search_status==SEARCHDEC)
{
tuner.ambak=(tuner.ambak-0x30);
if(tuner.ambak<AM_FREQ_MIN) tuner.ambak=AM_FREQ_MAX;
}
tuner.amfreq[tuner.am_ch] = tuner.ambak;
set_freq(tuner.ambak);
}
else
{
if(search_status==SEARCHADD)
{
tuner.fmbak=(tuner.fmbak+1);
if(tuner.fmbak>FM_FREQ_MAX) tuner.fmbak=FM_FREQ_MIN;
}
else if(search_status==SEARCHDEC)
{
tuner.fmbak=(tuner.fmbak-1);
if(tuner.fmbak<FM_FREQ_MIN) tuner.fmbak=FM_FREQ_MAX;
}
tuner.fmfreq[tuner.fm_ch] = tuner.fmbak;
set_freq(tuner.fmbak);
}
disfreq();
tuner_mute_flag = 1; // auto demute after 500ms
output_vfd_msg();
write2mem = 1;
}
void output_vfd_msg(void)
{
int i;
polling();
#ifdef NEW_AUTO_SEARCH_ALL
for(i=0;i<4;i++)
#endif
{
polling_vfdr();
//polling_vfd();
}
}
void Fmautosearch( BYTE autosearch_status )
{
#ifndef TUNER_DISABLE_VIDEO///xyy 2004-11-9
#ifdef NEW_AUTO_SEARCH_ALL
psprintf(RegionValStr[1],"AUTO SCAN");
PrintOsdMsg(STR_OS_SPACE,0x1,1,1);
#endif
#endif
if(!tuner.bandswitch)
{
while(1)
{
if( autosearch_status == AUTOSEARCHUP )
{
if(search_dir!=1) //up
return;
tuner.fmbak=(tuner.fmbak+1); // 100K STEP, ref clock: 25k
if(tuner.fmbak>FM_FREQ_MAX) //fm max 107.8MHZ
{
tuner.fmbak=FM_FREQ_MIN;//87.8Mhz,ref= 25khz
tuner_mute_flag=1; // auto demute after 500 ms
break;
}
}else if( autosearch_status == AUTOSEARCHDOWN )
{
if(search_dir!=2) //down
return;
tuner.fmbak=(tuner.fmbak-1); //gap = 2. 100K STEP
if(tuner.fmbak<FM_FREQ_MIN)//fm min
{
tuner.fmbak=FM_FREQ_MAX;
tuner_mute_flag = 1;
break;
}
}
tuner.fmfreq[tuner.fm_ch] = tuner.fmbak;
disfreq();
output_vfd_msg();
if(is_station())
{
write2mem = 1;
search_station = 1;//xyy 2004-3-12
#if defined(SUPPORT_STATION_INPUT)//xyy 2004-5-26
tuner_oper_mode = RECALL_OR_STORE;
timeout_vfd = 10000;
#endif
break;
}
}
disfreq();
}
search_dir=0;
}
void Amautosearch( BYTE autosearch_status )
{
#ifndef TUNER_DISABLE_VIDEO//xyy 2004-11-9
#ifdef NEW_AUTO_SEARCH_ALL
psprintf(RegionValStr[1],"AUTO SCAN");
PrintOsdMsg(STR_OS_SPACE,0x1,1,1);
#endif
#endif
if(tuner.bandswitch)//am
{
while(1)
{
output_vfd_msg();
if( autosearch_status == AUTOSEARCHUP )
{
if(search_dir!=1) //up
return;
tuner.ambak = (tuner.ambak + 0x30); // 3*3k step
if(tuner.ambak>AM_FREQ_MAX) //am max
{
tuner.ambak=AM_FREQ_MIN;
tuner_mute_flag=1; // auto demute after 500 ms
break;
}
}else if( autosearch_status == AUTOSEARCHDOWN )
{
if(search_dir!=2) //down
return;
tuner.ambak=(tuner.ambak-0x30); //gap = 3; 3*3K step
if(tuner.ambak<AM_FREQ_MIN)//Am min
{
tuner.ambak=AM_FREQ_MAX;
tuner_mute_flag=1; // auto demute after 500 ms
break;
}
}
tuner.amfreq[tuner.am_ch] = tuner.ambak;
disfreq();
if(is_station())
{
write2mem = 1;
search_station = 1;
#if defined(SUPPORT_STATION_INPUT)//xyy 2004-8-5
tuner_oper_mode = RECALL_OR_STORE;
timeout_vfd = 10000;
#endif
break;
}
}
disfreq();
}
search_dir=0;
}
void save_tuner_E2PROM(void)
{
int test;
BYTE *p;
#ifdef TUNER_DBG
//printf("!!!run save_tuner_setup ,size:%d\n",sizeof(t_tuner));
#endif
p=(BYTE *)&tuner;
tuner.checksum = check_sum(p, (sizeof(tuner)-2));
test=WriteToI2c(0xa0, TUNER_START,p, sizeof(t_tuner));
#ifdef TUNER_DBG
printf("save checksum %x\n",tuner.checksum);
#endif
}
void load_tuner_E2PROM(void)
{
int iRts;
BYTE *p;
//printf("load tuner e2prom\n");
p=(BYTE *)&tuner;
iRts = ReadFromI2c(0xa0, TUNER_START,p, sizeof(t_tuner));
if(iRts<0)
{
init_tuner_var();
return;
}
if(tuner.checksum != check_sum(p, (sizeof(t_tuner)-2)))
{
#ifdef TUNER_DBG
//printf("checksum err! load default\n");
#endif
init_tuner_var();
save_tuner_E2PROM();
}
}
/*****************
Changed by xyy 2004-5-26
******************/
#if defined(SUPPORT_STATION_INPUT)//xyy 2004-8-5
void init_tuner_var(void)
{
int i;
printf("init var\n");
for(i=0;i<MAX_MEM_BAND;i++)
{
tuner.fmfreq[i]=0x7de;
tuner.amfreq[i]=0x1470;
}
//tuner.memory_band_id[0]=1;
//tuner.memory_band_id[1]=1;
tuner.memory_status=NO_MEM_MODE;
tuner.bandswitch=0; //0:fm, 1:am
tuner.Istuning[0]=1;
tuner.Istuning[1]=1;
tuner.ambak=0x1440;
tuner.fmbak=0x7b2;
// tuner.in2_data1=0x00;
//p = (BYTE *)&tuner;
//tuner.checksum = check_sum(p,sizeof(tuner));
#ifdef TUNER_DBG
//report_tuner_info();
#endif
}
#else
void init_tuner_var(void)
{
const UINT16 fmfreq[MAX_MEM_BAND]={0x7de,0x802,0x86c,0x87e,0x91e,0x922,0x922,0x922,0x922,0x922,0x922,0x922,0x922,0x922,0x922,0x922,0x922,0x922,0x922,0x922};// 90.0 91.8 97.1 98.0 106.0 106.2
const UINT16 amfreq[MAX_MEM_BAND]={0x1470,0x15f0,0x1e30,0x26a0,0x2ac0,0x2b20,0x2b20,0x2b20,0x2b20,0x2b20,0x2b20,0x2b20,0x2b20,0x2b20,0x2b20,0x2b20,0x2b20,0x2b20,0x2b20,0x2b20};//531 603 999 1404 1602 1620
int i;
//BYTE *p;
printf("init var\n");
for(i=0;i<MAX_MEM_BAND;i++)
{
tuner.fmfreq[i]=fmfreq[i];
tuner.amfreq[i]=amfreq[i];
}
//tuner.memory_band_id[0]=1;
//tuner.memory_band_id[1]=1;
tuner.memory_status=NO_MEM_MODE;
tuner.bandswitch=0; //0:fm, 1:am
tuner.Istuning[0]=1;
tuner.Istuning[1]=1;
tuner.ambak=0x1440;
tuner.fmbak=0x7b2;
// tuner.in2_data1=0x00;
//p = (BYTE *)&tuner;
//tuner.checksum = check_sum(p,sizeof(tuner));
#ifdef TUNER_DBG
//report_tuner_info();
#endif
}
#endif
#if defined(SUPPORT_STATION_INPUT)
/**********************
Changed by xyy 2004-5-24
**********************/
void tuner_func_input(void) //xyy 2003-11-3 11:20
{
// if(tuner.memory_status==MEM_MODE)
if(tuner_oper_mode == RECALL_OR_STORE)
{
vfd_set_stationNm();
}
#if defined(SUPPORT_FREQ_DIRECT_CALL)
else if(tuner_oper_mode == FREQ_DIRECT_CALL)//xyy 2004-7-28
{
if(tuner.bandswitch)
vfd_set_amFreq_input();
else
vfd_set_fmFreq_input();
}
#endif
}
#endif
void tuner_st_mono(void)
{
if(tuner.st_mono == 1)
{
tuner.st_mono = 0;
psprintf(RegionValStr[1],"MONO");
}
else
{
tuner.st_mono = 1;
psprintf(RegionValStr[1],"ST");
}
PrintOsdMsg(STR_OS_SPACE,0x1,1,1);
set_mono_stereo(tuner.st_mono);
write2mem=1;
}
#ifdef SUPPORT_RDS_FUNCTION
disp_rds_func(BYTE enter_flag)
{
printf("flag %d\n",enter_flag);
if(enter_flag == 0)
{
psprintf(RegionValStr[REGION1],"PS :");
PrintOsdMsg(0, REGION1, 1, 1);
}
else if(enter_flag == 1)
{
psprintf(RegionValStr[REGION1],"PTY :");
PrintOsdMsg(0, REGION1, 1, 1);
}
else if(enter_flag == 2)
{
psprintf(RegionValStr[REGION1],"RT :");
PrintOsdMsg(0, REGION1, 1, 1);
}
else if(enter_flag == 3)
{
psprintf(RegionValStr[REGION1],"CT :");
PrintOsdMsg(0, REGION1, 1, 1);
}
else if(enter_flag == 4)
{
psprintf(RegionValStr[REGION1],"PTYN :");
PrintOsdMsg(0, REGION1, 1, 1);
}
}
void disp_rds(BYTE enter_flag)
{
char rds_disp_buf[65];
if(enter_flag == 0)
{
if(RDS_PS_RDY())
{
psprintf(RegionValStr[REGION1],"PS : %s",rds_get_ps());
PrintOsdMsg(0, REGION1, 1, 1);
RDS_PS_CLR_RDY();
}
}
else if(enter_flag == 1)
{
if(RDS_PTY_RDY())
{
psprintf(RegionValStr[REGION1],"PTY : %s",rds_get_pty());
PrintOsdMsg(0, REGION1, 1, 1);
RDS_PTY_CLR_RDY();
}
}
else if(enter_flag == 2)
{
if(RDS_RTA_RDY()||RDS_RTB_RDY())
{
memcpy(rds_disp_buf,rds_get_rt(RDS_RT_TYPE()),64);
capitalize(rds_disp_buf, 0, 64);
str_filter(rds_disp_buf, 64);
psprintf(RegionValStr[REGION1],"RT : %s",rds_disp_buf);
PrintOsdMsg(0, REGION1, 1, 1);
RDS_RTA_CLR_RDY();
RDS_RTB_CLR_RDY();
}
}
else if(enter_flag == 3)
{
if(RDS_CT_RDY())
{
psprintf(RegionValStr[REGION1],"%s",rds_get_ct());
PrintOsdMsg(0, REGION1, 1, 1);
RDS_CT_CLR_RDY();
}
}
else if(enter_flag == 4)
{
if(RDS_PTYN_RDY())
{
psprintf(RegionValStr[REGION1],"PTYN:%s",rds_get_ptyn());
PrintOsdMsg(0, REGION1, 1, 1);
RDS_PTYN_CLR_RDY();
}
}
}
#endif /*rds func*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -