CRC basic library
Dependents: D7A_1x_demo_CodeUpgradeProtocol D7A_1x_demo_big_file D7A_1x_demo_sensors_v3 D7A_1x_demo_send_file_data
crc.h@2:88116ae677af, 2018-02-01 (annotated)
- 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?
User | Revision | Line number | New 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_ */ |