File indexing completed on 2025-05-11 08:24:11
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040 #include <rtems/crc.h>
0041
0042 static const uint32_t _CRC24Q_Table[256] = {
0043 UINT32_C(0x000000), UINT32_C(0x864CFB), UINT32_C(0x8AD50D),
0044 UINT32_C(0x0C99F6), UINT32_C(0x93E6E1), UINT32_C(0x15AA1A),
0045 UINT32_C(0x1933EC), UINT32_C(0x9F7F17), UINT32_C(0xA18139),
0046 UINT32_C(0x27CDC2), UINT32_C(0x2B5434), UINT32_C(0xAD18CF),
0047 UINT32_C(0x3267D8), UINT32_C(0xB42B23), UINT32_C(0xB8B2D5),
0048 UINT32_C(0x3EFE2E), UINT32_C(0xC54E89), UINT32_C(0x430272),
0049 UINT32_C(0x4F9B84), UINT32_C(0xC9D77F), UINT32_C(0x56A868),
0050 UINT32_C(0xD0E493), UINT32_C(0xDC7D65), UINT32_C(0x5A319E),
0051 UINT32_C(0x64CFB0), UINT32_C(0xE2834B), UINT32_C(0xEE1ABD),
0052 UINT32_C(0x685646), UINT32_C(0xF72951), UINT32_C(0x7165AA),
0053 UINT32_C(0x7DFC5C), UINT32_C(0xFBB0A7), UINT32_C(0x0CD1E9),
0054 UINT32_C(0x8A9D12), UINT32_C(0x8604E4), UINT32_C(0x00481F),
0055 UINT32_C(0x9F3708), UINT32_C(0x197BF3), UINT32_C(0x15E205),
0056 UINT32_C(0x93AEFE), UINT32_C(0xAD50D0), UINT32_C(0x2B1C2B),
0057 UINT32_C(0x2785DD), UINT32_C(0xA1C926), UINT32_C(0x3EB631),
0058 UINT32_C(0xB8FACA), UINT32_C(0xB4633C), UINT32_C(0x322FC7),
0059 UINT32_C(0xC99F60), UINT32_C(0x4FD39B), UINT32_C(0x434A6D),
0060 UINT32_C(0xC50696), UINT32_C(0x5A7981), UINT32_C(0xDC357A),
0061 UINT32_C(0xD0AC8C), UINT32_C(0x56E077), UINT32_C(0x681E59),
0062 UINT32_C(0xEE52A2), UINT32_C(0xE2CB54), UINT32_C(0x6487AF),
0063 UINT32_C(0xFBF8B8), UINT32_C(0x7DB443), UINT32_C(0x712DB5),
0064 UINT32_C(0xF7614E), UINT32_C(0x19A3D2), UINT32_C(0x9FEF29),
0065 UINT32_C(0x9376DF), UINT32_C(0x153A24), UINT32_C(0x8A4533),
0066 UINT32_C(0x0C09C8), UINT32_C(0x00903E), UINT32_C(0x86DCC5),
0067 UINT32_C(0xB822EB), UINT32_C(0x3E6E10), UINT32_C(0x32F7E6),
0068 UINT32_C(0xB4BB1D), UINT32_C(0x2BC40A), UINT32_C(0xAD88F1),
0069 UINT32_C(0xA11107), UINT32_C(0x275DFC), UINT32_C(0xDCED5B),
0070 UINT32_C(0x5AA1A0), UINT32_C(0x563856), UINT32_C(0xD074AD),
0071 UINT32_C(0x4F0BBA), UINT32_C(0xC94741), UINT32_C(0xC5DEB7),
0072 UINT32_C(0x43924C), UINT32_C(0x7D6C62), UINT32_C(0xFB2099),
0073 UINT32_C(0xF7B96F), UINT32_C(0x71F594), UINT32_C(0xEE8A83),
0074 UINT32_C(0x68C678), UINT32_C(0x645F8E), UINT32_C(0xE21375),
0075 UINT32_C(0x15723B), UINT32_C(0x933EC0), UINT32_C(0x9FA736),
0076 UINT32_C(0x19EBCD), UINT32_C(0x8694DA), UINT32_C(0x00D821),
0077 UINT32_C(0x0C41D7), UINT32_C(0x8A0D2C), UINT32_C(0xB4F302),
0078 UINT32_C(0x32BFF9), UINT32_C(0x3E260F), UINT32_C(0xB86AF4),
0079 UINT32_C(0x2715E3), UINT32_C(0xA15918), UINT32_C(0xADC0EE),
0080 UINT32_C(0x2B8C15), UINT32_C(0xD03CB2), UINT32_C(0x567049),
0081 UINT32_C(0x5AE9BF), UINT32_C(0xDCA544), UINT32_C(0x43DA53),
0082 UINT32_C(0xC596A8), UINT32_C(0xC90F5E), UINT32_C(0x4F43A5),
0083 UINT32_C(0x71BD8B), UINT32_C(0xF7F170), UINT32_C(0xFB6886),
0084 UINT32_C(0x7D247D), UINT32_C(0xE25B6A), UINT32_C(0x641791),
0085 UINT32_C(0x688E67), UINT32_C(0xEEC29C), UINT32_C(0x3347A4),
0086 UINT32_C(0xB50B5F), UINT32_C(0xB992A9), UINT32_C(0x3FDE52),
0087 UINT32_C(0xA0A145), UINT32_C(0x26EDBE), UINT32_C(0x2A7448),
0088 UINT32_C(0xAC38B3), UINT32_C(0x92C69D), UINT32_C(0x148A66),
0089 UINT32_C(0x181390), UINT32_C(0x9E5F6B), UINT32_C(0x01207C),
0090 UINT32_C(0x876C87), UINT32_C(0x8BF571), UINT32_C(0x0DB98A),
0091 UINT32_C(0xF6092D), UINT32_C(0x7045D6), UINT32_C(0x7CDC20),
0092 UINT32_C(0xFA90DB), UINT32_C(0x65EFCC), UINT32_C(0xE3A337),
0093 UINT32_C(0xEF3AC1), UINT32_C(0x69763A), UINT32_C(0x578814),
0094 UINT32_C(0xD1C4EF), UINT32_C(0xDD5D19), UINT32_C(0x5B11E2),
0095 UINT32_C(0xC46EF5), UINT32_C(0x42220E), UINT32_C(0x4EBBF8),
0096 UINT32_C(0xC8F703), UINT32_C(0x3F964D), UINT32_C(0xB9DAB6),
0097 UINT32_C(0xB54340), UINT32_C(0x330FBB), UINT32_C(0xAC70AC),
0098 UINT32_C(0x2A3C57), UINT32_C(0x26A5A1), UINT32_C(0xA0E95A),
0099 UINT32_C(0x9E1774), UINT32_C(0x185B8F), UINT32_C(0x14C279),
0100 UINT32_C(0x928E82), UINT32_C(0x0DF195), UINT32_C(0x8BBD6E),
0101 UINT32_C(0x872498), UINT32_C(0x016863), UINT32_C(0xFAD8C4),
0102 UINT32_C(0x7C943F), UINT32_C(0x700DC9), UINT32_C(0xF64132),
0103 UINT32_C(0x693E25), UINT32_C(0xEF72DE), UINT32_C(0xE3EB28),
0104 UINT32_C(0x65A7D3), UINT32_C(0x5B59FD), UINT32_C(0xDD1506),
0105 UINT32_C(0xD18CF0), UINT32_C(0x57C00B), UINT32_C(0xC8BF1C),
0106 UINT32_C(0x4EF3E7), UINT32_C(0x426A11), UINT32_C(0xC426EA),
0107 UINT32_C(0x2AE476), UINT32_C(0xACA88D), UINT32_C(0xA0317B),
0108 UINT32_C(0x267D80), UINT32_C(0xB90297), UINT32_C(0x3F4E6C),
0109 UINT32_C(0x33D79A), UINT32_C(0xB59B61), UINT32_C(0x8B654F),
0110 UINT32_C(0x0D29B4), UINT32_C(0x01B042), UINT32_C(0x87FCB9),
0111 UINT32_C(0x1883AE), UINT32_C(0x9ECF55), UINT32_C(0x9256A3),
0112 UINT32_C(0x141A58), UINT32_C(0xEFAAFF), UINT32_C(0x69E604),
0113 UINT32_C(0x657FF2), UINT32_C(0xE33309), UINT32_C(0x7C4C1E),
0114 UINT32_C(0xFA00E5), UINT32_C(0xF69913), UINT32_C(0x70D5E8),
0115 UINT32_C(0x4E2BC6), UINT32_C(0xC8673D), UINT32_C(0xC4FECB),
0116 UINT32_C(0x42B230), UINT32_C(0xDDCD27), UINT32_C(0x5B81DC),
0117 UINT32_C(0x57182A), UINT32_C(0xD154D1), UINT32_C(0x26359F),
0118 UINT32_C(0xA07964), UINT32_C(0xACE092), UINT32_C(0x2AAC69),
0119 UINT32_C(0xB5D37E), UINT32_C(0x339F85), UINT32_C(0x3F0673),
0120 UINT32_C(0xB94A88), UINT32_C(0x87B4A6), UINT32_C(0x01F85D),
0121 UINT32_C(0x0D61AB), UINT32_C(0x8B2D50), UINT32_C(0x145247),
0122 UINT32_C(0x921EBC), UINT32_C(0x9E874A), UINT32_C(0x18CBB1),
0123 UINT32_C(0xE37B16), UINT32_C(0x6537ED), UINT32_C(0x69AE1B),
0124 UINT32_C(0xEFE2E0), UINT32_C(0x709DF7), UINT32_C(0xF6D10C),
0125 UINT32_C(0xFA48FA), UINT32_C(0x7C0401), UINT32_C(0x42FA2F),
0126 UINT32_C(0xC4B6D4), UINT32_C(0xC82F22), UINT32_C(0x4E63D9),
0127 UINT32_C(0xD11CCE), UINT32_C(0x575035), UINT32_C(0x5BC9C3),
0128 UINT32_C(0xDD8538)};
0129
0130 static inline uint32_t _CRC24Q_do_update(uint32_t crc, uint8_t byte) {
0131 return (crc << 8) ^ _CRC24Q_Table[byte ^ (uint8_t)(crc >> 16)];
0132 }
0133
0134 uint32_t _CRC24Q_Update(uint32_t crc, uint8_t byte) {
0135 return _CRC24Q_do_update(crc, byte);
0136 }
0137
0138 uint32_t _CRC24Q_Sequence_update(uint32_t crc,
0139 const void* bytes,
0140 size_t size_in_bytes) {
0141 const uint8_t* the_bytes = bytes;
0142
0143 for (size_t i = 0; i < size_in_bytes; ++i) {
0144 crc = _CRC24Q_do_update(crc, the_bytes[i]);
0145 }
0146
0147 return crc;
0148 }