Skip to content

Commit b679618

Browse files
committed
rg_gui: Added a "System Information" submenu to the about dialog
It shows basic hardware status. Most of it was already shown in the debug menu, but that one is meant to be nicer and more concise.
1 parent e1f3176 commit b679618

File tree

2 files changed

+90
-47
lines changed

2 files changed

+90
-47
lines changed

components/retro-go/rg_gui.c

Lines changed: 87 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1098,9 +1098,54 @@ void rg_gui_options_menu(void)
10981098
rg_audio_set_mute(false);
10991099
}
11001100

1101+
void rg_gui_sysinfo_menu(void)
1102+
{
1103+
char screen_str[32], network_str[64], memory_str[32];
1104+
char storage_str[32], localtime_str[32], uptime[32];
1105+
1106+
const rg_gui_option_t options[] = {
1107+
{0, "Console", RG_TARGET_NAME, 1, NULL},
1108+
{0, "Screen", screen_str, 1, NULL},
1109+
{0, "Memory", memory_str, 1, NULL},
1110+
{0, "Network", network_str, 1, NULL},
1111+
// {0, "Storage", storage_str, 1, NULL},
1112+
{0, "RTC", localtime_str, 1, NULL},
1113+
{0, "Uptime", uptime, 1, NULL},
1114+
RG_DIALOG_SEPARATOR,
1115+
{0, "Close", NULL, 1, NULL},
1116+
RG_DIALOG_CHOICE_LAST
1117+
};
1118+
1119+
const rg_display_t *display = rg_display_get_info();
1120+
rg_stats_t stats = rg_system_get_counters();
1121+
time_t now = time(NULL);
1122+
1123+
snprintf(screen_str, 32, "%dx%d (%d)", display->screen.width, display->screen.height, display->screen.format);
1124+
snprintf(memory_str, 32, "%dKB + %dKB", stats.totalMemoryInt / 1024, stats.totalMemoryExt / 1024);
1125+
snprintf(uptime, 32, "%ds", (int)(rg_system_timer() / 1000000));
1126+
snprintf(storage_str, 32, "%s", "N/A");
1127+
strftime(localtime_str, 32, "%F %T", localtime(&now));
1128+
1129+
#ifdef RG_ENABLE_NETWORKING
1130+
rg_network_t net = rg_network_get_info();
1131+
if (net.state == RG_NETWORK_CONNECTED)
1132+
snprintf(network_str, 64, "%s\n%s", net.name, net.ip_addr);
1133+
else if (net.state == RG_NETWORK_CONNECTING)
1134+
snprintf(network_str, 64, "%s\n%s", net.name, "connecting...");
1135+
else if (net.name[0])
1136+
snprintf(network_str, 64, "%s\n%s", net.name, "disconnected");
1137+
else
1138+
snprintf(network_str, 64, "%s", "disconnected");
1139+
#else
1140+
strcpy(network_str, "No adapter");
1141+
#endif
1142+
1143+
rg_gui_dialog("System Information", options, -1);
1144+
}
1145+
11011146
void rg_gui_about_menu(const rg_gui_option_t *extra_options)
11021147
{
1103-
char build_ver[32], build_date[32], build_user[32], network_str[64];
1148+
char build_ver[32], build_date[32], build_user[32];
11041149

11051150
size_t extra_options_count = get_dialog_items_count(extra_options);
11061151

@@ -1110,17 +1155,12 @@ void rg_gui_about_menu(const rg_gui_option_t *extra_options)
11101155
*opt++ = (rg_gui_option_t){0, "Version", build_ver, 1, NULL};
11111156
*opt++ = (rg_gui_option_t){0, "Date", build_date, 1, NULL};
11121157
*opt++ = (rg_gui_option_t){0, "By", build_user, 1, NULL};
1113-
#ifdef RG_ENABLE_NETWORKING
1114-
*opt++ = (rg_gui_option_t){0, "Network", network_str, 1, NULL};
1115-
#endif
11161158
*opt++ = (rg_gui_option_t)RG_DIALOG_SEPARATOR;
1159+
*opt++ = (rg_gui_option_t){1000, "System information", NULL, 1, NULL};
11171160
for (size_t i = 0; i < extra_options_count; i++)
11181161
*opt++ = extra_options[i];
1119-
*opt++ = (rg_gui_option_t){1000, "Reboot to firmware", NULL, 1, NULL};
11201162
*opt++ = (rg_gui_option_t){2000, "Reset settings", NULL, 1, NULL};
1121-
*opt++ = (rg_gui_option_t){3000, "Clear cache", NULL, 1, NULL};
1122-
*opt++ = (rg_gui_option_t){4000, "Debug", NULL, 1, NULL};
1123-
*opt++ = (rg_gui_option_t){0000, "Close", NULL, 1, NULL};
1163+
*opt++ = (rg_gui_option_t){3000, "Debug", NULL, 1, NULL};
11241164
*opt++ = (rg_gui_option_t)RG_DIALOG_CHOICE_LAST;
11251165

11261166
const rg_app_t *app = rg_system_get_app();
@@ -1139,39 +1179,28 @@ void rg_gui_about_menu(const rg_gui_option_t *extra_options)
11391179
strcat(build_ver, ")");
11401180
}
11411181

1142-
rg_network_t net = rg_network_get_info();
1143-
if (net.state == RG_NETWORK_CONNECTED)
1144-
snprintf(network_str, 64, "%s\n%s", net.name, net.ip_addr);
1145-
else if (net.state == RG_NETWORK_CONNECTING)
1146-
snprintf(network_str, 64, "%s\n%s", net.name, "connecting...");
1147-
else if (net.name[0])
1148-
snprintf(network_str, 64, "%s\n%s", net.name, "disconnected");
1149-
else
1150-
snprintf(network_str, 64, "%s", "disconnected");
1151-
1152-
int sel = rg_gui_dialog("Retro-Go", options, -1);
1153-
1154-
rg_settings_commit();
1155-
rg_system_save_time();
1156-
1157-
switch (sel)
1182+
while (true)
11581183
{
1159-
case 1000:
1160-
rg_system_switch_app(RG_APP_FACTORY, RG_APP_FACTORY, 0, 0);
1161-
break;
1162-
case 2000:
1163-
if (rg_gui_confirm("Reset all settings?", NULL, false)) {
1164-
rg_settings_reset();
1165-
rg_system_restart();
1166-
}
1167-
break;
1168-
case 3000:
1169-
rg_storage_delete(RG_BASE_PATH_CACHE);
1170-
rg_system_restart();
1171-
break;
1172-
case 4000:
1173-
rg_gui_debug_menu(NULL);
1174-
break;
1184+
switch (rg_gui_dialog("Retro-Go", options, 4))
1185+
{
1186+
case 1000:
1187+
rg_gui_sysinfo_menu();
1188+
break;
1189+
case 2000:
1190+
if (rg_gui_confirm("Reset all settings?", NULL, false)) {
1191+
rg_storage_delete(RG_BASE_PATH_CACHE);
1192+
rg_settings_reset();
1193+
rg_system_restart();
1194+
return;
1195+
}
1196+
break;
1197+
case 3000:
1198+
rg_gui_debug_menu(NULL);
1199+
break;
1200+
default:
1201+
return;
1202+
}
1203+
rg_system_event(RG_EVENT_REDRAW, NULL);
11751204
}
11761205
}
11771206

@@ -1192,10 +1221,12 @@ void rg_gui_debug_menu(const rg_gui_option_t *extra_options)
11921221
{0, "Timezone ", timezone, 1, NULL},
11931222
{0, "Uptime ", uptime, 1, NULL},
11941223
RG_DIALOG_SEPARATOR,
1195-
{1000, "Save screenshot", NULL, 1, NULL},
1196-
{2000, "Save trace", NULL, 1, NULL},
1197-
{3000, "Cheats", NULL, 1, NULL},
1198-
{4000, "Crash", NULL, 1, NULL},
1224+
{1, "Reboot to firmware", NULL, 1, NULL},
1225+
{2, "Clear cache", NULL, 1, NULL},
1226+
{3, "Save screenshot", NULL, 1, NULL},
1227+
{4, "Save trace", NULL, 1, NULL},
1228+
{5, "Cheats", NULL, 1, NULL},
1229+
{6, "Crash", NULL, 1, NULL},
11991230
RG_DIALOG_CHOICE_LAST
12001231
};
12011232

@@ -1215,13 +1246,22 @@ void rg_gui_debug_menu(const rg_gui_option_t *extra_options)
12151246

12161247
switch (rg_gui_dialog("Debugging", options, 0))
12171248
{
1218-
case 1000:
1249+
case 1:
1250+
rg_system_switch_app(RG_APP_FACTORY, RG_APP_FACTORY, 0, 0);
1251+
break;
1252+
case 2:
1253+
rg_storage_delete(RG_BASE_PATH_CACHE);
1254+
rg_system_restart();
1255+
break;
1256+
case 3:
12191257
rg_emu_screenshot(RG_STORAGE_ROOT "/screenshot.png", 0, 0);
12201258
break;
1221-
case 2000:
1259+
case 4:
12221260
rg_system_save_trace(RG_STORAGE_ROOT "/trace.txt", 0);
12231261
break;
1224-
case 4000:
1262+
case 5:
1263+
break;
1264+
case 6:
12251265
RG_PANIC("Crash test!");
12261266
break;
12271267
}

launcher/main/main.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,10 @@ static rg_gui_event_t startup_app_cb(rg_gui_option_t *option, rg_gui_event_t eve
226226
static rg_gui_event_t updater_cb(rg_gui_option_t *option, rg_gui_event_t event)
227227
{
228228
if (event == RG_DIALOG_ENTER)
229+
{
229230
updater_show_dialog();
231+
gui_redraw();
232+
}
230233
return RG_DIALOG_VOID;
231234
}
232235

0 commit comments

Comments
 (0)