rcbench
Servo and ESC test bench: panel, IOmcu and shared C
Loading...
Searching...
No Matches
wifi_screen.h
Go to the documentation of this file.
1
29
30#ifndef RCBENCH_WIFI_SCREEN_H
31#define RCBENCH_WIFI_SCREEN_H
32
33#include <stdbool.h>
34#include <stdint.h>
35
36#include "ui_screen.h"
37#include "ui_textkey.h"
38
39#ifdef __cplusplus
40extern "C" {
41#endif
42
44#define WIFI_SSID_MAX 32
46#define WIFI_PASS_MAX 63
48#define WIFI_SCAN_ROWS 16
50#define WIFI_VER_MAX 32
51
53typedef enum {
54 WIFI_RADIO_OFF = 0,
55 WIFI_RADIO_STARTING,
56 WIFI_RADIO_AP,
57 WIFI_RADIO_SCANNING,
58 WIFI_RADIO_JOINING,
59 WIFI_RADIO_ADDRESS,
60 WIFI_RADIO_JOINED,
62
64typedef enum {
65 WIFI_WHY_NONE = 0,
66 WIFI_WHY_ARMED,
67 WIFI_WHY_SUPPLY,
68 WIFI_WHY_RUN,
69 WIFI_WHY_STOP,
70 WIFI_WHY_IDLE,
71 WIFI_WHY_GUESSES,
72 WIFI_WHY_ASKED,
73 WIFI_WHY_INSTALL,
74 WIFI_WHY_FAILED,
75 WIFI_WHY_JOIN,
80
82typedef enum {
83 WIFI_JOIN_OK = 0,
84 WIFI_JOIN_PASSWORD,
85 WIFI_JOIN_NOT_FOUND,
86 WIFI_JOIN_NO_ADDRESS,
87 WIFI_JOIN_LOST,
89
91typedef enum {
92 WIFI_UP_IDLE = 0,
93 WIFI_UP_RECEIVING,
94 WIFI_UP_STAGED,
95 WIFI_UP_FAILED,
96} wifi_up_t;
97
99typedef enum {
100 WIFI_OFFER_NEWER = 0,
101 WIFI_OFFER_OLDER,
105
107typedef enum {
108 WIFI_GATE_OPEN = 0,
109 WIFI_GATE_ARMED,
110 WIFI_GATE_SUPPLY,
111 WIFI_GATE_RUN,
115
116typedef struct {
117 /* The radio's gate: why it may not start now, or WIFI_WHY_NONE. */
118 wifi_why_t block;
119
120 /* What is kept. */
121 bool have_net;
122 char net[WIFI_SSID_MAX + 1];
123 bool code_on;
125
126 /* The radio. */
127 wifi_radio_t radio;
130 char name[16];
131 char pass[12];
132 char code[12];
133 uint8_t ip[4];
134 uint8_t channel;
135 uint32_t idle_left_s;
136
137 /* The last scan, strongest first. */
138 bool scanned;
139 int scan_n;
140 char scan[WIFI_SCAN_ROWS][WIFI_SSID_MAX + 1];
141 int8_t rssi[WIFI_SCAN_ROWS];
142
143 /* The upload, and the image that waits. */
144 wifi_up_t up;
145 uint32_t received;
146 uint32_t total;
147 wifi_offer_t offer;
148 wifi_gate_t gate;
149 char new_ver[WIFI_VER_MAX + 1];
150 char run_ver[WIFI_VER_MAX + 1];
152
154#define WIFI_REQ_AP 0x001u
155#define WIFI_REQ_JOIN 0x002u
156#define WIFI_REQ_OFF 0x004u
157#define WIFI_REQ_SCAN 0x008u
158#define WIFI_REQ_SAVE_NET 0x010u
159#define WIFI_REQ_FORGET 0x020u
160#define WIFI_REQ_CODE_ON 0x040u
161#define WIFI_REQ_CODE_OFF 0x080u
162#define WIFI_REQ_DISCARD 0x100u
163#define WIFI_REQ_INSTALL 0x200u
164
166void wifi_screen_set(const wifi_view_t *v);
167
174
176const wifi_view_t *wifi_screen_view(void);
177
179unsigned wifi_screen_take(void);
180
182void wifi_screen_net(char ssid[WIFI_SSID_MAX + 1], char pass[WIFI_PASS_MAX + 1]);
183
185void wifi_screen_invalidate(void);
186
193
200
205const ui_screen_t *wifi_screen(void);
206
209int wifi_screen_jobs_lines(void);
210
211/* ------------------------------------------------------ PANEL UPDATE */
212
223
224typedef struct {
225 update_state_t state;
226 char version[WIFI_VER_MAX + 1];
227 uint32_t written;
228 uint32_t total;
231 char what[96];
232 char why[96];
234
239void update_screen_set(const update_view_t *v);
240
243bool update_screen_take_close(void);
244
247
249void update_screen_invalidate(void);
250
255const ui_screen_t *update_screen(void);
256
257#ifdef __cplusplus
258}
259#endif
260
261#endif /* RCBENCH_WIFI_SCREEN_H */
Definition gfx.h:81
Definition ui_screen.h:68
A keyboard: what it was opened for, what is typed, and the press it holds.
Definition ui_textkey.h:114
Definition wifi_screen.h:224
char what[96]
Definition wifi_screen.h:231
uint32_t written
Definition wifi_screen.h:227
Definition wifi_screen.h:116
char pass[12]
Definition wifi_screen.h:131
wifi_join_t join
Definition wifi_screen.h:129
bool save_failed
Definition wifi_screen.h:124
char name[16]
Definition wifi_screen.h:130
uint32_t idle_left_s
Definition wifi_screen.h:135
wifi_why_t off
Definition wifi_screen.h:128
char code[12]
Definition wifi_screen.h:132
Screen router.
An on-screen keyboard for a short name: capitals, digits, space and the marks a name or a file needs,...
#define WIFI_SCAN_ROWS
The most networks a scan lists.
Definition wifi_screen.h:48
#define WIFI_VER_MAX
The longest version string an image or a release carries.
Definition wifi_screen.h:50
void update_screen_set(const update_view_t *v)
Hand PANEL UPDATE what to show.
Definition update_screen.c:74
int wifi_screen_jobs_lines(void)
Definition wifi_screen.c:660
bool update_screen_take_close(void)
Definition update_screen.c:86
gfx_rect_t wifi_screen_key_area(void)
Where the keyboard opens: the body less UI_MARGIN at its sides and top, ending 4px above the alert ba...
Definition wifi_screen.c:171
void wifi_screen_net(char ssid[WIFI_SSID_MAX+1], char pass[WIFI_PASS_MAX+1])
Definition wifi_screen.c:252
wifi_why_t
Definition wifi_screen.h:64
@ WIFI_WHY_UNAVAILABLE
Definition wifi_screen.h:78
void wifi_screen_set(const wifi_view_t *v)
Definition wifi_screen.c:212
#define WIFI_PASS_MAX
The longest password, in characters.
Definition wifi_screen.h:46
const wifi_view_t * wifi_screen_view(void)
Definition wifi_screen.c:243
wifi_up_t
Definition wifi_screen.h:91
wifi_offer_t
Definition wifi_screen.h:99
@ WIFI_OFFER_INSTALLED
Definition wifi_screen.h:103
@ WIFI_OFFER_REBUILD
Definition wifi_screen.h:102
wifi_join_t
Definition wifi_screen.h:82
void wifi_screen_invalidate(void)
Definition wifi_screen.c:241
const ui_screen_t * update_screen(void)
The PANEL UPDATE screen, for the router.
Definition update_screen.c:262
update_state_t
Where PANEL UPDATE stands.
Definition wifi_screen.h:214
@ UPDATE_FAILED
Definition wifi_screen.h:217
@ UPDATE_FETCH_FAILED
Definition wifi_screen.h:221
@ UPDATE_WRITING
Definition wifi_screen.h:215
@ UPDATE_RESTARTING
Definition wifi_screen.h:216
@ UPDATE_FETCHING
Definition wifi_screen.h:220
unsigned wifi_screen_take(void)
Definition wifi_screen.c:245
bool update_screen_take_cancel(void)
Definition update_screen.c:93
void wifi_screen_set_unavailable(void)
Definition wifi_screen.c:228
wifi_radio_t
Definition wifi_screen.h:53
const ui_screen_t * wifi_screen(void)
The WI-FI screen, for the router.
Definition wifi_screen.c:1043
const ui_textkey_t * wifi_screen_textkey(void)
The screen's keyboard, open or closed; for tests and the renderer, which check what a tap typed.
Definition wifi_screen.c:176
#define WIFI_SSID_MAX
The longest network name, in bytes.
Definition wifi_screen.h:44
wifi_gate_t
Definition wifi_screen.h:107
@ WIFI_GATE_DRAWING
Definition wifi_screen.h:112
@ WIFI_GATE_COPROC
Definition wifi_screen.h:113
void update_screen_invalidate(void)
Repaint PANEL UPDATE on the next frame.
Definition update_screen.c:84