target: check target supports target_request_data
authorSpencer Oliver <spen@spen-soft.co.uk>
Fri, 2 Aug 2013 11:57:30 +0000 (12:57 +0100)
committerSpencer Oliver <spen@spen-soft.co.uk>
Sun, 8 Sep 2013 16:12:27 +0000 (16:12 +0000)
Make sure the target support target requests before we enable any receivers.

Change-Id: I8ce42922eaff76fb5e7a114da716f2a6585a6ab5
Signed-off-by: Spencer Oliver <spen@spen-soft.co.uk>
Reviewed-on: http://openocd.zylin.com/1536
Tested-by: jenkins
Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
src/target/target_request.c

index 2b09df660ba0c5d824becd1478f77c6f42a2f2ef..df2fc34ee1d66b90b3e7f3c5a856244d2068b9da 100644 (file)
@@ -122,6 +122,8 @@ int target_request(struct target *target, uint32_t request)
 {
        target_req_cmd_t target_req_cmd = request & 0xff;
 
+       assert(target->type->target_request_data);
+
        /* Record that we got a target message for back-off algorithm */
        got_message = true;
 
@@ -256,6 +258,11 @@ COMMAND_HANDLER(handle_target_request_debugmsgs_command)
 
        int receiving = 0;
 
+       if (target->type->target_request_data == NULL) {
+               LOG_ERROR("Target %s does not support target requests", target_name(target));
+               return ERROR_OK;
+       }
+
        /* see if reciever is already registered */
        if (find_debug_msg_receiver(CMD_CTX, target) != NULL)
                receiving = 1;