adapter: simplify command 'adapter list'

The code of command 'adapter list' is called by command 'adapter
driver' to list the available drivers in case of error.
This dual possible entry points require a conditional check on the
number of command line arguments, reducing the code readability.

Split the command in a simpler code for the command 'adapter list'
that only checks the command line, and move in a common helper the
code that list the drivers.

While there, fix the output and the comments to report 'adapter
driver' instead of 'debug adapters'; we are not parsing the HW to
know which adapter is present.

Change-Id: I17538e86dc4a31a9589d404e49dcc65a29393390
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/8672
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
This commit is contained in:
Antonio Borneo
2024-12-01 00:01:00 +01:00
parent 6beb6280af
commit 4275280698
+11 -6
View File
@@ -392,12 +392,8 @@ COMMAND_HANDLER(handle_adapter_name)
return ERROR_OK;
}
COMMAND_HANDLER(handle_adapter_list_command)
COMMAND_HANDLER(dump_adapter_driver_list)
{
if (strcmp(CMD_NAME, "list") == 0 && CMD_ARGC > 0)
return ERROR_COMMAND_SYNTAX_ERROR;
command_print(CMD, "The following debug adapters are available:");
for (unsigned int i = 0; adapter_drivers[i]; i++) {
const char *name = adapter_drivers[i]->name;
command_print(CMD, "%u: %s", i + 1, name);
@@ -406,6 +402,14 @@ COMMAND_HANDLER(handle_adapter_list_command)
return ERROR_OK;
}
COMMAND_HANDLER(handle_adapter_list_command)
{
if (CMD_ARGC)
return ERROR_COMMAND_SYNTAX_ERROR;
return CALL_COMMAND_HANDLER(dump_adapter_driver_list);
}
COMMAND_HANDLER(handle_adapter_driver_command)
{
int retval;
@@ -440,7 +444,8 @@ COMMAND_HANDLER(handle_adapter_driver_command)
*/
LOG_ERROR("The specified debug interface was not found (%s)",
CMD_ARGV[0]);
CALL_COMMAND_HANDLER(handle_adapter_list_command);
command_print(CMD, "The following adapter drivers are available:");
CALL_COMMAND_HANDLER(dump_adapter_driver_list);
return ERROR_JTAG_INVALID_INTERFACE;
}