Files
bs_explorer/bs/init.c
François Dausseur 5dfe5b123e compiles and works
2025-02-18 11:36:18 +01:00

134 lines
2.9 KiB
C

#include <stddef.h>
#include <stdio.h>
/*
#include "common.h"
#include "cmds/help.h"
#include "cmds/scan.h"
#include "cmds/list_probes.h"
#include "cmds/exit.h"
#include "cmds/select_probe.h"
// Table des commandes internes
Command commands[] = {
{"help", cmd_help, NULL},
{"list_probes", cmd_list_probes, cmd_list_probes_help},
{"scan", cmd_scan, cmd_scan_help},
{"select_probe", cmd_select_probe, cmd_select_probe_help},
{"exit", cmd_exit, cmd_exit_help},
{NULL, NULL}};
*/
#include <stdio.h>
#include <stdarg.h>
#include <string.h>
#include "jtag_core/jtag_core.h"
#include "config/version.h"
#include "script/env.h"
#include "script/script.h"
#include "config/config_script.h"
void jprint(jtag_core *jc, const char *msg)
{
printf(msg);
}
int script_print(script_ctx *sctx, enum MSGTYPE typ, char *string, ...)
{
int ret = 0;
char msg[64] = {0};
va_list args;
switch (typ)
{
case MSG_DEBUG:
strcpy(msg, "DEBUG :");
break;
case MSG_INFO_1:
strcpy(msg, "INFO :");
break;
case MSG_WARNING:
strcpy(msg, "WARNING :");
break;
case MSG_ERROR:
strcpy(msg, "ERROR :");
break;
case MSG_INFO_0:
default:
strcpy(msg, "");
break;
}
va_start(args, string);
ret = printf(msg);
ret += vprintf(string, args);
va_end(args);
return ret;
}
void bsexp_init(jtag_core **jc, script_ctx **sctx)
{
// JTAG core initialization
*jc = jtagcore_init();
if (NULL == *jc)
goto end;
// Environment initialization
(*jc)->envvar = (void *)initEnv(NULL, NULL);
if (NULL == (*jc)->envvar) {
jtagcore_deinit(*jc);
*jc = NULL;
goto end;
}
jtagcore_setEnvVar(*jc, "VERSION", "v" APP_VER_STR(APP_VER));
// Scripts initialization
*sctx = jtagcore_initScript(*jc);
if (NULL == *sctx) {
deinitEnv((*jc)->envvar);
jtagcore_deinit(*jc);
*jc = NULL;
goto end;
}
setOutputFunc_script(*sctx, script_print);
execute_ram_script(*sctx, config_script, config_script_len);
execute_file_script(*sctx, "config.script");
/* Log printing callback */
if (jtagcore_set_logs_callback(*jc, jprint) < 0)
{
printf("Impossible to define the logs callback!\n");
}
else
{
if (jtagcore_getEnvVar(*jc, "LOG_MESSAGES_FILTER_LEVEL", NULL))
{
jtagcore_set_logs_level(*jc, jtagcore_getEnvVarValue(*jc, "LOG_MESSAGES_FILTER_LEVEL"));
}
if (jtagcore_getEnvVar(*jc, "LOG_MESSAGES_FILE_OUTPUT", NULL))
{
jtagcore_set_logs_file(*jc, jtagcore_getEnvVar(*jc, "LOG_MESSAGES_FILE_OUTPUT", NULL));
}
}
end:
return;
}
void bsexp_deinit(jtag_core *jc, script_ctx *sctx)
{
envvar_entry *env = NULL;
if (NULL != jc)
{
deinit_script(sctx);
}
if (NULL != jc)
{
env = jc->envvar;
deinitEnv(env);
jtagcore_deinit(jc);
}
}