* 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 *
#include "config.h"
#endif
+#include <helper/log.h>
+#include <helper/binarybuffer.h>
+
+#include "target.h"
#include "target_request.h"
#include "target_type.h"
-#include "binarybuffer.h"
#include "trace.h"
-#include "log.h"
-static command_t *target_request_cmd = NULL;
static int charmsg_mode = 0;
-static int target_asciimsg(target_t *target, uint32_t length)
+static int target_asciimsg(struct target *target, uint32_t length)
{
- char *msg = malloc(CEIL(length + 1, 4) * 4);
- debug_msg_receiver_t *c = target->dbgmsg;
+ char *msg = malloc(DIV_ROUND_UP(length + 1, 4) * 4);
+ struct debug_msg_receiver *c = target->dbgmsg;
- target->type->target_request_data(target, CEIL(length, 4), (uint8_t*)msg);
+ target->type->target_request_data(target, DIV_ROUND_UP(length, 4), (uint8_t*)msg);
msg[length] = 0;
LOG_DEBUG("%s", msg);
return ERROR_OK;
}
-static int target_charmsg(target_t *target, uint8_t msg)
+static int target_charmsg(struct target *target, uint8_t msg)
{
LOG_USER_N("%c", msg);
return ERROR_OK;
}
-static int target_hexmsg(target_t *target, int size, uint32_t length)
+static int target_hexmsg(struct target *target, int size, uint32_t length)
{
- uint8_t *data = malloc(CEIL(length * size, 4) * 4);
+ uint8_t *data = malloc(DIV_ROUND_UP(length * size, 4) * 4);
char line[128];
int line_len;
- debug_msg_receiver_t *c = target->dbgmsg;
+ struct debug_msg_receiver *c = target->dbgmsg;
uint32_t i;
LOG_DEBUG("size: %i, length: %i", (int)size, (int)length);
- target->type->target_request_data(target, CEIL(length * size, 4), (uint8_t*)data);
+ target->type->target_request_data(target, DIV_ROUND_UP(length * size, 4), (uint8_t*)data);
line_len = 0;
for (i = 0; i < length; i++)
/* handle requests from the target received by a target specific
* side-band channel (e.g. ARM7/9 DCC)
*/
-int target_request(target_t *target, uint32_t request)
+int target_request(struct target *target, uint32_t request)
{
target_req_cmd_t target_req_cmd = request & 0xff;
return ERROR_OK;
}
-static int add_debug_msg_receiver(struct command_context_s *cmd_ctx, target_t *target)
+static int add_debug_msg_receiver(struct command_context *cmd_ctx, struct target *target)
{
- debug_msg_receiver_t **p = &target->dbgmsg;
+ struct debug_msg_receiver **p = &target->dbgmsg;
if (target == NULL)
return ERROR_INVALID_ARGUMENTS;
}
/* add new debug message receiver */
- (*p) = malloc(sizeof(debug_msg_receiver_t));
+ (*p) = malloc(sizeof(struct debug_msg_receiver));
(*p)->cmd_ctx = cmd_ctx;
(*p)->next = NULL;
return ERROR_OK;
}
-static debug_msg_receiver_t* find_debug_msg_receiver(struct command_context_s *cmd_ctx, target_t *target)
+static struct debug_msg_receiver* find_debug_msg_receiver(struct command_context *cmd_ctx, struct target *target)
{
int do_all_targets = 0;
- debug_msg_receiver_t **p = &target->dbgmsg;
+ struct debug_msg_receiver **p = &target->dbgmsg;
/* if no target has been specified search all of them */
if (target == NULL)
return NULL;
}
-int delete_debug_msg_receiver(struct command_context_s *cmd_ctx, target_t *target)
+int delete_debug_msg_receiver(struct command_context *cmd_ctx, struct target *target)
{
- debug_msg_receiver_t **p;
- debug_msg_receiver_t *c;
+ struct debug_msg_receiver **p;
+ struct debug_msg_receiver *c;
int do_all_targets = 0;
/* if no target has been specified search all of them */
c = *p;
while (c)
{
- debug_msg_receiver_t *next = c->next;
+ struct debug_msg_receiver *next = c->next;
if (c->cmd_ctx == cmd_ctx)
{
*p = next;
return ERROR_OK;
}
-static int handle_target_request_debugmsgs_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+COMMAND_HANDLER(handle_target_request_debugmsgs_command)
{
- target_t *target = get_current_target(cmd_ctx);
+ struct target *target = get_current_target(CMD_CTX);
int receiving = 0;
/* see if reciever is already registered */
- if (find_debug_msg_receiver(cmd_ctx, target) != NULL)
+ if (find_debug_msg_receiver(CMD_CTX, target) != NULL)
receiving = 1;
- if (argc > 0)
+ if (CMD_ARGC > 0)
{
- if (!strcmp(args[0], "enable") || !strcmp(args[0], "charmsg"))
+ if (!strcmp(CMD_ARGV[0], "enable") || !strcmp(CMD_ARGV[0], "charmsg"))
{
/* don't register if this command context is already receiving */
if (!receiving)
{
receiving = 1;
- add_debug_msg_receiver(cmd_ctx, target);
+ add_debug_msg_receiver(CMD_CTX, target);
}
- charmsg_mode = !strcmp(args[0], "charmsg");
+ charmsg_mode = !strcmp(CMD_ARGV[0], "charmsg");
}
- else if (!strcmp(args[0], "disable"))
+ else if (!strcmp(CMD_ARGV[0], "disable"))
{
/* no need to delete a receiver if none is registered */
if (receiving)
{
receiving = 0;
- delete_debug_msg_receiver(cmd_ctx, target);
+ delete_debug_msg_receiver(CMD_CTX, target);
}
}
else
{
- command_print(cmd_ctx, "usage: target_request debugmsgs ['enable'|'disable'|'charmsg']");
+ command_print(CMD_CTX, "usage: target_request debugmsgs ['enable'|'disable'|'charmsg']");
}
}
- command_print(cmd_ctx, "receiving debug messages from current target %s",
+ command_print(CMD_CTX, "receiving debug messages from current target %s",
(receiving) ? (charmsg_mode?"charmsg":"enabled") : "disabled");
return ERROR_OK;
}
-int target_request_register_commands(struct command_context_s *cmd_ctx)
+static const struct command_registration target_req_exec_command_handlers[] = {
+ {
+ .name = "debugmsgs",
+ .handler = handle_target_request_debugmsgs_command,
+ .mode = COMMAND_EXEC,
+ .help = "display and/or modify reception of debug messages from target",
+ .usage = "['enable'|'charmsg'|'disable']",
+ },
+ COMMAND_REGISTRATION_DONE
+};
+static const struct command_registration target_req_command_handlers[] = {
+ {
+ .name = "target_request",
+ .mode = COMMAND_ANY,
+ .help = "target request command group",
+ .chain = target_req_exec_command_handlers,
+ },
+ COMMAND_REGISTRATION_DONE
+};
+
+int target_request_register_commands(struct command_context *cmd_ctx)
{
- target_request_cmd =
- 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 messages from target");
-
- return ERROR_OK;
+ return register_commands(cmd_ctx, NULL, target_req_command_handlers);
}