Hard brake rather than coast

Fork of PololuQik2 by Paolina Povolotskaya

Revision:
0:511d65ef1276
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CRC7.h	Mon Mar 03 19:34:13 2014 +0000
@@ -0,0 +1,66 @@
+/**
+ *	@file		CRC7.h
+ *	@author		Edward Wilson (edwilson1989@gmail.com)
+ *  @date 		Dec 16, 2010
+ *  @brief		Cyclic Redundancy Check Class. This class computes a CRC7 of the provided data.
+ *
+ *
+ */
+
+#ifndef CRC7_H_
+#define CRC7_H_
+
+#define CRC7_POLY 0x91 /**< The Chosen Polynomial for CRC7. This is a standard value */
+
+
+/**
+ * This is a CRC7 implementation for checking validity of messages. It will compute
+ * a checksum which can be used to determine if a message has been recieved unaltered.
+ * This is used particularly over wireless tranmission or noisy serial lines.
+ *
+ * This implements a stored CRC table. This will taken up 256 bytes of RAM when the object
+ * is instantiated. The reason for using a stored CRC table is speed. This is a compromise
+ * between speed and storage spaces.
+ *
+ * This could possibly be static object.
+ */
+class CRC7
+{
+public:
+    /**
+     * Default constructor. This method sets up the CRC table with pre-hashed values.
+     */
+    CRC7();
+    /**
+     * this method will generate the CRC7 checksum for the supplied message. It will be returned
+     * from this method.
+     *
+     * @param message[] the message to be hashed.
+     * @param length the length of the message to be hashed in characters.
+     * @return the checksum computed.
+     */
+    unsigned char CRC(unsigned char message[], unsigned int length);
+
+private:
+    /**
+     * Used to retrieve the value from the CRCTable.
+     *
+     * @see GenerateCRCTable()
+     * @param val the character which the hash is required for.
+     * @return the precomputed hash.
+     */
+    unsigned char GetCRC(unsigned char val);
+    /**
+     * Generates the CRC table which is used for lookups during operation.
+     * This method is faster than having to compute the hash code each time
+     * however it comes at a cost of using up valuable RAM.
+     */
+    void GenerateCRCTable();
+
+    /**
+     * The array of characters which stores the precomputed hash codes.
+     */
+    unsigned char CRCTable[256];
+};
+
+#endif /* CRC7_H_ */