From 75f870994722cf2340d8bc39c0600ca592dadc7a Mon Sep 17 00:00:00 2001 From: Kevin O'Connor Date: Thu, 24 May 2018 13:30:24 -0400 Subject: command: Wait to send ack until after processing commands Send the ack after processing commands - this gives the host code more information on serial buffer utilization. Signed-off-by: Kevin O'Connor --- src/command.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'src/command.c') diff --git a/src/command.c b/src/command.c index 2df70d85..b0c7f882 100644 --- a/src/command.c +++ b/src/command.c @@ -257,7 +257,6 @@ command_find_block(uint8_t *buf, uint_fast8_t buf_len, uint_fast8_t *pop_count) goto nak; } next_sequence = ((msgseq + 1) & MESSAGE_SEQ_MASK) | MESSAGE_DEST; - command_sendf(&encode_acknak); return 1; need_more_data: @@ -308,13 +307,22 @@ command_dispatch(uint8_t *buf, uint_fast8_t msglen) } } +// Send an ack message to the host (notifying that it can send more data) +void +command_send_ack(void) +{ + command_sendf(&encode_acknak); +} + // Find a message block and then dispatch all the commands in it int_fast8_t command_find_and_dispatch(uint8_t *buf, uint_fast8_t buf_len , uint_fast8_t *pop_count) { int_fast8_t ret = command_find_block(buf, buf_len, pop_count); - if (ret > 0) + if (ret > 0) { command_dispatch(buf, *pop_count); + command_send_ack(); + } return ret; } -- cgit v1.2.3-70-g09d2