?? radiomoduleapi.c
字號:
RM_U8 Set_AM_Seek_RSSI_TD(RM_U16 AM_Seek_Rssi_TD)
{
return RadioModule_Set_Prop(Prop_AM_SEEK_RSSI_TD,AM_Seek_Rssi_TD);
}
RM_U8 Set_AM_Seek_SNR_TD(RM_U16 AM_Seek_Snr_TD)
{
return RadioModule_Set_Prop(Prop_AM_SEEK_SNR_TD,AM_Seek_Snr_TD);
}
RM_U8 Get_AM_Setup_TD_Info(void)
{
RM_U8 Status;
RM_U16 Temp;
Status = RadioModule_Get_Prop(Prop_AM_SEEK_SNR_TD,(RM_U16 *)(&Temp));
if(Status!=OK)
return Status;
AMGetSetupInfo.AM_SEEK_SNR_TD = Temp;
Status = RadioModule_Get_Prop(Prop_AM_SEEK_RSSI_TD,(RM_U16 *)(&Temp));
if(Status!=OK)
return Status;
AMGetSetupInfo.AM_SEEK_RSSI_TD = Temp;
Status = RadioModule_Get_Prop(Prop_AM_SEEK_FREQ_SPA,(RM_U16 *)(&Temp));
if(Status!=OK)
return Status;
AMGetSetupInfo.AM_SEEK_SPACE = Temp;
Status = RadioModule_Get_Prop(Prop_AM_DEEMPHASIS,(RM_U16 *)(&Temp));
if(Status!=OK)
return Status;
AMGetSetupInfo.AM_DEEMPHASIS = Temp;
return OK;
}
RM_U8 RX_HD_Mute(RM_U16 HD_Mute_mode)
{
return RadioModule_Set_Prop(Prop_HARD_MUTE,HD_Mute_mode);
}
RM_U8 RadioModule_Wait_STCINT(void)
{
RM_U8 IntStatus;
RM_U8 Status;
RM_U16 Loop;
Loop=0;
do
{
Status = RadioModule_Get_Int_Status((RM_U8 *)(& IntStatus));
Loop++;
}while(((IntStatus & 0x01) == 0x00) && (Loop < 0xff00));
if(Loop>=0xff00)
{
#ifdef Radio_Module_Console_Debug
puts("Wait STCINT EXP loop times limit!\n");
#endif
return LoopEXPLimit;
}
return OK;
}
RM_U8 FM_Seek_Station(RM_U8 SeekMode,RM_U8 *SeekEnd)
{
RM_U8 Valid_Channel;
RM_U16 Loop;
Loop=0;
do
{
if(RadioModule_FM_Seek_Start(SeekMode)!=OK)
return 1;
if(RadioModule_Wait_STCINT()!=OK)
return 1;
if(RadioModule_FM_Tune_Status(Cancel_Seek|Clr_Seek_Tune_Int)!=OK)
return 1;
if(RadioModule_FM_RSQ_Status(Get_RSQ_Status|Clr_RSQ_Int)!=OK)
return 1;
Loop++;
Valid_Channel = FmTuneStatusInfo.Resp1 & 0x01;
if((FmTuneStatusInfo.Resp1 & BLTF) != 0)
*SeekEnd = 1;
else
*SeekEnd = 0;
}while((Valid_Channel == 0) && (Loop < 0xfff) && (*SeekEnd == 0));
if(Loop >= 0xfff)
{
#ifdef Radio_Module_Console_Debug
puts("FM_Seek_Station() EXP loop times limit!\n");
#endif
return LoopEXPLimit;
}
if((SeekMode == SeekUp_Wrap) || (SeekMode == SeekDn_Wrap))
{
if((Valid_Channel == 0x01) && (*SeekEnd == 1))
*SeekEnd = 0;
}
return OK;
}
RM_U8 FM_Seek_All(void)
{
RM_U8 SeekEnd;
RM_U8 i;
if(RX_HD_Mute(HD_Mute_All) != OK)
return 1;
for(i=0;i<MaxStationNum;i++)
{
FMChannelArray[i].ChannelNo = NULL_Channel;
}
i=0;
#ifdef Radio_Module_GUI
InitLcdForRM();
#endif
if(RadioModule_FM_Tune_Freq(FM_Band_Bottom,ANTCAP_Auto)!=OK)
return RX_HD_Mute(HD_Unmute);
Delay(1000000);
if(Set_FM_Seek_Band(FM_Band_Top,FM_Band_Bottom)!=OK)
return RX_HD_Mute(HD_Unmute);
if(Set_FM_Seek_Space(FM_Seek_Space) != OK)
return RX_HD_Mute(HD_Unmute);
if(RadioModule_FM_Tune_Status(Cancel_Seek|Clr_Seek_Tune_Int)!=OK)
return RX_HD_Mute(HD_Unmute);
if(RadioModule_FM_RSQ_Status(Get_RSQ_Status|Clr_RSQ_Int)!=OK)
return RX_HD_Mute(HD_Unmute);
if(((FmTuneStatusInfo.Resp1) & ValidChannel) > 0)
{
FMChannelArray[i].ChannelNo = i+1;
if(FmRSQStatusInfo.Resp3 > 0x80)
FMChannelArray[i].StereoFlag = Stereo_F;
else
FMChannelArray[i].StereoFlag = Mono_F;
FMChannelArray[i].ChannelFreq = ((FmTuneStatusInfo.FreqH << 8) | FmTuneStatusInfo.FreqL) & 0xffff;
FMChannelArray[i].RSSI = FmRSQStatusInfo.RSSI;
FMChannelArray[i].SNR = FmRSQStatusInfo.SNR;
FMChannelArray[i].RDSFlag = NO_RDS_F;
FMChannelArray[i].FreqOffset = FmRSQStatusInfo.FreqOffset;
#ifdef Radio_Module_GUI
Lcd_disp_freq(FMChannelArray[i].ChannelFreq,FMChannelArray[i].FreqOffset);
Lcd_disp_stereo_flag(FMChannelArray[i].StereoFlag);
Lcd_disp_RSSI_SNR_Info(FMChannelArray[i].RSSI,FMChannelArray[i].SNR);
Lcd_disp_volume_Info(0,0);
Lcd_disp_channel_Info(FMChannelArray[i].ChannelNo);
#endif
i++;
}
do
{
if(FM_Seek_Station(SeekUp_Halt,(RM_U8 *)(&SeekEnd))!=OK)
return RX_HD_Mute(HD_Unmute);
if((FmTuneStatusInfo.Resp1 & ValidChannel) > 0)
{
FMChannelArray[i].ChannelNo = i+1;
if(FmRSQStatusInfo.Resp3 > 0x80)
FMChannelArray[i].StereoFlag = Stereo_F;
else
FMChannelArray[i].StereoFlag = Mono_F;
FMChannelArray[i].ChannelFreq = ((FmTuneStatusInfo.FreqH << 8) | FmTuneStatusInfo.FreqL) & 0xffff;
FMChannelArray[i].RSSI = FmRSQStatusInfo.RSSI;
FMChannelArray[i].SNR = FmRSQStatusInfo.SNR;
FMChannelArray[i].RDSFlag = NO_RDS_F;
FMChannelArray[i].FreqOffset = FmRSQStatusInfo.FreqOffset;
#ifdef Radio_Module_GUI
Lcd_disp_freq(FMChannelArray[i].ChannelFreq,FMChannelArray[i].FreqOffset);
Lcd_disp_stereo_flag(FMChannelArray[i].StereoFlag);
Lcd_disp_RSSI_SNR_Info(FMChannelArray[i].RSSI,FMChannelArray[i].SNR);
Lcd_disp_volume_Info(0,0);
Lcd_disp_channel_Info(FMChannelArray[i].ChannelNo);
#endif
i++;
}
}while((SeekEnd == 0) && (i<MaxStationNum));
if(FMChannelArray[0].ChannelNo != NULL_Channel)
{
if(RadioModule_FM_Tune_Freq(FMChannelArray[0].ChannelFreq,ANTCAP_Auto)!=OK)
return RX_HD_Mute(HD_Unmute);
}
else
{
if(RadioModule_FM_Tune_Freq(FM_Band_Bottom,ANTCAP_Auto)!=OK)
return RX_HD_Mute(HD_Unmute);
}
return RX_HD_Mute(HD_Unmute);
}
RM_U8 AM_Seek_Station(RM_U8 SeekMode,RM_U8 *SeekEnd)
{
RM_U8 Valid_Channel;
RM_U16 Loop;
Loop=0;
do
{
if(RadioModule_AM_Seek_Start(SeekMode)!=OK)
return 1;
if(RadioModule_Wait_STCINT()!=OK)
return 1;
if(RadioModule_AM_Tune_Status(Cancel_Seek|Clr_Seek_Tune_Int)!=OK)
return 1;
if(RadioModule_AM_RSQ_Status(Clr_RSQ_Int)!=OK)
return 1;
Loop++;
Valid_Channel = AmTuneStatusInfo.Resp1 & 0x01;
if((AmTuneStatusInfo.Resp1 & BLTF) != 0)
*SeekEnd = 1;
else
*SeekEnd = 0;
}while((Valid_Channel == 0) && (Loop < 0xfff) && (*SeekEnd == 0));
if(Loop >= 0xfff)
{
#ifdef Radio_Module_Console_Debug
puts("AM_Seek_Station() EXP loop times limit!\n");
#endif
return LoopEXPLimit;
}
if((SeekMode == SeekUp_Wrap) || (SeekMode == SeekDn_Wrap))
{
if((Valid_Channel == 0x01) && (*SeekEnd == 1))
*SeekEnd = 0;
}
return OK;
}
RM_U8 AM_Seek_All(void)
{
RM_U8 SeekEnd;
RM_U8 i;
if(RX_HD_Mute(HD_Mute_All) != OK)
return 1;
for(i=0;i<MaxStationNum;i++)
{
AMChannelArray[i].ChannelNo = NULL_Channel;
}
i=0;
#ifdef Radio_Module_GUI
InitLcdForRM();
#endif
if(RadioModule_AM_Tune_Freq(AM_Band_Bottom,ANTCAP_Auto)!=OK)
return RX_HD_Mute(HD_Unmute);
Delay(1000000);
if(Set_AM_Seek_Band(AM_Band_Top,AM_Band_Bottom)!=OK)
return RX_HD_Mute(HD_Unmute);
if(Set_AM_Seek_Space(AM_Seek_Space) != OK)
return RX_HD_Mute(HD_Unmute);
if(RadioModule_AM_Tune_Status(Cancel_Seek|Clr_Seek_Tune_Int)!=OK)
return RX_HD_Mute(HD_Unmute);
if(RadioModule_AM_RSQ_Status(Clr_RSQ_Int)!=OK)
return RX_HD_Mute(HD_Unmute);
if(((AmTuneStatusInfo.Resp1) & ValidChannel) > 0)
{
AMChannelArray[i].ChannelNo = i+1;
AMChannelArray[i].ChannelFreq = ((AmTuneStatusInfo.FreqH << 8) | AmTuneStatusInfo.FreqL) & 0xffff;
AMChannelArray[i].RSSI = AmRSQStatusInfo.RSSI;
AMChannelArray[i].SNR = AmRSQStatusInfo.SNR;
#ifdef Radio_Module_GUI
Lcd_disp_freq(AMChannelArray[i].ChannelFreq,NULL);
Lcd_disp_RSSI_SNR_Info(AMChannelArray[i].RSSI,AMChannelArray[i].SNR);
Lcd_disp_volume_Info(0,0);
Lcd_disp_channel_Info(AMChannelArray[i].ChannelNo);
#endif
i++;
}
do
{
if(AM_Seek_Station(SeekUp_Halt,(RM_U8 *)(&SeekEnd))!=OK)
return RX_HD_Mute(HD_Unmute);
if((AmTuneStatusInfo.Resp1 & ValidChannel) > 0)
{
AMChannelArray[i].ChannelNo = i+1;
AMChannelArray[i].ChannelFreq = ((AmTuneStatusInfo.FreqH << 8) | AmTuneStatusInfo.FreqL) & 0xffff;
AMChannelArray[i].RSSI = AmRSQStatusInfo.RSSI;
AMChannelArray[i].SNR = AmRSQStatusInfo.SNR;
#ifdef Radio_Module_GUI
Lcd_disp_freq(AMChannelArray[i].ChannelFreq,NULL);
Lcd_disp_RSSI_SNR_Info(AMChannelArray[i].RSSI,AMChannelArray[i].SNR);
Lcd_disp_volume_Info(0,0);
Lcd_disp_channel_Info(AMChannelArray[i].ChannelNo);
#endif
i++;
}
}while((SeekEnd == 0) && (i<MaxStationNum));
if(AMChannelArray[0].ChannelNo != NULL_Channel)
{
if(RadioModule_AM_Tune_Freq(AMChannelArray[0].ChannelFreq,ANTCAP_Auto)!=OK)
return RX_HD_Mute(HD_Unmute);
}
else
{
if(RadioModule_AM_Tune_Freq(AM_Band_Bottom,ANTCAP_Auto)!=OK)
return RX_HD_Mute(HD_Unmute);
}
return RX_HD_Mute(HD_Unmute);
}
#ifdef SI474X_Radio
void AMPreAmpSwitch(RM_U8 OnOff)
{
if(OnOff == TurnOnAMAmp)
AMAntATU();
else
AMAntNoATU();
}
void AM_ATTU(RM_U8 OnOff)
{
if(OnOff == AMAttuOn)
{
RadioModule_GPO_CTL(2);
RadioModule_GPO_SET(2);
}
else
{
RadioModule_GPO_CTL(2);
RadioModule_GPO_SET(0);
}
}
#endif
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -