server/tcl: Restructure commands

Use a command group 'tcl' with subcommands instead of individual
commands with 'tcl_' prefix.

The old commands are still available to ensure backwards compatibility,
but are marked as deprecated.

Change-Id: I1efd8a0e2c1403833f8cb656510a54d5ab0b2740
Signed-off-by: Marc Schink <dev@zapb.de>
Reviewed-on: https://review.openocd.org/c/openocd/+/8344
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Tested-by: jenkins
This commit is contained in:
Marc Schink 2024-06-17 09:12:34 +02:00 committed by Antonio Borneo
parent b764fc2a4d
commit 73b15194ea
3 changed files with 38 additions and 9 deletions

View File

@ -2217,7 +2217,7 @@ gdb (with 'set remotetimeout') is recommended. An insufficient timeout may
cause initialization to fail with "Unknown remote qXfer reply: OK". cause initialization to fail with "Unknown remote qXfer reply: OK".
@end deffn @end deffn
@deffn {Config Command} {tcl_port} [number] @deffn {Config Command} {tcl port} [number]
Specify or query the port used for a simplified RPC Specify or query the port used for a simplified RPC
connection that can be used by clients to issue TCL commands and get the connection that can be used by clients to issue TCL commands and get the
output from the Tcl engine. output from the Tcl engine.
@ -10588,7 +10588,7 @@ the destination of the trace data:
@item @option{external} -- configure TPIU/SWO to let user capture trace @item @option{external} -- configure TPIU/SWO to let user capture trace
output externally, either with an additional UART or with a logic analyzer (default); output externally, either with an additional UART or with a logic analyzer (default);
@item @option{-} -- configure TPIU/SWO and debug adapter to gather trace data @item @option{-} -- configure TPIU/SWO and debug adapter to gather trace data
and forward it to @command{tcl_trace} command; and forward it to @command{tcl trace} command;
@item @option{:}@var{port} -- configure TPIU/SWO and debug adapter to gather @item @option{:}@var{port} -- configure TPIU/SWO and debug adapter to gather
trace data, open a TCP server at port @var{port} and send the trace data to trace data, open a TCP server at port @var{port} and send the trace data to
each connected client; each connected client;
@ -12776,7 +12776,7 @@ OpenOCD provides a simple RPC server that allows to run arbitrary Tcl
commands and receive the results. commands and receive the results.
To access it, your application needs to connect to a configured TCP port To access it, your application needs to connect to a configured TCP port
(see @command{tcl_port}). Then it can pass any string to the (see @command{tcl port}). Then it can pass any string to the
interpreter terminating it with @code{0x1a} and wait for the return interpreter terminating it with @code{0x1a} and wait for the return
value (it will be terminated with @code{0x1a} as well). This can be value (it will be terminated with @code{0x1a} as well). This can be
repeated as many times as desired without reopening the connection. repeated as many times as desired without reopening the connection.
@ -12802,7 +12802,7 @@ type target_state state [state-name]
type target_reset mode [reset-mode] type target_reset mode [reset-mode]
@end verbatim @end verbatim
@deffn {Command} {tcl_notifications} [on/off] @deffn {Command} {tcl notifications} [on/off]
Toggle output of target notifications to the current Tcl RPC server. Toggle output of target notifications to the current Tcl RPC server.
Only available from the Tcl RPC server. Only available from the Tcl RPC server.
Defaults to off. Defaults to off.
@ -12821,7 +12821,7 @@ Target trace data is emitted as a Tcl associative array in the following format.
type target_trace data [trace-data-hex-encoded] type target_trace data [trace-data-hex-encoded]
@end verbatim @end verbatim
@deffn {Command} {tcl_trace} [on/off] @deffn {Command} {tcl trace} [on/off]
Toggle output of target trace data to the current Tcl RPC server. Toggle output of target trace data to the current Tcl RPC server.
Only available from the Tcl RPC server. Only available from the Tcl RPC server.
Defaults to off. Defaults to off.

View File

@ -95,3 +95,21 @@ proc "gdb_save_tdesc" {} {
echo "DEPRECATED! use 'gdb save_tdesc', not 'gdb_save_tdesc'" echo "DEPRECATED! use 'gdb save_tdesc', not 'gdb_save_tdesc'"
eval gdb save_tdesc eval gdb save_tdesc
} }
lappend _telnet_autocomplete_skip "tcl_port"
proc "tcl_port" {args} {
echo "DEPRECATED! use 'tcl port' not 'tcl_port'"
eval tcl port $args
}
lappend _telnet_autocomplete_skip "tcl_notifications"
proc "tcl_notifications" {state} {
echo "DEPRECATED! use 'tcl notifications' not 'tcl_notifications'"
eval tcl notifications $state
}
lappend _telnet_autocomplete_skip "tcl_trace"
proc "tcl_trace" {state} {
echo "DEPRECATED! use 'tcl trace' not 'tcl_trace'"
eval tcl trace $state
}

View File

@ -323,9 +323,9 @@ COMMAND_HANDLER(handle_tcl_trace_command)
} }
} }
static const struct command_registration tcl_command_handlers[] = { static const struct command_registration tcl_subcommand_handlers[] = {
{ {
.name = "tcl_port", .name = "port",
.handler = handle_tcl_port_command, .handler = handle_tcl_port_command,
.mode = COMMAND_CONFIG, .mode = COMMAND_CONFIG,
.help = "Specify port on which to listen " .help = "Specify port on which to listen "
@ -334,14 +334,14 @@ static const struct command_registration tcl_command_handlers[] = {
.usage = "[port_num]", .usage = "[port_num]",
}, },
{ {
.name = "tcl_notifications", .name = "notifications",
.handler = handle_tcl_notifications_command, .handler = handle_tcl_notifications_command,
.mode = COMMAND_EXEC, .mode = COMMAND_EXEC,
.help = "Target Notification output", .help = "Target Notification output",
.usage = "[on|off]", .usage = "[on|off]",
}, },
{ {
.name = "tcl_trace", .name = "trace",
.handler = handle_tcl_trace_command, .handler = handle_tcl_trace_command,
.mode = COMMAND_EXEC, .mode = COMMAND_EXEC,
.help = "Target trace output", .help = "Target trace output",
@ -350,6 +350,17 @@ static const struct command_registration tcl_command_handlers[] = {
COMMAND_REGISTRATION_DONE COMMAND_REGISTRATION_DONE
}; };
static const struct command_registration tcl_command_handlers[] = {
{
.name = "tcl",
.mode = COMMAND_ANY,
.help = "tcl command group",
.usage = "",
.chain = tcl_subcommand_handlers,
},
COMMAND_REGISTRATION_DONE
};
int tcl_register_commands(struct command_context *cmd_ctx) int tcl_register_commands(struct command_context *cmd_ctx)
{ {
tcl_port = strdup("6666"); tcl_port = strdup("6666");