Skip to content

Commit

Permalink
Squashed 'applications/external/' changes from 2ea37d003cf..1f6ef7e4d68
Browse files Browse the repository at this point in the history
1f6ef7e4d68 ESP Flasher: Update to marauder v0.13.10, fix naming
2b6e2e45096 Merge branch 'esp-flasher-s3-airtag-wardriver' of https://github.com/Next-Flip/Momentum-Apps into mntm-dev
b4d210a5d2f ESP Flasher: Test S3 bins + AirTag scan + S2 S3 Wardriver

git-subtree-dir: applications/external
git-subtree-split: 1f6ef7e4d68d77090d7c9927e7ede7c7bcf714bf
  • Loading branch information
RogueMaster committed May 4, 2024
1 parent 3e4203a commit 82b0c93
Show file tree
Hide file tree
Showing 19 changed files with 175 additions and 47 deletions.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
222 changes: 175 additions & 47 deletions esp_flasher/scenes/esp_flasher_scene_quick.c
Original file line number Diff line number Diff line change
@@ -1,18 +1,38 @@
#include "../esp_flasher_app_i.h"

// DO NOT use as an example, you should split into different scene files for each screen
// To keep in a single file, this is setup in an unusual and confusing way
// You can find more info in comments throughout

// There's one entry for each item on quick flash menu
// Following each one, there are its submenu items
// Not all boards support automatic bootmode, so here we separate into those that do and don't
enum QuickState {
QuickStart,
QuickS2DevXeon,
QuickS2DevXeon_Marauder,
QuickS2DevXeon_Blackmagic,
QuickWROOMMultiFucc,
QuickWROOMMultiFucc_Marauder,
QuickWROOMMultiFucc_Wardriver,
QuickS2Boot,
QuickS2Boot_Marauder,
QuickS2Boot_Wardriver,
QuickS2Boot_Blackmagic,
QuickWROOMBoot,
QuickWROOMBoot_Marauder,
QuickWROOMBoot_Wardriver,
QuickWROOMBoot_Airtag,
QuickS3Boot,
QuickS3Boot_Marauder,
QuickS3Boot_Wardriver,
QuickS3Boot_Airtag,
QuickWROOM,
QuickWROOM_Marauder,
QuickWROOM_Wardriver,
QuickWROOM_Airtag,
QuickS2,
QuickS2_Marauder,
QuickS2_Wardriver,
QuickS2_Blackmagic,
QuickS3,
QuickS3_Marauder,
QuickS3_Wardriver,
QuickS3_Airtag,
};

void esp_flasher_scene_quick_submenu_callback(void* context, uint32_t index) {
Expand All @@ -28,25 +48,32 @@ void esp_flasher_scene_quick_on_enter(void* context) {
Submenu* submenu = app->submenu;
uint32_t state = scene_manager_get_scene_state(app->scene_manager, EspFlasherSceneQuick);

// State indicates the currently selected (or activated) item
// So map quick flash menu values to show the quick flash menu
// And map submenu values to show corresponding submenu
switch(state) {
case QuickStart:
case QuickS2DevXeon:
case QuickWROOMMultiFucc:
case QuickS2Boot:
case QuickWROOMBoot:
case QuickS3Boot:
case QuickWROOM:
case QuickS2:
case QuickS3:
submenu_set_header(submenu, "Choose Board:");
submenu_add_item(
submenu,
"Flipper WiFi Board / Xeon",
QuickS2DevXeon,
"WiFi Dev / RL S2 / Xeon",
QuickS2Boot,
esp_flasher_scene_quick_submenu_callback,
app);
submenu_add_item(
submenu,
"Multi-Fucc",
QuickWROOMMultiFucc,
"SCE Multi-Fucc",
QuickWROOMBoot,
esp_flasher_scene_quick_submenu_callback,
app);
submenu_add_item(
submenu, "RL ESP32-S3", QuickS3Boot, esp_flasher_scene_quick_submenu_callback, app);
submenu_add_item(
submenu,
"Other ESP32-WROOM",
Expand All @@ -55,43 +82,86 @@ void esp_flasher_scene_quick_on_enter(void* context) {
app);
submenu_add_item(
submenu, "Other ESP32-S2", QuickS2, esp_flasher_scene_quick_submenu_callback, app);
submenu_add_item(
submenu, "Other ESP32-S3", QuickS3, esp_flasher_scene_quick_submenu_callback, app);
break;
case QuickS2DevXeon_Marauder:
case QuickS2DevXeon_Blackmagic:
case QuickS2Boot_Marauder:
case QuickS2Boot_Wardriver:
case QuickS2Boot_Blackmagic:
case QuickS2_Marauder:
case QuickS2_Wardriver:
case QuickS2_Blackmagic:
submenu_set_header(submenu, "Choose Firmware:");
submenu_add_item(
submenu,
"Marauder (has Evil Portal)",
state > QuickS2 ? QuickS2_Marauder : QuickS2DevXeon_Marauder,
state > QuickS2 ? QuickS2_Marauder : QuickS2Boot_Marauder,
esp_flasher_scene_quick_submenu_callback,
app);
submenu_add_item(
submenu,
"Wardriver",
state > QuickS2 ? QuickS2_Wardriver : QuickS2Boot_Wardriver,
esp_flasher_scene_quick_submenu_callback,
app);
submenu_add_item(
submenu,
"Black Magic",
state > QuickS2 ? QuickS2_Blackmagic : QuickS2DevXeon_Blackmagic,
state > QuickS2 ? QuickS2_Blackmagic : QuickS2Boot_Blackmagic,
esp_flasher_scene_quick_submenu_callback,
app);
break;
case QuickWROOMMultiFucc_Marauder:
case QuickWROOMMultiFucc_Wardriver:
case QuickWROOMBoot_Marauder:
case QuickWROOMBoot_Wardriver:
case QuickWROOMBoot_Airtag:
case QuickWROOM_Marauder:
case QuickWROOM_Wardriver:
case QuickWROOM_Airtag:
submenu_set_header(submenu, "Choose Firmware:");
submenu_add_item(
submenu,
"Marauder (has Evil Portal)",
state > QuickWROOM ? QuickWROOM_Marauder : QuickWROOMMultiFucc_Marauder,
state > QuickWROOM ? QuickWROOM_Marauder : QuickWROOMBoot_Marauder,
esp_flasher_scene_quick_submenu_callback,
app);
submenu_add_item(
submenu,
"Wardriver",
state > QuickWROOM ? QuickWROOM_Wardriver : QuickWROOMBoot_Wardriver,
esp_flasher_scene_quick_submenu_callback,
app);
submenu_add_item(
submenu,
"AirTag Scanner",
state > QuickWROOM ? QuickWROOM_Airtag : QuickWROOMBoot_Airtag,
esp_flasher_scene_quick_submenu_callback,
app);
break;
case QuickS3Boot_Marauder:
case QuickS3Boot_Wardriver:
case QuickS3Boot_Airtag:
case QuickS3_Marauder:
case QuickS3_Wardriver:
case QuickS3_Airtag:
submenu_set_header(submenu, "Choose Firmware:");
submenu_add_item(
submenu,
"Marauder (has Evil Portal)",
state > QuickS3 ? QuickS3_Marauder : QuickS3Boot_Marauder,
esp_flasher_scene_quick_submenu_callback,
app);
submenu_add_item(
submenu,
"Wardriver",
state > QuickS3 ? QuickS3_Wardriver : QuickS3Boot_Wardriver,
esp_flasher_scene_quick_submenu_callback,
app);
submenu_add_item(
submenu,
"AirTag Scanner",
state > QuickS3 ? QuickS3_Airtag : QuickS3Boot_Airtag,
esp_flasher_scene_quick_submenu_callback,
app);
if(state < QuickWROOM) {
submenu_add_item(
submenu,
"Wardriver",
QuickWROOMMultiFucc_Wardriver,
esp_flasher_scene_quick_submenu_callback,
app);
}
break;
default:
break;
Expand All @@ -111,53 +181,104 @@ bool esp_flasher_scene_quick_on_event(void* context, SceneManagerEvent event) {
consumed = true;

bool enter_bootloader = false;
const char* boot = NULL; // 0x1000
bool s3 = false;
const char* boot = NULL; // 0x1000 (or 0x0 on S3)
const char* part = NULL; // 0x8000
const char* app0 = NULL; // 0xE000
const char* firm = NULL; // 0x10000

switch(event.event) {
case QuickS2DevXeon:
case QuickWROOMMultiFucc:
case QuickS2Boot:
case QuickWROOMBoot:
case QuickS3Boot:
case QuickWROOM:
case QuickS2:
case QuickS3:
// Select first item of submenu
scene_manager_set_scene_state(
app->scene_manager, EspFlasherSceneQuick, event.event + 1);
scene_manager_next_scene(app->scene_manager, EspFlasherSceneQuick);
return consumed;

case QuickS2DevXeon_Marauder:
case QuickS2Boot_Marauder:
enter_bootloader = true;
/* fallthrough */
case QuickS2_Marauder:
boot = APP_DATA_PATH("assets/marauder/S2/esp32_marauder.ino.bootloader.bin");
boot = APP_DATA_PATH("assets/marauder/s2/esp32_marauder.ino.bootloader.bin");
part = APP_DATA_PATH("assets/marauder/esp32_marauder.ino.partitions.bin");
app0 = APP_DATA_PATH("assets/marauder/boot_app0.bin");
firm = APP_DATA_PATH("assets/marauder/S2/esp32_marauder.flipper.bin");
firm = APP_DATA_PATH("assets/marauder/s2/esp32_marauder.flipper.bin");
break;

case QuickS2Boot_Wardriver:
enter_bootloader = true;
/* fallthrough */
case QuickS2_Wardriver:
boot = APP_DATA_PATH("assets/wardriver/f0-wardrive-s2.bin");
break;

case QuickS2DevXeon_Blackmagic:
case QuickS2Boot_Blackmagic:
enter_bootloader = true;
/* fallthrough */
case QuickS2_Blackmagic:
boot = APP_DATA_PATH("assets/blackmagic/bootloader.bin");
part = APP_DATA_PATH("assets/blackmagic/partition-table.bin");
firm = APP_DATA_PATH("assets/blackmagic/blackmagic.bin");
boot = APP_DATA_PATH("assets/blackmagic/s2/bootloader.bin");
part = APP_DATA_PATH("assets/blackmagic/s2/partition-table.bin");
firm = APP_DATA_PATH("assets/blackmagic/s2/blackmagic.bin");
break;

case QuickWROOMMultiFucc_Marauder:
case QuickWROOMBoot_Marauder:
enter_bootloader = true;
/* fallthrough */
case QuickWROOM_Marauder:
boot = APP_DATA_PATH("assets/marauder/WROOM/esp32_marauder.ino.bootloader.bin");
boot = APP_DATA_PATH("assets/marauder/wroom/esp32_marauder.ino.bootloader.bin");
part = APP_DATA_PATH("assets/marauder/esp32_marauder.ino.partitions.bin");
app0 = APP_DATA_PATH("assets/marauder/boot_app0.bin");
firm = APP_DATA_PATH("assets/marauder/WROOM/esp32_marauder.dev_board_pro.bin");
firm = APP_DATA_PATH("assets/marauder/wroom/esp32_marauder.dev_board_pro.bin");
break;

case QuickWROOMMultiFucc_Wardriver:
case QuickWROOMBoot_Wardriver:
enter_bootloader = true;
boot = APP_DATA_PATH("assets/wardriver/f0-wardrive-wroom_2.bin");
/* fallthrough */
case QuickWROOM_Wardriver:
boot = APP_DATA_PATH("assets/wardriver/f0-wardrive-wroom.bin");
break;

case QuickWROOMBoot_Airtag:
enter_bootloader = true;
/* fallthrough */
case QuickWROOM_Airtag:
boot = APP_DATA_PATH("assets/airtag/wroom/airtag_scanner.ino.bootloader.bin");
part = APP_DATA_PATH("assets/airtag/airtag_scanner.ino.partitions.bin");
firm = APP_DATA_PATH("assets/airtag/wroom/airtag_scanner.ino.bin");
break;

case QuickS3Boot_Marauder:
enter_bootloader = true;
/* fallthrough */
case QuickS3_Marauder:
s3 = true;
boot = APP_DATA_PATH("assets/marauder/s3/esp32_marauder.ino.bootloader.bin");
part = APP_DATA_PATH("assets/marauder/esp32_marauder.ino.partitions.bin");
app0 = APP_DATA_PATH("assets/marauder/boot_app0.bin");
firm = APP_DATA_PATH("assets/marauder/s3/esp32_marauder.multiboardS3.bin");
break;

case QuickS3Boot_Wardriver:
enter_bootloader = true;
/* fallthrough */
case QuickS3_Wardriver:
s3 = true;
boot = APP_DATA_PATH("assets/wardriver/f0-wardrive-s3.bin");
break;

case QuickS3Boot_Airtag:
enter_bootloader = true;
/* fallthrough */
case QuickS3_Airtag:
s3 = true;
boot = APP_DATA_PATH("assets/airtag/s3/airtag_scanner.ino.bootloader.bin");
part = APP_DATA_PATH("assets/airtag/airtag_scanner.ino.partitions.bin");
firm = APP_DATA_PATH("assets/airtag/s3/airtag_scanner.ino.bin");
break;

default:
Expand All @@ -175,6 +296,7 @@ bool esp_flasher_scene_quick_on_event(void* context, SceneManagerEvent event) {
app->bin_file_path_app_b[0] = '\0';
app->bin_file_path_custom[0] = '\0';

app->selected_flash_options[SelectedFlashS3Mode] = s3;
if(boot) {
app->selected_flash_options[SelectedFlashBoot] = true;
strncpy(app->bin_file_path_boot, boot, sizeof(app->bin_file_path_boot));
Expand All @@ -199,14 +321,20 @@ bool esp_flasher_scene_quick_on_event(void* context, SceneManagerEvent event) {
scene_manager_next_scene(app->scene_manager, EspFlasherSceneConsoleOutput);
} else if(event.type == SceneManagerEventTypeBack) {
uint32_t state = scene_manager_get_scene_state(app->scene_manager, EspFlasherSceneQuick);
if(state > QuickS2)
// Pressing back from submenu, check if in submenu, select corresponding item in quick flash menu
if(state > QuickS3)
state = QuickS3;
else if(state > QuickS2)
state = QuickS2;
else if(state > QuickWROOM)
state = QuickWROOM;
else if(state > QuickWROOMMultiFucc)
state = QuickWROOMMultiFucc;
else if(state > QuickS2DevXeon)
state = QuickS2DevXeon;
else if(state > QuickS3Boot)
state = QuickS3Boot;
else if(state > QuickWROOMBoot)
state = QuickWROOMBoot;
else if(state > QuickS2Boot)
state = QuickS2Boot;
// If pressing back from quick flash menu (not submenu), state will not matter
scene_manager_set_scene_state(app->scene_manager, EspFlasherSceneQuick, state);
}

Expand Down

0 comments on commit 82b0c93

Please sign in to comment.