rcbench
Servo and ESC test bench: panel, IOmcu and shared C
Loading...
Searching...
No Matches
motor_screen.h
Go to the documentation of this file.
1
12#pragma once
13
14#include <stdbool.h>
15#include <stddef.h>
16#include <stdint.h>
17
18#include "bench_state.h"
19#include "endpoints_link.h"
20#include "gfx.h"
21#include "settings.h"
22#include "ui_keypad.h"
23#include "ui_screen.h"
24
25#ifdef __cplusplus
26extern "C" {
27#endif
28
29typedef enum {
30 MOTOR_PANE_PLOT = 0,
31 MOTOR_PANE_TABLE,
32 MOTOR_PANE_COUNT
33} motor_pane_t;
34
36typedef enum {
37 MOTOR_CMD_NONE = 0,
38 MOTOR_CMD_ARM,
39 MOTOR_CMD_DISARM,
41 MOTOR_CMD_RESET_PEAKS,
43
44typedef struct {
46 float value;
48
51void motor_screen_push(const bench_state_t *b);
52
74void motor_screen_set_armed(bool armed);
75
81
82motor_plot_state_t motor_screen_plot_state(void);
83
87
98bool motor_screen_peak_shown(int channel);
99
103void motor_screen_cancel_arm(void);
108void motor_screen_set_esc_kv(int kv);
109
117void motor_screen_set_throttle_pins(uint64_t gpio_mask, bool known);
118
120#define MOTOR_PROTO_MIXED 0xFFu
121
128void motor_screen_set_throttle_protocol(uint8_t proto);
129
153bool motor_throttle_target(char *out, size_t size, uint8_t proto,
154 uint64_t pins, bool known, unsigned cells);
155
159uint8_t motor_dshot_ports(void);
160
162unsigned motor_target_cells(void);
163
174size_t motor_output_strip(char *out, size_t size, uint8_t proto,
175 uint64_t pins, bool known, bool armed, bool *warn);
176
182int motor_screen_task(void);
183
187
189int motor_screen_pane(void);
190
195
198
205
208int motor_settings_rows(setting_id_t *out, int max);
210int motor_settings_heading(int row);
213
219
220float motor_screen_throttle(void);
223void motor_screen_set_throttle(float pct);
224
236void motor_screen_knob(float span_fraction);
237
244void motor_screen_knob_frame(void);
245
252void motor_screen_knob_cancel(void);
253
256
257void motor_invalidate(void);
258const ui_screen_t *motor_screen(void);
259
260#ifdef __cplusplus
261}
262#endif
The bench readings, in the units a person reads: V, A, W, rpm (revolutions per minute),...
gfx: an RGB565 (16-bit red, green, blue) rasteriser with no dependencies.
const ui_keypad_t * motor_screen_keypad(void)
SETTINGS' keypad, open or closed, for a test to read what it opened with and where its keys are.
Definition motor_settings_page.c:400
void motor_screen_set_throttle(float pct)
Definition motor_screen.c:459
bool motor_screen_target_locked(void)
Definition motor_screen.c:450
void motor_screen_knob(float span_fraction)
Definition motor_screen.c:485
uint8_t motor_dshot_ports(void)
Definition motor_workbench.c:186
void motor_screen_knob_frame(void)
Definition motor_screen.c:465
size_t motor_output_strip(char *out, size_t size, uint8_t proto, uint64_t pins, bool known, bool armed, bool *warn)
Definition motor_program_page.c:276
const char * motor_endpoints_alert(endpoints_block_t why)
Definition motor_settings_page.c:421
unsigned motor_target_cells(void)
Definition motor_workbench.c:181
gfx_rect_t motor_settings_box(int row)
Definition motor_settings_page.c:434
void motor_screen_set_throttle_protocol(uint8_t proto)
Definition motor_screen.c:416
bool motor_screen_session_shown(void)
Definition motor_screen.c:454
void motor_screen_set_throttle_pins(uint64_t gpio_mask, bool known)
Definition motor_screen.c:404
bool motor_screen_peak_shown(int channel)
Whether channel channel's peak is drawn as a value – 0 voltage, 1 current, 2 power,...
Definition motor_screen.c:267
motor_plot_state_t
Definition motor_screen.h:76
@ MOTOR_PLOT_EMPTY
Definition motor_screen.h:77
@ MOTOR_PLOT_RECORDING
Definition motor_screen.h:78
@ MOTOR_PLOT_HELD
Definition motor_screen.h:79
int motor_screen_pane(void)
Definition motor_screen.c:456
void motor_screen_set_esc_kv(int kv)
Definition motor_screen.c:393
int motor_screen_keypad_setting(void)
Definition motor_settings_page.c:395
int motor_settings_heading(int row)
Definition motor_settings_page.c:415
void motor_screen_set_armed(bool armed)
What the bench is doing, which is what bounds a run.
Definition motor_screen.c:341
int motor_settings_rows(setting_id_t *out, int max)
Definition motor_settings_page.c:405
motor_cmd_kind_t
Definition motor_screen.h:36
@ MOTOR_CMD_THROTTLE
Definition motor_screen.h:40
int motor_screen_task(void)
Definition motor_screen.c:452
void motor_screen_knob_cancel(void)
Definition motor_screen.c:470
bool motor_screen_poll_cmd(motor_cmd_t *out)
Definition motor_screen.c:225
void motor_screen_cancel_arm(void)
Definition motor_screen.c:293
bool motor_throttle_target(char *out, size_t size, uint8_t proto, uint64_t pins, bool known, unsigned cells)
The TARGET row's value, protocol pins ("DSHOT300 GPIO 0 GPIO 1"), in at most cells characters.
Definition motor_workbench.c:300
int motor_screen_plot_samples(void)
Definition motor_screen.c:265
void motor_screen_push(const bench_state_t *b)
Definition motor_screen.c:238
Device settings: a typed schema, a value per entry, and a persistence seam.
setting_id_t
Every setting's id, in schema order.
Definition settings.h:67
The bench readings in the units a person reads: V, A, W and rpm, with their peaks.
Definition bench_state.h:54
Definition gfx.h:81
Definition motor_screen.h:44
A numeric keypad: what it was opened with, what is typed, and the press it holds.
Definition ui_keypad.h:61
Definition ui_screen.h:68
A numeric keypad over part of a screen, for a value a slider is too coarse to place.
Screen router.