* 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 *
#include <string.h>
command_t *target_request_cmd = NULL;
+static int charmsg_mode = 0;
int target_asciimsg(target_t *target, 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);
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:
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
}
target = target->next;
- } while (target && all_targets);
+ } while (target && do_all_targets);
return NULL;
}
{
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
}
target = target->next;
- } while (target && all_targets);
+ } while (target && do_all_targets);
return ERROR_OK;
}
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)
receiving = 1;
add_debug_msg_receiver(cmd_ctx, target);
}
+ charmsg_mode = !strcmp(args[0], "charmsg");
}
else if (!strcmp(args[0], "disable"))
{
}
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;
}
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;
}