CRC basic library

Dependents:   D7A_1x_demo_CodeUpgradeProtocol D7A_1x_demo_big_file D7A_1x_demo_sensors_v3 D7A_1x_demo_send_file_data

Committer:
Jeej
Date:
Thu Feb 01 11:41:24 2018 +0000
Revision:
2:88116ae677af
Parent:
1:3f4e25d35b1d
Added fast CRC32 function for CRC calculation by chunks.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jeej 0:ad1af95e9c7f 1 /*******************************************************************\
Jeej 0:ad1af95e9c7f 2 * *
Jeej 0:ad1af95e9c7f 3 * Library : lib_crc *
Jeej 0:ad1af95e9c7f 4 * File : lib_crc.h *
Jeej 0:ad1af95e9c7f 5 * Author : Lammert Bies 1999-2008 *
Jeej 0:ad1af95e9c7f 6 * E-mail : info@lammertbies.nl *
Jeej 0:ad1af95e9c7f 7 * Language : ANSI C *
Jeej 0:ad1af95e9c7f 8 * *
Jeej 0:ad1af95e9c7f 9 * *
Jeej 0:ad1af95e9c7f 10 * Description *
Jeej 0:ad1af95e9c7f 11 * =========== *
Jeej 0:ad1af95e9c7f 12 * *
Jeej 0:ad1af95e9c7f 13 * The file lib_crc.h contains public definitions and proto- *
Jeej 0:ad1af95e9c7f 14 * types for the CRC functions present in lib_crc.c. *
Jeej 0:ad1af95e9c7f 15 * *
Jeej 0:ad1af95e9c7f 16 * *
Jeej 0:ad1af95e9c7f 17 * Dependencies *
Jeej 0:ad1af95e9c7f 18 * ============ *
Jeej 0:ad1af95e9c7f 19 * *
Jeej 0:ad1af95e9c7f 20 * none *
Jeej 0:ad1af95e9c7f 21 * *
Jeej 0:ad1af95e9c7f 22 * *
Jeej 0:ad1af95e9c7f 23 * Modification history *
Jeej 0:ad1af95e9c7f 24 * ==================== *
Jeej 0:ad1af95e9c7f 25 * *
Jeej 0:ad1af95e9c7f 26 * Date Version Comment *
Jeej 0:ad1af95e9c7f 27 * *
Jeej 0:ad1af95e9c7f 28 * 2010-10-20 1.17 Added several routines (JP) *
Jeej 0:ad1af95e9c7f 29 * 2008-04-20 1.16 Added CRC-CCITT routine for Kermit *
Jeej 0:ad1af95e9c7f 30 * *
Jeej 0:ad1af95e9c7f 31 * 2007-04-01 1.15 Added CRC16 calculation for Modbus *
Jeej 0:ad1af95e9c7f 32 * *
Jeej 0:ad1af95e9c7f 33 * 2007-03-28 1.14 Added CRC16 routine for Sick devices *
Jeej 0:ad1af95e9c7f 34 * *
Jeej 0:ad1af95e9c7f 35 * 2005-12-17 1.13 Added CRC-CCITT with initial 0x1D0F *
Jeej 0:ad1af95e9c7f 36 * *
Jeej 0:ad1af95e9c7f 37 * 2005-02-14 1.12 Added CRC-CCITT with initial 0x0000 *
Jeej 0:ad1af95e9c7f 38 * *
Jeej 0:ad1af95e9c7f 39 * 2005-02-05 1.11 Fixed bug in CRC-DNP routine *
Jeej 0:ad1af95e9c7f 40 * *
Jeej 0:ad1af95e9c7f 41 * 2005-02-04 1.10 Added CRC-DNP routines *
Jeej 0:ad1af95e9c7f 42 * *
Jeej 0:ad1af95e9c7f 43 * 2005-01-07 1.02 Changes in tst_crc.c *
Jeej 0:ad1af95e9c7f 44 * *
Jeej 0:ad1af95e9c7f 45 * 1999-02-21 1.01 Added FALSE and TRUE mnemonics *
Jeej 0:ad1af95e9c7f 46 * *
Jeej 0:ad1af95e9c7f 47 * 1999-01-22 1.00 Initial source *
Jeej 0:ad1af95e9c7f 48 * *
Jeej 0:ad1af95e9c7f 49 \*******************************************************************/
Jeej 1:3f4e25d35b1d 50 #ifndef _CRC_H_
Jeej 1:3f4e25d35b1d 51 #define _CRC_H_
Jeej 0:ad1af95e9c7f 52
Jeej 1:3f4e25d35b1d 53 #include "mbed.h"
Jeej 0:ad1af95e9c7f 54
Jeej 0:ad1af95e9c7f 55 #define CRC_VERSION "2.0"
Jeej 0:ad1af95e9c7f 56
Jeej 1:3f4e25d35b1d 57 //#define CRC8
Jeej 1:3f4e25d35b1d 58 //#define CRC16
Jeej 1:3f4e25d35b1d 59 #define CRC32
Jeej 1:3f4e25d35b1d 60 //#define CRC64
Jeej 0:ad1af95e9c7f 61
Jeej 0:ad1af95e9c7f 62
Jeej 0:ad1af95e9c7f 63 /* Does the CRC calculation over a string specified by length (allows 00 inside string) */
Jeej 1:3f4e25d35b1d 64
Jeej 1:3f4e25d35b1d 65 #ifdef CRC8
Jeej 1:3f4e25d35b1d 66 uint8_t crc8(char *p, uint32_t length);
Jeej 1:3f4e25d35b1d 67 #endif
Jeej 1:3f4e25d35b1d 68
Jeej 1:3f4e25d35b1d 69 #ifdef CRC16
Jeej 1:3f4e25d35b1d 70 uint16_t crc16(char *p, uint32_t length);
Jeej 1:3f4e25d35b1d 71 #endif
Jeej 0:ad1af95e9c7f 72
Jeej 1:3f4e25d35b1d 73 #ifdef CRC32
Jeej 1:3f4e25d35b1d 74 uint32_t crc32(char *p, uint32_t length);
Jeej 1:3f4e25d35b1d 75 #endif
Jeej 0:ad1af95e9c7f 76
Jeej 1:3f4e25d35b1d 77 #ifdef CRC64
Jeej 1:3f4e25d35b1d 78 uint64_t crc64(char *p, uint32_t length);
Jeej 1:3f4e25d35b1d 79 #endif
Jeej 0:ad1af95e9c7f 80
Jeej 1:3f4e25d35b1d 81 #endif /* _CRC_H_ */