#include "config.h"
#endif
+#include "openocd.h"
#include "jtag.h"
#include "configuration.h"
#include "xsvf.h"
if (CMD_ARGC != 0)
return ERROR_COMMAND_SYNTAX_ERROR;
- command_print(cmd_ctx, OPENOCD_VERSION);
+ command_print(CMD_CTX, OPENOCD_VERSION);
return ERROR_OK;
}
atexit(exit_handler);
- if (target_init(cmd_ctx) != ERROR_OK)
+ if (target_init(CMD_CTX) != ERROR_OK)
return ERROR_FAIL;
LOG_DEBUG("target init complete");
- if ((retval = jtag_interface_init(cmd_ctx)) != ERROR_OK)
+ if ((retval = jtag_interface_init(CMD_CTX)) != ERROR_OK)
{
/* we must be able to set up the jtag interface */
return retval;
/* Try to initialize & examine the JTAG chain at this point, but
* continue startup regardless */
- if (jtag_init(cmd_ctx) == ERROR_OK)
+ if (jtag_init(CMD_CTX) == ERROR_OK)
{
LOG_DEBUG("jtag init complete");
if (target_examine() == ERROR_OK)
}
}
- if (flash_init_drivers(cmd_ctx) != ERROR_OK)
+ if (flash_init_drivers(CMD_CTX) != ERROR_OK)
return ERROR_FAIL;
LOG_DEBUG("flash init complete");
- if (mflash_init_drivers(cmd_ctx) != ERROR_OK)
+ if (mflash_init_drivers(CMD_CTX) != ERROR_OK)
return ERROR_FAIL;
LOG_DEBUG("mflash init complete");
- if (nand_init(cmd_ctx) != ERROR_OK)
+ if (nand_init(CMD_CTX) != ERROR_OK)
return ERROR_FAIL;
LOG_DEBUG("NAND init complete");
- if (pld_init(cmd_ctx) != ERROR_OK)
+ if (pld_init(CMD_CTX) != ERROR_OK)
return ERROR_FAIL;
LOG_DEBUG("pld init complete");
gdb_init();
tcl_init(); /* allows tcl to just connect without going thru telnet */
- target_register_event_callback(log_target_callback_event_handler, cmd_ctx);
+ target_register_event_callback(log_target_callback_event_handler, CMD_CTX);
return ERROR_OK;
}
+static const struct command_registration openocd_command_handlers[] = {
+ {
+ .name = "version",
+ .handler = &handle_version_command,
+ .mode = COMMAND_EXEC,
+ .help = "show program version",
+ },
+ {
+ .name = "init",
+ .handler = &handle_init_command,
+ .mode = COMMAND_ANY,
+ .help = "Initializes configured targets and servers. "
+ "If called more than once, does nothing.",
+ },
+ COMMAND_REGISTRATION_DONE
+};
+
struct command_context *global_cmd_ctx;
/// src/hello.c gives a simple example for writing new command modules
{
struct command_context *cmd_ctx;
- global_cmd_ctx = cmd_ctx = command_init();
-
- register_command(cmd_ctx, NULL, "version", handle_version_command,
- COMMAND_EXEC, "show OpenOCD version");
+ global_cmd_ctx = cmd_ctx = command_init(openocd_startup_tcl);
+ register_commands(cmd_ctx, NULL, openocd_command_handlers);
/* register subsystem commands */
hello_register_commands(cmd_ctx);
server_register_commands(cmd_ctx);
LOG_OUTPUT(OPENOCD_VERSION "\n");
- register_command(cmd_ctx, NULL, "init", handle_init_command,
- COMMAND_ANY, "initializes target and servers - nop on subsequent invocations");
-
return cmd_ctx;
}
httpd_stop();
#endif
- unregister_all_commands(cmd_ctx);
+ unregister_all_commands(cmd_ctx, NULL);
/* free commandline interface */
command_done(cmd_ctx);