aboutsummaryrefslogtreecommitdiffstats
path: root/src/generic
diff options
context:
space:
mode:
Diffstat (limited to 'src/generic')
-rw-r--r--src/generic/alloc.c13
-rw-r--r--src/generic/crc16_ccitt.c22
-rw-r--r--src/generic/misc.h16
3 files changed, 51 insertions, 0 deletions
diff --git a/src/generic/alloc.c b/src/generic/alloc.c
new file mode 100644
index 00000000..826e4f9e
--- /dev/null
+++ b/src/generic/alloc.c
@@ -0,0 +1,13 @@
+// Dummy implementation for alloc commands
+//
+// Copyright (C) 2016 Kevin O'Connor <kevin@koconnor.net>
+//
+// This file may be distributed under the terms of the GNU GPLv3 license.
+
+#include "misc.h"
+
+// Return the maximum allocation size that can succeed up to 'reqsize'
+size_t alloc_maxsize(size_t reqsize)
+{
+ return reqsize;
+}
diff --git a/src/generic/crc16_ccitt.c b/src/generic/crc16_ccitt.c
new file mode 100644
index 00000000..8347bb83
--- /dev/null
+++ b/src/generic/crc16_ccitt.c
@@ -0,0 +1,22 @@
+// Code for crc16_ccitt
+//
+// Copyright (C) 2016 Kevin O'Connor <kevin@koconnor.net>
+//
+// This file may be distributed under the terms of the GNU GPLv3 license.
+
+#include "misc.h" // crc16_ccitt
+
+// Implement the standard crc "ccitt" algorithm on the given buffer
+uint16_t
+crc16_ccitt(char *buf, uint8_t len)
+{
+ uint16_t crc = 0xffff;
+ while (len--) {
+ uint8_t data = *buf++;
+ data ^= crc & 0xff;
+ data ^= data << 4;
+ crc = ((((uint16_t)data << 8) | (crc >> 8)) ^ (uint8_t)(data >> 4)
+ ^ ((uint16_t)data << 3));
+ }
+ return crc;
+}
diff --git a/src/generic/misc.h b/src/generic/misc.h
new file mode 100644
index 00000000..9b2986be
--- /dev/null
+++ b/src/generic/misc.h
@@ -0,0 +1,16 @@
+#ifndef __GENERIC_MISC_H
+#define __GENERIC_MISC_H
+
+#include <stddef.h> // size_t
+#include <stdint.h> // uint8_t
+
+char *console_get_input(uint8_t *plen);
+void console_pop_input(uint8_t len);
+char *console_get_output(uint8_t len);
+void console_push_output(uint8_t len);
+
+size_t alloc_maxsize(size_t reqsize);
+
+uint16_t crc16_ccitt(char *buf, uint8_t len);
+
+#endif // misc.h