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".
@end deffn
@deffn {Config Command} {tcl_port} [number]
@deffn {Config Command} {tcl port} [number]
Specify or query the port used for a simplified RPC
connection that can be used by clients to issue TCL commands and get the
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
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
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
trace data, open a TCP server at port @var{port} and send the trace data to
each connected client;
@ -12776,7 +12776,7 @@ OpenOCD provides a simple RPC server that allows to run arbitrary Tcl
commands and receive the results.
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
value (it will be terminated with @code{0x1a} as well). This can be
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]
@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.
Only available from the Tcl RPC server.
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]
@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.
Only available from the Tcl RPC server.
Defaults to off.

View File

@ -95,3 +95,21 @@ proc "gdb_save_tdesc" {} {
echo "DEPRECATED! use 'gdb save_tdesc', not '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,
.mode = COMMAND_CONFIG,
.help = "Specify port on which to listen "
@ -334,14 +334,14 @@ static const struct command_registration tcl_command_handlers[] = {
.usage = "[port_num]",
},
{
.name = "tcl_notifications",
.name = "notifications",
.handler = handle_tcl_notifications_command,
.mode = COMMAND_EXEC,
.help = "Target Notification output",
.usage = "[on|off]",
},
{
.name = "tcl_trace",
.name = "trace",
.handler = handle_tcl_trace_command,
.mode = COMMAND_EXEC,
.help = "Target trace output",
@ -350,6 +350,17 @@ static const struct command_registration tcl_command_handlers[] = {
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)
{
tcl_port = strdup("6666");