From 7f5948c4b848bc816453492fb07e08051fdffe39 Mon Sep 17 00:00:00 2001 From: TT Date: Sun, 1 Mar 2020 08:18:12 +0900 Subject: [PATCH 1/2] chore: add scope name onto struct and enum --- nanovna.h | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/nanovna.h b/nanovna.h index f0a903d..e491578 100644 --- a/nanovna.h +++ b/nanovna.h @@ -71,7 +71,7 @@ extern float measured[2][POINTS_COUNT][2]; void cal_collect(int type); void cal_done(void); -enum { +enum stimulus { ST_START, ST_STOP, ST_CENTER, ST_SPAN, ST_CW }; @@ -90,7 +90,7 @@ extern int8_t sweep_enabled; extern void ui_init(void); extern void ui_process(void); -enum { OP_NONE = 0, OP_LEVER, OP_TOUCH, OP_FREQCHANGE }; +enum opreq { OP_NONE = 0, OP_LEVER, OP_TOUCH, OP_FREQCHANGE }; extern uint8_t operation_requested; /* @@ -187,7 +187,7 @@ extern const uint16_t numfont16x22[]; #define TRACES_MAX 4 -enum { +enum trace_type { TRC_LOGMAG, TRC_PHASE, TRC_DELAY, TRC_SMITH, TRC_POLAR, TRC_LINEAR, TRC_SWR, TRC_REAL, TRC_IMAG, TRC_R, TRC_X, TRC_OFF }; // Mask for define rectangular plot @@ -203,7 +203,7 @@ enum { // Electrical Delay // Phase -typedef struct { +typedef struct trace { uint8_t enabled; uint8_t type; uint8_t channel; @@ -212,7 +212,7 @@ typedef struct { float refpos; } trace_t; -typedef struct { +typedef struct config { int32_t magic; uint16_t dac_value; uint16_t grid_color; @@ -248,7 +248,7 @@ float groupdelay_from_array(int i, float array[POINTS_COUNT][2]); #define MARKERS_MAX 4 -typedef struct { +typedef struct marker { int8_t enabled; int16_t index; uint32_t frequency; @@ -342,7 +342,7 @@ void show_logo(void); */ #define SAVEAREA_MAX 5 -typedef struct { +typedef struct properties { uint32_t magic; uint32_t _frequency0; uint32_t _frequency1; @@ -409,16 +409,16 @@ void clear_all_config_prop_data(void); */ // lever_mode -enum { +enum lever_mode { LM_MARKER, LM_SEARCH, LM_CENTER, LM_SPAN }; // marker smith value format -enum { +enum marker_smithvalue { MS_LIN, MS_LOG, MS_REIM, MS_RX, MS_RLC }; -typedef struct { +typedef struct uistat { int8_t digit; /* 0~5 */ int8_t digit_mode; int8_t current_trace; /* 0..3 */ From 18c5ca9157c2db7f568009890ff42a3d8360ef96 Mon Sep 17 00:00:00 2001 From: TT Date: Sun, 1 Mar 2020 08:50:46 +0900 Subject: [PATCH 2/2] feat: add lever operation of electrical delay --- main.c | 1 + nanovna.h | 2 +- plot.c | 4 ++++ ui.c | 31 +++++++++++++++++++++++++++---- 4 files changed, 33 insertions(+), 5 deletions(-) diff --git a/main.c b/main.c index c34d85c..e5ca07e 100644 --- a/main.c +++ b/main.c @@ -1667,6 +1667,7 @@ void set_electrical_delay(float picoseconds) electrical_delay = picoseconds; force_set_markmap(); } + redraw_request |= REDRAW_MARKER; } float get_electrical_delay(void) diff --git a/nanovna.h b/nanovna.h index e491578..1c481be 100644 --- a/nanovna.h +++ b/nanovna.h @@ -410,7 +410,7 @@ void clear_all_config_prop_data(void); // lever_mode enum lever_mode { - LM_MARKER, LM_SEARCH, LM_CENTER, LM_SPAN + LM_MARKER, LM_SEARCH, LM_CENTER, LM_SPAN, LM_EDELAY }; // marker smith value format diff --git a/plot.c b/plot.c index 3c48dd4..a8b5f62 100644 --- a/plot.c +++ b/plot.c @@ -1599,6 +1599,10 @@ cell_draw_marker_info(int m, int n, int w, int h) xpos -= m * CELLWIDTH -CELLOFFSETX; ypos -= n * CELLHEIGHT; + if (uistat.lever_mode == LM_EDELAY) + cell_drawstring(w, h, S_SARROW, xpos, ypos); + xpos += 5; + float light_speed_ps = 299792458e-12; //(m/ps) chsnprintf(buf, sizeof buf, "Edelay %Fs %Fm", electrical_delay * 1e-12, electrical_delay * light_speed_ps * velocity_factor); diff --git a/ui.c b/ui.c index bd00964..ec302c7 100644 --- a/ui.c +++ b/ui.c @@ -1756,6 +1756,23 @@ lever_move(int status, int mode) } } +#define STEPRATIO 0.2 + +static void +lever_edelay(int status) +{ + float value = get_electrical_delay(); + float ratio = STEPRATIO; + if (value < 0) + ratio = -ratio; + if (status & EVT_UP) { + value = (1 - ratio) * value; + } else if (status & EVT_DOWN) { + value = (1 + ratio) * value; + } + set_electrical_delay(value); +} + static void ui_process_normal(void) { @@ -1774,7 +1791,10 @@ ui_process_normal(void) if (FREQ_IS_STARTSTOP()) lever_move(status, ST_STOP); else - lever_zoom_span(status); + lever_zoom_span(status); + break; + case LM_EDELAY: + lever_edelay(status); break; } } @@ -2148,15 +2168,18 @@ touch_lever_mode_select(void) touch_position(&touch_x, &touch_y); if (touch_y > HEIGHT) { if (touch_x < 160) { - select_lever_mode(LM_CENTER); + select_lever_mode(LM_CENTER); } else { - select_lever_mode(LM_SPAN); + select_lever_mode(LM_SPAN); } return TRUE; } if (touch_y < 15) { - select_lever_mode(LM_MARKER); + if (touch_x < 160 && get_electrical_delay() != 0.0) { + select_lever_mode(LM_EDELAY); + } else + select_lever_mode(LM_MARKER); return TRUE; }