From 5bbf2bc88dedcda7f5cb76e9eee518d4e3095c04 Mon Sep 17 00:00:00 2001 From: "timecop@gmail.com" Date: Sun, 27 Oct 2013 11:40:45 +0000 Subject: [PATCH] rewrote box serialization to not use a buffer, also maybe fixed mismatched boxes in GUI (thx Luggi09) git-svn-id: https://afrodevices.googlecode.com/svn/trunk/baseflight@452 7c89a4a9-59b9-e629-4cfe-3a2d53b20e61 --- src/serial.c | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/src/serial.c b/src/serial.c index 664c820b50..2fbd44e128 100755 --- a/src/serial.c +++ b/src/serial.c @@ -201,21 +201,28 @@ void serializeNames(const char *s) void serializeBoxNamesReply(void) { - char buf[256]; // no fucking idea - char *c; - int i, j; + int i, j, k, flag = 1, count = 0, len; - memset(buf, 0, sizeof(buf)); - for (i = 0; i < CHECKBOXITEMS; i++) { - for (j = 0; j < numberBoxItems; j++) { - if (boxes[i].boxIndex == availableBoxes[j]) - strcat(buf, boxes[i].boxName); +reset: + for (i = 0; i < numberBoxItems; i++) { + for (j = 0; j < CHECKBOXITEMS; j++) { + if (boxes[j].boxIndex == availableBoxes[i]) { + len = strlen(boxes[j].boxName); + if (flag) { + count += len; + } else { + for (k = 0; k < len; k++) + serialize8(boxes[j].boxName[k]); + } + } } } - headSerialReply(strlen(buf)); - for (c = buf; *c; c++) - serialize8(*c); + if (flag) { + headSerialReply(count); + flag = 0; + goto reset; + } } void serialInit(uint32_t baudrate)