Shinichi Fuchita / Mbed 2 deprecated RadioServer

Dependencies:   mbed EthernetNetIf

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers crc32.c Source File

crc32.c

00001 
00002 #include "crc32.h"
00003 
00004 static unsigned long crc32_table[] = {
00005     0x00000000, 0x77073096, 0xee0e612c, 0x990951ba,
00006     0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
00007     0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
00008     0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,
00009     0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
00010     0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
00011     0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec,
00012     0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,
00013     0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
00014     0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
00015     0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940,
00016     0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
00017     0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116,
00018     0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,
00019     0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
00020     0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,
00021     0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a,
00022     0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
00023     0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818,
00024     0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
00025     0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
00026     0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,
00027     0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c,
00028     0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
00029     0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
00030     0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,
00031     0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
00032     0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,
00033     0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086,
00034     0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
00035     0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4,
00036     0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,
00037     0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
00038     0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,
00039     0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
00040     0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
00041     0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe,
00042     0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,
00043     0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
00044     0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
00045     0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252,
00046     0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
00047     0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60,
00048     0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,
00049     0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
00050     0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,
00051     0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04,
00052     0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
00053     0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a,
00054     0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
00055     0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
00056     0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,
00057     0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e,
00058     0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
00059     0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
00060     0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,
00061     0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
00062     0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,
00063     0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0,
00064     0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
00065     0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6,
00066     0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,
00067     0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
00068     0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d,
00069 };
00070 
00071 unsigned long crc32(unsigned long crc, unsigned char const *ptr, size_t len)
00072 {
00073     crc = ~crc;
00074     while (len > 0) {
00075         crc = crc32_table[(crc ^ *ptr) & 255] ^ (crc >> 8);
00076         ptr++;
00077         len--;
00078     }
00079     return ~crc;
00080 }