📄 ns_main.c
字号:
#include "ns954lib.h"
#include "ns_main.h"
#include "host.h"
//-----------------------------------------------------------------------------
// Band Frequency table
//-----------------------------------------------------------------------------
XDATA StFreqTable g_FreqTbl[] = {
{ 8750, 8750,10800, 5, BAND_FM, "FM-EU" },
{ 8750, 8750,10810,20, BAND_FM, "FM-US" },
{ 8700, 8700,10800,10, BAND_FM, "FM-AS" },
{ 7600, 7600,10800,10, BAND_FM, "FM-JP" },
{ 8750, 8750,10800, 5, BAND_FM, "FM-EE" },
{ 522, 522, 1620, 9, BAND_AM9k, "AM-EU" },
{ 520, 520, 1720,10, BAND_AM10k, "AM-US" },
{ 522, 522, 1611, 9, BAND_AM9k, "AM-AS" },
{ 522, 522, 1629, 9, BAND_AM9k, "AM-JP" },
{ 522, 522, 1620, 9, BAND_AM9k, "AM-EE" },
};
XDATA StFreqTable* g_pFreqTbl = g_FreqTbl;
//=============================================================================
// Compare String
//-----------------------------------------------------------------------------
// Parameter(s)
// pStr0 : String 0
// pStr1 : String 1
//-----------------------------------------------------------------------------
// Return Value
// 0 : no match
// 1 : match
//=============================================================================
u8 StrComp(const char* pStr0,const char* pStr1)
{
u8 i;
for(i=0;i<16;i++){
if(pStr0[i]==0 && pStr0[i]==0) {
return 1;
}
if(pStr0[i]==0 || pStr1[i]==0 || pStr0[i]!=pStr1[i]){
return 0;
}
}
return 0;
}
//=============================================================================
// Find Frequency Table
//-----------------------------------------------------------------------------
// Parameter(s)
// pBandName : Name Of Band
//-----------------------------------------------------------------------------
// Return Value
// 0 : can't find Table
// non 0 : find Table !
//=============================================================================
StFreqTable* FindFreqTable(const char* pBandName)
{
u8 i;
for(i=0;i<numof(g_FreqTbl);i++){
if(StrComp(g_FreqTbl[i].pName,pBandName)){
return &g_FreqTbl[i];
}
}
return 0;
}
//=============================================================================
// Frequency calculate sample
//-----------------------------------------------------------------------------
// Parameter(s)
// pTbl : Frequency Table Pointer
// stp : step count
//-----------------------------------------------------------------------------
// Return Value
// 1 : band changed !
// 0 : not band changed
//=============================================================================
u8 freq_calc(StFreqTable* pTbl,s8 stp)
{
if(stp==0){
return 0;
}
pTbl->frq += ((s16)stp)*pTbl->stp;
if(pTbl->frq > pTbl->max){ pTbl->frq = pTbl->min; }
if(pTbl->frq < pTbl->min){ pTbl->frq = pTbl->max; }
return 0;
}
//=============================================================================
// Seek end check
//-----------------------------------------------------------------------------
// Parameter(s)
// none
//-----------------------------------------------------------------------------
// Return Value
// 0 : seek continue
// 1 : seek timeout
//=============================================================================
u8 ns_seek_endcheck(void)
{
return 0;
}
//=============================================================================
// Seek Sample
//-----------------------------------------------------------------------------
// Parameter(s)
// nStep : -1 (1 step seek down),
// -2 (2 step seek down),
// +1 (1 step seek up)
// +2 (2 step seek up)
//-----------------------------------------------------------------------------
// Return Value
// none
//=============================================================================
void ns_seek_work(s8 nStep)
{
u8 band = host_Read(0x00)>>4;
ns_reg_mute(1);
if(ns_seek_check(band,g_pFreqTbl->frq)){
break;
}
}
ns_reg_mute(0);
}
//-----------------------------------------------------------------------------
// how to use sample source code
//-----------------------------------------------------------------------------
#if 0
//=============================================================================
// PowerON and set FM 108.00(MHz) and checking Some state
//-----------------------------------------------------------------------------
// Parameter(s)
// none
//-----------------------------------------------------------------------------
// Return Value
// none
//=============================================================================
void sample_power_on_fm(void)
{
u16 st;
u8 rssi;
ns_power_on();
ns_dsp_alignment();
ns_band(BAND_FM);
ns_freq(10800);
ns_reg_mute(0);
ns_rds_work(RDS_START); // RDS Receive Start
while(1){
st = ns_get_state();
if(st & NS_STATE_STEREO) {
// now Receiving STEREO!!
}
// Get RSSI level
rssi = ns_get_rssi();
// Check RDS data
if(host_get_rdsint()){
ns_rds_work(RDS_WORK);
}
}
}
//=============================================================================
// PowerON and set AM 999(KHz) and checking Some state
//-----------------------------------------------------------------------------
// Parameter(s)
// none
//-----------------------------------------------------------------------------
// Return Value
// none
//=============================================================================
void sample_power_on_am(void)
{
u16 st;
u8 rssi;
ns_power_on();
ns_dsp_alignment();
ns_band(BAND_AM);
ns_freq(999);
ns_reg_mute(0);
ns_rds_work(RDS_START);
while(1){
st = ns_get_state();
// Get RSSI level
rssi = ns_get_rssi();
}
}
//=============================================================================
// change band and freq (AM)
//-----------------------------------------------------------------------------
// Parameter(s)
// none
//-----------------------------------------------------------------------------
// Return Value
// none
//=============================================================================
void change_am_and_freq(void)
{
ns_reg_mute(1);
ns_band(BAND_AM); // Set to AM BAND
ns_freq(999); // 999(KHz)
ns_reg_mute(0);
}
//=============================================================================
// change band and freq (FM)
//-----------------------------------------------------------------------------
// Parameter(s)
// none
//-----------------------------------------------------------------------------
// Return Value
// none
//=============================================================================
void change_fm_and_freq(void)
{
ns_reg_mute(1);
ns_band(BAND_FM); // Set to FM Band
ns_freq(8750); // 87.5(MHz
ns_reg_mute(0);
}
//=============================================================================
// FM Seek
//-----------------------------------------------------------------------------
// Parameter(s)
// none
//-----------------------------------------------------------------------------
// Return Value
// none
//=============================================================================
void sample_fm_seek_count_up(void)
{
g_pFreqTbl = FindFreqTable("FM-EU");
g_pFreqTbl->frq = 7600;
ns_power_on();
ns_dsp_alignment();
ns_band(g_pFreqTbl->band);
ns_freq(g_pFreqTbl->frq);
if(1) ns_seek_work(+1); // if you want to up seek
else ns_seek_work(-1); // if you want to down seek
}
//=============================================================================
// AM Seek
//-----------------------------------------------------------------------------
// Parameter(s)
// none
//-----------------------------------------------------------------------------
// Return Value
// none
//=============================================================================
void sample_am_seek_count_down(void)
{
g_pFreqTbl = FindFreqTable("AM-EU");
g_pFreqTbl->frq = 999;
ns_power_on();
ns_dsp_alignment();
ns_band(g_pFreqTbl->band);
ns_freq(g_pFreqTbl->frq);
if(1) ns_seek_work(+1); // if you want to up seek
else ns_seek_work(-1); // if you want to down seek
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -