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
//#define CORRECTION_LOW 0
//#define CORRECTION_LNA 1
//#define CORRECTION_LOW_ULTRA 2
//#define CORRECTION_LNA_ULTRA 3
//#define CORRECTION_LOW_OUT 4
//#define CORRECTION_HIGH 5
//#ifdef DIRECT_CORRECTION
// #define CORRECTION_DIRECT 4
// #define CORRECTION_LNA_DIRECT 5
//#endif
// #define CORRECTION_LOW_OUT 6
// #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)
{
(void)argc;
#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";
#else
static const char cmd[] = "low|high";
@ -1033,10 +1041,10 @@ VNA_SHELL_FUNCTION(cmd_correction)
if (argc == 1 && m >=0) {
#ifdef TINYSA4
switch(m) {
case 6: // Off
case CORRECTION_SIZE: // Off
setting.disable_correction = true;
goto show;
case 7: // on
case CORRECTION_SIZE+1: // on
setting.disable_correction = false;
show:
dirty = true; // recalculate intermediate table

@ -199,19 +199,19 @@ void set_output_path(freq_t f, float level)
signal_path = PATH_OFF;
else if (MODE_HIGH(setting.mode))
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))
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)
else if (setting.mixer_output && (f >= MAX_LOW_OUTPUT_FREQ || (config.ultra_start != ULTRA_AUTO && f > config.ultra_start)))
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;
else if (f > MINIMUM_DIRECT_FREQ)
signal_path = PATH_DIRECT;
else
signal_path = PATH_LOW;
switch (signal_path) {
case PATH_LEAKAGE:
drive_dBm = (float *)adf_drive_dBm;
max_drive = 1;
max_drive = 2;
break;
default:
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);
}
#ifdef TINYSA4
if (setting.extra_lna)
c += 1;
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)
cv += float_TO_PURE_RSSI(config.drive3_level_offset);
if (ultra && f > ultra_start) {
switch (signal_path) {
case PATH_LOW:
c = CORRECTION_LOW;
break;
case PATH_ULTRA:
c = CORRECTION_LOW_ULTRA;
if (LO_harmonic) {
cv += float_TO_PURE_RSSI(config.harmonic_level_offset); // +10.5dB correction.
}
if (setting.extra_lna)
c += 1;
break;
#ifdef CORRECTION_DIRECT
case PATH_DIRECT:
c = CORRECTION_DIRECT;
break;
#endif
}
if (setting.extra_lna)
c += 1;
// if (LO_shifting)
// 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){
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
if (MODE_HIGH(setting.mode))

Loading…
Cancel
Save

Powered by TurnKey Linux.