📄 rds.c
字号:
#include "public.h"
static const unsigned char PTYDisplayTable[33][8]=
{
" None ",
" News ",
"Affairs ",
" Info ",
" Sport ",
"Educate ",
" Drama ",
"Culture ",
"Science ",
" Varied ",
" Pop M ",
" Rock M ",
" Easy M ",
"Light M ",
"Classics",
"Other M ",
"Weather ",
"Finance ",
"Children",
" Social ",
"Religion",
"Phone In",
" Travel ",
"Leisure ",
" Jazz ",
"Country ",
"Nation M",
" Oldies ",
" Folk M ",
"Document",
" Test ",
" Alarm ",
"PTY Seek"
};
void RDSInit(void)
{
PD_RDSDATA=0;//PA1--floating input
PO_RDSDATA=0;
Enable_RDS_Int();
RDSDataInit();
//RDS.F_AFEnable=1;
//RDS.F_REGEnable=1;
//RDS.F_EONEnable=1;
RDS.F_AFEnable=0;
RDS.F_REGEnable=0;
RDS.F_EONEnable=0;
AFCheckDisable1sTimer=90;
AFCheckBetweenList100msTimer=30;
AFCheckBetweenFreq10msTimer=120;
}
void RDSMain(void)
{
RDSDataMain();
RDSDisplay();
RDSKey();
if(RDS.F_GetNewCT)
{
RDS.F_GetNewCT=0;
ClockChange(RDS.TimeHour,RDS.TimeMin);
}
if(RDS.F_TAEnable&&!F_InEONTASwitch)
{
// TA switch
if(RDS.F_GetNewTA)
{
RDS.F_GetNewTA=0;
if(RDS.TA)
{
SwitchToTa();
}
else
{
TaSwitchBack();
}
}
if(NotRDSStation&&F_InTASwitch&&InTADelayTimer==0)
{
TaSwitchBack();
}
// Auto TA seek
if(RDS.TP||RDS.TA)
{
AutoTASeekTimer=0;
}
else
{
if(AutoTASeekTimer==1&&Radio.WorkMode==RADIO_WORK_IDLE&&FreqInFM(Radio.Freq)&&!FreqInJapanFM(Radio.Freq)&&!FreqInWBFM(Radio.Freq))
{
Radio.Direction=1;
Radio.WorkMode=RADIO_WORK_SEEKREQ;
}
if(AutoTASeekTimer==0||AutoTASeekTimer==1)
AutoTASeekTimer=600;
}
}
#ifdef EON_ENABLE
// EON
if(RDS.F_TAEnable&&RDS.F_EONEnable&&!F_InTASwitch)
{
// EONTA switch
if(RDS.F_GetNewEONTA&&RDS.EONTA&&RDS.F_GetEONAFList&&!F_InEONTASwitch&&InTADelayTimer==0)
{
SwitchToEONTa();
}
if(F_InEONTASwitch&&InTADelayTimer==0&&((!RDS.TA)||NotRDSStation))
{
EONTaSwitchBack();
}
}
#endif
// PI SEEK
if(RDS.PISeekTimer==1&&Radio.WorkMode==RADIO_WORK_IDLE&&FreqInFM(Radio.Freq)&&!FreqInJapanFM(Radio.Freq)&&!FreqInWBFM(Radio.Freq))
{
RDS.PISeekTimer=0;
if(RDS.F_AFEnable)
{
Radio.Direction=1;
Radio.WorkMode=RADIO_WORK_SEEKREQ;
RDS.F_PISeek=1;
}
}
if(PTYSelectTimer==1)
{
PTYSelectTimer=0;
F_PTYSelect=0;
RDS.F_PTYEnable=0;
F_NoPTY=0;
//Radio.F_TunerDispReq=1;
System.DispMode.Requst=DISPMODE_RADIO;
RDSDispMode=RDSDISP_IDLE;
}
}
void RDSKey(void)
{
switch (KeyCode)
{
case P_AD_VOLUP:
if(F_PTYSelect)
{
PTYSelectType=MaxMinChangeProtect(PTYSelectType, 1, 31, 1, 0);
PTYSelectTimer=100;
}
break;
case P_AD_VOLDN:
if(F_PTYSelect)
{
PTYSelectType=MaxMinChangeProtect(PTYSelectType, -1, 31, 1, 0);
PTYSelectTimer=100;
}
break;
case S_AD_AF:
if (FreqInAM(Radio.Freq)||FreqInJapanFM(Radio.Freq)||FreqInWBFM(Radio.Freq))
break;
if (RADIO_IN_SEARCH)
break;
RDS.F_AFEnable=~RDS.F_AFEnable;
if(System.FWorkMode.Current!=WORKMODE_RADIO)break;
if (!RDS.F_TAEnable)
{
if(RDS.F_AFEnable)
switch(Radio.Area)
{
/*case AREA_USA:
PrintAnimation(" Tuner Mode(USA) SMeter:000 PS:******** PTY:******** AF:*** TA:*** TP:***");
break;
case AREA_LATIN:
PrintAnimation(" Tuner Mode(LAT) SMeter:000 PS:******** PTY:******** AF:*** TA:*** TP:***");
break;
case AREA_EUROPE:
PrintAnimation(" Tuner Mode(EUP) SMeter:000 PS:******** PTY:******** AF:*** TA:*** TP:***");
break;
case AREA_OIRT:
PrintAnimation(" Tuner Mode(OIR) SMeter:000 PS:******** PTY:******** AF:*** TA:*** TP:***");
break;
case AREA_JAPAN:
PrintAnimation(" Tuner Mode(JPN) SMeter:000 PS:******** PTY:******** AF:*** TA:*** TP:***");
break;*/
case AREA_USA:
PrintAnimation(" Tuner Mode(USA) SMeter:0.00V PS:******** PTY:******** AF:*** TA:*** TP:***");
break;
case AREA_LATIN:
PrintAnimation(" Tuner Mode(LAT) SMeter:0.00V PS:******** PTY:******** AF:*** TA:*** TP:***");
break;
case AREA_EUROPE:
PrintAnimation(" Tuner Mode(EUP) SMeter:0.00V PS:******** PTY:******** AF:*** TA:*** TP:***");
break;
case AREA_OIRT:
PrintAnimation(" Tuner Mode(OIR) SMeter:0.00V PS:******** PTY:******** AF:*** TA:*** TP:***");
break;
case AREA_JAPAN:
PrintAnimation(" Tuner Mode(JPN) SMeter:0.00V PS:******** PTY:******** AF:*** TA:*** TP:***");
break;
}
else if (!RDS.F_TAEnable)
switch(Radio.Area)
{
/*case AREA_USA:
PrintAnimation(" Tuner Mode(USA) SMeter:000 ");
break;
case AREA_LATIN:
PrintAnimation(" Tuner Mode(LAT) SMeter:000 ");
break;
case AREA_EUROPE:
PrintAnimation(" Tuner Mode(EUP) SMeter:000 ");
break;
case AREA_OIRT:
PrintAnimation(" Tuner Mode(OIR) SMeter:000 ");
break;
case AREA_JAPAN:
PrintAnimation(" Tuner Mode(JPN) SMeter:000 ");
break;*/
case AREA_USA:
PrintAnimation(" Tuner Mode(USA) SMeter:0.00V ");
break;
case AREA_LATIN:
PrintAnimation(" Tuner Mode(LAT) SMeter:0.00V ");
break;
case AREA_EUROPE:
PrintAnimation(" Tuner Mode(EUP) SMeter:0.00V ");
break;
case AREA_OIRT:
PrintAnimation(" Tuner Mode(OIR) SMeter:0.00V ");
break;
case AREA_JAPAN:
PrintAnimation(" Tuner Mode(JPN) SMeter:0.00V ");
break;
}
}
break;
case S_AD_TA:
//case S_RM_2ZONE:
if (FreqInAM(Radio.Freq)||FreqInJapanFM(Radio.Freq)||FreqInWBFM(Radio.Freq))
break;
if (RADIO_IN_SEARCH)
break;
RDS.F_TAEnable=~RDS.F_TAEnable;
if(System.FWorkMode.Current!=WORKMODE_RADIO)break;
if (!RDS.F_AFEnable)
{
if(RDS.F_TAEnable)
switch(Radio.Area)
{
/*case AREA_USA:
PrintAnimation(" Tuner Mode(USA) SMeter:000 PS:******** PTY:******** AF:*** TA:*** TP:***");
break;
case AREA_LATIN:
PrintAnimation(" Tuner Mode(LAT) SMeter:000 PS:******** PTY:******** AF:*** TA:*** TP:***");
break;
case AREA_EUROPE:
PrintAnimation(" Tuner Mode(EUP) SMeter:000 PS:******** PTY:******** AF:*** TA:*** TP:***");
break;
case AREA_OIRT:
PrintAnimation(" Tuner Mode(OIR) SMeter:000 PS:******** PTY:******** AF:*** TA:*** TP:***");
break;
case AREA_JAPAN:
PrintAnimation(" Tuner Mode(JPN) SMeter:000 PS:******** PTY:******** AF:*** TA:*** TP:***");
break;*/
case AREA_USA:
PrintAnimation(" Tuner Mode(USA) SMeter:0.00V PS:******** PTY:******** AF:*** TA:*** TP:***");
break;
case AREA_LATIN:
PrintAnimation(" Tuner Mode(LAT) SMeter:0.00V PS:******** PTY:******** AF:*** TA:*** TP:***");
break;
case AREA_EUROPE:
PrintAnimation(" Tuner Mode(EUP) SMeter:0.00V PS:******** PTY:******** AF:*** TA:*** TP:***");
break;
case AREA_OIRT:
PrintAnimation(" Tuner Mode(OIR) SMeter:0.00V PS:******** PTY:******** AF:*** TA:*** TP:***");
break;
case AREA_JAPAN:
PrintAnimation(" Tuner Mode(JPN) SMeter:0.00V PS:******** PTY:******** AF:*** TA:*** TP:***");
break;
}
else if (!RDS.F_TAEnable)
switch(Radio.Area)
{
/*case AREA_USA:
PrintAnimation(" Tuner Mode(USA) SMeter:000 ");
break;
case AREA_LATIN:
PrintAnimation(" Tuner Mode(LAT) SMeter:000 ");
break;
case AREA_EUROPE:
PrintAnimation(" Tuner Mode(EUP) SMeter:000 ");
break;
case AREA_OIRT:
PrintAnimation(" Tuner Mode(OIR) SMeter:000 ");
break;
case AREA_JAPAN:
PrintAnimation(" Tuner Mode(JPN) SMeter:000 ");
break;*/
case AREA_USA:
PrintAnimation(" Tuner Mode(USA) SMeter:0.00V ");
break;
case AREA_LATIN:
PrintAnimation(" Tuner Mode(LAT) SMeter:0.00V ");
break;
case AREA_EUROPE:
PrintAnimation(" Tuner Mode(EUP) SMeter:0.00V ");
break;
case AREA_OIRT:
PrintAnimation(" Tuner Mode(OIR) SMeter:0.00V ");
break;
case AREA_JAPAN:
PrintAnimation(" Tuner Mode(JPN) SMeter:0.00V ");
break;
}
}
if (RDS.F_TAEnable)
{
if(!RDS.TP)
{
Radio.Direction=1;
Radio.WorkMode=RADIO_WORK_SEEKREQ;
}
if(RDS.TA)
{
SwitchToTa();
}
}
else
{
if(F_InTASwitch)TaSwitchBack();
#ifdef EON_ENABLE
if(F_InEONTASwitch)EONTaSwitchBack();
#endif
}
break;
case S_AD_PTY:
if (System.FWorkMode.Current!= WORKMODE_RADIO)
break;
//if (FreqInAM(Radio.Freq)||F_InTASwitch)
if (FreqInAM(Radio.Freq)||FreqInJapanFM(Radio.Freq)||FreqInWBFM(Radio.Freq)||F_InTASwitch||F_InEONTASwitch)
break;
if(F_PTYSelect)
{
PTYSelectTimer=1;
break;
}
if(PTYSelectType==0)PTYSelectType=1;
F_PTYSelect=1;
RDS.F_PTYEnable=1;
PTYSelectTimer=100;
F_NoPTY=0;
//Radio.F_TunerDispReq=1;
System.DispMode.Requst=DISPMODE_RDS;
RDSDispMode=RDSDISP_PTYSELECT;
break;
}
}
void RDSDisplay(void)
{
unsigned char i;
if(System.DispMode.Current==DISPMODE_RADIO)
{
if(RDS.F_PSExist)
{
for(i=0;i<8;i++)
//AniBuff[31+i]=RDS.PS[i];
//AniBuff[36+i]=RDS.PS[i];
AniBuff[38+i]=RDS.PS[i];
}
if(RDS.PTY!=0)
{
for(i=0;i<8;i++)
//AniBuff[45+i]=PTYDisplayTable[RDS.PTY][i];
//AniBuff[50+i]=PTYDisplayTable[RDS.PTY][i];
AniBuff[52+i]=PTYDisplayTable[RDS.PTY][i];
}
if(RDS.F_AFEnable)
{
if(RDSStation&&(!RDSAFChecking))
{
//AniBuff[58]=' ';
//AniBuff[59]='O';
//AniBuff[60]='K';
//AniBuff[63]=' ';
//AniBuff[64]='O';
//AniBuff[65]='K';
AniBuff[65]=' ';
AniBuff[66]='O';
AniBuff[67]='K';
}
else
{
//AniBuff[58]=' ';
//AniBuff[59]='O';
//AniBuff[60]='N';
//AniBuff[63]=' ';
//AniBuff[64]='O';
//AniBuff[65]='N';
AniBuff[65]=' ';
AniBuff[66]='O';
AniBuff[67]='N';
}
}
else
{
//AniBuff[58]='O';
//AniBuff[59]='F';
//AniBuff[60]='F';
//AniBuff[63]='O';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -