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
This commit is contained in:
zwelch 2009-06-08 13:12:17 +00:00
parent 7bcd2e6854
commit 51d158c410
1 changed files with 22 additions and 4 deletions

View File

@ -223,6 +223,8 @@ static jtag_interface_t *jtag_interface = NULL;
int jtag_speed = 0; int jtag_speed = 0;
/* jtag commands */ /* 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_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_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); 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, register_command(cmd_ctx, NULL, "interface", handle_interface_command,
COMMAND_CONFIG, "try to configure interface"); 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, register_command(cmd_ctx, NULL, "jtag_speed", handle_jtag_speed_command,
COMMAND_ANY, "(DEPRECATED) set jtag speed (if supported)"); COMMAND_ANY, "(DEPRECATED) set jtag speed (if supported)");
register_command(cmd_ctx, NULL, "jtag_khz", handle_jtag_khz_command, register_command(cmd_ctx, NULL, "jtag_khz", handle_jtag_khz_command,
@ -1837,13 +1842,26 @@ static int handle_interface_command(struct command_context_s *cmd_ctx,
* didn't match one of the compiled-in interfaces * didn't match one of the compiled-in interfaces
*/ */
LOG_ERROR("The specified JTAG interface was not found (%s)", args[0]); 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);
for (unsigned i = 0; NULL != jtag_interfaces[i]; i++)
LOG_ERROR("%u: %s", i, jtag_interfaces[i]->name);
return ERROR_JTAG_INVALID_INTERFACE; 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++)
{
const char *name = jtag_interfaces[i]->name;
command_print(cmd_ctx, "%u: %s", i + 1, name);
}
return ERROR_OK;
}
static int handle_jtag_device_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) static int handle_jtag_device_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
{ {
int e; int e;