aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Code_Composer/twine_usblib/usb_serial_buffer.c
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Code_Composer/twine_usblib/usb_serial_buffer.c')
-rw-r--r--Software/Code_Composer/twine_usblib/usb_serial_buffer.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/Software/Code_Composer/twine_usblib/usb_serial_buffer.c b/Software/Code_Composer/twine_usblib/usb_serial_buffer.c
new file mode 100644
index 000000000..5025bb772
--- /dev/null
+++ b/Software/Code_Composer/twine_usblib/usb_serial_buffer.c
@@ -0,0 +1,32 @@
+/*
+ * usb_serial_buffer.c
+ *
+ * Created on: Sep 24, 2017
+ * Author: Roy
+ */
+
+#include <stdlib.h>
+#include "usb_serial_buffer.h"
+
+void initArray(SerialBuffer *a, size_t initialSize) {
+ a->buffer = (char *)malloc(initialSize);
+ a->used = 0;
+ a->size = initialSize;
+}
+
+void insertArray(SerialBuffer *a, char element) {
+ // a->used is the number of used entries, because a->array[a->used++] updates a->used only *after* the array has been accessed.
+ // Therefore a->used can go up to a->size
+ if (a->used == a->size) {
+ a->size += 1;
+ a->buffer = (char *)realloc(a->buffer, a->size * sizeof(char));
+ }
+ a->buffer[a->used++] = element;
+}
+
+void freeArray(SerialBuffer *a) {
+ free(a->buffer);
+ a->buffer = NULL;
+ a->used = a->size = 0;
+}
+