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();
set_scale(setting.scale);
set_reflevel(setting.reflevel);
set_waterfall();
return 0;
}
#if 0

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

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

@ -3741,7 +3741,9 @@ static bool sweep(bool break_on_operation)
float vbw_rssi;
#endif
#endif
#ifdef __MARKER_CACHE__
clear_marker_cache();
#endif
again: // Waiting for a trigger jumps back to here
setting.measure_sweep_time_us = 0; // start measure sweep time
// 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)
// ili9341_fill(LCD_WIDTH-MENU_BUTTON_WIDTH, area_height, MENU_BUTTON_WIDTH, menu_button_height*MENU_BUTTON_MAX - area_height);
if (setting.waterfall)
toggle_waterfall();
set_waterfall();
redraw_request|=REDRAW_AREA | REDRAW_FREQUENCY | REDRAW_CAL_STATUS | REDRAW_BATTERY;
}

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

Loading…
Cancel
Save

Powered by TurnKey Linux.