Add AGC debug and some words changed

pull/4/head
erikkaashoek 6 years ago
parent c326787273
commit 797277934c

@ -20,8 +20,12 @@
#include "SI4432.h" // comment out for simulation
#include "stdlib.h"
//#define __DEBUG_AGC__ If set the AGC value will be shown in the stored trace and fast CW mode will be disabled
//#define __DEBUG_AGC__ If set the AGC value will be shown in the stored trace and FAST_SWEEP rmmode will be disabled
#ifdef __DEBUG_AGC__
#ifdef __FAST_SWEEP__
#undef __FAST_SWEEP__
#endif
#endif
int dirty = true;
int scandirty = true;
@ -1287,7 +1291,6 @@ float perform(bool break_on_operation, int i, uint32_t f, int tracking) // M
dirty = false;
if (setting.spur) // if in spur avoidance mode
setting.spur = 1; // resync spur in case of previous abort
// start_of_sweep_timestamp = chVTGetSystemTimeX(); // initialize again to eliminate time spend in apply_settings
}
if (setting.mode == M_GENLOW && setting.level_sweep != 0.0) { // if in low output mode and level sweep is active
@ -1501,9 +1504,7 @@ float perform(bool break_on_operation, int i, uint32_t f, int tracking) // M
#ifdef __FAST_SWEEP__
if (i == 0 && setting.frequency_step == 0 && setting.trigger == T_AUTO && setting.spur == 0 && SI4432_step_delay == 0 && setting.repeat == 1 && setting.sweep_time_us < 100*ONE_MS_TIME) {
// if ultra fast scanning is needed prefill the SI4432 RSSI read buffer
#ifndef __DEBUG_AGC__ // Don't prefill if debugging the AGC
SI4432_Fill(MODE_SELECT(setting.mode), 0);
#endif
}
#endif
@ -1517,11 +1518,12 @@ float perform(bool break_on_operation, int i, uint32_t f, int tracking) // M
else
signal_path_loss = +7; // Loss in dB (+ is gain)
#define TLEVEL_UNDEF 0
#define T_LEVEL_BOTTOM 1
#define T_LEVEL_TOP 2
uint16_t data_level = TLEVEL_UNDEF;
uint16_t last_data_level = TLEVEL_UNDEF;
#define T_LEVEL_UNDEF 0
#define T_LEVEL_BELOW 1
#define T_LEVEL_ABOVE 2
uint16_t data_level = T_LEVEL_UNDEF;
uint16_t prev_data_level = T_LEVEL_UNDEF;
int wait_for_trigger = false;
int old_SI4432_step_delay = SI4432_step_delay;
if (i == 0 && setting.frequency_step == 0 && setting.trigger != T_AUTO) { // if in zero span mode and wait for trigger to happen and NOT in trigger mode
@ -1545,20 +1547,19 @@ float perform(bool break_on_operation, int i, uint32_t f, int tracking) // M
if (wait_for_trigger) { // wait for trigger to happen
if ((operation_requested || shell_function) && break_on_operation) // allow aborting a wait for trigger
break; // abort
// Trigger on rise edge of data
last_data_level = data_level;
// trigger level not yet reached from top
data_level = subRSSI < setting.trigger_level ? T_LEVEL_BOTTOM : T_LEVEL_TOP;
prev_data_level = data_level;
// To reduce float comparisons, remember if above or below trigger
data_level = subRSSI < setting.trigger_level ? T_LEVEL_BELOW : T_LEVEL_ABOVE;
// wait trigger from bottom to top (
if (!(last_data_level == T_LEVEL_BOTTOM &&
data_level == T_LEVEL_TOP)) // trigger level change
// wait for rising edge
if (!(prev_data_level == T_LEVEL_BELOW &&
data_level == T_LEVEL_ABOVE)) // trigger level change
goto wait; // get next rssi
#ifdef __FAST_SWEEP__
if (i == 0 && setting.frequency_step == 0 && setting.spur == 0 && old_SI4432_step_delay == 0 && setting.repeat == 1 && setting.sweep_time_us < ONE_SECOND_TIME) {
#ifndef __DEBUG_AGC__
SI4432_Fill(MODE_SELECT(setting.mode), 1); // fast mode possible to pre-fill RSSI buffer
#endif
}
#endif
if (setting.trigger == T_SINGLE)
@ -1649,7 +1650,7 @@ static bool sweep(bool break_on_operation)
again: // Waiting for a trigger jumps back to here
setting.measure_sweep_time_us = 0; // start measure sweep time
start_of_sweep_timestamp = chVTGetSystemTimeX();
// start_of_sweep_timestamp = chVTGetSystemTimeX(); // Will be set in perform
sweep_again: // stay in sweep loop when output mode and modulation on.
@ -1660,7 +1661,7 @@ sweep_again: // stay in sweep loop when output mo
RSSI = perform(break_on_operation, i, frequencies[i], setting.tracking); // Measure RSSI for one of the frequencies
// Delay between points if needed, (all delays can apply in SI4432 fill)
if (setting.measure_sweep_time_us == 0){
if (setting.measure_sweep_time_us == 0){ // If not already buffer
if (setting.additional_step_delay_us && (MODE_INPUT(setting.mode) || setting.modulation == MO_NONE)) { // No delay when modulation is active
if (setting.additional_step_delay_us < 30*ONE_MS_TIME) // Maximum delay time using my_microsecond_delay
my_microsecond_delay(setting.additional_step_delay_us);
@ -1672,7 +1673,7 @@ sweep_again: // stay in sweep loop when output mo
// if break back to top level to handle ui operation
if ((operation_requested || shell_function) && break_on_operation) { // break loop if needed
if (setting.actual_sweep_time_us > ONE_SECOND_TIME && MODE_INPUT(setting.mode)) {
ili9341_fill(OFFSETX, HEIGHT_NOSCROLL+1, WIDTH, 1, 0);
ili9341_fill(OFFSETX, HEIGHT_NOSCROLL+1, WIDTH, 1, 0); // Erase progress bar
}
return false;
}

Loading…
Cancel
Save

Powered by TurnKey Linux.