Skip to content

Commit a3e4906

Browse files
committed
update espflasher
changes by Willy-JL
1 parent 91b7fb2 commit a3e4906

File tree

8 files changed

+94
-35
lines changed

8 files changed

+94
-35
lines changed
Binary file not shown.

non_catalog_apps/esp_flasher/scenes/esp_flasher_scene_quick.c

Lines changed: 94 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,28 @@
11
#include "../esp_flasher_app_i.h"
22

3+
// DO NOT use as an example, you should split into different scene files for each screen
4+
// To keep in a single file, this is setup in an unusual and confusing way
5+
// You can find more info in comments throughout
6+
7+
// There's one entry for each item on quick flash menu
8+
// Following each one, there are its submenu items
9+
// Not all boards support automatic bootmode, so here we separate into those that do and don't
310
enum QuickState {
411
QuickStart,
5-
QuickBootS2,
6-
QuickBootS2_Marauder,
7-
QuickBootS2_Blackmagic,
8-
QuickBootWROOM,
9-
QuickBootWROOM_Marauder,
12+
QuickS2Boot,
13+
QuickS2Boot_Marauder,
14+
QuickS2Boot_Blackmagic,
15+
QuickWROOMBoot,
16+
QuickWROOMBoot_Marauder,
17+
QuickS3Boot,
18+
QuickS3Boot_Marauder,
1019
QuickWROOM,
1120
QuickWROOM_Marauder,
1221
QuickS2,
1322
QuickS2_Marauder,
1423
QuickS2_Blackmagic,
24+
QuickS3,
25+
QuickS3_Marauder,
1526
};
1627

1728
void esp_flasher_scene_quick_submenu_callback(void* context, uint32_t index) {
@@ -27,21 +38,36 @@ void esp_flasher_scene_quick_on_enter(void* context) {
2738
Submenu* submenu = app->submenu;
2839
uint32_t state = scene_manager_get_scene_state(app->scene_manager, EspFlasherSceneQuick);
2940

41+
// State indicates the currently selected (or activated) item
42+
// So map quick flash menu values to show the quick flash menu
43+
// And map submenu values to show corresponding submenu
3044
switch(state) {
3145
case QuickStart:
32-
case QuickBootS2:
33-
case QuickBootWROOM:
46+
case QuickS2Boot:
47+
case QuickWROOMBoot:
48+
case QuickS3Boot:
3449
case QuickWROOM:
3550
case QuickS2:
51+
case QuickS3:
3652
submenu_set_header(submenu, "Choose Board:");
3753
submenu_add_item(
3854
submenu,
39-
"Flipper WiFi Board / Xeon",
40-
QuickBootS2,
55+
"Flipper WiFi Devboard",
56+
QuickS2Boot,
4157
esp_flasher_scene_quick_submenu_callback,
4258
app);
4359
submenu_add_item(
44-
submenu, "Multi-Fucc", QuickBootWROOM, esp_flasher_scene_quick_submenu_callback, app);
60+
submenu,
61+
"ESP32-WROOM (bootloader)",
62+
QuickWROOMBoot,
63+
esp_flasher_scene_quick_submenu_callback,
64+
app);
65+
submenu_add_item(
66+
submenu,
67+
"ESP32-S3 (bootloader)",
68+
QuickS3Boot,
69+
esp_flasher_scene_quick_submenu_callback,
70+
app);
4571
submenu_add_item(
4672
submenu,
4773
"Other ESP32-WROOM",
@@ -50,32 +76,44 @@ void esp_flasher_scene_quick_on_enter(void* context) {
5076
app);
5177
submenu_add_item(
5278
submenu, "Other ESP32-S2", QuickS2, esp_flasher_scene_quick_submenu_callback, app);
79+
submenu_add_item(
80+
submenu, "Other ESP32-S3", QuickS3, esp_flasher_scene_quick_submenu_callback, app);
5381
break;
54-
case QuickBootS2_Marauder:
55-
case QuickBootS2_Blackmagic:
82+
case QuickS2Boot_Marauder:
83+
case QuickS2Boot_Blackmagic:
5684
case QuickS2_Marauder:
5785
case QuickS2_Blackmagic:
5886
submenu_set_header(submenu, "Choose Firmware:");
5987
submenu_add_item(
6088
submenu,
6189
"Marauder (has Evil Portal)",
62-
state > QuickS2 ? QuickS2_Marauder : QuickBootS2_Marauder,
90+
state > QuickS2 ? QuickS2_Marauder : QuickS2Boot_Marauder,
6391
esp_flasher_scene_quick_submenu_callback,
6492
app);
6593
submenu_add_item(
6694
submenu,
6795
"Black Magic",
68-
state > QuickS2 ? QuickS2_Blackmagic : QuickBootS2_Blackmagic,
96+
state > QuickS2 ? QuickS2_Blackmagic : QuickS2Boot_Blackmagic,
6997
esp_flasher_scene_quick_submenu_callback,
7098
app);
7199
break;
72-
case QuickBootWROOM_Marauder:
100+
case QuickWROOMBoot_Marauder:
73101
case QuickWROOM_Marauder:
74102
submenu_set_header(submenu, "Choose Firmware:");
75103
submenu_add_item(
76104
submenu,
77105
"Marauder (has Evil Portal)",
78-
state > QuickWROOM ? QuickWROOM_Marauder : QuickBootWROOM_Marauder,
106+
state > QuickWROOM ? QuickWROOM_Marauder : QuickWROOMBoot_Marauder,
107+
esp_flasher_scene_quick_submenu_callback,
108+
app);
109+
break;
110+
case QuickS3Boot_Marauder:
111+
case QuickS3_Marauder:
112+
submenu_set_header(submenu, "Choose Firmware:");
113+
submenu_add_item(
114+
submenu,
115+
"Marauder (has Evil Portal)",
116+
state > QuickS3 ? QuickS3_Marauder : QuickS3Boot_Marauder,
79117
esp_flasher_scene_quick_submenu_callback,
80118
app);
81119
break;
@@ -97,49 +135,63 @@ bool esp_flasher_scene_quick_on_event(void* context, SceneManagerEvent event) {
97135
consumed = true;
98136

99137
bool enter_bootloader = false;
100-
const char* boot = NULL; // 0x1000
138+
bool s3 = false;
139+
const char* boot = NULL; // 0x1000 (or 0x0 on S3)
101140
const char* part = NULL; // 0x8000
102141
const char* app0 = NULL; // 0xE000
103142
const char* firm = NULL; // 0x10000
104143

105144
switch(event.event) {
106-
case QuickBootS2:
107-
case QuickBootWROOM:
145+
case QuickS2Boot:
146+
case QuickWROOMBoot:
147+
case QuickS3Boot:
108148
case QuickWROOM:
109149
case QuickS2:
150+
case QuickS3:
151+
// Select first item of submenu
110152
scene_manager_set_scene_state(
111153
app->scene_manager, EspFlasherSceneQuick, event.event + 1);
112154
scene_manager_next_scene(app->scene_manager, EspFlasherSceneQuick);
113155
return consumed;
114156

115-
case QuickBootS2_Marauder:
157+
case QuickS2Boot_Marauder:
116158
enter_bootloader = true;
117159
/* fallthrough */
118160
case QuickS2_Marauder:
119-
boot = APP_ASSETS_PATH("marauder/S2/esp32_marauder.ino.bootloader.bin");
161+
boot = APP_ASSETS_PATH("marauder/s2/esp32_marauder.ino.bootloader.bin");
120162
part = APP_ASSETS_PATH("marauder/esp32_marauder.ino.partitions.bin");
121163
app0 = APP_ASSETS_PATH("marauder/boot_app0.bin");
122-
firm = APP_ASSETS_PATH("marauder/S2/esp32_marauder.flipper.bin");
164+
firm = APP_ASSETS_PATH("marauder/s2/esp32_marauder.flipper.bin");
123165
break;
124166

125-
case QuickBootS2_Blackmagic:
167+
case QuickS2Boot_Blackmagic:
126168
enter_bootloader = true;
127169
/* fallthrough */
128170
case QuickS2_Blackmagic:
129-
boot = APP_ASSETS_PATH("blackmagic/bootloader.bin");
130-
part = APP_ASSETS_PATH("blackmagic/partition-table.bin");
131-
firm = APP_ASSETS_PATH("blackmagic/blackmagic.bin");
171+
boot = APP_ASSETS_PATH("blackmagic/s2/bootloader.bin");
172+
part = APP_ASSETS_PATH("blackmagic/s2/partition-table.bin");
173+
firm = APP_ASSETS_PATH("blackmagic/s2/blackmagic.bin");
132174
break;
133175

134-
case QuickBootWROOM_Marauder:
176+
case QuickWROOMBoot_Marauder:
135177
enter_bootloader = true;
136178
/* fallthrough */
137179
case QuickWROOM_Marauder:
138-
boot = APP_ASSETS_PATH("marauder/WROOM/esp32_marauder.ino.bootloader.bin");
180+
boot = APP_ASSETS_PATH("marauder/wroom/esp32_marauder.ino.bootloader.bin");
181+
part = APP_ASSETS_PATH("marauder/esp32_marauder.ino.partitions.bin");
182+
app0 = APP_ASSETS_PATH("marauder/boot_app0.bin");
183+
firm = APP_ASSETS_PATH("marauder/wroom/esp32_marauder.dev_board_pro.bin");
184+
break;
185+
186+
case QuickS3Boot_Marauder:
187+
enter_bootloader = true;
188+
/* fallthrough */
189+
case QuickS3_Marauder:
190+
s3 = true;
191+
boot = APP_ASSETS_PATH("marauder/s3/esp32_marauder.ino.bootloader.bin");
139192
part = APP_ASSETS_PATH("marauder/esp32_marauder.ino.partitions.bin");
140193
app0 = APP_ASSETS_PATH("marauder/boot_app0.bin");
141-
firm =
142-
APP_ASSETS_PATH("marauder/WROOM/esp32_marauder.dev_board_pro.bin");
194+
firm = APP_ASSETS_PATH("marauder/s3/esp32_marauder.multiboardS3.bin");
143195
break;
144196

145197
default:
@@ -157,6 +209,7 @@ bool esp_flasher_scene_quick_on_event(void* context, SceneManagerEvent event) {
157209
app->bin_file_path_app_b[0] = '\0';
158210
app->bin_file_path_custom[0] = '\0';
159211

212+
app->selected_flash_options[SelectedFlashS3Mode] = s3;
160213
if(boot) {
161214
app->selected_flash_options[SelectedFlashBoot] = true;
162215
strncpy(app->bin_file_path_boot, boot, sizeof(app->bin_file_path_boot));
@@ -181,14 +234,20 @@ bool esp_flasher_scene_quick_on_event(void* context, SceneManagerEvent event) {
181234
scene_manager_next_scene(app->scene_manager, EspFlasherSceneConsoleOutput);
182235
} else if(event.type == SceneManagerEventTypeBack) {
183236
uint32_t state = scene_manager_get_scene_state(app->scene_manager, EspFlasherSceneQuick);
184-
if(state > QuickS2)
237+
// Pressing back from submenu, check if in submenu, select corresponding item in quick flash menu
238+
if(state > QuickS3)
239+
state = QuickS3;
240+
else if(state > QuickS2)
185241
state = QuickS2;
186242
else if(state > QuickWROOM)
187243
state = QuickWROOM;
188-
else if(state > QuickBootWROOM)
189-
state = QuickBootWROOM;
190-
else if(state > QuickBootS2)
191-
state = QuickBootS2;
244+
else if(state > QuickS3Boot)
245+
state = QuickS3Boot;
246+
else if(state > QuickWROOMBoot)
247+
state = QuickWROOMBoot;
248+
else if(state > QuickS2Boot)
249+
state = QuickS2Boot;
250+
// If pressing back from quick flash menu (not submenu), state will not matter
192251
scene_manager_set_scene_state(app->scene_manager, EspFlasherSceneQuick, state);
193252
}
194253

0 commit comments

Comments
 (0)