Restore waterfall and optional marker value cache

multi_trace
erikkaashoek 5 years ago
parent 5f71fc0bf4
commit 74f1a839e2

@ -226,6 +226,7 @@ caldata_recall(uint16_t id)
update_frequencies(); update_frequencies();
set_scale(setting.scale); set_scale(setting.scale);
set_reflevel(setting.reflevel); set_reflevel(setting.reflevel);
set_waterfall();
return 0; return 0;
} }
#if 0 #if 0

@ -89,6 +89,8 @@
#define DB_PER_DEGREE_ABOVE 0.069 #define DB_PER_DEGREE_ABOVE 0.069
#define CENTER_TEMPERATURE 34.0 #define CENTER_TEMPERATURE 34.0
#define __WAIT_CTS_WHILE_SLEEPING__ #define __WAIT_CTS_WHILE_SLEEPING__
#define __MARKER_CACHE__
//#define __FFT_VBW__ //#define __FFT_VBW__
//#define __FFT_DECONV__ //#define __FFT_DECONV__
#else #else
@ -331,7 +333,7 @@ void set_storage(void);
void set_clear_storage(void); void set_clear_storage(void);
void set_subtract_storage(void); void set_subtract_storage(void);
void toggle_normalize(void); void toggle_normalize(void);
void toggle_waterfall(void); void set_waterfall(void);
void disable_waterfall(void); void disable_waterfall(void);
void set_mode(int); void set_mode(int);
int GetMode(void); int GetMode(void);

@ -145,7 +145,7 @@ void update_grid(void)
grid_width = (WIDTH) * (grid / 100) / (fspan / 1000); grid_width = (WIDTH) * (grid / 100) / (fspan / 1000);
if (setting.waterfall) if (setting.waterfall)
toggle_waterfall(); set_waterfall();
redraw_request |= REDRAW_FREQUENCY | REDRAW_AREA; redraw_request |= REDRAW_FREQUENCY | REDRAW_AREA;
} }
@ -281,6 +281,7 @@ index_to_value(const int i)
} }
#endif #endif
#ifdef __MARKER_CACHE__
float marker_cache[MARKERS_MAX]; float marker_cache[MARKERS_MAX];
bool marker_cache_valid[MARKERS_MAX]; bool marker_cache_valid[MARKERS_MAX];
int32_t marker_cache_index[MARKERS_MAX]; int32_t marker_cache_index[MARKERS_MAX];
@ -292,12 +293,15 @@ clear_marker_cache(void)
marker_cache_valid[i] = false; marker_cache_valid[i] = false;
} }
} }
#endif
float float
marker_to_value(const int i) marker_to_value(const int i)
{ {
#ifdef __MARKER_CACHE__
if (marker_cache_valid[i] && marker_cache_index[i] == markers[i].index) if (marker_cache_valid[i] && marker_cache_index[i] == markers[i].index)
return marker_cache[i]; return marker_cache[i];
#endif
float *ref_marker_levels; float *ref_marker_levels;
if (markers[i].mtype & M_STORED ) if (markers[i].mtype & M_STORED )
ref_marker_levels = stored_t; ref_marker_levels = stored_t;
@ -323,9 +327,11 @@ marker_to_value(const int i)
#endif #endif
; ;
} }
#ifdef __MARKER_CACHE__
marker_cache_valid[i] = true; marker_cache_valid[i] = true;
marker_cache_index[i] = markers[i].index; marker_cache_index[i] = markers[i].index;
marker_cache[i] = v; marker_cache[i] = v;
#endif
return(v); return(v);
} }
@ -939,6 +945,9 @@ markmap_marker(int marker)
return; return;
if (IS_TRACE_DISABLE(TRACE_ACTUAL)) if (IS_TRACE_DISABLE(TRACE_ACTUAL))
return; return;
#ifdef __MARKER_CACHE__
marker_cache_valid[marker] = false; // force recalculation
#endif
int idx = markers[marker].index; int idx = markers[marker].index;
int x = trace_index_x[idx] - X_MARKER_OFFSET; int x = trace_index_x[idx] - X_MARKER_OFFSET;
int y = trace_index_y[TRACE_ACTUAL][idx] - Y_MARKER_OFFSET; int y = trace_index_y[TRACE_ACTUAL][idx] - Y_MARKER_OFFSET;
@ -1981,7 +1990,7 @@ static void update_waterfall(void){
//int w_max = -130; //int w_max = -130;
//int w_min = 0; //int w_min = 0;
void void
toggle_waterfall(void) set_waterfall(void)
{ {
if (setting.waterfall == W_SMALL) graph_bottom = SMALL_WATERFALL; if (setting.waterfall == W_SMALL) graph_bottom = SMALL_WATERFALL;
else if (setting.waterfall == W_BIG) graph_bottom = BIG_WATERFALL; else if (setting.waterfall == W_BIG) graph_bottom = BIG_WATERFALL;
@ -1999,7 +2008,7 @@ void
disable_waterfall(void) disable_waterfall(void)
{ {
setting.waterfall = W_OFF; setting.waterfall = W_OFF;
toggle_waterfall(); set_waterfall();
} }
void void

@ -3741,7 +3741,9 @@ static bool sweep(bool break_on_operation)
float vbw_rssi; float vbw_rssi;
#endif #endif
#endif #endif
#ifdef __MARKER_CACHE__
clear_marker_cache(); clear_marker_cache();
#endif
again: // Waiting for a trigger jumps back to here again: // Waiting for a trigger jumps back to here
setting.measure_sweep_time_us = 0; // start measure sweep time setting.measure_sweep_time_us = 0; // start measure sweep time
// start_of_sweep_timestamp = chVTGetSystemTimeX(); // Will be set in perform // start_of_sweep_timestamp = chVTGetSystemTimeX(); // Will be set in perform

@ -1559,7 +1559,7 @@ leave_ui_mode()
// if (menu_button_height*MENU_BUTTON_MAX - area_height > 0) // if (menu_button_height*MENU_BUTTON_MAX - area_height > 0)
// ili9341_fill(LCD_WIDTH-MENU_BUTTON_WIDTH, area_height, MENU_BUTTON_WIDTH, menu_button_height*MENU_BUTTON_MAX - area_height); // ili9341_fill(LCD_WIDTH-MENU_BUTTON_WIDTH, area_height, MENU_BUTTON_WIDTH, menu_button_height*MENU_BUTTON_MAX - area_height);
if (setting.waterfall) if (setting.waterfall)
toggle_waterfall(); set_waterfall();
redraw_request|=REDRAW_AREA | REDRAW_FREQUENCY | REDRAW_CAL_STATUS | REDRAW_BATTERY; redraw_request|=REDRAW_AREA | REDRAW_FREQUENCY | REDRAW_CAL_STATUS | REDRAW_BATTERY;
} }

@ -1481,7 +1481,7 @@ static UI_FUNCTION_ADV_CALLBACK(menu_waterfall_acb){
return; return;
} }
setting.waterfall++; if (setting.waterfall>W_BIG)setting.waterfall = W_OFF; setting.waterfall++; if (setting.waterfall>W_BIG)setting.waterfall = W_OFF;
toggle_waterfall(); set_waterfall();
ui_mode_normal(); ui_mode_normal();
} }

Loading…
Cancel
Save

Powered by TurnKey Linux.