From 08f42350087473a6dc116932c4e6ac2f68539ea3 Mon Sep 17 00:00:00 2001 From: DiSlord Date: Sat, 4 Jul 2020 11:33:26 +0300 Subject: [PATCH] Not use for trigger level stored trace --- nanovna.h | 2 ++ plot.c | 24 +++++++++++++++++++++++- sa_core.c | 17 ++--------------- 3 files changed, 27 insertions(+), 16 deletions(-) diff --git a/nanovna.h b/nanovna.h index 6a874ef..9b7fc9e 100644 --- a/nanovna.h +++ b/nanovna.h @@ -489,6 +489,7 @@ int marker_search_right_min(int from); #define REDRAW_MARKER (1<<3) #define REDRAW_BATTERY (1<<4) #define REDRAW_AREA (1<<5) +#define REDRAW_TRIGGER (1<<6) extern volatile uint8_t redraw_request; /* @@ -519,6 +520,7 @@ extern volatile uint8_t redraw_request; #define DEFAULT_TRACE_1_COLOR RGB565(255, 0, 0) /* RGB565(255,255, 0) */ #define DEFAULT_TRACE_2_COLOR RGB565( 0,255, 0)/* RGB565( 0,255,255) */ #define DEFAULT_TRACE_3_COLOR RGB565(255,255, 0)/* RGB565( 0,255, 0) */ +#define DEFAULT_TRIGGER_COLOR RGB565( 0,190, 0)/* RGB565( 0,190, 0) */ //#define DEFAULT_TRACE_4_COLOR RGB565(255, 0,255) #define DEFAULT_NORMAL_BAT_COLOR RGB565( 31,227, 0) #define DEFAULT_LOW_BAT_COLOR RGB565(255, 0, 0) diff --git a/plot.c b/plot.c index 6f80907..427996f 100644 --- a/plot.c +++ b/plot.c @@ -1024,6 +1024,17 @@ markmap_upperarea(void) invalidate_rect(0, 0, AREA_WIDTH_NORMAL, 31); } +static uint16_t get_trigger_level(void){ + index_t idx = trace_into_index(TRACE_ACTUAL, 0, &setting.trigger_level); + return CELL_Y(idx); +} + +static inline void +markmap_trigger_area(void){ + uint16_t tp = get_trigger_level(); + markmap[current_mappage][tp/CELLWIDTH] = 0xFFFF; +} + // // in most cases _compute_outcode clip calculation not give render line speedup // @@ -1469,6 +1480,15 @@ draw_cell(int m, int n) #endif // PULSE; #endif +// Draw trigger line + if (setting.trigger != T_AUTO) { + int tp = get_trigger_level() - y0; + if (tp>=0 && tp < h) + for (x = 0; x < w; x++) + if (x + x0 >= CELLOFFSETX && x + x0 <= WIDTH + CELLOFFSETX) + cell_buffer[tp * CELLWIDTH + x] = DEFAULT_TRIGGER_COLOR; + } + // Draw traces (50-600 system ticks for all screen calls, depend from lines // count and size) #if 1 @@ -1603,7 +1623,9 @@ draw_all(bool flush) force_set_markmap(); if (redraw_request & REDRAW_MARKER) markmap_upperarea(); - if (redraw_request & (REDRAW_CELLS | REDRAW_MARKER | REDRAW_AREA)){ + if (redraw_request & REDRAW_TRIGGER) + markmap_trigger_area(); + if (redraw_request & (REDRAW_CELLS | REDRAW_MARKER | REDRAW_AREA | REDRAW_TRIGGER)){ draw_all_cells(flush); #ifdef __SCROLL__ // START_PROFILE diff --git a/sa_core.c b/sa_core.c index fd654d7..b2155c2 100644 --- a/sa_core.c +++ b/sa_core.c @@ -744,30 +744,17 @@ void set_offset(float offset) dirty = true; } -void show_stored_trace_at(float v) -{ - for (int j = 0; j < setting._sweep_points; j++) - stored_t[j] = v; - trace[TRACE_STORED].enabled = true; -} - void set_trigger_level(float trigger_level) { setting.trigger_level = trigger_level; - if (setting.trigger != T_AUTO) { - show_stored_trace_at(setting.trigger_level); - } + redraw_request |= REDRAW_TRIGGER; dirty = true; } void set_trigger(int trigger) { setting.trigger = trigger; - if (trigger == T_AUTO) { - trace[TRACE_STORED].enabled = false; - } else { - show_stored_trace_at(setting.trigger_level); - } + redraw_request |= REDRAW_TRIGGER; sweep_mode = SWEEP_ENABLE; dirty = true; }