Now values is uint16 (float before)
And value = x10 in kHz (possibly better use uint32_t and in Hz)
Only one part of code i think need more fix:
VBW use still float
@ -786,14 +786,14 @@ void apply_settings(void) // Ensure all settings in the setting structure
else
actualStepDelay=setting.step_delay;
}elseif(setting.step_delay<=2){// Frequency sweep so use RBW to calculate minimum delay when changing frequency
if(actual_rbw>=191.0)actualStepDelay=280;
elseif(actual_rbw>=142.0)actualStepDelay=350;
elseif(actual_rbw>=75.0)actualStepDelay=450;
elseif(actual_rbw>=56.0)actualStepDelay=650;
elseif(actual_rbw>=37.0)actualStepDelay=700;
elseif(actual_rbw>=18.0)actualStepDelay=1100;
elseif(actual_rbw>=9.0)actualStepDelay=1700;
elseif(actual_rbw>=5.0)actualStepDelay=3300;
if(actual_rbw_x10 >=1910)actualStepDelay=280;
elseif(actual_rbw_x10 >=1420)actualStepDelay=350;
elseif(actual_rbw_x10 >=750)actualStepDelay=450;
elseif(actual_rbw_x10 >=560)actualStepDelay=650;
elseif(actual_rbw_x10 >=370)actualStepDelay=700;
elseif(actual_rbw_x10 >=180)actualStepDelay=1100;
elseif(actual_rbw_x10 >=90)actualStepDelay=1700;
elseif(actual_rbw_x10 >=50)actualStepDelay=3300;
elseactualStepDelay=6400;
if(setting.step_delay==1)// In precise mode wait twice as long for RSSI to stabalize
actualStepDelay*=2;
@ -1040,29 +1040,29 @@ void update_rbw(void) // calculate the actual_rbw and the vbwSteps (#
}else{
setting.vbw=300;// trick to get right default rbw in zero span mode
}
actual_rbw=setting.rbw;// requested rbw
if(actual_rbw==0){// if auto rbw
actual_rbw=2*setting.vbw;// rbw is twice the frequency step to ensure no gaps in coverage
actual_rbw_x10=setting.rbw_x10;// requested rbw
if(actual_rbw_x10==0){// if auto rbw
actual_rbw_x10 =20.0*setting.vbw;// rbw is twice the frequency step to ensure no gaps in coverage
}
if(actual_rbw<2.6)
actual_rbw=2.6;
if(actual_rbw>600)
actual_rbw=600;
if(actual_rbw_x10 <26)
actual_rbw_x10 =26;
if(actual_rbw_x10>6000)
actual_rbw_x10=6000;
if(setting.spur&&actual_rbw>300)
actual_rbw=250;// if spur suppression reduce max rbw to fit within BPF
if(setting.spur&&actual_rbw_x10>3000)
actual_rbw_x10=2500;// if spur suppression reduce max rbw to fit within BPF
SI4432_Sel=MODE_SELECT(setting.mode);
actual_rbw=SI4432_SET_RBW(actual_rbw);// see what rbw the SI4432 can realize
actual_rbw_x10=SI4432_SET_RBW(actual_rbw_x10);// see what rbw the SI4432 can realize
if(setting.frequency_step>0&&MODE_INPUT(setting.mode)){// When doing frequency scanning in input mode
vbwSteps=((int)(2*(setting.vbw+(actual_rbw/2))/actual_rbw));// calculate # steps in between each frequency step due to rbw being less than frequency step
vbwSteps=((int)(2*(setting.vbw+(actual_rbw_x10/20.0))/(actual_rbw_x10/10.0)));// calculate # steps in between each frequency step due to rbw being less than frequency step
if(setting.step_delay==1)// if in Precise scanning
vbwSteps*=2;// use twice as many steps
if(vbwSteps<1)// at least one step
vbwSteps=1;
}else{// in all other modes
setting.vbw=actual_rbw;
setting.vbw=actual_rbw_x10/10.0;
vbwSteps=1;// only one vbwSteps
}
dirty=true;
@ -1072,8 +1072,8 @@ int binary_search_frequency(int f) // Search which index in the frequency t
{
intL=0;
intR=(sizeoffrequencies)/sizeof(int)-1;
intfmin=f-((int)actual_rbw)*1000;
intfplus=f+((int)actual_rbw)*1000;
intfmin=f-actual_rbw_x10*100;
intfplus=f+actual_rbw_x10*100;
while(L<=R){
intm=(L+R)/2;
if((int)frequencies[m]<fmin)
@ -1216,8 +1216,8 @@ int binary_search(int f)
{
intL=0;
intR=(sizeofspur_table)/sizeof(int)-1;
intfmin=f-((int)actual_rbw)*1000;
intfplus=f+((int)actual_rbw)*1000;
intfmin=f-actual_rbw_x10*100;
intfplus=f+actual_rbw_x10*100;
while(L<=R){
intm=(L+R)/2;
if(spur_table[m]<fmin)
@ -1236,7 +1236,7 @@ int avoid_spur(int f) // find if this frequency should be avoi