📄 radio.c
字号:
*********************************************/
void RadioOff(void)
{
#ifndef NOT_SAVE_BAND_AF
RDSSaveBandAF();
#endif
}
/*********************************************
Function: RadioMain
Description:
Write/Modify: Perry.Liang
Time: 2006-1-24- 15:38:47
*********************************************/
void RadioMain(void)
{
if(System.FWorkMode.Next==WORKMODE_RADIO)
RadioOn();
if(System.FWorkMode.Last==WORKMODE_RADIO)
RadioOff();
RadioSeek();
RadioWork();
RadioKey();
#if 0
RadioDisplay();
#endif
}
/*********************************************
Function: RadioKey
Description:
Write/Modify: Perry.Liang
Time: 2006-1-24- 15:38:31
*********************************************/
void RadioKey(void)
{
if(System.FWorkMode.Current!=WORKMODE_RADIO||F_MuteKey)return;
// debug("Radio mode !you input a key!");
if(Radio.F_ManualSeek ||((SeekKeyTimer%2)==0 && SeekKeyTimer>50))
{
if(Radio.F_ManualSeek)
SeekKeyTimer=50;
else
SeekKeyTimer=255;
Radio.F_ManualSeek=0;
RadioMute(SOFTON);
Radio.ReqFreq=RadioFreqCal(Radio.Step);
//DisplaySeekFreq(Radio.ReqFreq);
RadioSetFreq(Radio.ReqFreq);
Wait1ms(1);
RadioMute(SOFTOFF);
Radio.F_TunerDispReq=1;
debug("seek auto");
}
switch(SysCommand)
{
case SYSTEM_COMMAND_RADIO_SAVE_1:
case SYSTEM_COMMAND_RADIO_SAVE_2:
case SYSTEM_COMMAND_RADIO_SAVE_3:
case SYSTEM_COMMAND_RADIO_SAVE_4:
case SYSTEM_COMMAND_RADIO_SAVE_5:
case SYSTEM_COMMAND_RADIO_SAVE_6:
M_RadioNewKey;
RadioLoad(SysCommand - SYSTEM_COMMAND_RADIO_SAVE_1);
break;
case SYSTEM_COMMAND_RADIO_LOAD_1:
case SYSTEM_COMMAND_RADIO_LOAD_2:
case SYSTEM_COMMAND_RADIO_LOAD_3:
case SYSTEM_COMMAND_RADIO_LOAD_4:
case SYSTEM_COMMAND_RADIO_LOAD_5:
case SYSTEM_COMMAND_RADIO_LOAD_6:
M_RadioNewKey;
RadioSave(SysCommand - SYSTEM_COMMAND_RADIO_LOAD_1);
break;
case SYSTEM_COMMAND_RADIO_SEEK_DN_LONG:
case SYSTEM_COMMAND_RADIO_SEEK_UP_LONG:
// debug("in state of seek mode");
SeekKeyTimer=255;//Enter to continous manual seek mode after long press key
if(SysCommand == SYSTEM_COMMAND_RADIO_SEEK_UP){
Radio.Direction=1;
// debug("seek up");
}else{
Radio.Direction= -1;
//debug("seek down");
}
break;
case SYSTEM_COMMAND_RADIO_SEEK_DN_RELEASE:
case SYSTEM_COMMAND_RADIO_SEEK_UP_RELEASE:
if(SeekKeyTimer>50)//stop continous manual seek mode and set the valid time of manual seek mode
{
Radio.F_ManualSeek=0;
SeekKeyTimer=50;
}
break;
case SYSTEM_COMMAND_RADIO_SEEK_DN:
case SYSTEM_COMMAND_RADIO_SEEK_UP:
if(SeekKeyTimer>0)//short press change one step in manual seek
{
Radio.F_ManualSeek=1;
if(SysCommand == SYSTEM_COMMAND_RADIO_SEEK_UP)
Radio.Direction=1;
else
Radio.Direction= -1;
}
else//short press in autoseek mode
{
// debug("AUTO SEEK STAGE!");
M_RadioNewKey;
if(AFTAShowTimer>1)AFTAShowTimer=1;
if(AudioWorkMode!=AUDIO_MODE_IDLE)break;
if(SysCommand == SYSTEM_COMMAND_RADIO_SEEK_UP)
Radio.Direction=1;
else
Radio.Direction= -1;
if(RADIO_IN_SEEK)
{
Radio.WorkMode=RADIO_WORK_SEEKBREAK;
}
else if(RADIO_IN_AS||RADIO_IN_PS)
{
Radio.WorkMode=RADIO_WORK_ASPSBREAK;
}
else
{
Radio.WorkMode=RADIO_WORK_SEEKREQ;
}
}
break;
//case S_AD_AS:
case SYSTEM_COMMAND_RADIO_AF_LONG:
M_RadioNewKey;
if((Radio.WorkMode&0xF0)==RADIO_WORK_SEEKMODE)
{
Radio.WorkMode=RADIO_WORK_SEEKBREAK;
}
else if((Radio.WorkMode&0xF0)==RADIO_WORK_ASPSMODE)
{
Radio.WorkMode=RADIO_WORK_ASPSBREAK;
}
else
{
Radio.WorkMode=RADIO_WORK_PSREQ;
}
break;
case SYSTEM_COMMAND_RADIO_AF_RELASE:
M_RadioNewKey;
if((Radio.WorkMode&0xF0)==RADIO_WORK_SEEKMODE)
{
Radio.WorkMode=RADIO_WORK_SEEKBREAK;
}
else if((Radio.WorkMode&0xF0)==RADIO_WORK_ASPSMODE)
{
Radio.WorkMode=RADIO_WORK_ASPSBREAK;
}
else
{
Radio.WorkMode=RADIO_WORK_ASREQ;
}
break;
case SYSTEM_COMMAND_RADIO_BAND:
M_RadioNewKey;
if((Radio.WorkMode&0xF0)==RADIO_WORK_SEEKMODE)
{
Radio.WorkMode=RADIO_WORK_SEEKBREAK;
}
else if((Radio.WorkMode&0xF0)==RADIO_WORK_ASPSMODE)
{
Radio.WorkMode=RADIO_WORK_ASPSBREAK;
}
#ifndef NOT_SAVE_BAND_AF
RDSSaveBandAF();
#endif
Radio.CurrentBand=MaxMinChangeProtect(Radio.CurrentBand,1, 4, 0, 0);
if(Radio.CurrentBand < FM_BAND_NUM)
{
FmIdx = Radio.CurrentBand;
Radio.ReqFreq=Radio.FMBand[FmIdx].BandFreq;
}
else
{
AmIdx = Radio.CurrentBand - FM_BAND_NUM;
Radio.ReqFreq=Radio.AMBand[AmIdx].BandFreq;
}
Radio.F_ForceSetBuff=1;
RadioMute(SOFTON);
RadioSetFreq(Radio.ReqFreq);
RadioMute(SOFTOFF);
#ifndef NOT_SAVE_BAND_AF
RDSLoadBandAF();
#endif
Radio.F_TunerDispReq=1;
break;
/*case S_AD_LOC:
M_RadioNewKey;
Radio.F_LocDx=~Radio.F_LocDx;
Radio.F_ForceSetBuff=1;
RadioMute(SOFTON);
RadioSetFreq(Radio.ReqFreq);
RadioMute(SOFTOFF);
F_DISP_LOC=Radio.F_LocDx;
Radio.F_TunerDispReq=1;
break;*/
/*case L_AD_DISP://scan
M_RadioNewKey;
if(AFTAShowTimer>1)AFTAShowTimer=1;
//if(AudioWorkMode!=AUDIO_MODE_IDLE)break;
if(RADIO_IN_SEEK)
{
Radio.WorkMode=RADIO_WORK_SEEKBREAK;
}
else if(RADIO_IN_AS||RADIO_IN_PS)
{
Radio.WorkMode=RADIO_WORK_ASPSBREAK;
}
if(Radio.F_Scan)
{
Radio.F_Scan=0;
}
else
{
Radio.Direction=1;
Radio.F_Scan=1;
Radio.ScanBackupFreq=Radio.Freq;
Radio.WorkMode=RADIO_WORK_SEEKREQ;
}
break;*/
}
}
/*********************************************
Function: RadioDisplay
Description:
Write/Modify: Perry.Liang
Time: 2006-1-24- 15:38:29
*********************************************/
#if 0
void RadioDisplay(void)
{
volatile unsigned int i;
volatile unsigned char j;
unsigned char str[8]=" ";
if(System.DispMode.Next==DISPMODE_RADIO)
{
Radio.F_TunerDispReq=1;
}
/*if(System.DispMode.Last==DISPMODE_RADIO)
{
DisplayClear(CLEARNUM9);
F_DISP_P=0;
F_DISP_ST=0;
}*/
// display others
if(System.DispMode.Current!=DISPMODE_RADIO){
// DisplayIcon(POINT_ICON,0);
// Display7Seg(10);
return;
}
/*if(F_HalfSecondOut)
{
ShowVolBar();
if(F_SpecOK)
{
F_SpecOK=0;
ShowSpectrum();
}
RadioTunerRead();
if (F_TunerStereo)
F_DISP_ST=1;
else
F_DISP_ST=0;
}*/
if(!Radio.F_TunerDispReq)return;
Radio.F_TunerDispReq=0;
if(RADIO_IN_SEARCH&&Radio.WorkMode!=RADIO_WORK_SCANWAIT)
{
if(RADIO_IN_AS)
{
#ifdef SINO_MOS
//PrintLine("AUTO ST");
#else
PrintLine(2," Auto Store");
#endif
}
else if(Radio.F_Scan)
{
#ifdef SINO_MOS
// PrintLine("AUTOSCAN");
#else
PrintLine(2," Auto Scan");
#endif
}
else
{
/*if(RDS.F_PISeek)
PrintLine2(" PI Seek");
else if(RDS.F_TAEnable)
PrintLine2(" TA Seek");
else
PrintLine2(" Auto Seek");*/
#ifdef SINO_MOS
// PrintLine("AUTOSEEK");
//DisplaySeekFreq(Radio.BackupFreq);
#else
PrintLine(2," Auto Seek");
#endif
}
// DisplayIcon(POINT_ICON,0);
return;
}
//Display(DISP_CLEAR2);
if(FreqInFM(Radio.Freq))
{
if(Radio.FMBand[FmIdx].CurrentMem==0)
{
#ifdef SINO_MOS
// Display7Seg(10);
#else
DispBuff[2][14]=' ';
DispBuff[2][15]=' ';
#endif
}
else
{
#ifdef SINO_MOS
// Display7Seg(Radio.FMBand[FmIdx].CurrentMem);
#else
DispBuff[2][14]='M';
DispBuff[2][15]='0'+Radio.FMBand[FmIdx].CurrentMem;
#endif
}
}
else
{
if(Radio.AMBand[AmIdx].CurrentMem==0)
{
#ifdef SINO_MOS
// Display7Seg(10);
#else
DispBuff[2][14]=' ';
DispBuff[2][15]=' ';
#endif
}
else
{
#ifdef SINO_MOS
// Display7Seg(Radio.AMBand[AmIdx].CurrentMem);
#else
DispBuff[2][14]='M';
DispBuff[2][15]='0'+Radio.AMBand[AmIdx].CurrentMem;
#endif
}
}
if(FreqInFM(Radio.Freq))
{
if(FreqInWBFM(Radio.Freq))
{
#ifdef SINO_MOS
str[0] = 'W';
str[1] = 'B';
str[2] = '1';
str[3] = '6',
i = Radio.Freq;
j = i %10;
str[4] = j + '0';
i = i /10;
j = i %10;
str[5] = j + '0';
i = i/10;
j = i%10;
str[6] = j+ '0';
i = i/10;
j = i%10;
str[7] = j + '0';
#else
DispBuff[2][3]='W';
DispBuff[2][4]='B';
DispBuff[2][5]='1';
DispBuff[2][6]='6';
i=Radio.Freq;
j=i%10;
DispBuff[2][9]='0'+j;
i=i/10;
j=i%10;
DispBuff[2][10]='0'+j;
i=i/10;
j=i%10;
DispBuff[2][11]='0'+j;
i=i/10;
j=i%10;
DispBuff[2][12]='0'+j;
#endif
}
else
{
#ifdef SINO_MOS
str[0] = 'F';
str[1] = 'M';
str[2] = ' ';
#ifdef SINO_MOS_ADD
str[3] = '1'+ FmIdx;
#endif
i = Radio.Freq;
j = i%10;
str[7] = j + '0';
i = i/10;
j = i %10;
str[6] = j+ '0';
DisplayIcon(POINT_ICON,1);
i = i /10;
j = i %10;
str[5] = j + '0';
i = i /10;
j = i%10;
str[4] = j + '0';
if(i /10)
str[3] = '1';
else
str[3] = ' ';
#else
DispBuff[2][3]='F';
DispBuff[2][4]='M';
//DispNum[2]=Radio.CurrentBand+1;
DispBuff[2][5]='1'+FmIdx;
i=Radio.Freq;
j=i%10;
if(Radio.Area==AREA_USA ||Radio.Area==AREA_LATIN)
DispBuff[2][12]=' ';
else
DispBuff[2][12]='0'+j;
i=i/10;
j=i%10;
DispBuff[2][11]='0'+j;
i=i/10;
j=i%10;
DispBuff[2][9]='0'+j;
i=i/10;
j=i%10;
DispBuff[2][8]='0'+j;
i=i/10;
j=i%10;
if(j==0)
DispBuff[2][7]=' ';
else
DispBuff[2][7]='0'+j;
DispBuff[2][10]='.';
#endif
}
}
else
{
if(FreqInLWAM(Radio.Freq))
{
#ifdef SINO_MOS
str[0] = 'L';
str[1] = 'W';
#else
DispBuff[2][3]='L';
DispBuff[2][4]='W';
#endif
}
else
{
#ifdef SINO_MOS
str[0] = 'M';
str[1] = 'W';
#else
DispBuff[2][3]='M';
DispBuff[2][4]='W';
#endif
}
#ifdef SINO_MOS
i = Radio.Freq;
j = i%10;
str[2] = ' ';
str[6] = j + '0';
i = i/10;
j = i % 10 ;
str[5] = j + '0';
i = i / 10;
j = i % 10;
str[4] = j + '0';
i = i/10;
j = i%10;
if(j == 0)
str[3] = ' ';
else
str[3] = '0' + j;
DisplayIcon(POINT_ICON,0);
#else
i=Radio.Freq;
j=i%10;
DispBuff[2][12]='0'+j;
i=i/10;
j=i%10;
DispBuff[2][11]='0'+j;
i=i/10;
j=i%10;
DispBuff[2][10]='0'+j;
i=i/10;
j=i%10;
if(j==0)
DispBuff[2][9]= ' ';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -