diff --git a/frontend/info/core_info.c b/frontend/info/core_info.c index 5db7667c2d..d639e0c555 100644 --- a/frontend/info/core_info.c +++ b/frontend/info/core_info.c @@ -77,12 +77,18 @@ static void core_info_list_resolve_all_firmware(core_info_list_t *core_info_list for (c = 0; c < count; c++) { - char path_key[64], desc_key[64]; + char path_key[64], desc_key[64], opt_key[64]; + + snprintf(path_key, sizeof(path_key), "firmware%u_path", c); snprintf(desc_key, sizeof(desc_key), "firmware%u_desc", c); + snprintf(opt_key, sizeof(opt_key), "firmware%u_opt", c); config_get_string(info->data, path_key, &info->firmware[c].path); config_get_string(info->data, desc_key, &info->firmware[c].desc); + config_get_bool(info->data, opt_key , &info->firmware[c].optional); + + } } diff --git a/frontend/info/core_info.h b/frontend/info/core_info.h index 886493e914..1852bfb35b 100644 --- a/frontend/info/core_info.h +++ b/frontend/info/core_info.h @@ -29,6 +29,7 @@ typedef struct char *path; char *desc; bool missing; // Set once to avoid opening the same file several times. + bool optional; } core_info_firmware_t; typedef struct diff --git a/frontend/menu/menu_common.c b/frontend/menu/menu_common.c index aa10b55e79..6c9ec0d749 100644 --- a/frontend/menu/menu_common.c +++ b/frontend/menu/menu_common.c @@ -1946,13 +1946,18 @@ void menu_populate_entries(void *data, unsigned menu_type) core_info_list_update_missing_firmware(rgui->core_info, rgui->core_info_current.path, g_settings.system_directory); - file_list_push(rgui->selection_buf, "Required firmware:", RGUI_SETTINGS_CORE_INFO_NONE, 0); + file_list_push(rgui->selection_buf, "Firmware: ", RGUI_SETTINGS_CORE_INFO_NONE, 0); + //file_list_push(rgui->selection_buf, "Firmware: (name available y/n optional y/n)", RGUI_SETTINGS_CORE_INFO_NONE, 0); for(i=0;icore_info_current.firmware_count;i++) { if(rgui->core_info_current.firmware[i].desc) { - snprintf(tmp, sizeof(tmp), " Name: %s, %s", rgui->core_info_current.firmware[i].desc ? rgui->core_info_current.firmware[i].desc : "",rgui->core_info_current.firmware[i].missing ? "missing" : "present"); + snprintf(tmp, sizeof(tmp), " name: %s", rgui->core_info_current.firmware[i].desc ? rgui->core_info_current.firmware[i].desc : ""); + file_list_push(rgui->selection_buf, tmp, RGUI_SETTINGS_CORE_INFO_NONE, 0); + snprintf(tmp, sizeof(tmp), " status: %s, %s", rgui->core_info_current.firmware[i].missing ? "missing" : "present", rgui->core_info_current.firmware[i].optional ? "optional" : "required"); file_list_push(rgui->selection_buf, tmp, RGUI_SETTINGS_CORE_INFO_NONE, 0); + //snprintf(tmp, sizeof(tmp), " %s %s %s", rgui->core_info_current.firmware[i].desc ? rgui->core_info_current.firmware[i].desc : "",rgui->core_info_current.firmware[i].missing ? "[n]" : "[y]", rgui->core_info_current.firmware[i].optional ? "[y]" : "[n]"); + //file_list_push(rgui->selection_buf, tmp, RGUI_SETTINGS_CORE_INFO_NONE, 0); } } }