mirror of
https://github.com/suchmememanyskill/TegraExplorer.git
synced 2025-02-16 21:45:36 +00:00
Ignore menu entries in entries count and include sd ejection detection
This commit is contained in:
parent
e4ae9d9d7c
commit
bfcdc2ffd5
9 changed files with 45 additions and 27 deletions
|
@ -45,20 +45,11 @@
|
||||||
sdmmc_t sd_sdmmc;
|
sdmmc_t sd_sdmmc;
|
||||||
sdmmc_storage_t sd_storage;
|
sdmmc_storage_t sd_storage;
|
||||||
__attribute__ ((aligned (16))) FATFS sd_fs;
|
__attribute__ ((aligned (16))) FATFS sd_fs;
|
||||||
static bool sd_mounted, sd_inited;
|
bool sd_mounted, sd_inited;
|
||||||
volatile nyx_storage_t *nyx_str = (nyx_storage_t *)NYX_STORAGE_ADDR;
|
volatile nyx_storage_t *nyx_str = (nyx_storage_t *)NYX_STORAGE_ADDR;
|
||||||
hekate_config h_cfg;
|
hekate_config h_cfg;
|
||||||
boot_cfg_t __attribute__((section ("._boot_cfg"))) b_cfg;
|
boot_cfg_t __attribute__((section ("._boot_cfg"))) b_cfg;
|
||||||
|
|
||||||
bool return_sd_mounted(int value){
|
|
||||||
switch(value){
|
|
||||||
case 10:
|
|
||||||
return sd_inited;
|
|
||||||
default:
|
|
||||||
return sd_mounted;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool sd_mount()
|
bool sd_mount()
|
||||||
{
|
{
|
||||||
if (sd_mounted)
|
if (sd_mounted)
|
||||||
|
|
|
@ -19,7 +19,8 @@ enum utils_err_codes_te_call {
|
||||||
ERR_MEM_ALLOC_FAILED,
|
ERR_MEM_ALLOC_FAILED,
|
||||||
ERR_EMMC_READ_FAILED,
|
ERR_EMMC_READ_FAILED,
|
||||||
ERR_EMMC_WRITE_FAILED,
|
ERR_EMMC_WRITE_FAILED,
|
||||||
ERR_FILE_TOO_BIG_FOR_DEST
|
ERR_FILE_TOO_BIG_FOR_DEST,
|
||||||
|
ERR_SD_EJECTED
|
||||||
};
|
};
|
||||||
|
|
||||||
extern const char *utils_err_codes_te[];
|
extern const char *utils_err_codes_te[];
|
||||||
|
|
|
@ -48,7 +48,8 @@ const char *utils_err_codes_te[] = { // these start at 50
|
||||||
"MEM ALLOC FAILED",
|
"MEM ALLOC FAILED",
|
||||||
"EMMC READ FAILED",
|
"EMMC READ FAILED",
|
||||||
"EMMC WRITE FAILED",
|
"EMMC WRITE FAILED",
|
||||||
"FILE TOO BIG FOR DEST"
|
"FILE TOO BIG FOR DEST",
|
||||||
|
"SD EJECTED"
|
||||||
};
|
};
|
||||||
|
|
||||||
const char *pkg2names[] = {
|
const char *pkg2names[] = {
|
||||||
|
|
|
@ -179,6 +179,8 @@ int filemenu(menu_entry file){
|
||||||
case FILE_RESTOREBIS:
|
case FILE_RESTOREBIS:
|
||||||
restore_bis_using_file(fsutil_getnextloc(currentpath, file.name), SYSMMC);
|
restore_bis_using_file(fsutil_getnextloc(currentpath, file.name), SYSMMC);
|
||||||
break;
|
break;
|
||||||
|
case -1:
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -66,6 +66,7 @@ int foldermenu(){
|
||||||
|
|
||||||
switch (res){
|
switch (res){
|
||||||
case DIR_EXITFOLDER:
|
case DIR_EXITFOLDER:
|
||||||
|
case -1:
|
||||||
return -1;
|
return -1;
|
||||||
case DIR_COPYFOLDER:
|
case DIR_COPYFOLDER:
|
||||||
fsreader_writeclipboard(currentpath, OPERATIONCOPY | ISDIR);
|
fsreader_writeclipboard(currentpath, OPERATIONCOPY | ISDIR);
|
||||||
|
|
|
@ -54,6 +54,8 @@ void fileexplorer(const char *startpath, int type){
|
||||||
if (foldermenu())
|
if (foldermenu())
|
||||||
return;
|
return;
|
||||||
break;
|
break;
|
||||||
|
case -1:
|
||||||
|
return;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if(fsreader_files[res].property & ISDIR){
|
if(fsreader_files[res].property & ISDIR){
|
||||||
|
@ -61,7 +63,8 @@ void fileexplorer(const char *startpath, int type){
|
||||||
fsreader_readfolder(currentpath);
|
fsreader_readfolder(currentpath);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
filemenu(fsreader_files[res]);
|
if(filemenu(fsreader_files[res]))
|
||||||
|
return;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,7 +54,7 @@ int gfx_errDisplay(char *src_func, int err, int loc){
|
||||||
|
|
||||||
if (err < 15)
|
if (err < 15)
|
||||||
gfx_printf("Desc: %s\n", utils_err_codes[err]);
|
gfx_printf("Desc: %s\n", utils_err_codes[err]);
|
||||||
else if (err >= ERR_SAME_LOC && err <= ERR_FILE_TOO_BIG_FOR_DEST)
|
else if (err >= ERR_SAME_LOC && err <= ERR_SD_EJECTED)
|
||||||
gfx_printf("Desc: %s\n", utils_err_codes_te[err - 50]);
|
gfx_printf("Desc: %s\n", utils_err_codes_te[err - 50]);
|
||||||
|
|
||||||
if (loc)
|
if (loc)
|
||||||
|
|
|
@ -5,6 +5,11 @@
|
||||||
#include "../common/common.h"
|
#include "../common/common.h"
|
||||||
#include "../../utils/util.h"
|
#include "../../utils/util.h"
|
||||||
#include "../../mem/minerva.h"
|
#include "../../mem/minerva.h"
|
||||||
|
#include "../../soc/gpio.h"
|
||||||
|
#include "gfxutils.h"
|
||||||
|
|
||||||
|
extern void sd_unmount();
|
||||||
|
extern bool sd_inited;
|
||||||
|
|
||||||
void _printentry(menu_entry entry, bool highlighted, bool refresh){
|
void _printentry(menu_entry entry, bool highlighted, bool refresh){
|
||||||
int size;
|
int size;
|
||||||
|
@ -54,17 +59,25 @@ void _printentry(menu_entry entry, bool highlighted, bool refresh){
|
||||||
}
|
}
|
||||||
|
|
||||||
int menu_make(menu_entry *entries, int amount, char *toptext){
|
int menu_make(menu_entry *entries, int amount, char *toptext){
|
||||||
int currentpos = 0, res = 0, offset = 0, delay = 300, minscreen = 0, maxscreen = 59;
|
int currentpos = 0, res = 0, offset = 0, delay = 300, minscreen = 0, maxscreen = 59, calculatedamount = 0;
|
||||||
u32 scrolltimer, timer;
|
u32 scrolltimer, timer;
|
||||||
bool refresh = false;
|
bool refresh = false;
|
||||||
|
|
||||||
gfx_clearscreen();
|
gfx_clearscreen();
|
||||||
|
|
||||||
|
for (int i = 0; i < amount; i++)
|
||||||
|
if (!(entries[i].property & ISMENU))
|
||||||
|
calculatedamount++;
|
||||||
|
|
||||||
gfx_con_setpos(512, 0);
|
gfx_con_setpos(512, 0);
|
||||||
|
if (calculatedamount){
|
||||||
SWAPCOLOR(COLOR_DEFAULT);
|
SWAPCOLOR(COLOR_DEFAULT);
|
||||||
SWAPBGCOLOR(COLOR_WHITE);
|
SWAPBGCOLOR(COLOR_WHITE);
|
||||||
gfx_printf("%3d entries\n", amount);
|
gfx_printf("%3d entries\n", amount);
|
||||||
RESETCOLOR;
|
RESETCOLOR;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
gfx_printf("\n");
|
||||||
|
|
||||||
SWAPCOLOR(COLOR_GREEN);
|
SWAPCOLOR(COLOR_GREEN);
|
||||||
gfx_printlength(42, toptext);
|
gfx_printlength(42, toptext);
|
||||||
|
@ -108,6 +121,14 @@ int menu_make(menu_entry *entries, int amount, char *toptext){
|
||||||
|
|
||||||
res = 0;
|
res = 0;
|
||||||
while (!res){
|
while (!res){
|
||||||
|
if (!res){
|
||||||
|
if (sd_inited && !!gpio_read(GPIO_PORT_Z, GPIO_PIN_1)){
|
||||||
|
gfx_errDisplay("menu", ERR_SD_EJECTED, 0);
|
||||||
|
sd_unmount();
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
res = btn_read();
|
res = btn_read();
|
||||||
|
|
||||||
if (!res)
|
if (!res)
|
||||||
|
|
|
@ -19,8 +19,9 @@
|
||||||
|
|
||||||
extern bool sd_mount();
|
extern bool sd_mount();
|
||||||
extern void sd_unmount();
|
extern void sd_unmount();
|
||||||
extern bool return_sd_mounted(int value);
|
|
||||||
extern int launch_payload(char *path);
|
extern int launch_payload(char *path);
|
||||||
|
extern bool sd_inited;
|
||||||
|
extern bool sd_mounted;
|
||||||
|
|
||||||
int res = 0, meter = 0;
|
int res = 0, meter = 0;
|
||||||
|
|
||||||
|
@ -47,10 +48,7 @@ void MainMenu_EMUMMC(){
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainMenu_MountSD(){
|
void MainMenu_MountSD(){
|
||||||
if (return_sd_mounted(1))
|
(sd_mounted) ? sd_unmount() : sd_mount();
|
||||||
sd_unmount();
|
|
||||||
else
|
|
||||||
sd_mount();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainMenu_Tools(){
|
void MainMenu_Tools(){
|
||||||
|
@ -100,7 +98,7 @@ void MainMenu_Credits(){
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainMenu_Exit(){
|
void MainMenu_Exit(){
|
||||||
if (return_sd_mounted(1)){
|
if (sd_mounted){
|
||||||
SETBIT(mainmenu_shutdown[4].property, ISHIDE, !fsutil_checkfile("/bootloader/update.bin"));
|
SETBIT(mainmenu_shutdown[4].property, ISHIDE, !fsutil_checkfile("/bootloader/update.bin"));
|
||||||
SETBIT(mainmenu_shutdown[5].property, ISHIDE, !fsutil_checkfile("/atmosphere/reboot_payload.bin"));
|
SETBIT(mainmenu_shutdown[5].property, ISHIDE, !fsutil_checkfile("/atmosphere/reboot_payload.bin"));
|
||||||
}
|
}
|
||||||
|
@ -169,7 +167,7 @@ void te_main(){
|
||||||
while (1){
|
while (1){
|
||||||
//fillmainmenu();
|
//fillmainmenu();
|
||||||
|
|
||||||
setter = return_sd_mounted(1);
|
setter = sd_mounted;
|
||||||
|
|
||||||
if (emu_cfg.enabled){
|
if (emu_cfg.enabled){
|
||||||
for (int i = 4; i <= 6; i++)
|
for (int i = 4; i <= 6; i++)
|
||||||
|
@ -179,7 +177,7 @@ void te_main(){
|
||||||
SETBIT(mainmenu_main[0].property, ISHIDE, !setter);
|
SETBIT(mainmenu_main[0].property, ISHIDE, !setter);
|
||||||
mainmenu_main[7].name = (menu_sd_states[!setter]);
|
mainmenu_main[7].name = (menu_sd_states[!setter]);
|
||||||
|
|
||||||
setter = return_sd_mounted(10);
|
setter = sd_inited;
|
||||||
SETBIT(mainmenu_main[9].property, ISHIDE, !setter);
|
SETBIT(mainmenu_main[9].property, ISHIDE, !setter);
|
||||||
|
|
||||||
res = menu_make(mainmenu_main, 12, "-- Main Menu --") + 1;
|
res = menu_make(mainmenu_main, 12, "-- Main Menu --") + 1;
|
||||||
|
|
Loading…
Add table
Reference in a new issue