]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - tos/system/CrcC.nc
Remove bogus 'tab:4' and 'tab:2' markers.
[tinyos-2.x.git] / tos / system / CrcC.nc
index 9b2b1ad0939884858bb52b47defd4eaca74e8691..c4151cf27632658dc9ca9f3f8ee704d3bfb4101e 100644 (file)
@@ -1,4 +1,4 @@
-/*                                                                      tab:2
+/*                                                                      
  *
  * "Copyright (c) 2000-2007 The Regents of the University of
  * California.  All rights reserved.
  * value of a byte array.
  *
  * @author Jonathan Hui <jwhui@cs.berkeley.edu>
+ * @author David Moss
  */
 #include <crc.h>
 
 module CrcC {
   provides interface Crc;
 }
+
 implementation {
 
-  command uint16_t Crc.crc16(void* buf, uint8_t len) {
-    uint8_t* tmp = (uint8_t*)buf;
+  /**
+   * Compute the CRC-16 value of a byte array.
+   *
+   * @param   buf A pointer to the buffer over which to compute CRC.
+   * @param   len The length of the buffer over which to compute CRC.
+   * @return  The CRC-16 value.
+   */
+  async command uint16_t Crc.crc16(void *buf, uint8_t len) {
+    return call Crc.seededCrc16(0, buf, len);
+  }
+  
+  /**
+   * Compute a generic CRC-16 using a given seed.  Used to compute CRC's
+   * of discontinuous data.
+   * 
+   * @param startCrc An initial CRC value to begin with
+   * @param buf A pointer to a buffer of data
+   * @param len The length of the buffer
+   * @return The CRC-16 value.
+   */
+  async command uint16_t Crc.seededCrc16(uint16_t startCrc, void *buf, uint8_t len) {
+    uint8_t *tmp = (uint8_t *) buf;
     uint16_t crc;
-    for (crc = 0; len > 0; len--) {
+    for (crc = startCrc; len > 0; len--) {
       crc = crcByte(crc, *tmp++);
     }
     return crc;