From 1571146c8f5e0964c985120aff2a0634bbad658b Mon Sep 17 00:00:00 2001 From: Gyorgy Szombathelyi Date: Wed, 12 Feb 2020 21:09:50 +0100 Subject: [PATCH] Support core name override from ARC file --- arc_file.c | 24 +++++++++++++++++++----- arc_file.h | 2 ++ menu.c | 2 ++ user_io.c | 5 +++-- 4 files changed, 26 insertions(+), 7 deletions(-) diff --git a/arc_file.c b/arc_file.c index 1edf39f..209b7d1 100644 --- a/arc_file.c +++ b/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; -} \ No newline at end of file +} diff --git a/arc_file.h b/arc_file.h index c4d0877..227e8ec 100644 --- a/arc_file.h +++ b/arc_file.h @@ -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 diff --git a/menu.c b/menu.c index ebb0181..5cf8ac1 100644 --- a/menu.c +++ b/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); diff --git a/user_io.c b/user_io.c index 2fcf70b..1d48cae 100644 --- a/user_io.c +++ b/user_io.c @@ -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) {