]> git.sur5r.net Git - openocd/blobdiff - src/target/target_request.c
- 16 and 32 bit unaligned accesses supported
[openocd] / src / target / target_request.c
index 9dc58607986744b6c3e5d45553130ef68e1a48dd..e168d944c2a11989ac29c30823603d8b4ff2b1f1 100644 (file)
@@ -53,6 +53,13 @@ int target_asciimsg(target_t *target, u32 length)
        return ERROR_OK;
 }
 
+int target_charmsg(target_t *target, u8 msg)
+{
+       USER_N("%c", msg);
+       
+       return ERROR_OK;
+}
+
 int target_hexmsg(target_t *target, int size, u32 length)
 {
        u8 *data = malloc(CEIL(length * size, 4) * 4);
@@ -83,6 +90,8 @@ int target_hexmsg(target_t *target, int size, u32 length)
                
                if ((i%8 == 7) || (i == length - 1))
                {
+                       DEBUG("%s", line);
+                       
                        while (c)
                        {
                                command_print(c->cmd_ctx, "%s", line);
@@ -120,6 +129,9 @@ int target_request(target_t *target, u32 request)
                                target_hexmsg(target, (request & 0xff00) >> 8, (request & 0xffff0000) >> 16);
                        }
                        break;
+               case TARGET_REQ_DEBUGCHAR:
+                       target_charmsg(target, (request & 0x00ff0000) >> 16);
+                       break;
 /*             case TARGET_REQ_SEMIHOSTING:
  *                     break;
  */
@@ -153,6 +165,9 @@ int add_debug_msg_receiver(struct command_context_s *cmd_ctx, target_t *target)
        (*p)->cmd_ctx = cmd_ctx;
        (*p)->next = NULL;
        
+       /* enable callback */
+       target->dbg_msg_enabled = 1;
+       
        return ERROR_OK;
 }
 
@@ -217,6 +232,11 @@ int delete_debug_msg_receiver(struct command_context_s *cmd_ctx, target_t *targe
                        {
                                *p = next;
                                free(c);
+                               if (*p == NULL)
+                               {
+                                       /* disable callback */
+                                       target->dbg_msg_enabled = 0;
+                               }
                                return ERROR_OK;
                        }
                        else