Level meter added

Speed-test
erikkaashoek 4 years ago
parent b409a7b993
commit 2fb820207b

@ -899,7 +899,7 @@ void ili9341_drawstringV(const char *str, int x, int y)
ili9341_drawstring(str, ILI9341_HEIGHT-y, x);
ili9341_set_rotation(DISPLAY_ROTATION_0);
}
#ifndef wFONT_GET_DATA
#ifdef __LEVEL_METER__
int ili9341_drawchar_size(uint8_t ch, int x, int y, uint8_t size)
{
uint16_t *buf = spi_buffer;

@ -951,6 +951,7 @@ void load_LCD_properties(void)
setting.trace_scale = 10.0;
setting.trace_refpos = 0;
setting.waterfall = W_OFF;
setting.level_meter = false;
setting._traces = TRACE_ACTUAL_FLAG;
memcpy(setting._markers, def_markers, sizeof(def_markers));
#ifdef __LIMITS__

@ -54,6 +54,7 @@
#define __PE4302__
//#define __SIMULATION__
#define __SCROLL__ // Add waterfall option
#define __LEVEL_METER__
#define __ICONS__
#define __MEASURE__
#define __LINEARITY__ // Not available
@ -363,6 +364,10 @@ void set_subtract_storage(void);
void toggle_normalize(int);
void set_waterfall(void);
void disable_waterfall(void);
#ifdef __LEVEL_METER__
void set_level_meter(void);
void disable_level_meter(void);
#endif
void set_mode(int);
int GetMode(void);
void set_reflevel(float);
@ -1042,6 +1047,9 @@ typedef struct setting
uint8_t trigger_direction; // enum
uint8_t step_delay_mode; // enum
uint8_t waterfall; // enum
#ifdef __LEVEL_METER__
uint8_t level_meter; // enum
#endif
uint8_t average[TRACES_MAX]; // enum
uint8_t subtract[TRACES_MAX];// index
uint8_t measurement; // enum

@ -35,6 +35,10 @@ static void cell_grid_line_info(int x0, int y0);
static void cell_blit_bitmap(int x, int y, uint16_t w, uint16_t h, const uint8_t *bitmap);
static void draw_battery_status(void);
static void update_waterfall(void);
#ifdef __LEVEL_METER__
static void update_level_meter(void);
char level_text[20];
#endif
void cell_draw_test_info(int x0, int y0);
int cell_printf(int16_t x, int16_t y, const char *fmt, ...);
#ifndef wFONT_GET_DATA
@ -138,6 +142,10 @@ void update_grid(void)
if (setting.waterfall)
set_waterfall();
#ifdef __LEVEL_METER__
if (setting.level_meter)
set_level_meter();
#endif
redraw_request |= REDRAW_FREQUENCY | REDRAW_AREA;
}
@ -1237,6 +1245,9 @@ draw_all_cells(bool flush_markmap)
void
draw_all(bool flush)
{
#ifdef __LEVEL_METER__
level_text[0] = 0; // Clear level text
#endif
if (redraw_request & REDRAW_AREA) // this set all area for update
force_set_markmap();
else {
@ -1253,6 +1264,12 @@ draw_all(bool flush)
update_waterfall();
// STOP_PROFILE
#endif
#ifdef __LEVEL_METER__
if (setting.level_meter) {
update_level_meter();
}
#endif
}
if (redraw_request & REDRAW_CAL_STATUS)
draw_cal_status(); // calculates the actual sweep time, must be before draw_frequencies
@ -1263,6 +1280,7 @@ draw_all(bool flush)
redraw_request = 0;
}
//
// Call this function then need fast draw marker and marker info
// Used in ui.c for leveler move marker, drag marker and etc.
@ -1515,6 +1533,8 @@ static void trace_print_value_string( // Only used at one place
if (bold) format++; // Skip small prefix for bold output
#endif
cell_printf(xpos, ypos, format, buf2, v, unit_string[unit_index], (mtype & M_NOISE?"/Hz":""), (mtype & M_AVER?"/T":""));
if (level_text[0] == 0)
plot_printf(level_text, sizeof(level_text), &format[3], v, unit_string[unit_index], (mtype & M_NOISE?"/Hz":""), (mtype & M_AVER?"/T":""));
}
static void cell_draw_marker_info(int x0, int y0)
@ -2006,6 +2026,43 @@ disable_waterfall(void)
set_waterfall();
}
#ifdef __LEVEL_METER__
static void update_level_meter(void){
int m = 0;
while (m < MARKERS_MAX){
if (markers[m].enabled)
break;
m++;
}
if (m == MARKERS_MAX)
return;
ili9341_set_foreground(LCD_FG_COLOR);
ili9341_drawstring_size(level_text,OFFSETX, graph_bottom+2,6);
}
void
set_level_meter(void)
{
if (setting.level_meter) graph_bottom = SMALL_WATERFALL;
// else if (setting.level_meter == W_BIG) graph_bottom = BIG_WATERFALL;
else /*if (setting.level_meter == W_OFF)*/graph_bottom = NO_WATERFALL;
_grid_y = graph_bottom / NGRIDY;
area_height = AREA_HEIGHT_NORMAL;
if (setting.level_meter){
ili9341_set_background(LCD_BG_COLOR);
ili9341_fill(OFFSETX, graph_bottom, LCD_WIDTH - OFFSETX, CHART_BOTTOM - graph_bottom);
}
request_to_redraw_grid();
}
void
disable_level_meter(void)
{
setting.level_meter = false;
set_level_meter();
}
#endif
void
plot_init(void)
{

@ -1796,6 +1796,21 @@ static UI_FUNCTION_ADV_CALLBACK(menu_waterfall_acb){
ui_mode_normal();
}
#ifdef __LEVEL_METER__
static UI_FUNCTION_ADV_CALLBACK(menu_level_meter_acb){
(void)item;
(void)data;
if (b){
b->icon = setting.level_meter ? BUTTON_ICON_CHECK : BUTTON_ICON_NOCHECK;
return;
}
setting.level_meter = !setting.level_meter;
set_level_meter();
ui_mode_normal();
}
#endif
#ifdef __LIMITS__
uint8_t active_limit = 0;
static UI_FUNCTION_ADV_CALLBACK(menu_limit_select_acb)
@ -2943,6 +2958,9 @@ static const menuitem_t menu_traces[] =
static const menuitem_t menu_display[] = {
{ MT_ADV_CALLBACK,0, "PAUSE\nSWEEP", menu_pause_acb},
{ MT_ADV_CALLBACK,1, "WATER\nFALL", menu_waterfall_acb},
#ifdef __LEVEL_METER__
{ MT_ADV_CALLBACK,1, "LEVEL\nMETER", menu_level_meter_acb},
#endif
#ifdef __VBW__
{ MT_SUBMENU, 0, "VBW", menu_vbw},
#endif

Loading…
Cancel
Save

Powered by TurnKey Linux.