]> git.sur5r.net Git - openocd/commitdiff
Factor interface list to its own command:
authorzwelch <zwelch@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Mon, 8 Jun 2009 13:12:17 +0000 (13:12 +0000)
committerzwelch <zwelch@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Mon, 8 Jun 2009 13:12:17 +0000 (13:12 +0000)
- 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

src/jtag/jtag.c

index c27033505ef768984b5c81f3f8f3da4e1d3e9d91..751e53f96e1454d4f73f4118d05c4a1ce542b9c8 100644 (file)
@@ -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)