Minimig: support for custom config name.
This commit is contained in:
102
menu.cpp
102
menu.cpp
@@ -2166,36 +2166,28 @@ void HandleUI(void)
|
||||
|
||||
case MENU_LOADCONFIG_1:
|
||||
helptext = helptexts[HELPTEXT_NONE];
|
||||
if (parentstate != menustate) // First run?
|
||||
if (parentstate != menustate)
|
||||
{
|
||||
menumask = 0x200;
|
||||
if (ConfigurationExists(0)) menumask |= 0x001;
|
||||
if (ConfigurationExists(1)) menumask |= 0x002;
|
||||
if (ConfigurationExists(2)) menumask |= 0x004;
|
||||
if (ConfigurationExists(3)) menumask |= 0x008;
|
||||
if (ConfigurationExists(4)) menumask |= 0x010;
|
||||
if (ConfigurationExists(5)) menumask |= 0x020;
|
||||
if (ConfigurationExists(6)) menumask |= 0x040;
|
||||
if (ConfigurationExists(7)) menumask |= 0x080;
|
||||
if (ConfigurationExists(8)) menumask |= 0x100;
|
||||
menumask = 0x400;
|
||||
for (int i = 0; i < 10; i++) if (GetConfigDisplayName(i)) menumask |= 1<<i;
|
||||
}
|
||||
parentstate = menustate;
|
||||
OsdSetTitle("Load", 0);
|
||||
OsdSetTitle("Load config", 0);
|
||||
|
||||
OsdWrite(0, "", 0, 0);
|
||||
OsdWrite(1, "", 0, 0);
|
||||
OsdWrite(2, " Default", menusub == 0, (menumask & 1) == 0);
|
||||
OsdWrite(2, " Default", menusub == 0, (menumask & 1) == 0);
|
||||
OsdWrite(3, "", 0, 0);
|
||||
OsdWrite(4, " 1", menusub == 1, (menumask & 2) == 0);
|
||||
OsdWrite(5, " 2", menusub == 2, (menumask & 4) == 0);
|
||||
OsdWrite(6, " 3", menusub == 3, (menumask & 8) == 0);
|
||||
OsdWrite(7, " 4", menusub == 4, (menumask & 0x10) == 0);
|
||||
OsdWrite(8, " 5", menusub == 5, (menumask & 0x20) == 0);
|
||||
OsdWrite(9, " 6", menusub == 6, (menumask & 0x40) == 0);
|
||||
OsdWrite(10, " 7", menusub == 7, (menumask & 0x80) == 0);
|
||||
OsdWrite(11, " 8", menusub == 8, (menumask & 0x100) == 0);
|
||||
for (int i = 12; i < OsdGetSize() - 1; i++) OsdWrite(i, "", 0, 0);
|
||||
OsdWrite(OsdGetSize() - 1, STD_EXIT, menusub == 9, 0);
|
||||
for (int i = 1; i < 10; i++)
|
||||
{
|
||||
static char name[64];
|
||||
sprintf(name, " %d ", i);
|
||||
if (menumask & (1 << i)) strcat(name, GetConfigDisplayName(i));
|
||||
OsdWrite(3+i, name, menusub == i, !(menumask & (1 << i)));
|
||||
}
|
||||
|
||||
for (int i = 13; i < OsdGetSize() - 1; i++) OsdWrite(i, "", 0, 0);
|
||||
OsdWrite(OsdGetSize() - 1, STD_EXIT, menusub == 10, 0);
|
||||
|
||||
menustate = MENU_LOADCONFIG_2;
|
||||
break;
|
||||
@@ -2208,7 +2200,7 @@ void HandleUI(void)
|
||||
}
|
||||
else if (select)
|
||||
{
|
||||
if (menusub<9)
|
||||
if (menusub<10)
|
||||
{
|
||||
OsdDisable();
|
||||
LoadConfiguration(menusub);
|
||||
@@ -2379,62 +2371,38 @@ void HandleUI(void)
|
||||
|
||||
case MENU_SAVECONFIG_1:
|
||||
helptext = helptexts[HELPTEXT_NONE];
|
||||
menumask = 0x3ff;
|
||||
menumask = 0x7ff;
|
||||
parentstate = menustate;
|
||||
OsdSetTitle("Save", 0);
|
||||
OsdSetTitle("Save config", 0);
|
||||
|
||||
OsdWrite(0, "", 0, 0);
|
||||
OsdWrite(1, "", 0, 0);
|
||||
OsdWrite(2, " Default", menusub == 0, 0);
|
||||
OsdWrite(2, " Default", menusub == 0, 0);
|
||||
OsdWrite(3, "", 0, 0);
|
||||
OsdWrite(4, " 1", menusub == 1, 0);
|
||||
OsdWrite(5, " 2", menusub == 2, 0);
|
||||
OsdWrite(6, " 3", menusub == 3, 0);
|
||||
OsdWrite(7, " 4", menusub == 4, 0);
|
||||
OsdWrite(8, " 5", menusub == 5, 0);
|
||||
OsdWrite(9, " 6", menusub == 6, 0);
|
||||
OsdWrite(10, " 7", menusub == 7, 0);
|
||||
OsdWrite(11, " 8", menusub == 8, 0);
|
||||
for (int i = 12; i < OsdGetSize() - 1; i++) OsdWrite(i, "", 0, 0);
|
||||
OsdWrite(OsdGetSize() - 1, STD_EXIT, menusub == 9, 0);
|
||||
|
||||
for (int i = 1; i < 10; i++)
|
||||
{
|
||||
static char name[64];
|
||||
sprintf(name, " %d ", i);
|
||||
const char *cfgname = GetConfigDisplayName(i);
|
||||
if (cfgname) strcat(name, GetConfigDisplayName(i));
|
||||
OsdWrite(3 + i, name, menusub == i, !(menumask & (1 << i)));
|
||||
}
|
||||
|
||||
for (int i = 13; i < OsdGetSize() - 1; i++) OsdWrite(i, "", 0, 0);
|
||||
OsdWrite(OsdGetSize() - 1, STD_EXIT, menusub == 10, 0);
|
||||
|
||||
menustate = MENU_SAVECONFIG_2;
|
||||
break;
|
||||
|
||||
case MENU_SAVECONFIG_2:
|
||||
|
||||
if (menu)
|
||||
if (select)
|
||||
{
|
||||
if (menusub<10) SaveConfiguration(menusub);
|
||||
menustate = MENU_MAIN1;
|
||||
menusub = 9;
|
||||
}
|
||||
|
||||
else if (up)
|
||||
{
|
||||
if (menusub > 0)
|
||||
menusub--;
|
||||
menustate = MENU_SAVECONFIG_1;
|
||||
}
|
||||
else if (down)
|
||||
{
|
||||
// if (menusub < 3)
|
||||
if (menusub < 9)
|
||||
menusub++;
|
||||
menustate = MENU_SAVECONFIG_1;
|
||||
}
|
||||
else if (select)
|
||||
{
|
||||
if (menusub<9)
|
||||
{
|
||||
SaveConfiguration(menusub);
|
||||
menustate = MENU_NONE1;
|
||||
}
|
||||
else
|
||||
{
|
||||
menustate = MENU_MAIN1;
|
||||
menusub = 9;
|
||||
}
|
||||
}
|
||||
else
|
||||
if (menu) // exit menu
|
||||
{
|
||||
menustate = MENU_MAIN1;
|
||||
@@ -2442,8 +2410,6 @@ void HandleUI(void)
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
|
||||
/******************************************************************/
|
||||
/* chipset settings menu */
|
||||
/******************************************************************/
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdbool.h>
|
||||
#include <sys/stat.h>
|
||||
#include <dirent.h>
|
||||
|
||||
#include "hardware.h"
|
||||
#include "minimig_boot.h"
|
||||
@@ -232,23 +234,61 @@ static char UploadActionReplay()
|
||||
return(0);
|
||||
}
|
||||
|
||||
#define SET_CONFIG_NAME(str,num) \
|
||||
if (num) sprintf(str, "MINIMIG%d.CFG", num); \
|
||||
else strcpy(str, "MINIMIG.CFG");
|
||||
|
||||
unsigned char ConfigurationExists(int num)
|
||||
static char* GetConfigurationName(int num)
|
||||
{
|
||||
static char path[256];
|
||||
strcpy(path, CONFIG_DIR"/");
|
||||
SET_CONFIG_NAME((path+strlen(path)), num);
|
||||
static char path[128];
|
||||
sprintf(path, "%s/%s", getRootDir(), CONFIG_DIR);
|
||||
|
||||
fileTYPE f = { 0 };
|
||||
if(FileOpen(&f, path))
|
||||
DIR *d;
|
||||
struct dirent *dir;
|
||||
d = opendir(path);
|
||||
if (d)
|
||||
{
|
||||
if(num) sprintf(path, "minimig%d", num);
|
||||
else sprintf(path, "minimig.cfg", num);
|
||||
|
||||
while ((dir = readdir(d)) != NULL)
|
||||
{
|
||||
int len = strlen(dir->d_name);
|
||||
if (len>10 && !strncasecmp(dir->d_name, path, strlen(path)) && !strcasecmp(dir->d_name+len-4, ".cfg"))
|
||||
{
|
||||
closedir(d);
|
||||
strcpy(path, dir->d_name);
|
||||
return path;
|
||||
}
|
||||
}
|
||||
closedir(d);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
unsigned char SaveConfiguration(int num)
|
||||
{
|
||||
const char *filename = GetConfigurationName(num);
|
||||
if (!filename)
|
||||
{
|
||||
FileClose(&f);
|
||||
return(1);
|
||||
static char name[32];
|
||||
if (num) sprintf(name, "minimig%d.cfg", num);
|
||||
else sprintf(name, "minimig.cfg");
|
||||
|
||||
filename = name;
|
||||
}
|
||||
return(0);
|
||||
|
||||
return FileSaveConfig(filename, &config, sizeof(config));
|
||||
}
|
||||
|
||||
const char* GetConfigDisplayName(int num)
|
||||
{
|
||||
char *filename = GetConfigurationName(num);
|
||||
if (!filename) return NULL;
|
||||
|
||||
filename[strlen(filename) - 4] = 0;
|
||||
char *p = strchr(filename, '_');
|
||||
|
||||
if (p) return p+1;
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
static int force_reload_kickstart = 0;
|
||||
@@ -340,12 +380,11 @@ unsigned char LoadConfiguration(int num)
|
||||
char result = 0;
|
||||
unsigned char key, i;
|
||||
|
||||
static char filename[256];
|
||||
SET_CONFIG_NAME(filename, num);
|
||||
const char *filename = GetConfigurationName(num);
|
||||
|
||||
// load configuration data
|
||||
int size = FileLoadConfig(filename, 0, 0);
|
||||
if(size>0)
|
||||
int size;
|
||||
if(filename && (size = FileLoadConfig(filename, 0, 0))>0)
|
||||
{
|
||||
BootPrint("Opened configuration file\n");
|
||||
printf("Configuration file size: %s, %lu\n", filename, size);
|
||||
@@ -455,14 +494,6 @@ unsigned char LoadConfiguration(int num)
|
||||
return(result);
|
||||
}
|
||||
|
||||
unsigned char SaveConfiguration(int num)
|
||||
{
|
||||
static char filename[256];
|
||||
SET_CONFIG_NAME(filename, num);
|
||||
|
||||
return FileSaveConfig(filename, &config, sizeof(config));
|
||||
}
|
||||
|
||||
void MinimigReset()
|
||||
{
|
||||
ApplyConfiguration(0);
|
||||
|
||||
@@ -45,7 +45,7 @@ extern configTYPE config;
|
||||
|
||||
unsigned char LoadConfiguration(int num);
|
||||
unsigned char SaveConfiguration(int num);
|
||||
unsigned char ConfigurationExists(int num);
|
||||
const char* GetConfigDisplayName(int num);
|
||||
|
||||
void MinimigReset();
|
||||
void SetKickstart(char *name);
|
||||
|
||||
Reference in New Issue
Block a user