Skip to content

Commit 0e41db0

Browse files
committed
Add stuck keys and keyboard tests
1 parent 61aff8a commit 0e41db0

11 files changed

Lines changed: 321 additions & 40 deletions

main/CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@ idf_component_register(
4141
"menu/menu_filebrowser.c"
4242
"menu/menu_hardware_test.c"
4343

44+
# Tests
45+
"hardware_test/test_keyboard_stuck_keys.c"
46+
"hardware_test/test_keyboard.c"
47+
4448
# Fonts
4549
"chakrapetchmedium.c"
4650

@@ -85,6 +89,7 @@ idf_component_register(
8589
INCLUDE_DIRS
8690
"."
8791
"include"
92+
"hardware_test"
8893
EMBED_FILES
8994
${files}
9095
)

main/coprocessor_management.c

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@
55
#include <stdbool.h>
66
#include "bsp/device.h"
77
#include "bsp/i2c.h"
8-
#include "common/display.h"
98
#include "esp_log.h"
10-
#include "pax_gfx.h"
9+
#include "icons.h"
10+
#include "menu/message_dialog.h"
11+
1112
static const char* TAG = "Coprocessor management";
1213

1314
#if defined(CONFIG_BSP_TARGET_TANMATSU) || defined(CONFIG_BSP_TARGET_KONSOOL) || \
@@ -20,15 +21,15 @@ static const char* TAG = "Coprocessor management";
2021
extern uint8_t const coprocessor_firmware_start[] asm("_binary_tanmatsu_coprocessor_bin_start");
2122
extern uint8_t const coprocessor_firmware_end[] asm("_binary_tanmatsu_coprocessor_bin_end");
2223

23-
static void callback(char const* msg, uint8_t progress) {
24+
static void callback(char const* status_text, uint8_t percentage) {
25+
static uint8_t last_percentage = 0xFF;
26+
if (percentage == last_percentage) {
27+
return; // No change, no need to update
28+
}
29+
last_percentage = percentage;
2430
char text[128];
25-
snprintf(text, sizeof(text), "%s (%u%%)", msg, progress);
26-
printf("Coprocessor update: %s\r\n", text);
27-
pax_buf_t* buffer = display_get_buffer();
28-
pax_background(buffer, 0xFF0000FF);
29-
pax_draw_text(buffer, 0xFFFFFFFF, pax_font_sky_mono, 16, 0, 0, "Updating coprocessor firmware...");
30-
pax_draw_text(buffer, 0xFFFFFFFF, pax_font_sky_mono, 16, 0, 18, text);
31-
display_blit_buffer(buffer);
31+
sprintf(text, "%s (%u%%)", status_text, percentage);
32+
busy_dialog(get_icon(ICON_SYSTEM_UPDATE), "Coprocessor update", text);
3233
}
3334

3435
void coprocessor_flash(bool force) {

main/hardware_test/test_keyboard.c

Lines changed: 213 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,213 @@
1+
#include "test_keyboard.h"
2+
#include "bsp/input.h"
3+
#include "common/display.h"
4+
#include "common/theme.h"
5+
#include "freertos/idf_additions.h"
6+
#include "gui_style.h"
7+
#include "icons.h"
8+
#include "menu/message_dialog.h"
9+
#include "pax_fonts.h"
10+
#include "pax_gfx.h"
11+
#include "pax_text.h"
12+
#include "shapes/pax_misc.h"
13+
#include "shapes/pax_rects.h"
14+
15+
typedef struct {
16+
const char* name;
17+
bsp_input_scancode_t scancode;
18+
bool pressed;
19+
bool was_pressed;
20+
bool changed;
21+
} key_t;
22+
23+
key_t keys[] = {
24+
{.name = "ESC", .scancode = BSP_INPUT_SCANCODE_ESC, .pressed = false, .was_pressed = false, .changed = true},
25+
{.name = "F1", .scancode = BSP_INPUT_SCANCODE_F1, .pressed = false, .was_pressed = false, .changed = true},
26+
{.name = "F2", .scancode = BSP_INPUT_SCANCODE_F2, .pressed = false, .was_pressed = false, .changed = true},
27+
{.name = "F3", .scancode = BSP_INPUT_SCANCODE_F3, .pressed = false, .was_pressed = false, .changed = true},
28+
{.name = "F4", .scancode = BSP_INPUT_SCANCODE_F4, .pressed = false, .was_pressed = false, .changed = true},
29+
{.name = "F5", .scancode = BSP_INPUT_SCANCODE_F5, .pressed = false, .was_pressed = false, .changed = true},
30+
{.name = "F6", .scancode = BSP_INPUT_SCANCODE_F6, .pressed = false, .was_pressed = false, .changed = true},
31+
{.name = "BS", .scancode = BSP_INPUT_SCANCODE_BACKSPACE, .pressed = false, .was_pressed = false, .changed = true},
32+
{.name = "`", .scancode = BSP_INPUT_SCANCODE_GRAVE, .pressed = false, .was_pressed = false, .changed = true},
33+
{.name = "1", .scancode = BSP_INPUT_SCANCODE_1, .pressed = false, .was_pressed = false, .changed = true},
34+
{.name = "2", .scancode = BSP_INPUT_SCANCODE_2, .pressed = false, .was_pressed = false, .changed = true},
35+
{.name = "3", .scancode = BSP_INPUT_SCANCODE_3, .pressed = false, .was_pressed = false, .changed = true},
36+
{.name = "4", .scancode = BSP_INPUT_SCANCODE_4, .pressed = false, .was_pressed = false, .changed = true},
37+
{.name = "5", .scancode = BSP_INPUT_SCANCODE_5, .pressed = false, .was_pressed = false, .changed = true},
38+
{.name = "6", .scancode = BSP_INPUT_SCANCODE_6, .pressed = false, .was_pressed = false, .changed = true},
39+
{.name = "7", .scancode = BSP_INPUT_SCANCODE_7, .pressed = false, .was_pressed = false, .changed = true},
40+
{.name = "8", .scancode = BSP_INPUT_SCANCODE_8, .pressed = false, .was_pressed = false, .changed = true},
41+
{.name = "9", .scancode = BSP_INPUT_SCANCODE_9, .pressed = false, .was_pressed = false, .changed = true},
42+
{.name = "0", .scancode = BSP_INPUT_SCANCODE_0, .pressed = false, .was_pressed = false, .changed = true},
43+
{.name = "-", .scancode = BSP_INPUT_SCANCODE_MINUS, .pressed = false, .was_pressed = false, .changed = true},
44+
{.name = "=", .scancode = BSP_INPUT_SCANCODE_EQUAL, .pressed = false, .was_pressed = false, .changed = true},
45+
{.name = "TAB", .scancode = BSP_INPUT_SCANCODE_TAB, .pressed = false, .was_pressed = false, .changed = true},
46+
{.name = "Q", .scancode = BSP_INPUT_SCANCODE_Q, .pressed = false, .was_pressed = false, .changed = true},
47+
{.name = "W", .scancode = BSP_INPUT_SCANCODE_W, .pressed = false, .was_pressed = false, .changed = true},
48+
{.name = "E", .scancode = BSP_INPUT_SCANCODE_E, .pressed = false, .was_pressed = false, .changed = true},
49+
{.name = "R", .scancode = BSP_INPUT_SCANCODE_R, .pressed = false, .was_pressed = false, .changed = true},
50+
{.name = "T", .scancode = BSP_INPUT_SCANCODE_T, .pressed = false, .was_pressed = false, .changed = true},
51+
{.name = "Y", .scancode = BSP_INPUT_SCANCODE_Y, .pressed = false, .was_pressed = false, .changed = true},
52+
{.name = "U", .scancode = BSP_INPUT_SCANCODE_U, .pressed = false, .was_pressed = false, .changed = true},
53+
{.name = "I", .scancode = BSP_INPUT_SCANCODE_I, .pressed = false, .was_pressed = false, .changed = true},
54+
{.name = "O", .scancode = BSP_INPUT_SCANCODE_O, .pressed = false, .was_pressed = false, .changed = true},
55+
{.name = "P", .scancode = BSP_INPUT_SCANCODE_P, .pressed = false, .was_pressed = false, .changed = true},
56+
{.name = "[", .scancode = BSP_INPUT_SCANCODE_LEFTBRACE, .pressed = false, .was_pressed = false, .changed = true},
57+
{.name = "]", .scancode = BSP_INPUT_SCANCODE_RIGHTBRACE, .pressed = false, .was_pressed = false, .changed = true},
58+
{.name = "Fn", .scancode = BSP_INPUT_SCANCODE_FN, .pressed = false, .was_pressed = false, .changed = true},
59+
{.name = "A", .scancode = BSP_INPUT_SCANCODE_A, .pressed = false, .was_pressed = false, .changed = true},
60+
{.name = "S", .scancode = BSP_INPUT_SCANCODE_S, .pressed = false, .was_pressed = false, .changed = true},
61+
{.name = "D", .scancode = BSP_INPUT_SCANCODE_D, .pressed = false, .was_pressed = false, .changed = true},
62+
{.name = "F", .scancode = BSP_INPUT_SCANCODE_F, .pressed = false, .was_pressed = false, .changed = true},
63+
{.name = "G", .scancode = BSP_INPUT_SCANCODE_G, .pressed = false, .was_pressed = false, .changed = true},
64+
{.name = "H", .scancode = BSP_INPUT_SCANCODE_H, .pressed = false, .was_pressed = false, .changed = true},
65+
{.name = "J", .scancode = BSP_INPUT_SCANCODE_J, .pressed = false, .was_pressed = false, .changed = true},
66+
{.name = "K", .scancode = BSP_INPUT_SCANCODE_K, .pressed = false, .was_pressed = false, .changed = true},
67+
{.name = "L", .scancode = BSP_INPUT_SCANCODE_L, .pressed = false, .was_pressed = false, .changed = true},
68+
{.name = ";", .scancode = BSP_INPUT_SCANCODE_SEMICOLON, .pressed = false, .was_pressed = false, .changed = true},
69+
{.name = "'", .scancode = BSP_INPUT_SCANCODE_APOSTROPHE, .pressed = false, .was_pressed = false, .changed = true},
70+
{.name = "ENTER", .scancode = BSP_INPUT_SCANCODE_ENTER, .pressed = false, .was_pressed = false, .changed = true},
71+
{.name = "LSHIFT",
72+
.scancode = BSP_INPUT_SCANCODE_LEFTSHIFT,
73+
.pressed = false,
74+
.was_pressed = false,
75+
.changed = true},
76+
{.name = "Z", .scancode = BSP_INPUT_SCANCODE_Z, .pressed = false, .was_pressed = false, .changed = true},
77+
{.name = "X", .scancode = BSP_INPUT_SCANCODE_X, .pressed = false, .was_pressed = false, .changed = true},
78+
{.name = "C", .scancode = BSP_INPUT_SCANCODE_C, .pressed = false, .was_pressed = false, .changed = true},
79+
{.name = "V", .scancode = BSP_INPUT_SCANCODE_V, .pressed = false, .was_pressed = false, .changed = true},
80+
{.name = "B", .scancode = BSP_INPUT_SCANCODE_B, .pressed = false, .was_pressed = false, .changed = true},
81+
{.name = "N", .scancode = BSP_INPUT_SCANCODE_N, .pressed = false, .was_pressed = false, .changed = true},
82+
{.name = "M", .scancode = BSP_INPUT_SCANCODE_M, .pressed = false, .was_pressed = false, .changed = true},
83+
{.name = ",", .scancode = BSP_INPUT_SCANCODE_COMMA, .pressed = false, .was_pressed = false, .changed = true},
84+
{.name = ".", .scancode = BSP_INPUT_SCANCODE_DOT, .pressed = false, .was_pressed = false, .changed = true},
85+
{.name = "/", .scancode = BSP_INPUT_SCANCODE_SLASH, .pressed = false, .was_pressed = false, .changed = true},
86+
{.name = "UP",
87+
.scancode = BSP_INPUT_SCANCODE_ESCAPED_GREY_UP,
88+
.pressed = false,
89+
.was_pressed = false,
90+
.changed = true},
91+
{.name = "RSHIFT",
92+
.scancode = BSP_INPUT_SCANCODE_RIGHTSHIFT,
93+
.pressed = false,
94+
.was_pressed = false,
95+
.changed = true},
96+
{.name = "CTRL", .scancode = BSP_INPUT_SCANCODE_LEFTCTRL, .pressed = false, .was_pressed = false, .changed = true},
97+
{.name = "META",
98+
.scancode = BSP_INPUT_SCANCODE_ESCAPED_LEFTMETA,
99+
.pressed = false,
100+
.was_pressed = false,
101+
.changed = true},
102+
{.name = "ALT", .scancode = BSP_INPUT_SCANCODE_LEFTALT, .pressed = false, .was_pressed = false, .changed = true},
103+
{.name = "S", .scancode = BSP_INPUT_SCANCODE_SPACE, .pressed = false, .was_pressed = false, .changed = true},
104+
{.name = "P", .scancode = BSP_INPUT_SCANCODE_SPACE, .pressed = false, .was_pressed = false, .changed = true},
105+
{.name = "A", .scancode = BSP_INPUT_SCANCODE_SPACE, .pressed = false, .was_pressed = false, .changed = true},
106+
{.name = "C", .scancode = BSP_INPUT_SCANCODE_SPACE, .pressed = false, .was_pressed = false, .changed = true},
107+
{.name = "E", .scancode = BSP_INPUT_SCANCODE_SPACE, .pressed = false, .was_pressed = false, .changed = true},
108+
{.name = "\\", .scancode = BSP_INPUT_SCANCODE_BACKSLASH, .pressed = false, .was_pressed = false, .changed = true},
109+
{.name = "ALTGR",
110+
.scancode = BSP_INPUT_SCANCODE_ESCAPED_RALT,
111+
.pressed = false,
112+
.was_pressed = false,
113+
.changed = true},
114+
{.name = "LEFT",
115+
.scancode = BSP_INPUT_SCANCODE_ESCAPED_GREY_LEFT,
116+
.pressed = false,
117+
.was_pressed = false,
118+
.changed = true},
119+
{.name = "DOWN",
120+
.scancode = BSP_INPUT_SCANCODE_ESCAPED_GREY_DOWN,
121+
.pressed = false,
122+
.was_pressed = false,
123+
.changed = true},
124+
{.name = "RIGHT",
125+
.scancode = BSP_INPUT_SCANCODE_ESCAPED_GREY_RIGHT,
126+
.pressed = false,
127+
.was_pressed = false,
128+
.changed = true},
129+
};
130+
131+
static void draw_keyboard(void) {
132+
pax_buf_t* buffer = display_get_buffer();
133+
134+
for (int column = 0; column < 8; column++) {
135+
uint32_t index = column;
136+
if (keys[index].changed) {
137+
keys[index].changed = false;
138+
uint32_t color = keys[index].pressed ? 0xFFFFFF00 : keys[index].was_pressed ? 0xFFFFFFFF : 0xFF000000;
139+
float x = 10 + column * 95 + (column >= 4 ? 20 : 0);
140+
pax_simple_rect(buffer, color, x, 0, 95, 60);
141+
pax_outline_rect(buffer, 0xFF0000FF, x, 0, 95, 60);
142+
pax_center_text(buffer, (keys[index].pressed || keys[index].was_pressed) ? 0xFF000000 : 0xFFFFFFFF,
143+
pax_font_sky_mono, 12, x + (95.0f / 2.0f), 30, keys[index].name);
144+
}
145+
}
146+
147+
for (int row = 1; row < 6; row++) {
148+
for (int column = 0; column < 13; column++) {
149+
uint32_t index = 8 + column + (row - 1) * 13;
150+
if (keys[index].changed) {
151+
keys[index].changed = false;
152+
uint32_t color = keys[index].pressed ? 0xFFFFFF00 : keys[index].was_pressed ? 0xFFFFFFFF : 0xFF000000;
153+
float x = 10 + column * 60;
154+
float y = row * 60;
155+
pax_simple_rect(buffer, color, x, y, 60, 60);
156+
pax_outline_rect(buffer, 0xFF0000FF, x, y, 60, 60);
157+
pax_center_text(buffer, (keys[index].pressed || keys[index].was_pressed) ? 0xFF000000 : 0xFFFFFFFF,
158+
pax_font_sky_mono, 12, x + (60.0f / 2.0f), y + 30, keys[index].name);
159+
}
160+
}
161+
}
162+
163+
display_blit_buffer(buffer);
164+
}
165+
166+
void test_keyboard(void) {
167+
QueueHandle_t input_event_queue = NULL;
168+
ESP_ERROR_CHECK(bsp_input_get_queue(&input_event_queue));
169+
170+
pax_buf_t* buffer = display_get_buffer();
171+
pax_background(buffer, 0xFF000000);
172+
pax_draw_text(buffer, 0xFFFFFFFF, pax_font_sky_mono, 16, 16, pax_buf_get_height(buffer) - 48,
173+
"Press ESC and backspace simultaneously to exit");
174+
175+
bool esc_pressed = false;
176+
bool backspace_pressed = false;
177+
bool exiting = false;
178+
179+
for (uint32_t i = 0; i < sizeof(keys) / sizeof(keys[0]); i++) {
180+
keys[i].pressed = false;
181+
keys[i].was_pressed = false;
182+
keys[i].changed = true;
183+
}
184+
185+
while (1) {
186+
bsp_input_event_t event;
187+
188+
if (xQueueReceive(input_event_queue, &event, pdMS_TO_TICKS(100)) == pdTRUE) {
189+
if (event.type == INPUT_EVENT_TYPE_SCANCODE) {
190+
bsp_input_scancode_t scancode = event.args_scancode.scancode & ~BSP_INPUT_SCANCODE_RELEASE_MODIFIER;
191+
for (uint32_t i = 0; i < sizeof(keys) / sizeof(keys[0]); i++) {
192+
if (keys[i].scancode == scancode) {
193+
keys[i].was_pressed = keys[i].pressed;
194+
keys[i].pressed = !(event.args_scancode.scancode & BSP_INPUT_SCANCODE_RELEASE_MODIFIER);
195+
keys[i].changed = true;
196+
}
197+
}
198+
if (scancode == BSP_INPUT_SCANCODE_ESC) {
199+
esc_pressed = !(event.args_scancode.scancode & BSP_INPUT_SCANCODE_RELEASE_MODIFIER);
200+
} else if (scancode == BSP_INPUT_SCANCODE_BACKSPACE) {
201+
backspace_pressed = !(event.args_scancode.scancode & BSP_INPUT_SCANCODE_RELEASE_MODIFIER);
202+
}
203+
if (esc_pressed && backspace_pressed) {
204+
exiting = true;
205+
}
206+
if (!esc_pressed && !backspace_pressed && exiting) {
207+
return;
208+
}
209+
draw_keyboard();
210+
}
211+
}
212+
}
213+
}

main/hardware_test/test_keyboard.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#pragma once
2+
3+
void test_keyboard(void);
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#include "test_keyboard_stuck_keys.h"
2+
#include "bsp/input.h"
3+
#include "freertos/idf_additions.h"
4+
#include "icons.h"
5+
#include "menu/message_dialog.h"
6+
7+
static const char* title = "Keyboard: stuck keys test";
8+
9+
bool test_keyboard_stuck_keys(char* result_buffer, size_t result_buffer_size) {
10+
busy_dialog(get_icon(ICON_SYSTEM_UPDATE), title, "Don't press any keys!");
11+
vTaskDelay(pdMS_TO_TICKS(1000));
12+
13+
// Scan all navigation keys
14+
for (bsp_input_scancode_t i = BSP_INPUT_SCANCODE_NONE; i < BSP_INPUT_SCANCODE_ESCAPED_CALCULATOR; i++) {
15+
bool state = false;
16+
esp_err_t res = bsp_input_read_scancode(i, &state);
17+
if (res != ESP_OK) {
18+
snprintf(result_buffer, result_buffer_size, "Communication error");
19+
return false;
20+
}
21+
if (state) {
22+
snprintf(result_buffer, result_buffer_size, "Key 0x%04X is stuck!", i);
23+
return false;
24+
}
25+
}
26+
27+
snprintf(result_buffer, result_buffer_size, "Test passed, no stuck keys detected.");
28+
return true;
29+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#pragma once
2+
3+
#include <stdbool.h>
4+
#include <stddef.h>
5+
6+
bool test_keyboard_stuck_keys(char* result_buffer, size_t result_buffer_size);

main/idf_component.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ dependencies:
22
idf:
33
version: ">=5.5.0"
44
badgeteam/badge-bsp:
5-
version: ">=0.4.0"
5+
version: ">=0.5.0"
66
robotman2412/pax-gfx:
77
version: ">=2.0.4"
88
badgeteam/appfs:

main/menu/about.c

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#include "about.h"
22
#include "bsp/input.h"
33
#include "common/display.h"
4+
#include "common/theme.h"
45
#include "freertos/idf_additions.h"
56
#include "gui_style.h"
67
#include "icons.h"
@@ -10,8 +11,6 @@
1011
#include "pax_text.h"
1112
#include "pax_types.h"
1213

13-
// #include "shapes/pax_misc.h"
14-
1514
#if defined(CONFIG_BSP_TARGET_TANMATSU) || defined(CONFIG_BSP_TARGET_KONSOOL) || \
1615
defined(CONFIG_BSP_TARGET_HACKERHOTEL_2026)
1716
#define FOOTER_LEFT ((gui_element_icontext_t[]){{get_icon(ICON_ESC), "/"}, {get_icon(ICON_F1), "Back"}}), 2
@@ -24,7 +23,20 @@
2423
#define FOOTER_RIGHT NULL, 0
2524
#endif
2625

27-
static void render(pax_buf_t* buffer, gui_theme_t* theme, pax_vec2_t position, bool partial, bool icons) {
26+
static void render(bool partial, bool icons) {
27+
pax_buf_t* buffer = display_get_buffer();
28+
gui_theme_t* theme = get_theme();
29+
30+
int header_height = theme->header.height + (theme->header.vertical_margin * 2);
31+
int footer_height = theme->footer.height + (theme->footer.vertical_margin * 2);
32+
33+
pax_vec2_t position = {
34+
.x0 = theme->menu.horizontal_margin + theme->menu.horizontal_padding,
35+
.y0 = header_height + theme->menu.vertical_margin + theme->menu.vertical_padding,
36+
.x1 = pax_buf_get_width(buffer) - theme->menu.horizontal_margin - theme->menu.horizontal_padding,
37+
.y1 = pax_buf_get_height(buffer) - footer_height - theme->menu.vertical_margin - theme->menu.vertical_padding,
38+
};
39+
2840
if (!partial || icons) {
2941
render_base_screen_statusbar(buffer, theme, !partial, !partial || icons, !partial,
3042
((gui_element_icontext_t[]){{get_icon(ICON_INFO), "About"}}), 1, FOOTER_LEFT,
@@ -47,21 +59,11 @@ static void render(pax_buf_t* buffer, gui_theme_t* theme, pax_vec2_t position, b
4759
display_blit_buffer(buffer);
4860
}
4961

50-
void menu_about(pax_buf_t* buffer, gui_theme_t* theme) {
62+
void menu_about(void) {
5163
QueueHandle_t input_event_queue = NULL;
5264
ESP_ERROR_CHECK(bsp_input_get_queue(&input_event_queue));
5365

54-
int header_height = theme->header.height + (theme->header.vertical_margin * 2);
55-
int footer_height = theme->footer.height + (theme->footer.vertical_margin * 2);
56-
57-
pax_vec2_t position = {
58-
.x0 = theme->menu.horizontal_margin + theme->menu.horizontal_padding,
59-
.y0 = header_height + theme->menu.vertical_margin + theme->menu.vertical_padding,
60-
.x1 = pax_buf_get_width(buffer) - theme->menu.horizontal_margin - theme->menu.horizontal_padding,
61-
.y1 = pax_buf_get_height(buffer) - footer_height - theme->menu.vertical_margin - theme->menu.vertical_padding,
62-
};
63-
64-
render(buffer, theme, position, false, true);
66+
render(false, true);
6567
while (1) {
6668
bsp_input_event_t event;
6769
if (xQueueReceive(input_event_queue, &event, pdMS_TO_TICKS(1000)) == pdTRUE) {
@@ -83,7 +85,7 @@ void menu_about(pax_buf_t* buffer, gui_theme_t* theme) {
8385
break;
8486
}
8587
} else {
86-
render(buffer, theme, position, true, true);
88+
render(true, true);
8789
}
8890
}
8991
}

0 commit comments

Comments
 (0)