crc8 Library - Original copyright: Colin O'Flynn - Copyright (c) 2002

Dependents:   mlx90615_lpc1768

Committer:
evwijk
Date:
Thu Oct 21 17:11:49 2010 +0000
Revision:
0:cc65a6cec1a1

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
evwijk 0:cc65a6cec1a1 1 /* please read copyright-notice at EOF */
evwijk 0:cc65a6cec1a1 2
evwijk 0:cc65a6cec1a1 3 #include "crc8.h"
evwijk 0:cc65a6cec1a1 4
evwijk 0:cc65a6cec1a1 5 #define CRC8INIT 0x00
evwijk 0:cc65a6cec1a1 6 #define CRC8POLY 0x18 //0X18 = X^8+X^5+X^4+X^0
evwijk 0:cc65a6cec1a1 7
evwijk 0:cc65a6cec1a1 8 char crc8 ( char *data_in, int number_of_bytes_to_read )
evwijk 0:cc65a6cec1a1 9 {
evwijk 0:cc65a6cec1a1 10 char crc;
evwijk 0:cc65a6cec1a1 11 int loop_count;
evwijk 0:cc65a6cec1a1 12 char bit_counter;
evwijk 0:cc65a6cec1a1 13 char data;
evwijk 0:cc65a6cec1a1 14 char feedback_bit;
evwijk 0:cc65a6cec1a1 15
evwijk 0:cc65a6cec1a1 16 crc = CRC8INIT;
evwijk 0:cc65a6cec1a1 17
evwijk 0:cc65a6cec1a1 18 for (loop_count = 0; loop_count != number_of_bytes_to_read; loop_count++)
evwijk 0:cc65a6cec1a1 19 {
evwijk 0:cc65a6cec1a1 20 data = data_in[loop_count];
evwijk 0:cc65a6cec1a1 21
evwijk 0:cc65a6cec1a1 22 bit_counter = 8;
evwijk 0:cc65a6cec1a1 23 do {
evwijk 0:cc65a6cec1a1 24 feedback_bit = (crc ^ data) & 0x01;
evwijk 0:cc65a6cec1a1 25
evwijk 0:cc65a6cec1a1 26 if ( feedback_bit == 0x01 ) {
evwijk 0:cc65a6cec1a1 27 crc = crc ^ CRC8POLY;
evwijk 0:cc65a6cec1a1 28 }
evwijk 0:cc65a6cec1a1 29 crc = (crc >> 1) & 0x7F;
evwijk 0:cc65a6cec1a1 30 if ( feedback_bit == 0x01 ) {
evwijk 0:cc65a6cec1a1 31 crc = crc | 0x80;
evwijk 0:cc65a6cec1a1 32 }
evwijk 0:cc65a6cec1a1 33
evwijk 0:cc65a6cec1a1 34 data = data >> 1;
evwijk 0:cc65a6cec1a1 35 bit_counter--;
evwijk 0:cc65a6cec1a1 36
evwijk 0:cc65a6cec1a1 37 } while (bit_counter > 0);
evwijk 0:cc65a6cec1a1 38 }
evwijk 0:cc65a6cec1a1 39
evwijk 0:cc65a6cec1a1 40 return crc;
evwijk 0:cc65a6cec1a1 41 }
evwijk 0:cc65a6cec1a1 42
evwijk 0:cc65a6cec1a1 43 /*
evwijk 0:cc65a6cec1a1 44 This code is from Colin O'Flynn - Copyright (c) 2002
evwijk 0:cc65a6cec1a1 45 only minor changes by M.Thomas 9/2004
evwijk 0:cc65a6cec1a1 46 oonverted to mbed library by Erik van Wijk 10/2010
evwijk 0:cc65a6cec1a1 47
evwijk 0:cc65a6cec1a1 48 Permission is hereby granted, free of charge, to any person obtaining a copy of
evwijk 0:cc65a6cec1a1 49 this software and associated documentation files (the "Software"), to deal in
evwijk 0:cc65a6cec1a1 50 the Software without restriction, including without limitation the rights to
evwijk 0:cc65a6cec1a1 51 use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
evwijk 0:cc65a6cec1a1 52 the Software, and to permit persons to whom the Software is furnished to do so,
evwijk 0:cc65a6cec1a1 53 subject to the following conditions:
evwijk 0:cc65a6cec1a1 54
evwijk 0:cc65a6cec1a1 55 The above copyright notice and this permission notice shall be included in all
evwijk 0:cc65a6cec1a1 56 copies or substantial portions of the Software.
evwijk 0:cc65a6cec1a1 57
evwijk 0:cc65a6cec1a1 58 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
evwijk 0:cc65a6cec1a1 59 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
evwijk 0:cc65a6cec1a1 60 FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
evwijk 0:cc65a6cec1a1 61 COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
evwijk 0:cc65a6cec1a1 62 IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
evwijk 0:cc65a6cec1a1 63 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
evwijk 0:cc65a6cec1a1 64 */