mirror of
https://github.com/mist-devel/mist-firmware.git
synced 2026-02-02 06:21:16 +00:00
Support core name override from ARC file
This commit is contained in:
24
arc_file.c
24
arc_file.c
@@ -10,6 +10,7 @@
|
||||
|
||||
static char mod;
|
||||
static char rbfname[9];
|
||||
static char corename[9];
|
||||
static char conf[MAX_CONF_SIZE];
|
||||
static int conf_ptr;
|
||||
|
||||
@@ -24,6 +25,7 @@ const ini_section_t arc_ini_sections[] = {
|
||||
const ini_var_t arc_ini_vars[] = {
|
||||
{"MOD", (void*)(&mod), UINT8, 0, 127, 1},
|
||||
{"RBF", (void*)rbfname, STRING, 1, 8, 1},
|
||||
{"NAME", (void*)corename, STRING, 1, 8, 1},
|
||||
{"CONF", (void*)arc_set_conf, CUSTOM_HANDLER, 0, 0, 1},
|
||||
};
|
||||
|
||||
@@ -50,21 +52,33 @@ char arc_open(char *fname)
|
||||
arc_ini_cfg.nsections = (int)(sizeof(arc_ini_sections) / sizeof(ini_section_t));
|
||||
arc_ini_cfg.nvars = (int)(sizeof(arc_ini_vars) / sizeof(ini_var_t));
|
||||
|
||||
rbfname[8] = 0;
|
||||
conf[0] = 0;
|
||||
conf_ptr = 0;
|
||||
mod = -1;
|
||||
arc_reset();
|
||||
mod = -1; // indicate error by default, valid ARC file will overrdide with the correct MOD value
|
||||
ini_parse(&arc_ini_cfg, 0);
|
||||
iprintf("arc conf=%s\n",conf);
|
||||
return mod;
|
||||
}
|
||||
|
||||
void arc_reset()
|
||||
{
|
||||
memset(rbfname, 0, sizeof(rbfname));
|
||||
memset(corename, 0, sizeof(rbfname));
|
||||
conf[0] = 0;
|
||||
conf_ptr = 0;
|
||||
mod = 0;
|
||||
}
|
||||
|
||||
char *arc_get_rbfname()
|
||||
{
|
||||
return rbfname;
|
||||
}
|
||||
|
||||
char *arc_get_corename()
|
||||
{
|
||||
return corename;
|
||||
}
|
||||
|
||||
char *arc_get_conf()
|
||||
{
|
||||
return conf;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,9 @@
|
||||
#define ARC_FILE_H
|
||||
|
||||
char arc_open(char *fname);
|
||||
void arc_reset();
|
||||
char *arc_get_rbfname();
|
||||
char *arc_get_corename();
|
||||
char *arc_get_conf();
|
||||
|
||||
#endif // ARC_FILE_H
|
||||
|
||||
2
menu.c
2
menu.c
@@ -3287,6 +3287,8 @@ void HandleUI(void)
|
||||
}
|
||||
strncpy(file.name, " RBF", 11);
|
||||
strncpy(file.name, arc_get_rbfname(), strlen(arc_get_rbfname()));
|
||||
} else {
|
||||
arc_reset();
|
||||
}
|
||||
|
||||
user_io_set_core_mod(mod);
|
||||
|
||||
@@ -202,7 +202,8 @@ char user_io_is_8bit_with_config_string() {
|
||||
static char core_name[16+1]; // max 16 bytes for core name
|
||||
|
||||
char *user_io_get_core_name() {
|
||||
return core_name;
|
||||
char *arc_core_name = arc_get_corename();
|
||||
return *arc_core_name ? arc_core_name : core_name;
|
||||
}
|
||||
|
||||
static void user_io_read_core_name() {
|
||||
@@ -213,7 +214,7 @@ static void user_io_read_core_name() {
|
||||
if(p && p[0]) strcpy(core_name, p);
|
||||
}
|
||||
|
||||
iprintf("Core name is \"%s\"\n", core_name);
|
||||
iprintf("Core name from FPGA is \"%s\"\n", core_name);
|
||||
}
|
||||
|
||||
void user_io_set_core_mod(char mod) {
|
||||
|
||||
Reference in New Issue
Block a user