diff --git a/src/avr/usbserial.c b/src/avr/usbserial.c index 6dbe4f0d..fe378227 100644 --- a/src/avr/usbserial.c +++ b/src/avr/usbserial.c @@ -65,8 +65,7 @@ console_sendf(const struct command_encoder *ce, va_list args) { // Generate message static uint8_t buf[MESSAGE_MAX]; - uint8_t msglen = command_encodef(buf, ce, args); - command_add_frame(buf, msglen); + uint8_t msglen = command_encode_and_frame(buf, ce, args); // Transmit message usb_serial_write((void*)buf, msglen); diff --git a/src/command.c b/src/command.c index 6161a031..965f91ed 100644 --- a/src/command.c +++ b/src/command.c @@ -167,6 +167,16 @@ command_add_frame(uint8_t *buf, uint_fast8_t msglen) buf[msglen - MESSAGE_TRAILER_SYNC] = MESSAGE_SYNC; } +// Encode a message and then add a message block frame around it +uint_fast8_t +command_encode_and_frame(uint8_t *buf, const struct command_encoder *ce + , va_list args) +{ + uint_fast8_t msglen = command_encodef(buf, ce, args); + command_add_frame(buf, msglen); + return msglen; +} + static uint8_t in_sendf; // Encode and transmit a "response" message diff --git a/src/command.h b/src/command.h index dd960cdf..2dd195ea 100644 --- a/src/command.h +++ b/src/command.h @@ -65,8 +65,10 @@ uint8_t *command_parsef(uint8_t *p, uint8_t *maxend , const struct command_parser *cp, uint32_t *args); uint_fast8_t command_encodef(uint8_t *buf, const struct command_encoder *ce , va_list args); -void command_sendf(const struct command_encoder *ce, ...); void command_add_frame(uint8_t *buf, uint_fast8_t msglen); +uint_fast8_t command_encode_and_frame( + uint8_t *buf, const struct command_encoder *ce, va_list args); +void command_sendf(const struct command_encoder *ce, ...); int_fast8_t command_find_block(uint8_t *buf, uint_fast8_t buf_len , uint_fast8_t *pop_count); void command_dispatch(uint8_t *buf, uint_fast8_t msglen); diff --git a/src/generic/serial_irq.c b/src/generic/serial_irq.c index 7c7842ea..6b682a0f 100644 --- a/src/generic/serial_irq.c +++ b/src/generic/serial_irq.c @@ -108,8 +108,7 @@ console_sendf(const struct command_encoder *ce, va_list args) // Generate message uint8_t *buf = &transmit_buf[tmax]; - uint_fast8_t msglen = command_encodef(buf, ce, args); - command_add_frame(buf, msglen); + uint_fast8_t msglen = command_encode_and_frame(buf, ce, args); // Start message transmit writeb(&transmit_max, tmax + msglen); diff --git a/src/generic/usb_cdc.c b/src/generic/usb_cdc.c index 49bb483e..56a60fac 100644 --- a/src/generic/usb_cdc.c +++ b/src/generic/usb_cdc.c @@ -65,8 +65,7 @@ console_sendf(const struct command_encoder *ce, va_list args) // Generate message uint8_t *buf = &transmit_buf[tpos]; - uint_fast8_t msglen = command_encodef(buf, ce, args); - command_add_frame(buf, msglen); + uint_fast8_t msglen = command_encode_and_frame(buf, ce, args); // Start message transmit transmit_pos = tpos + msglen; diff --git a/src/linux/console.c b/src/linux/console.c index a1086942..9064171f 100644 --- a/src/linux/console.c +++ b/src/linux/console.c @@ -176,8 +176,7 @@ console_sendf(const struct command_encoder *ce, va_list args) { // Generate message uint8_t buf[MESSAGE_MAX]; - uint_fast8_t msglen = command_encodef(buf, ce, args); - command_add_frame(buf, msglen); + uint_fast8_t msglen = command_encode_and_frame(buf, ce, args); // Transmit message int ret = write(main_pfd[MP_TTY_IDX].fd, buf, msglen);