--- /dev/null
+crctab = []
+CRC16 = 0x1021
+
+def do_crc(message, crc = 0):
+ for i in range(0,len(message)):
+ crc = ((crc << 8) ^ (crctab[(crc >> 8) ^ ord(message[i])])) & 0xffff
+ return crc
+
+# Generate crctab
+for val in range(0,256):
+ crc = val << 8;
+ for i in range(0,8):
+ crc = crc << 1
+ if (crc & 0x10000):
+ crc = crc ^ CRC16
+ crctab.append(crc & 0xffff)