Added telnet_async command to enable/disable asynchronous
authoroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Fri, 31 Oct 2008 13:40:02 +0000 (13:40 +0000)
committeroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Fri, 31 Oct 2008 13:40:02 +0000 (13:40 +0000)
messages.

git-svn-id: svn://svn.berlios.de/openocd/trunk@1117 b42882b7-edfa-0310-969c-e2dbd0fdcd60

doc/openocd.texi
src/helper/command.c
src/helper/command.h
src/helper/startup.tcl
src/server/telnet_server.c

index 902fb62c9f3f924962cf0fe8c95327ab70330beb..98ad644f77ac328ea3da66db40d33e9ea42d71b9 100644 (file)
@@ -265,6 +265,10 @@ OpenOCD command line using the @option{-c} command line switch.
 @item @b{telnet_port} <@var{number}>
 @cindex telnet_port
 @*Port on which to listen for incoming telnet connections 
+@item @b{telnet_async} <@var{enable/disable}>
+@cindex telnet_async
+@*Enable/disable asynchronous messages. Default off. Slows down debugging
+if enabled and telnet session is open while stepping.
 @item @b{tcl_port} <@var{number}>
 @cindex tcl_port
 @*Port on which to listen for incoming TCL syntax. This port is intended as
index 9ade320c669bfdc3442a290d1622fa094df73cfc..a8de14ee88bac62437a6735cdc83da8e70b8e4ad 100644 (file)
@@ -795,3 +795,16 @@ void register_jim(struct command_context_s *cmd_ctx, const char *name, int (*cmd
        Jim_ListAppendElement(interp, cmd_entry, Jim_NewStringObj(interp, help, -1));
        Jim_ListAppendElement(interp, helptext, cmd_entry);
 }
+
+
+/* return global variable long value or 0 upon failure */
+long jim_global_long(const char *variable)
+{
+       Jim_Obj *objPtr=Jim_GetGlobalVariableStr(interp, variable, JIM_ERRMSG);
+       long t;
+       if (Jim_GetLong(interp, objPtr, &t)==JIM_OK)
+       {
+               return t;
+       }
+       return 0;
+}
index a539c4607bfa2802c243994d882e6db888e222d1..49609a685f8cb7d15797bdc9fcfc223efdbaa931 100644 (file)
@@ -38,16 +38,16 @@ typedef struct command_context_s
        struct command_s *commands;
        int current_target;
        /* Execute a command.
-        * 
+        *
         * If the command fails, it *MUST* return a value != ERROR_OK
         * (many commands break this rule, patches welcome!)
-        * 
+        *
         * This is *especially* important for commands such as writing
         * to flash or verifying memory. The reason is that those commands
         * can be used by programs to determine if the operation succeded
         * or not. If the operation failed, then a program can try
         * an alternative approach.
-        * 
+        *
         * Returning ERROR_COMMAND_SYNTAX_ERROR will have the effect of
         * printing out the syntax of the command.
         */
@@ -101,4 +101,6 @@ extern Jim_Interp *interp;
 
 void register_jim(command_context_t *context, const char *name, int (*cmd)(Jim_Interp *interp, int argc, Jim_Obj *const *argv), const char *help);
 
+long jim_global_long(const char *variable);
+
 #endif /* COMMAND_H */
index eb1906661e865ccdcafb6f8b4e020f349b52c47b..0ac1ebd71d4f776173b8ff3e44166a0a89e3d432 100644 (file)
@@ -300,3 +300,19 @@ proc verify {args} {
 }
 
 add_help_text verify "synonym to verify_image"
+
+
+add_help_text telnet_async "<enable/disable> - enable/disable async messages. Default 0."
+
+global telnet_async_state
+set telnet_async_state 0
+proc telnet_async {state} {
+       global telnet_async_state
+       if {[string compare $state enable]==0} {
+               set telnet_async_state 1 
+       } elseif {[string compare $state disable]==0} {
+               set telnet_async_state 0 
+       } else {
+               return -code error "Illegal option $state"              
+       }
+}
\ No newline at end of file
index 85e1957f8599ce07be127be311d2ade1ae010b01..ef22348a9b7cd282cb9ed1caf498d1f4ba279370 100644 (file)
@@ -48,6 +48,11 @@ static unsigned short telnet_port = 0;
 int handle_exit_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
 int handle_telnet_port_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
 
+static int telnet_async()
+{
+       return jim_global_long("telnet_async_state");
+}
+
 static char *negotiate =
                "\xFF\xFB\x03"          /* IAC WILL Suppress Go Ahead */
                "\xFF\xFB\x01"          /* IAC WILL Echo */
@@ -186,7 +191,8 @@ int telnet_new_connection(connection_t *connection)
        telnet_connection->next_history = 0;
        telnet_connection->current_history = 0;
 
-       log_add_callback(telnet_log_callback, connection);
+       if (telnet_async())
+               log_add_callback(telnet_log_callback, connection);
 
 
 
@@ -341,7 +347,15 @@ int telnet_input(connection_t *connection)
                                                        t_con->line_size = 0;
 
                                                        t_con->line_cursor = -1; /* to supress prompt in log callback during command execution */
+
+                                                       if (!telnet_async())
+                                                               log_add_callback(telnet_log_callback, connection);
+
                                                        retval = command_run_line(command_context, t_con->line);
+
+                                                       if (!telnet_async())
+                                                               log_remove_callback(telnet_log_callback, connection);
+
                                                        t_con->line_cursor = 0;
 
                                                        if (retval == ERROR_COMMAND_CLOSE_CONNECTION)

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)