📄 radio_new_ui.c
字号:
{
if(tuner.fm_ch<(MAX_MEM_BAND-1))
tuner.fm_ch++;
else
tuner.fm_ch = (MAX_MEM_BAND-1);
set_station(tuner.fm_ch);
}
write2mem =1;
disfreq();
break;
case IRC_FORMAT:
tuner_st_mono();
break;
case IRC_ZOOM: /* serach- */
{
search_dir=0;
tuner.bandswitch=(!tuner.bandswitch);
//printf("band\n");
set_band(tuner.bandswitch);
write2mem=1;
break;
}
case IRC_PROGRAM:
#ifndef NEW_AUTO_SEARCH_ALL
auto_search_all();
#else
auto_search_all_am();
auto_search_all_fm();
tuner.fm_ch = 0;
set_station(tuner.fm_ch); //goto the 1st station
#endif //NEW_AUTO_SEARCH_ALL
break;
#ifdef SUPPORT_APOGEE_AMP
case IRC_VOLUME_UP:
// ircmd_volume_up();
// set_volume(1);
break ;
case IRC_VOLUME_DN:
// ircmd_volume_down();
// set_volume(0);
break ;
#endif
default:
break;
}
}
#endif
#include "sysmain2_inc.h"
#include "kernel.h"
#include "tvif.h"
//#include "radio_rds.h"//xyy 2003-12-1 13:28
void tuner_main(void)
{
#ifndef SUPPORT_Radio_NEW_UI //wuzhj 2004/12/10
osd_init();//xyy 2003-9-23 16:36
#endif
#ifdef NEW_AUTO_SEARCH_ALL
//change_system_clock(19);
#endif
//disable_video();
//tv_dacoff(0x3f);
load_tuner_E2PROM();//marked by xyy 2003-9-23 9:01
tunerflag = 0;
station_input_index = 0;
tuner_oper_mode = NORMAL_TUNE;
init_tuner();
if(test_tuner())
{
psprintf(RegionValStr[2],"TUNER NOT READY");
PrintOsdMsg(STR_OS_SPACE,0x2,0,1);
#ifdef XINGQIU_RECEIVER_PANNEL //xyy 2004-8-5
vfd_set_str(0,0,0,"NOT READY");
#endif
while (system_state != SYSTEM_OPEN)
{
polling();
}
}
else //wuzhj 2005/01/18 debug not tuner bug
{
erase_vfd_mem();
#ifdef SUPPORT_Radio_NEW_UI //wuzhj 2004/12/10
osd_init_Radio(); //wuzhj 2004/12/04
disfreq();
ShowRadioTitle(); //wuzhj 2004/12/04
#else
disfreq();
#endif
while (system_state != SYSTEM_OPEN)
{
#ifdef SUPPORT_RDS_FUNCTION //xyy
#ifdef SUPPORT_Radio_NEW_UI //wuzhj 2004/12/10
//rds display wuzhj 2004/12/06
if(rds_radio_flag==1)
{
rds_collect_data();
disp_rds();
}
#else
rds_collect_data();
disp_rds(rds_func_flag);
#endif
#endif
polling();//i=keyscan()
#if 0
if(RDS_PS_RDY())
{
//printf("ps:%s\n",rds_get_ps());
psprintf(RegionValStr[REGION1],"PS : %s",rds_get_ps());
PrintOsdMsg(0, REGION1, 1, 1);
RDS_PS_CLR_RDY();
}
#endif
#ifdef SUPPORT_STEREO_DETECT
if(is_stereo())
{
printf("stereo\n");
}
else
{
printf("mono\n");
}
#endif //SUPPORT_STEREO_DETECT
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);
}
#ifdef SUPPORT_Radio_NEW_UI //wuzhj 2004/12/10
void disfreq(void)
{
if(tuner.bandswitch)
{
psprintf(RegionValStr[2]," AM CH:%d %03d KHZ ",tuner.am_ch+1,(tuner.ambak>>4)*3-450); //ITEM number
if(tuner.am_ch<=9)
{
radio_down_flag=tuner.am_ch;
}
else
{
radio_down_flag=tuner.am_ch-10;
}
}
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
if(tuner.fm_ch<=9)
{
radio_down_flag=tuner.fm_ch;
}
else
{
radio_down_flag=tuner.fm_ch-10;
}
}
// osd_init_Radio();
ShowRadioMsg();
DrawRadiodown(radio_down_flag,radio_right_flag,am_radio_right_flag);
vfd_set_power_state(0);
}
#else
void disfreq(void)
{
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);
vfd_set_power_state(0);
}
#endif
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();
#ifndef NEW_AUTO_SEARCH_ALL
for(i=0;i<10000;i++)
#endif
{
polling_vfdr();
//polling_vfd();
}
}
void Fmautosearch( BYTE autosearch_status )
{
#ifdef NEW_AUTO_SEARCH_ALL
psprintf(RegionValStr[1],"AUTO SCAN");
#ifndef SUPPORT_Radio_NEW_UI //wuzhj 2004/12/10
PrintOsdMsg(STR_OS_SPACE,0x1,1,1);
#endif
#endif
if(!tuner.bandswitch)
{
while(1)
{
output_vfd_msg();
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();
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 = 6000;
#endif
break;
}
}
disfreq();
}
search_dir=0;
}
void Amautosearch( BYTE autosearch_status )
{
#ifdef NEW_AUTO_SEARCH_ALL
psprintf(RegionValStr[1],"AUTO SCAN");
#ifndef SUPPORT_Radio_NEW_UI //wuzhj 2004/12/10
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 = 6000;
#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
#ifdef SUPPORT_Radio_NEW_UI //wuzhj add for new ui 2004/12/10
void tuner_st_mono(void)
{
if(tuner.st_mono == 1)
{
psprintf(RegionValStr[1]," ST ");
}
else
{
psprintf(RegionValStr[1]," MONO ");
}
osd_DrawString(SETUP_SUB_XSTART+8, SETUP_MENU_YSTART-2, RegionValStr[1], SFONTCOLOR, SBGCOLOR);
set_mono_stereo(tuner.st_mono);
write2mem=1;
}
#else
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;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -