From: zwelch Date: Mon, 8 Jun 2009 13:12:17 +0000 (+0000) Subject: Factor interface list to its own command: X-Git-Tag: v0.2.0~383 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=51d158c410de055dee41782636ba41ed5fd1daba;p=openocd Factor interface list to its own command: - Add handle_interface_list_command, used by handle_interface_command. - Display output of new list to command console. - Change first index of displayed drivers to 1; it's only cosmetic. git-svn-id: svn://svn.berlios.de/openocd/trunk@2129 b42882b7-edfa-0310-969c-e2dbd0fdcd60 --- diff --git a/src/jtag/jtag.c b/src/jtag/jtag.c index c2703350..751e53f9 100644 --- a/src/jtag/jtag.c +++ b/src/jtag/jtag.c @@ -223,6 +223,8 @@ static jtag_interface_t *jtag_interface = NULL; int jtag_speed = 0; /* jtag commands */ +static int handle_interface_list_command(struct command_context_s *cmd_ctx, + char *cmd, char **args, int argc); static int handle_interface_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); static int handle_jtag_speed_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); static int handle_jtag_khz_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); @@ -1601,6 +1603,9 @@ int jtag_register_commands(struct command_context_s *cmd_ctx) register_command(cmd_ctx, NULL, "interface", handle_interface_command, COMMAND_CONFIG, "try to configure interface"); + register_command(cmd_ctx, NULL, + "interface_list", &handle_interface_list_command, + COMMAND_ANY, "list all built-in interfaces"); register_command(cmd_ctx, NULL, "jtag_speed", handle_jtag_speed_command, COMMAND_ANY, "(DEPRECATED) set jtag speed (if supported)"); register_command(cmd_ctx, NULL, "jtag_khz", handle_jtag_khz_command, @@ -1837,11 +1842,24 @@ static int handle_interface_command(struct command_context_s *cmd_ctx, * didn't match one of the compiled-in interfaces */ LOG_ERROR("The specified JTAG interface was not found (%s)", args[0]); - LOG_ERROR("The following built-in JTAG interfaces are available:"); + handle_interface_list_command(cmd_ctx, cmd, args, argc); + return ERROR_JTAG_INVALID_INTERFACE; +} + +static int handle_interface_list_command(struct command_context_s *cmd_ctx, + char *cmd, char **args, int argc) +{ + if (strcmp(cmd, "interface_list") == 0 && argc > 0) + return ERROR_COMMAND_SYNTAX_ERROR; + + command_print(cmd_ctx, "The following JTAG interfaces are available:"); for (unsigned i = 0; NULL != jtag_interfaces[i]; i++) - LOG_ERROR("%u: %s", i, jtag_interfaces[i]->name); + { + const char *name = jtag_interfaces[i]->name; + command_print(cmd_ctx, "%u: %s", i + 1, name); + } - return ERROR_JTAG_INVALID_INTERFACE; + return ERROR_OK; } static int handle_jtag_device_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)