aboutsummaryrefslogtreecommitdiffstats
path: root/src/generic/crc16_ccitt.c
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2016-06-05 14:52:17 -0400
committerKevin O'Connor <kevin@koconnor.net>2016-06-13 23:18:58 -0400
commit9971f999b382ef51a3a3d1db4a3385b7cc23a3a0 (patch)
tree4950714f34dfbdfb0a04cd51763e142c104c93e7 /src/generic/crc16_ccitt.c
parentff789058dfe5d3e5f34482f8410aaf0358e582e9 (diff)
downloadkutter-9971f999b382ef51a3a3d1db4a3385b7cc23a3a0.tar.gz
kutter-9971f999b382ef51a3a3d1db4a3385b7cc23a3a0.tar.xz
kutter-9971f999b382ef51a3a3d1db4a3385b7cc23a3a0.zip
generic: Create generic board infrastructure and move misc.h to it
Instead of creating a misc.h file in each board directory, create a generic board directory and declare misc.h there. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'src/generic/crc16_ccitt.c')
-rw-r--r--src/generic/crc16_ccitt.c22
1 files changed, 22 insertions, 0 deletions
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;
+}