aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/target/target_request.c12
-rw-r--r--src/target/target_request.h7
2 files changed, 19 insertions, 0 deletions
diff --git a/src/target/target_request.c b/src/target/target_request.c
index ec3d48e..3cdca5e 100644
--- a/src/target/target_request.c
+++ b/src/target/target_request.c
@@ -36,6 +36,15 @@
#include "trace.h"
+static bool got_message = false;
+
+bool target_got_message(void)
+{
+ bool t = got_message;
+ got_message = false;
+ return t;
+}
+
static int charmsg_mode = 0;
static int target_asciimsg(struct target *target, uint32_t length)
@@ -118,6 +127,9 @@ int target_request(struct target *target, uint32_t request)
{
target_req_cmd_t target_req_cmd = request & 0xff;
+ /* Record that we got a target message for back-off algorithm */
+ got_message = true;
+
if (charmsg_mode) {
target_charmsg(target, target_req_cmd);
return ERROR_OK;
diff --git a/src/target/target_request.h b/src/target/target_request.h
index e50c425..740645e 100644
--- a/src/target/target_request.h
+++ b/src/target/target_request.h
@@ -47,5 +47,12 @@ int target_request(struct target *target, uint32_t request);
int delete_debug_msg_receiver(struct command_context *cmd_ctx,
struct target *target);
int target_request_register_commands(struct command_context *cmd_ctx);
+/**
+ * Read and clear the flag as to whether we got a message.
+ *
+ * This is used to implement the back-off algorithm on
+ * sleeping in idle mode.
+ */
+bool target_got_message(void);
#endif /* TARGET_REQUEST_H */