|
|
|
@ -184,6 +184,8 @@ void reset_settings(int m)
|
|
|
|
setting.sweep_time_us = 0;
|
|
|
|
setting.sweep_time_us = 0;
|
|
|
|
setting.lo_drive=1;
|
|
|
|
setting.lo_drive=1;
|
|
|
|
setting.extra_lna = false;
|
|
|
|
setting.extra_lna = false;
|
|
|
|
|
|
|
|
setting.correction_frequency = config.low_correction_frequency;
|
|
|
|
|
|
|
|
setting.correction_value = config.low_correction_value;
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
#ifdef __ULTRA__
|
|
|
|
#ifdef __ULTRA__
|
|
|
|
case M_ULTRA:
|
|
|
|
case M_ULTRA:
|
|
|
|
@ -201,12 +203,16 @@ void reset_settings(int m)
|
|
|
|
setting.sweep_time_us = 10*ONE_SECOND_TIME;
|
|
|
|
setting.sweep_time_us = 10*ONE_SECOND_TIME;
|
|
|
|
setting.step_delay_mode = SD_FAST;
|
|
|
|
setting.step_delay_mode = SD_FAST;
|
|
|
|
setting.extra_lna = false;
|
|
|
|
setting.extra_lna = false;
|
|
|
|
|
|
|
|
setting.correction_frequency = config.low_correction_frequency;
|
|
|
|
|
|
|
|
setting.correction_value = config.low_correction_value;
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case M_HIGH:
|
|
|
|
case M_HIGH:
|
|
|
|
set_sweep_frequency(ST_START, minFreq);
|
|
|
|
set_sweep_frequency(ST_START, minFreq);
|
|
|
|
set_sweep_frequency(ST_STOP, maxFreq);
|
|
|
|
set_sweep_frequency(ST_STOP, maxFreq);
|
|
|
|
setting.sweep_time_us = 0;
|
|
|
|
setting.sweep_time_us = 0;
|
|
|
|
setting.extra_lna = false;
|
|
|
|
setting.extra_lna = false;
|
|
|
|
|
|
|
|
setting.correction_frequency = config.high_correction_frequency;
|
|
|
|
|
|
|
|
setting.correction_value = config.high_correction_value;
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case M_GENHIGH:
|
|
|
|
case M_GENHIGH:
|
|
|
|
setting.lo_drive=1;
|
|
|
|
setting.lo_drive=1;
|
|
|
|
@ -215,6 +221,8 @@ void reset_settings(int m)
|
|
|
|
setting.sweep_time_us = 10*ONE_SECOND_TIME;
|
|
|
|
setting.sweep_time_us = 10*ONE_SECOND_TIME;
|
|
|
|
setting.step_delay_mode = SD_FAST;
|
|
|
|
setting.step_delay_mode = SD_FAST;
|
|
|
|
setting.extra_lna = false;
|
|
|
|
setting.extra_lna = false;
|
|
|
|
|
|
|
|
setting.correction_frequency = config.high_correction_frequency;
|
|
|
|
|
|
|
|
setting.correction_value = config.high_correction_value;
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for (uint8_t i = 0; i< MARKERS_MAX; i++) {
|
|
|
|
for (uint8_t i = 0; i< MARKERS_MAX; i++) {
|
|
|
|
@ -1169,11 +1177,11 @@ static int32_t scaled_correction_value[CORRECTION_POINTS];
|
|
|
|
|
|
|
|
|
|
|
|
void calculate_correction(void)
|
|
|
|
void calculate_correction(void)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
scaled_correction_value[0] = config.correction_value[0] * (1 << (SCALE_FACTOR));
|
|
|
|
scaled_correction_value[0] = setting.correction_value[0] * (1 << (SCALE_FACTOR));
|
|
|
|
for (int i = 1; i < CORRECTION_POINTS; i++) {
|
|
|
|
for (int i = 1; i < CORRECTION_POINTS; i++) {
|
|
|
|
scaled_correction_value[i] = config.correction_value[i] * (1 << (SCALE_FACTOR));
|
|
|
|
scaled_correction_value[i] = setting.correction_value[i] * (1 << (SCALE_FACTOR));
|
|
|
|
int32_t m = scaled_correction_value[i] - scaled_correction_value[i-1];
|
|
|
|
int32_t m = scaled_correction_value[i] - scaled_correction_value[i-1];
|
|
|
|
int32_t d = (config.correction_frequency[i] - config.correction_frequency[i-1]) >> SCALE_FACTOR;
|
|
|
|
int32_t d = (setting.correction_frequency[i] - setting.correction_frequency[i-1]) >> SCALE_FACTOR;
|
|
|
|
scaled_correction_multi[i] = (int32_t) ( m / d );
|
|
|
|
scaled_correction_multi[i] = (int32_t) ( m / d );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -1183,7 +1191,7 @@ void calculate_correction(void)
|
|
|
|
pureRSSI_t get_frequency_correction(freq_t f) // Frequency dependent RSSI correction to compensate for imperfect LPF
|
|
|
|
pureRSSI_t get_frequency_correction(freq_t f) // Frequency dependent RSSI correction to compensate for imperfect LPF
|
|
|
|
{
|
|
|
|
{
|
|
|
|
pureRSSI_t cv = 0;
|
|
|
|
pureRSSI_t cv = 0;
|
|
|
|
if (!(setting.mode == M_LOW || setting.mode == M_GENLOW))
|
|
|
|
if (setting.mode == M_GENHIGH)
|
|
|
|
return(0.0);
|
|
|
|
return(0.0);
|
|
|
|
|
|
|
|
|
|
|
|
if (setting.extra_lna) {
|
|
|
|
if (setting.extra_lna) {
|
|
|
|
@ -1199,7 +1207,7 @@ pureRSSI_t get_frequency_correction(freq_t f) // Frequency dependent RSSI c
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int i = 0;
|
|
|
|
int i = 0;
|
|
|
|
while (f > config.correction_frequency[i] && i < CORRECTION_POINTS)
|
|
|
|
while (f > setting.correction_frequency[i] && i < CORRECTION_POINTS)
|
|
|
|
i++;
|
|
|
|
i++;
|
|
|
|
if (i >= CORRECTION_POINTS) {
|
|
|
|
if (i >= CORRECTION_POINTS) {
|
|
|
|
cv += scaled_correction_value[CORRECTION_POINTS-1] >> (SCALE_FACTOR - 5);
|
|
|
|
cv += scaled_correction_value[CORRECTION_POINTS-1] >> (SCALE_FACTOR - 5);
|
|
|
|
@ -1209,11 +1217,11 @@ pureRSSI_t get_frequency_correction(freq_t f) // Frequency dependent RSSI c
|
|
|
|
cv += scaled_correction_value[0] >> (SCALE_FACTOR - 5);
|
|
|
|
cv += scaled_correction_value[0] >> (SCALE_FACTOR - 5);
|
|
|
|
goto done;
|
|
|
|
goto done;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
f = f - config.correction_frequency[i-1];
|
|
|
|
f = f - setting.correction_frequency[i-1];
|
|
|
|
#if 0
|
|
|
|
#if 0
|
|
|
|
freq_t m = (config.correction_frequency[i] - config.correction_frequency[i-1]) >> SCALE_FACTOR ;
|
|
|
|
freq_t m = (setting.correction_frequency[i] - setting.correction_frequency[i-1]) >> SCALE_FACTOR ;
|
|
|
|
float multi = (config.correction_value[i] - config.correction_value[i-1]) * (1 << (SCALE_FACTOR -1)) / (float)m;
|
|
|
|
float multi = (setting.correction_value[i] - setting.correction_value[i-1]) * (1 << (SCALE_FACTOR -1)) / (float)m;
|
|
|
|
float cv = config.correction_value[i-1] + ((f >> SCALE_FACTOR) * multi) / (float)(1 << (SCALE_FACTOR -1)) ;
|
|
|
|
float cv = setting.correction_value[i-1] + ((f >> SCALE_FACTOR) * multi) / (float)(1 << (SCALE_FACTOR -1)) ;
|
|
|
|
#else
|
|
|
|
#else
|
|
|
|
int32_t scaled_f = f >> SCALE_FACTOR;
|
|
|
|
int32_t scaled_f = f >> SCALE_FACTOR;
|
|
|
|
cv += (scaled_correction_value[i-1] + (scaled_f * scaled_correction_multi[i])) >> (SCALE_FACTOR - 5) ;
|
|
|
|
cv += (scaled_correction_value[i-1] + (scaled_f * scaled_correction_multi[i])) >> (SCALE_FACTOR - 5) ;
|
|
|
|
|