From 12802bf3711c8c3ded7d300bea319dbfb2cf07f6 Mon Sep 17 00:00:00 2001 From: "Such Meme, Many Skill" Date: Fri, 20 Dec 2019 21:00:47 +0100 Subject: [PATCH] Make the user able to format without a valid partition --- source/main.c | 14 +++++++++++++- source/tegraexplorer/te.c | 17 ++++++----------- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/source/main.c b/source/main.c index 601c2ca..7f46e84 100644 --- a/source/main.c +++ b/source/main.c @@ -45,11 +45,20 @@ sdmmc_t sd_sdmmc; sdmmc_storage_t sd_storage; __attribute__ ((aligned (16))) FATFS sd_fs; -static bool sd_mounted; +static bool sd_mounted, sd_inited; volatile nyx_storage_t *nyx_str = (nyx_storage_t *)NYX_STORAGE_ADDR; hekate_config h_cfg; boot_cfg_t __attribute__((section ("._boot_cfg"))) b_cfg; +bool return_sd_mounted(int value){ + switch(value){ + case 1: + return sd_mounted; + case 5: + return sd_inited; + } +} + bool sd_mount() { if (sd_mounted) @@ -58,9 +67,11 @@ bool sd_mount() if (!sdmmc_storage_init_sd(&sd_storage, &sd_sdmmc, SDMMC_1, SDMMC_BUS_WIDTH_4, 11)) { EPRINTF("Failed to init SD card.\nMake sure that it is inserted.\nOr that SD reader is properly seated!"); + sd_inited = false; } else { + sd_inited = true; int res = 0; res = f_mount(&sd_fs, "sd:", 1); if (res == FR_OK) @@ -84,6 +95,7 @@ void sd_unmount() f_mount(NULL, "sd:", 1); sdmmc_storage_end(&sd_storage); sd_mounted = false; + sd_inited = false; } } diff --git a/source/tegraexplorer/te.c b/source/tegraexplorer/te.c index a36d514..9628411 100644 --- a/source/tegraexplorer/te.c +++ b/source/tegraexplorer/te.c @@ -10,8 +10,8 @@ extern bool sd_mount(); extern void sd_unmount(); +extern bool return_sd_mounted(int value); extern int launch_payload(char *path); -bool sd_mounted; menu_item mainmenu[MAINMENU_AMOUNT] = { {"[SD:/] SD CARD", COLOR_GREEN, SD_CARD, 1}, @@ -55,13 +55,13 @@ void fillmainmenu(){ switch (i + 1) { case 1: case 5: - if (sd_mounted) + if (return_sd_mounted(i + 1)) mainmenu[i].property = 1; else mainmenu[i].property = -1; break; case 3: - if (sd_mounted){ + if (return_sd_mounted(1)){ mainmenu[i].property = 2; strcpy(mainmenu[i].name, "\nUnmount SD"); } @@ -84,8 +84,6 @@ void te_main(){ else { mount_emmc("SYSTEM", 2); } - - sd_mounted = sd_mount(); while (1){ fillmainmenu(); @@ -106,12 +104,10 @@ void te_main(){ break; */ case MOUNT_SD: - if (sd_mounted){ - sd_mounted = false; + if (return_sd_mounted(1)) sd_unmount(); - } else - sd_mounted = sd_mount(); + sd_mount(); break; @@ -138,7 +134,6 @@ void te_main(){ if(makewaitmenu("Are you sure you want to format your sd?\nThis will delete everything on your SD card\nThis action is irreversible!\n\nPress Vol+/- to cancel\n", "Press Power to continue", 10)){ if (format(res)){ sd_unmount(); - sd_mounted = false; } } } @@ -150,7 +145,7 @@ void te_main(){ break; case EXIT: - if (sd_mounted){ + if (return_sd_mounted(1)){ if (checkfile("/bootloader/update.bin")) shutdownmenu[5].property = 1; else