50#define RIGHT_X (LEFT_X + LEFT_W + 8)
51#define RIGHT_W (W - PAD - RIGHT_X)
53#define RC_X (RIGHT_X + 12)
54#define RC_W (RIGHT_W - 24)
64#define MO_STRIP_X UI_WB_STRIP_X
65#define MO_STRIP_Y (UI_WB_STRIP_Y + 2)
66#define MO_STRIP_H (UI_WB_STRIP_H + 16)
67#define MO_TAB_W (UI_WB_TAB_W + 38)
68#define MO_TAB_GAP UI_WB_TAB_GAP
69#define MO_PAGE_Y (UI_WB_PAGE_Y + 18)
75#define STOP_FLOOR (UI_ALERT_Y - UI_BAND_H - 4)
86#define MO_FONT_LABEL (&gfx_font_10x20)
87#define MO_FONT_FINE UI_FONT_FINE
88#define MO_FONT_HEAD (&gfx_font_20x36)
89#define MO_FONT_NUM (&gfx_font_num_32x44)
101#define HDR_Y (PAD + 4)
103#define HERO_Y0 (HDR_Y + HDR_H + 8)
107#define CTL_Y (HERO_Y0 + 4 * HERO_H + 4 * HERO_GAP)
108#define CTL_H (H - PAD - CTL_Y)
109#define BTN_H UI_TAP_MIN
110#define TARGET_Y (CTL_Y + TITLE_H + 8)
111#define TARGET_H UI_TAP_MIN
112#define RESET_Y (TARGET_Y + TARGET_H + 10)
113#define ARM_Y (RESET_Y + BTN_H + 10)
116 "DISARM ends above the alert band");
118 "ARM ends inside the CONTROL card");
120_Static_assert(ARM_H >=
UI_TAP_MIN,
"ARM is a finger tall");
129#define UP_Y MO_PAGE_Y
131#define LO_Y (UP_Y + UP_H + 8)
132#define LO_H (H - PAD - LO_Y)
140#define PAGE_Y MO_PAGE_Y
142#define PAGE_H (H - PAGE_Y - PAD)
145 "the strip ends left of the rail");
147 "the strip ends above its page");
164void mwb_cancel(
void);
167void mwb_opened_outputs(
void);
171mwb_ev_t mwb_event(
const touch_event_t *evt,
bool strip,
bool locked);
173bool mwb_pressed(
void);
175uint32_t mwb_revision(
void);
177void mwb_render_target(
gfx_canvas_t *c,
const char *value,
bool warn,
191void mpp_cancel(
void);
192void mpp_armed(
bool armed);
193void mpp_tick(
float dt_s);
203bool mpp_pressed(
void);
204void mpp_cancel_press(
void);
206uint32_t mpp_revision(
void);
211 bool known,
bool armed);
212uint32_t mpp_strip_signature(uint8_t proto, uint64_t pins,
bool known,
220void msp_cancel(
void);
230bool msp_pressed(
void);
233void msp_tick(
bool safe);
235uint32_t msp_revision(
void);
gfx: an RGB565 (16-bit red, green, blue) rasteriser with no dependencies.
void mpp_render_strip(gfx_canvas_t *c, uint8_t proto, uint64_t pins, bool known, bool armed)
The strip in its row, over the clear, in PROG_FULL_STRIP_FONT: TARGET dim, the target in the text col...
Definition motor_program_page.c:319
#define MO_TAB_W
Definition motor_screen_int.h:67
#define MO_STRIP_X
The task strip at the 1024 x 600 sizes, as SERVO's: tabs of 150 x 40px, 4px apart,...
Definition motor_screen_int.h:64
#define MO_PAGE_Y
Definition motor_screen_int.h:69
#define MO_STRIP_Y
Definition motor_screen_int.h:65
void msp_render(gfx_canvas_t *c, bool safe)
SETTINGS' page in its two columns, or the keypad over it.
Definition motor_settings_page.c:361
#define CTL_Y
The CONTROL card's top: under the fourth reading card.
Definition motor_screen_int.h:107
void mwb_reset(void)
The strip and the TARGET row laid out; LIVE.
Definition motor_workbench.c:75
#define MO_TAB_GAP
Definition motor_screen_int.h:68
#define MO_STRIP_H
Definition motor_screen_int.h:66
#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 RIGHT_X
Definition motor_screen_int.h:50
#define CTL_H
Definition motor_screen_int.h:108
The registry of programmers and runs: one static table that the PROGRAM (and later TEST) lists of a w...
Definition prog_registry.h:129
A DOWN, MOVE or UP of one contact.
Definition touch_types.h:69
Plain data types shared by the touch controller driver, the coordinate mapper and the event tracker....
#define UI_TAP_MIN
The smallest touch target for a control, in pixels: 48px, 7.2mm.
Definition ui_layout.h:71
A workbench's task strip: one device, its tasks as tabs under the band.
ui_wb_task_t
Definition ui_workbench.h:39