LPF correction added

tinySA-v0.2
erikkaashoek 6 years ago
parent c0e152f6c0
commit e3b84785c9

@ -547,6 +547,53 @@ void apply_settings(void)
//------------------------------------------
#define CORRECTION_POINTS 10
static const uint32_t correction_frequency[CORRECTION_POINTS] =
{
100000,
200000,
400000,
1000000,
2000000,
50000000,
100000000,
200000000,
300000000,
350000000
};
static const float correction_value[CORRECTION_POINTS] =
{
+4.0,
+2.0,
+1.5,
+0.5,
0.0,
0.0,
+1.0,
+1.0,
+2.5,
+5.0
};
float get_frequency_correction(uint32_t f)
{
if (!(setting.mode == M_LOW))
return(0.0);
int i = 0;
while (f > correction_frequency[i] && i < CORRECTION_POINTS)
i++;
if (i >= CORRECTION_POINTS)
return(correction_value[CORRECTION_POINTS-1]);
if (i == 0)
return(correction_value[0]);
f = f - correction_frequency[i-1];
uint32_t m = correction_frequency[i] - correction_frequency[i-1] ;
float cv = correction_value[i-1] + (correction_value[i] - correction_value[i-1]) * (float)f / (float)m;
return(cv);
}
float peakLevel;
float min_level;
@ -1047,12 +1094,12 @@ again:
int wait_for_trigger = false;
int old_actual_step_delay = actualStepDelay;
if (i == 0 && setting.frequency_step == 0 && setting.trigger != T_AUTO) { // [repare for wait for trigger to happen
if (i == 0 && setting.frequency_step == 0 && setting.trigger != T_AUTO) { // prepare for wait for trigger to happen
wait_for_trigger = true;
actualStepDelay = 0; // fastest possible in trigger mode
actualStepDelay = 0; // fastest possible in zero span trigger mode
}
float subRSSI;
float correct_RSSI = get_level_offset()+ setting.attenuate - signal_path_loss - setting.offset;
float correct_RSSI = get_level_offset()+ setting.attenuate - signal_path_loss - setting.offset + get_frequency_correction(f);
wait:
subRSSI = SI4432_RSSI(lf, MODE_SELECT(setting.mode)) + correct_RSSI ;
if (wait_for_trigger) { // wait for trigger to happen

Loading…
Cancel
Save

Powered by TurnKey Linux.