From 564b2a971d7c9b83b3b9a33a0581edecb4dc177b Mon Sep 17 00:00:00 2001 From: erikkaashoek Date: Tue, 8 Sep 2020 12:53:38 +0200 Subject: [PATCH] High node auto AGC and MIRROR MASKING for attenuation active --- sa_core.c | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/sa_core.c b/sa_core.c index cda52a8..761beaf 100644 --- a/sa_core.c +++ b/sa_core.c @@ -1586,7 +1586,7 @@ modulation_again: // -------------------------------- Acquisition loop for one requested frequency covering spur avoidance and vbwsteps ------------------------ pureRSSI_t RSSI = float_TO_PURE_RSSI(-150); -#define __DEBUG_SPUR__ +//#define __DEBUG_SPUR__ #ifdef __DEBUG_SPUR__ // For debugging the spur avoidance control stored_t[i] = -90.0; // Display when to do spur shift in the stored trace #endif @@ -1838,8 +1838,6 @@ static bool sweep(bool break_on_operation) // if (setting.mode== -1) // return; // START_PROFILE; - START_PROFILE; - palClearPad(GPIOB, GPIOB_LED); downslope = true; // Initialize the peak search algorithm @@ -1887,7 +1885,8 @@ sweep_again: // stay in sweep loop when output mo // ----------------------- in loop AGC --------------------------------- if (!in_selftest && setting.mode == M_HIGH && S_IS_AUTO(setting.agc) && UNIT_IS_LOG(setting.unit)) { -#define AGC_RSSI_THRESHOLD -55 +#define AGC_RSSI_THRESHOLD (-55+get_attenuation()) + if (RSSI > AGC_RSSI_THRESHOLD && RSSI > agc_prev_rssi) { agc_peak_freq = frequencies[i]; agc_peak_rssi = agc_prev_rssi = RSSI; @@ -2087,12 +2086,22 @@ sweep_again: // stay in sweep loop when output mo #ifdef __MIRROR_MASKING__ if (setting.mode == M_HIGH && setting.mirror_masking) { int mirror_offset = 2 * 937000 / setting.frequency_step; +// int mask_start = 0; +// int mask_end = 0; if (mirror_offset > 3) { for (int i = 1; i < sweep_points - mirror_offset; i++) { - if (actual_t[i] > -80 && actual_t[i+mirror_offset] < actual_t[i] - 25) { - actual_t[i+mirror_offset] = actual_t[i+mirror_offset-1]; - actual_t[i+mirror_offset+1] = actual_t[i+mirror_offset-1]; + int m = i+mirror_offset; + if (actual_t[i] > -80 && actual_t[m] < actual_t[i] - 25 && ( actual_t[m] > actual_t[m-1] || actual_t[m+1] > actual_t[m-1] ) /* && (i < mask_start || mask_start == 0) */ ) { +// if (mask_start == 0) +// mask_start = m; + actual_t[m] = actual_t[m-1]; + actual_t[m+1] = actual_t[m-1]; } +// else { +// if (i == mask_start) +// i += mirror_offset; +// mask_start =0; +// } } } } @@ -2345,7 +2354,6 @@ sweep_again: // stay in sweep loop when output mo ili9341_fill(OFFSETX, HEIGHT_NOSCROLL+1, WIDTH, 1, 0); palSetPad(GPIOB, GPIOB_LED); - STOP_PROFILE; return true; } @@ -2642,6 +2650,15 @@ void draw_cal_status(void) y += YSTEP + YSTEP/2 ; ili9341_drawstring("Spur:", x, y); + y += YSTEP; + plot_printf(buf, BLEN, "ON"); + ili9341_drawstring(buf, x, y); + } + if (setting.mirror_masking) { + ili9341_set_foreground(BRIGHT_COLOR_GREEN); + y += YSTEP + YSTEP/2 ; + ili9341_drawstring("Mask:", x, y); + y += YSTEP; plot_printf(buf, BLEN, "ON"); ili9341_drawstring(buf, x, y);