Corrected error in output path calculation

pull/34/head
erikkaashoek 4 years ago
parent 3270ca358c
commit 50c8a2ac3a

@ -1012,18 +1012,26 @@ VNA_SHELL_FUNCTION(cmd_f)
} }
#endif #endif
//#define CORRECTION_LOW 0 //#ifdef DIRECT_CORRECTION
//#define CORRECTION_LNA 1 // #define CORRECTION_DIRECT 4
//#define CORRECTION_LOW_ULTRA 2 // #define CORRECTION_LNA_DIRECT 5
//#define CORRECTION_LNA_ULTRA 3 //#endif
//#define CORRECTION_LOW_OUT 4 // #define CORRECTION_LOW_OUT 6
//#define CORRECTION_HIGH 5 // #define CORRECTION_LOW_OUT_DIRECT 7
// #define CORRECTION_LOW_OUT_ADF 8
// #define CORRECTION_LOW_OUT_MIXER 9
// #define CORRECTION_HIGH 10
// #define CORRECTION_SIZE 11
VNA_SHELL_FUNCTION(cmd_correction) VNA_SHELL_FUNCTION(cmd_correction)
{ {
(void)argc; (void)argc;
#ifdef TINYSA4 #ifdef TINYSA4
static const char cmd[] = "low|lna|ultra|ultra_lna|out|high|off|on"; #ifdef DIRECT_CORRECTION
static const char cmd[] = "low|lna|ultra|ultra_lna|direct|direct_lna|out|out_direct|out_adf|out_mixer|high|off|on";
#else
static const char cmd[] = "low|lna|ultra|ultra_lna|out|out_direct|out_adf|out_mixer|high|off|on";
#endif
static const char range[] = "0-19"; static const char range[] = "0-19";
#else #else
static const char cmd[] = "low|high"; static const char cmd[] = "low|high";
@ -1033,10 +1041,10 @@ VNA_SHELL_FUNCTION(cmd_correction)
if (argc == 1 && m >=0) { if (argc == 1 && m >=0) {
#ifdef TINYSA4 #ifdef TINYSA4
switch(m) { switch(m) {
case 6: // Off case CORRECTION_SIZE: // Off
setting.disable_correction = true; setting.disable_correction = true;
goto show; goto show;
case 7: // on case CORRECTION_SIZE+1: // on
setting.disable_correction = false; setting.disable_correction = false;
show: show:
dirty = true; // recalculate intermediate table dirty = true; // recalculate intermediate table

@ -199,19 +199,19 @@ void set_output_path(freq_t f, float level)
signal_path = PATH_OFF; signal_path = PATH_OFF;
else if (MODE_HIGH(setting.mode)) else if (MODE_HIGH(setting.mode))
signal_path = PATH_HIGH; signal_path = PATH_HIGH;
else if ((f < MINIMUM_DIRECT_FREQ && config.ultra_start != ULTRA_AUTO && f < config.ultra_start) || (config.ultra && config.ultra_start != ULTRA_AUTO && f < config.ultra_start)) else if (setting.mixer_output && (f >= MAX_LOW_OUTPUT_FREQ || (config.ultra_start != ULTRA_AUTO && f > config.ultra_start)))
signal_path = PATH_LOW;
else if (f <= MAX_LOW_OUTPUT_FREQ && config.ultra_start != ULTRA_AUTO && f < config.ultra_start)
signal_path = PATH_DIRECT;
else if (config.ultra && setting.mixer_output)
signal_path = PATH_ULTRA; signal_path = PATH_ULTRA;
else else if (!setting.mixer_output && (f >= MAX_LOW_OUTPUT_FREQ || (config.ultra_start != ULTRA_AUTO && f > config.ultra_start)))
signal_path = PATH_LEAKAGE; signal_path = PATH_LEAKAGE;
else if (f > MINIMUM_DIRECT_FREQ)
signal_path = PATH_DIRECT;
else
signal_path = PATH_LOW;
switch (signal_path) { switch (signal_path) {
case PATH_LEAKAGE: case PATH_LEAKAGE:
drive_dBm = (float *)adf_drive_dBm; drive_dBm = (float *)adf_drive_dBm;
max_drive = 1; max_drive = 2;
break; break;
default: default:
drive_dBm = (float *)si_drive_dBm; drive_dBm = (float *)si_drive_dBm;
@ -2045,9 +2045,6 @@ pureRSSI_t get_frequency_correction(freq_t f) // Frequency dependent RSSI c
return(0.0); return(0.0);
} }
#ifdef TINYSA4 #ifdef TINYSA4
if (setting.extra_lna)
c += 1;
if (setting.mode == M_LOW) { if (setting.mode == M_LOW) {
// //
@ -2077,20 +2074,42 @@ pureRSSI_t get_frequency_correction(freq_t f) // Frequency dependent RSSI c
if (actual_drive >= 3) if (actual_drive >= 3)
cv += float_TO_PURE_RSSI(config.drive3_level_offset); cv += float_TO_PURE_RSSI(config.drive3_level_offset);
switch (signal_path) {
if (ultra && f > ultra_start) { case PATH_LOW:
c = CORRECTION_LOW;
break;
case PATH_ULTRA:
c = CORRECTION_LOW_ULTRA; c = CORRECTION_LOW_ULTRA;
if (LO_harmonic) { if (LO_harmonic) {
cv += float_TO_PURE_RSSI(config.harmonic_level_offset); // +10.5dB correction. cv += float_TO_PURE_RSSI(config.harmonic_level_offset); // +10.5dB correction.
} }
if (setting.extra_lna) break;
c += 1; #ifdef CORRECTION_DIRECT
case PATH_DIRECT:
c = CORRECTION_DIRECT;
break;
#endif
} }
if (setting.extra_lna)
c += 1;
// if (LO_shifting) // if (LO_shifting)
// cv += float_TO_PURE_RSSI(actual_rbw_x10>USE_SHIFT2_RBW ? config.shift2_level_offset : config.shift1_level_offset); // cv += float_TO_PURE_RSSI(actual_rbw_x10>USE_SHIFT2_RBW ? config.shift2_level_offset : config.shift1_level_offset);
} else if (setting.mode == M_GENLOW){ } else if (setting.mode == M_GENLOW){
c = CORRECTION_LOW_OUT; switch (signal_path) {
case PATH_LOW:
c = CORRECTION_LOW_OUT;
break;
case PATH_ULTRA:
c = CORRECTION_LOW_OUT_MIXER;
break;
case PATH_DIRECT:
c = CORRECTION_LOW_OUT_DIRECT;
break;
case PATH_LEAKAGE:
c = CORRECTION_LOW_OUT_ADF;
break;
}
} }
#else #else
if (MODE_HIGH(setting.mode)) if (MODE_HIGH(setting.mode))

Loading…
Cancel
Save

Powered by TurnKey Linux.