42#include "ui_value_gate.h"
56#define RCARD_X (PAD + LCARD_W + 8)
57#define RCARD_W (W - RCARD_X - PAD)
67#define SV_STRIP_X UI_WB_STRIP_X
68#define SV_STRIP_Y (UI_WB_STRIP_Y + 2)
69#define SV_STRIP_H (UI_WB_STRIP_H + 16)
70#define SV_TAB_W (UI_WB_TAB_W + 38)
71#define SV_TAB_GAP UI_WB_TAB_GAP
72#define SV_PAGE_Y (UI_WB_PAGE_Y + 18)
74#define CARD_Y SV_PAGE_Y
75#define CARD_H (H - CARD_Y - PAD)
82#define RCARD_H (H - 2 * PAD)
87#define STOP_FLOOR (UI_ALERT_Y - UI_BAND_H - 4)
98#define SV_FONT_LABEL (&gfx_font_10x20)
99#define SV_FONT_BODY UI_FONT_BODY
100#define SV_FONT_HEAD (&gfx_font_20x36)
101#define SV_FONT_NUM (&gfx_font_num_32x44)
110#define RC_X (RCARD_X + 12)
111#define RC_W (RCARD_W - 24)
112#define TAG_Y (RCARD_Y + 12)
115#define PWR_TXT_Y (TAG_Y + TAG_H + 8)
121#define PWR_LAB_W_INA 134
122#define PWR_Y (PWR_TXT_Y + 24)
131#define SUP_Y (PWR_Y + PWR_H + 8)
132#define SUP_H UI_TAP_MIN
133#define SUP_VAL_X (RC_X + 48)
137#define SUP_OUT_X (SUP_VAL_X + 2 * (SUP_VAL_W + SUP_GAP))
138#define SPEED_Y (SUP_Y + SUP_H + 10)
139#define SLIDER_Y (SPEED_Y + 24)
146#define TARGET_Y (SLIDER_Y + SLIDER_H + UI_SLIDER_OVERHANG + 7)
147#define TARGET_H UI_TAP_MIN
148#define BTN_Y (TARGET_Y + TARGET_H + 10)
149#define BTN_H UI_TAP_MIN
151#define ARM_Y (BTN_Y + BTN_H + 10)
154 "SERVO's strip ends left of the output card");
156 "SERVO's strip ends above its page");
158 "DISARM ends above the alert band");
160 "OUTPUT OFF ends above the alert band");
162 "ARM ends inside the output card");
169#define READ_W ((LCARD_W - 24) / 3)
171#define READ_X(k) (PAD + 12 + (k) * READ_W)
173#define READ_NUM_Y (H - PAD - 12 - READ_NUM_H)
174#define READ_LBL_Y (READ_NUM_Y - 26)
175#define SEG_X (PAD + 16)
176#define SEG_Y (CARD_Y + 14)
177#define ARM_NOTE_Y (CARD_Y + 58)
181#define STD_SERVO_V_MAX 6.0f
183 "the programmer's standard-servo ceiling is STD_SERVO_V_MAX");
194#define OV_H (H - 2 * PAD)
203#define OV_TAB_Y (CARD_Y + 8)
205#define OV_TAB_W (OV_W - 20)
206#define OV_ROW0 (CARD_Y + 52)
208#define OV_ROW_H UI_TAP_MIN
209#define OV_COL_W ((OV_W - 30) / 2)
212#define OV_NOTE_Y (OV_ROW0 + 4 * OV_PITCH + OV_ROW_H + 2)
214#define RL_ROW0 (CARD_Y + 56)
217#define RL_COL_W ((OV_W - 40) / 3)
221#define RL_NOTE_Y (RL_ROW0 + RL_ROWS * RL_PITCH + 2)
224#define OV_SAVE_Y (STOP_FLOOR - 20)
226 "the OUTPUT page's five note lines end above the save line");
228 "a run's note ends above the alert band");
238#define PWM_MIN_PAUSE_US 1000u
239#define HELI_MIN_PAUSE_US 500u
241#define SAFE_RATE_HZ 60u
246 uint16_t min_us, centre_us, max_us;
247 const uint16_t *rates;
260enum { PG_OUTPUT = 0, PG_SWEEP, PG_DUT, PG_COUNT,
261 PG_AUTO = PG_COUNT, PG_LIMRUN };
264enum { RL_NONE = 0, RL_AUTO, RL_LIMIT };
267enum { R_TYPE = 0, R_RATE, R_MIN, R_CENTRE, R_MAX, R_TRIM, R_TRAVEL,
268 R_REVERSE, R_SETTING, R_TEXT, R_HV, R_ENC_CENTRE, R_LIM_MODE,
281enum { OP_NONE = 0, OP_TAB, OP_ROW, OP_TRIM_DN, OP_TRIM_UP, OP_KEYPAD,
282 OP_TEXT, OP_CHOICE, OP_CHOICE_CANCEL, OP_WARN_APPLY, OP_WARN_CANCEL,
283 OP_SUP_V, OP_SUP_I, OP_ASK_APPLY, OP_ASK_CANCEL, OP_TEST_START,
284 OP_LIM_START, OP_RUN_SET, OP_RUN_CLOSE };
287enum { CH_NONE = 0, CH_TYPE, CH_RATE, CH_ENUM };
288enum { KT_NONE = 0, KT_MIN, KT_CENTRE, KT_MAX, KT_TRAVEL, KT_RATE,
289 KT_SETTING, KT_SUP_V, KT_SUP_I, KT_TRIM };
294enum { ASK_SET = 0, ASK_ON, ASK_TEST };
301 uint16_t min_us, centre_us, max_us;
336#define SV_DRAG_TAU_MS 20.0f
340#define SV_DRAG_SNAP_DEG 0.01f
363 uint16_t min_us, centre_us, max_us;
396 bool knob_had_driving;
429 uint32_t drawn_arm[2];
431 gfx_rect_t arm_btn, centre_btn, sweep_btn, release_btn;
435 uint32_t drawn_kst[2], drawn_kst_hold[2];
444 uint32_t drawn_power[2];
468 uint32_t drawn_cur[2];
484 uint32_t drawn_sup[2];
501 uint32_t drawn_ask[2];
514 uint32_t drawn_strip[2];
539 char labels[CHOICE_MAX][32];
540 int values[CHOICE_MAX];
552 uint32_t drawn_warn[2];
553 uint8_t drawn_save[2];
581 uint32_t pause_tap_ms;
582 bool resume_from_set;
583 uint16_t resume_pause_seq;
584 float resume_from_cmd;
593 float pause_from_cmd;
602 struct { uint32_t t;
float cmd; } trail[64];
603 uint8_t trail_head, trail_n;
611 uint32_t await_phase_ms;
633 struct { uint16_t seq; int16_t speed_pct; } sent_speed[8];
643 bool sweeping, paused, awaiting, sweep_ended, driving;
644 uint32_t await_phase_ms;
648 uint16_t pause_seq, resume_pause_seq, lineage;
649 uint32_t pause_tap_ms;
650 float pause_from_cmd, resume_from_cmd;
652 bool resume_from_set;
656 uint32_t toggle_post;
661 uint32_t profile_rev;
662 uint32_t arm_profile_rev;
674 uint32_t drawn_test[2];
737 uint8_t drive_target;
742 uint32_t drawn_ctrl[2];
785 int cells, gfx_color_t ink,
const gfx_font_t *f);
790float us_to_deg_f(
float us);
810static inline void close_panels(
void)
812 ui_keypad_close(&
s.kp);
814 s.kp_target = KT_NONE;
826static inline void close_alone(
void)
901enum { RS_OFF_POSTED = 0, RS_OFF_SENT, RS_SAMPLE, RS_OFF_SEEN };
904int test_blocked(
void);
905float test_top_v(
void);
906void test_begin(
void);
908void ask_hv_test(
void);
918void test_restore_service(
void);
919uint32_t test_signature(
void);
925static inline void test_ended(
void)
931 s.test_restore =
true;
932 s.restore_stage = RS_OFF_POSTED;
943const char *lim_prog_why(
void);
944const char *lim_blocked(
void);
950void lim_leave_follow(
void);
953uint32_t lim_signature(
void);
963static inline const servo_type_t *type(
void) {
return &k_types[
s.type]; }
974static inline void cmd_range(uint16_t *lo, uint16_t *hi)
976 const unsigned below = (unsigned)
s.centre_us - (
unsigned)
s.min_us;
977 const unsigned above = (unsigned)
s.max_us - (
unsigned)
s.centre_us;
978 const unsigned half = (below > above) ? below : above;
979 *lo = (uint16_t)((
unsigned)
s.centre_us - half);
980 *hi = (uint16_t)((
unsigned)
s.centre_us + half);
989static inline uint16_t cmd_top(
void)
996static inline float us_to_deg(uint16_t us)
998 return us_to_deg_f((
float)us);
1001static inline float clamp_travel(
float deg)
1003 if (deg < -
s.travel_deg) {
return -
s.travel_deg; }
1004 if (deg >
s.travel_deg) {
return s.travel_deg; }
1015static inline bool value_live(
void)
1017 return ui_value_live(&
s.gate);
1022static inline uint16_t max_rate_for(
int t, uint16_t max_us)
1025 const unsigned pause = ty->heli ? HELI_MIN_PAUSE_US : PWM_MIN_PAUSE_US;
1026 unsigned hz = 1000000u / ((unsigned)max_us + pause);
1027 if (ty->max_hz != 0u && hz > ty->max_hz) {
1030 return (uint16_t)hz;
1034static inline bool dangerous(
int t, uint16_t hz)
1036 return k_types[t].heli || hz > SAFE_RATE_HZ;
1039static inline bool in_force_dangerous(
void)
1041 return dangerous(
s.type,
s.frame_hz);
1047static inline bool enc_shown(
void)
1049 return s.enc_valid &&
s.link_up && settings_get_bool(SET_ENC_EN);
1070#define WARN_BTN_Y (STOP_FLOOR - 56)
1086static inline uint32_t test_now(
void)
1088 return s.have_now ?
s.now_ms :
s.clock_ms;
1115#define BOX_CELLS ((BOX_W - 20) / SV_CELL)
1117#define BOX_BTN_DY 112
1128 "the run's box ends above LIVE's readings");
1140static inline bool test_needs_hv(
void)
1147static inline bool lim_reads(
void)
1149 return s.drive_target != 0u
1155static inline bool row_hidden(
const ov_row_t *r)
1157 return r->kind == R_LIM_PULSES && !lim_reads();
1161static inline bool lim_programs(
void)
1163 return s.lim_prog && lim_prog_why() == NULL;
1169static inline bool hv_set_point(
void)
1180static inline bool ask_stands(
void)
1184 &&
s.stops ==
s.ask.stops;
1187static inline void ov_take(
const touch_event_t *evt,
int code,
int which)
1191 s.ov_pressed = code;
1196static inline void ov_let_go(
void)
1200 s.ov_pressed = OP_NONE;
1207static inline uint8_t save_state(
void)
1222static inline float enc_deg_now(
void)
1225 s.enc_raw, (uint16_t)settings_get_int(SET_ENC_CENTRE));
1226 return s.reverse ? -d : d;
1231static inline bool bench_arming(
void)
1233 return s.gate.armed ||
s.gate.arm_asked ||
s.arm_down ||
s.bench_armed;
#define PAD
Definition analyser_screen.c:26
#define RCARD_X
Definition analyser_screen.c:51
#define NOTE_PITCH
Definition battery_screen.c:76
#define s
Short name for esc_stick_s inside the five stick-class files.
Definition esc_stick_panel_int.h:295
gfx: an RGB565 (16-bit red, green, blue) rasteriser with no dependencies.
The KST and Chaservo programmer's overlay on SERVO: its interface.
#define KST_PANEL_STD_MV
The highest supply voltage a standard servo is rated for, mV: a programming voltage above it needs HV...
Definition kst_panel.h:48
#define k
Short name for kst_panel_k inside the overlay's seven files.
Definition kst_panel_int.h:238
#define STOP_FLOOR
The lowest row a control that stops what the bench drives, or a line of text, may reach: 4px above th...
Definition motor_screen_int.h:75
#define BOX_W
Definition motor_settings_page.c:74
servo_rate_state_t
What became of a frame rate the panel wrote to the SERVO page.
Definition servo_cmd.h:134
servo_cmd_kind_t
The kind of a command of the SERVO screen.
Definition servo_cmd.h:23
void draw_lim_lines(gfx_canvas_t *c)
The LIMIT RUN card's lines: over START LIMIT RUN the mode, and under it what the run drives and reads...
Definition servo_limit_panel.c:685
void draw_lim_start(gfx_canvas_t *c)
START LIMIT RUN, on the LIMIT RUN card under the AUTOMATIC TEST one: green, fading to the danger red ...
Definition servo_limit_panel.c:623
void draw_lim_box(gfx_canvas_t *c)
The limit run on the left card, in the automatic test's place: while it runs, the values written,...
Definition servo_limit_panel.c:504
void draw_lim_mode_note(gfx_canvas_t *c, int x, int y)
Why SEARCH+PROG is not offered, or what the mode does: the LIMIT RUN settings' note,...
Definition servo_limit_panel.c:646
The limit run: the limit search (servo_limit.h) run on the SERVO screen against the INA3221's windows...
void ask_profile(int t, uint16_t hz)
A profile asked for: one that can destroy a servo not made for it opens the warning,...
Definition servo_screen.c:474
void apply_profile(int t, uint16_t hz)
A profile goes into force: a type with its own pulse widths when it is a different type,...
Definition servo_screen.c:453
The servo bench: the outputs the binding marks as surfaces, commanded together by dragging one horn.
#define SERVO_SCREEN_TARGET_UNKNOWN
Definition servo_screen.h:364
#define SERVO_SCREEN_TARGET_NO_LINK
Definition servo_screen.h:367
void servo_invalidate(void)
Definition servo_screen.c:496
int wrap_text(gfx_canvas_t *c, int x, int y, int pitch, const char *text, int cells, gfx_color_t ink, const gfx_font_t *f)
text in lines of at most cells cells of face f, from (x, y) down by pitch px, each broken at the last...
Definition servo_screen_draw.c:289
#define READ_LBL_Y
Definition servo_screen_int.h:174
gfx_rect_t choice_rect(int i)
The list's choice i: two columns of CHOICE_MAX / 2.
Definition servo_settings_panel.c:121
#define SV_STRIP_Y
Definition servo_screen_int.h:68
#define RCARD_H
Definition servo_screen_int.h:82
#define SV_STRIP_X
SERVO's task strip at the 1024 x 600 sizes: four tabs of 150 x 40px, 4px apart, from y 8,...
Definition servo_screen_int.h:67
#define OV_X
Definition servo_screen_int.h:191
sweep_cfg_t sweep_cfg_now(void)
The sweep the SWEEP page describes, under the profile in force: CURVE, SPEED and DWELL as they are,...
Definition servo_screen_sweep.c:42
bool target_locked(const ov_row_t *r)
Whether a row is a TARGET or PORT PWM setting under its lock.
Definition servo_settings_panel.c:316
void draw_ask_apply(gfx_canvas_t *c)
The HV warning's HOLD TO APPLY.
Definition servo_settings_draw.c:464
#define SUP_H
Definition servo_screen_int.h:132
void draw_save_line(gfx_canvas_t *c)
Whether the settings reached the card, along the bottom of a page.
Definition servo_settings_draw.c:36
static gfx_rect_t sup_val_rect(int k)
The voltage's value or the current limit's on the SET row.
Definition servo_screen_int.h:1062
void draw_overlay(gfx_canvas_t *c)
The panel open over the left column, if any: the keypad, the keyboard, the question or the HV warning...
Definition servo_settings_draw.c:575
#define WARN_BTN_Y
The bottom row of a warning or the question: its buttons' top, so they end with ARM above the alert b...
Definition servo_screen_int.h:1070
#define RL_NOTE_Y
A run's note under its rows: the automatic test's stall note, 4px under the last value.
Definition servo_screen_int.h:221
void stop_sweep(void)
The sweep ended, running or paused. A pause is ended by the command that follows; the button reads SW...
Definition servo_screen_sweep.c:85
#define SV_STRIP_H
Definition servo_screen_int.h:69
gfx_rect_t trim_rect(int i, bool up)
TRIM's two steps, inside its value, UI_TAP_MIN px wide each.
Definition servo_settings_panel.c:114
const ov_row_t k_rows[]
The rows of the pages, page by page, and their count.
Definition servo_settings_panel.c:46
static gfx_rect_t test_btn_rect(void)
The box's button.
Definition servo_screen_int.h:1131
void draw_test_start(gfx_canvas_t *c)
START TEST: green, fading to the danger red across its hold, as ARM; STOP TEST in red while a run is ...
Definition servo_test_panel.c:594
const int k_row_count
The rows k_rows holds.
Definition servo_settings_panel.c:85
#define SV_TAB_GAP
Definition servo_screen_int.h:71
void draw_test_lines(gfx_canvas_t *c)
The AUTOMATIC TEST card's lines: over START TEST the steps and the length of each,...
Definition servo_test_panel.c:663
void draw_test_box(gfx_canvas_t *c)
The run on LIVE's card: the step and phase while it runs, with STOP TEST; PASS, FAIL or ABORTED and w...
Definition servo_test_panel.c:503
#define ARM_NOTE_Y
Definition servo_screen_int.h:177
#define RCARD_Y
The output card's top: the body's margin. The strip spans the left card only, so the output card,...
Definition servo_screen_int.h:81
gfx_rect_t warn_cancel_rect(void)
A warning's or the question's CANCEL, bottom right.
Definition servo_settings_panel.c:137
#define OV_W
Definition servo_screen_int.h:193
void value_edge(ui_value_edge_t edge, servo_test_abort_t why)
What an edge of the value's state does, in one place.
Definition servo_screen_link.c:45
#define SUP_Y
The supply's set points, each a value the keypad opens on, and OUTPUT ON and OFF: the same set points...
Definition servo_screen_int.h:131
#define SV_TAB_W
Definition servo_screen_int.h:70
static gfx_rect_t test_box_rect(void)
The run's box.
Definition servo_screen_int.h:1120
servo_test_reading_t test_reading_of(const supply_state_t *st)
Gives the servo test the supply's reading.
Definition servo_screen_link.c:409
int decimals_of(setting_id_t id)
The decimals a setting's value is typed and drawn with.
Definition servo_settings_panel.c:143
gfx_rect_t choice_cancel_rect(void)
The list's CANCEL, bottom right.
Definition servo_settings_panel.c:131
#define SV_PAGE_Y
Definition servo_screen_int.h:72
#define SUP_VAL_W
Definition servo_screen_int.h:134
#define STD_SERVO_V_MAX
The top of a standard servo's rating. A set point raised past it is applied only after the HV warning...
Definition servo_screen_int.h:181
void draw_test_stall(gfx_canvas_t *c, int x, int y)
A STALL AT the run's readings cannot pass, in the warning colour: the current limit first,...
Definition servo_test_panel.c:646
#define SUP_GAP
Definition servo_screen_int.h:135
gfx_rect_t value_rect(int i)
Where row i's value is drawn: right in its row on SETTINGS' pages, under its label on a run's.
Definition servo_settings_panel.c:104
void ov_down(const touch_event_t *evt)
A press on a page of rows or a panel: on whichever is up; on TRIM, beside its steps,...
Definition servo_settings_panel.c:527
#define SUP_VAL_X
Definition servo_screen_int.h:133
#define OV_SAVE_Y
The save line under SETTINGS' rows and notes, 20px tall, ending 4px above the alert band.
Definition servo_screen_int.h:224
gfx_rect_t row_rect(int i)
Row i's rectangle: on SETTINGS' pages its column, or both for a wide one, UI_TAP_MIN tall; on a run's...
Definition servo_settings_panel.c:89
void draw_warn_apply(gfx_canvas_t *c)
The profile warning's HOLD TO APPLY.
Definition servo_settings_draw.c:392
#define OV_Y
Definition servo_screen_int.h:192
#define OV_NOTE_Y
The OUTPUT page's notes, 2px under its fifth row.
Definition servo_screen_int.h:212
#define BOX_BTN_DY
Definition servo_screen_int.h:1117
#define OV_H
Definition servo_screen_int.h:194
static gfx_rect_t warn_apply_rect(void)
HOLD TO APPLY, or APPLY, bottom left of a warning or the question.
Definition servo_screen_int.h:1076
servo_source_id_t
The servo rail's meter.
Definition servo_source.h:70
servo_source_why_t
Why the INA3221 is not the meter: the first condition that fails.
Definition servo_source.h:77
@ SERVO_SOURCE_WHY_NO_LINK
Definition servo_source.h:79
@ SERVO_SOURCE_WHY_OFF
Definition servo_source.h:80
@ SERVO_SOURCE_WHY_RESET
Definition servo_source.h:86
@ SERVO_SOURCE_WHY_NOT_HELD
Definition servo_source.h:82
@ SERVO_SOURCE_WHY_SILENT
Definition servo_source.h:83
@ SERVO_SOURCE_WHY_OLD
Definition servo_source.h:81
@ SERVO_SOURCE_WHY_NO_WINDOW
Definition servo_source.h:85
A servo swept through a curve: square, sine or triangle about its centre.
servo_test_abort_t
Definition servo_test.h:442
@ SERVO_TEST_AB_INA_RESET
Definition servo_test.h:462
@ SERVO_TEST_AB_INA_METER
Definition servo_test.h:467
@ SERVO_TEST_AB_INA_NO_WINDOW
Definition servo_test.h:464
@ SERVO_TEST_AB_INA_SILENT
Definition servo_test.h:463
@ SERVO_TEST_AB_INA_SETUP
Definition servo_test.h:465
bool servo_test_running(const servo_test_t *t)
Tell whether a run is under way.
Definition servo_test.c:216
float servo_test_enc_deg(uint16_t raw, uint16_t centre)
raw from centre on the circle, degrees, -180 to just under 180: 360 / 4096 a count....
Definition servo_test.c:52
servo_test_out_t
Definition servo_test_io.h:136
The SERVO workbench's internals, which servo_screen_int.h takes in at its end: which task and which p...
Device settings: a typed schema, a value per entry, and a persistence seam.
bool settings_save_failed(void)
Definition settings.c:1123
setting_id_t
Every setting's id, in schema order.
Definition settings.h:67
bool settings_dirty(void)
Definition settings.c:1039
bool settings_save_asked(void)
Definition settings.c:1142
Definition servo_screen_int.h:271
Definition prog_registry.h:364
One 50ms window of INA3221 CH1, as SERVO_WIN carries it.
Definition sense_link.h:328
A command of the SERVO screen, as the servo link takes it.
Definition servo_cmd.h:58
Definition servo_limrun.h:364
Definition servo_screen_int.h:300
Definition servo_screen_int.h:359
bool test_report
Definition servo_screen_int.h:682
int speed_pct
Definition servo_screen_int.h:368
int arm_id
Definition servo_screen_int.h:427
float drawn_cmd[2]
Definition servo_screen_int.h:754
int test_blocked_seen
Definition servo_screen_int.h:684
int16_t trim_us
Definition servo_screen_int.h:366
bool lim_leaving
Definition servo_screen_int.h:719
float shown_deg
Definition servo_screen_int.h:371
bool test_hv
Definition servo_screen_int.h:670
bool lim_pulses
Definition servo_screen_int.h:711
bool out_press_on
Definition servo_screen_int.h:480
int lim_file
Definition servo_screen_int.h:721
bool enc_no_magnet
Definition servo_screen_int.h:377
bool lim_report
Definition servo_screen_int.h:722
uint32_t drawn_dial[2]
Definition servo_screen_int.h:752
bool test_online_seen
Definition servo_screen_int.h:685
bool driving
Definition servo_screen_int.h:385
bool arm_down
Definition servo_screen_int.h:426
int test_note
Definition servo_screen_int.h:679
uint32_t restore_ms
Definition servo_screen_int.h:697
float pulse
Definition servo_screen_int.h:386
int shown_q_deg
Definition servo_screen_int.h:384
bool test_box
Definition servo_screen_int.h:686
bool test_off
Definition servo_screen_int.h:683
bool lim_seen
Definition servo_screen_int.h:715
bool enc_held
Definition servo_screen_int.h:678
uint32_t test_sig
Definition servo_screen_int.h:700
bool drawn_ghost[2]
Definition servo_screen_int.h:755
bool lim_off
Definition servo_screen_int.h:723
uint32_t now_ms
Definition servo_screen_int.h:675
float shown_cmd
Definition servo_screen_int.h:372
float travel_deg
Definition servo_screen_int.h:367
uint32_t lim_changes
Definition servo_screen_int.h:725
svs_drag_filter_t df
Definition servo_screen_int.h:756
bool out_on
Definition servo_screen_int.h:481
bool test_on_ina
Definition servo_screen_int.h:688
int shown_q_enc
Definition servo_screen_int.h:379
bool lim_prog
Definition servo_screen_int.h:710
bool test_seen
Definition servo_screen_int.h:687
float sup_i
Definition servo_screen_int.h:482
const char * lim_note
Definition servo_screen_int.h:724
int test_file
Definition servo_screen_int.h:681
float test_i0
Definition servo_screen_int.h:698
float drawn_deg[2]
Definition servo_screen_int.h:753
float test_i1
Definition servo_screen_int.h:699
uint8_t restore_stage
Definition servo_screen_int.h:696
bool lim_box
Definition servo_screen_int.h:714
uint32_t dial_rev
The dial's own count of changes: the horn's angle, the commanded angle and the MEASURED reading,...
Definition servo_screen_int.h:751
One reading of the supply, as SUPPLY has it (supply_state_t).
Definition servo_test_io.h:25
Definition servo_test.h:548
Definition servo_screen_int.h:244
Definition servo_screen_int.h:318
A supply's readings, set points, mode and trip state.
Definition supply.h:69
The drag's filtered target (svs_drag_tick()).
Definition servo_screen_int.h:350
float goal
Definition servo_screen_int.h:354
float out
Definition servo_screen_int.h:355
bool restating
Definition servo_screen_int.h:353
bool posting
Definition servo_screen_int.h:352
bool on
Definition servo_screen_int.h:351
Definition servo_sweep.h:55
Definition servo_screen_int.h:308
Definition servo_sweep.h:63
A DOWN, MOVE or UP of one contact.
Definition touch_types.h:69
touch_point_t point
Definition touch_types.h:71
uint8_t id
Definition touch_types.h:24
Definition ui_widgets.h:415
A numeric keypad: what it was opened with, what is typed, and the press it holds.
Definition ui_keypad.h:61
Definition ui_slider.h:42
A row of tabs: their labels, where they are, which is selected and the press under way.
Definition ui_tabs.h:27
A TARGET row: where it is and the press it holds.
Definition ui_target_row.h:47
A keyboard: what it was opened for, what is typed, and the press it holds.
Definition ui_textkey.h:114
Definition ui_value_gate.h:40
Definition ui_workbench.h:63
The SUPPLY screen: a programmable supply set, switched and watched.
uint32_t supply_screen_off_count(void)
Definition supply_screen.c:694
bool supply_screen_output_live(void)
Definition supply_screen.c:692
float supply_screen_set_v(void)
Definition supply_screen.c:489
float supply_screen_set_i(void)
The current limit's set point as the screen holds it, snapped to the caps.
Definition supply_screen.c:490
Plain data types shared by the touch controller driver, the coordinate mapper and the event tracker....
A numeric keypad over part of a screen, for a value a slider is too coarse to place.
#define UI_TAP_MIN
The smallest touch target for a control, in pixels: 48px, 7.2mm.
Definition ui_layout.h:71
A multi-series plot on one time base, with a scale per series.
A draggable value with presets: the throttle, and any other control that needs coarse reach and fine ...
The pane selector: one bench, several views of it.
The TARGET row of a workbench's output card: what the screen drives now, read as protocol pins ("SERV...
ui_text_id_t
The screens' strings, TX_<ID> for each UI_TEXT() of ui_text.def.
Definition ui_text.h:43
An on-screen keyboard for a short name: capitals, digits, space and the marks a name or a file needs,...
void ui_textkey_close(ui_textkey_t *k)
Close, dropping a press under way.
Definition ui_textkey.c:152
A workbench's task strip: one device, its tasks as tabs under the band.