X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Ftarget%2Ftarget_request.c;h=1aa7d3983528d2aff69e62c8159e881d08d7094e;hp=4d92704d094dc3c598ee2f7c7297c828e068fafb;hb=40580e2d71ac56131a5da7e5f67a0b63450e4f24;hpb=526fe3d83e118d87af34353a7140c02f3f1a3c19 diff --git a/src/target/target_request.c b/src/target/target_request.c index 4d92704d09..1aa7d39835 100644 --- a/src/target/target_request.c +++ b/src/target/target_request.c @@ -2,9 +2,12 @@ * Copyright (C) 2007 by Dominic Rath * * Dominic.Rath@gmx.de * * * - * Copyright (C) 2007,2008 Øyvind Harboe * + * Copyright (C) 2007,2008 Øyvind Harboe * * oyvind.harboe@zylin.com * * * + * Copyright (C) 2008 by Spencer Oliver * + * spen@spen-soft.co.uk * + * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * @@ -36,6 +39,7 @@ #include command_t *target_request_cmd = NULL; +static int charmsg_mode = 0; int target_asciimsg(target_t *target, u32 length) { @@ -69,7 +73,7 @@ int target_hexmsg(target_t *target, int size, u32 length) char line[128]; int line_len; debug_msg_receiver_t *c = target->dbgmsg; - int i; + u32 i; LOG_DEBUG("size: %i, length: %i", size, length); @@ -116,7 +120,11 @@ int target_hexmsg(target_t *target, int size, u32 length) int target_request(target_t *target, u32 request) { target_req_cmd_t target_req_cmd = request & 0xff; - + + if ( charmsg_mode ) { + target_charmsg(target, target_req_cmd ); + return ERROR_OK; + } switch (target_req_cmd) { case TARGET_REQ_TRACEMSG: @@ -176,18 +184,18 @@ int add_debug_msg_receiver(struct command_context_s *cmd_ctx, target_t *target) debug_msg_receiver_t* find_debug_msg_receiver(struct command_context_s *cmd_ctx, target_t *target) { - int all_targets = 0; + int do_all_targets = 0; debug_msg_receiver_t **p = &target->dbgmsg; /* if no target has been specified search all of them */ if (target == NULL) { /* if no targets haven been specified */ - if (targets == NULL) + if (all_targets == NULL) return NULL; - target = targets; - all_targets = 1; + target = all_targets; + do_all_targets = 1; } do @@ -202,7 +210,7 @@ debug_msg_receiver_t* find_debug_msg_receiver(struct command_context_s *cmd_ctx, } target = target->next; - } while (target && all_targets); + } while (target && do_all_targets); return NULL; } @@ -211,17 +219,17 @@ int delete_debug_msg_receiver(struct command_context_s *cmd_ctx, target_t *targe { debug_msg_receiver_t **p; debug_msg_receiver_t *c; - int all_targets = 0; + int do_all_targets = 0; /* if no target has been specified search all of them */ if (target == NULL) { /* if no targets haven been specified */ - if (targets == NULL) + if (all_targets == NULL) return ERROR_OK; - target = targets; - all_targets = 1; + target = all_targets; + do_all_targets = 1; } do @@ -248,7 +256,7 @@ int delete_debug_msg_receiver(struct command_context_s *cmd_ctx, target_t *targe } target = target->next; - } while (target && all_targets); + } while (target && do_all_targets); return ERROR_OK; } @@ -265,7 +273,7 @@ int handle_target_request_debugmsgs_command(struct command_context_s *cmd_ctx, c if (argc > 0) { - if (!strcmp(args[0], "enable")) + if (!strcmp(args[0], "enable") || !strcmp(args[0], "charmsg")) { /* don't register if this command context is already receiving */ if (!receiving) @@ -273,6 +281,7 @@ int handle_target_request_debugmsgs_command(struct command_context_s *cmd_ctx, c receiving = 1; add_debug_msg_receiver(cmd_ctx, target); } + charmsg_mode = !strcmp(args[0], "charmsg"); } else if (!strcmp(args[0], "disable")) { @@ -285,13 +294,12 @@ int handle_target_request_debugmsgs_command(struct command_context_s *cmd_ctx, c } else { - command_print(cmd_ctx, "usage: target_request debugmsgs ['enable'|'disable']"); + command_print(cmd_ctx, "usage: target_request debugmsgs ['enable'|'disable'|'charmsg']"); } } command_print(cmd_ctx, "receiving debug messages from current target %s", - (receiving) ? "enabled" : "disabled"); - + (receiving) ? (charmsg_mode?"charmsg":"enabled") : "disabled" ); return ERROR_OK; } @@ -301,7 +309,7 @@ int target_request_register_commands(struct command_context_s *cmd_ctx) register_command(cmd_ctx, NULL, "target_request", NULL, COMMAND_ANY, "target_request commands"); register_command(cmd_ctx, target_request_cmd, "debugmsgs", handle_target_request_debugmsgs_command, - COMMAND_EXEC, "enable/disable reception of debug messgages from target"); + COMMAND_EXEC, "enable/disable reception of debug messages from target"); return ERROR_OK; }