Arianna autonomous DAQ firmware

Dependencies:   mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW

Committer:
uci1
Date:
Fri Jul 20 19:04:02 2012 +0000
Revision:
1:e392595b4b76
Parent:
0:664899e0b988
Child:
21:ce51bb0ba4a5
many features checked and working. afar implemented. sending of data not yet tested. contains many debug prints

Who changed what in which revision?

UserRevisionLine numberNew contents of line
uci1 0:664899e0b988 1 #ifndef SN_SnCRCUtils
uci1 0:664899e0b988 2 #define SN_SnCRCUtils
uci1 0:664899e0b988 3
uci1 0:664899e0b988 4 /*******************************************************************\
uci1 0:664899e0b988 5 * CRC code "borrowed" from: *
uci1 0:664899e0b988 6 * http://mbed.org/users/jpelletier/programs/CRC/lje513 *
uci1 0:664899e0b988 7 * Library : lib_crc *
uci1 0:664899e0b988 8 * File : lib_crc.c *
uci1 0:664899e0b988 9 * Author : Lammert Bies 1999-2008 *
uci1 0:664899e0b988 10 * E-mail : info@lammertbies.nl *
uci1 0:664899e0b988 11 * Language : ANSI C *
uci1 0:664899e0b988 12 \*******************************************************************/
uci1 0:664899e0b988 13 static const uint32_t crc_tabxfer_normal[] = {
uci1 0:664899e0b988 14 0x00000000, 0x000000AF, 0x0000015E, 0x000001F1, 0x000002BC, 0x00000213, 0x000003E2, 0x0000034D,
uci1 0:664899e0b988 15 0x00000578, 0x000005D7, 0x00000426, 0x00000489, 0x000007C4, 0x0000076B, 0x0000069A, 0x00000635,
uci1 0:664899e0b988 16 0x00000AF0, 0x00000A5F, 0x00000BAE, 0x00000B01, 0x0000084C, 0x000008E3, 0x00000912, 0x000009BD,
uci1 0:664899e0b988 17 0x00000F88, 0x00000F27, 0x00000ED6, 0x00000E79, 0x00000D34, 0x00000D9B, 0x00000C6A, 0x00000CC5,
uci1 0:664899e0b988 18 0x000015E0, 0x0000154F, 0x000014BE, 0x00001411, 0x0000175C, 0x000017F3, 0x00001602, 0x000016AD,
uci1 0:664899e0b988 19 0x00001098, 0x00001037, 0x000011C6, 0x00001169, 0x00001224, 0x0000128B, 0x0000137A, 0x000013D5,
uci1 0:664899e0b988 20 0x00001F10, 0x00001FBF, 0x00001E4E, 0x00001EE1, 0x00001DAC, 0x00001D03, 0x00001CF2, 0x00001C5D,
uci1 0:664899e0b988 21 0x00001A68, 0x00001AC7, 0x00001B36, 0x00001B99, 0x000018D4, 0x0000187B, 0x0000198A, 0x00001925,
uci1 0:664899e0b988 22 0x00002BC0, 0x00002B6F, 0x00002A9E, 0x00002A31, 0x0000297C, 0x000029D3, 0x00002822, 0x0000288D,
uci1 0:664899e0b988 23 0x00002EB8, 0x00002E17, 0x00002FE6, 0x00002F49, 0x00002C04, 0x00002CAB, 0x00002D5A, 0x00002DF5,
uci1 0:664899e0b988 24 0x00002130, 0x0000219F, 0x0000206E, 0x000020C1, 0x0000238C, 0x00002323, 0x000022D2, 0x0000227D,
uci1 0:664899e0b988 25 0x00002448, 0x000024E7, 0x00002516, 0x000025B9, 0x000026F4, 0x0000265B, 0x000027AA, 0x00002705,
uci1 0:664899e0b988 26 0x00003E20, 0x00003E8F, 0x00003F7E, 0x00003FD1, 0x00003C9C, 0x00003C33, 0x00003DC2, 0x00003D6D,
uci1 0:664899e0b988 27 0x00003B58, 0x00003BF7, 0x00003A06, 0x00003AA9, 0x000039E4, 0x0000394B, 0x000038BA, 0x00003815,
uci1 0:664899e0b988 28 0x000034D0, 0x0000347F, 0x0000358E, 0x00003521, 0x0000366C, 0x000036C3, 0x00003732, 0x0000379D,
uci1 0:664899e0b988 29 0x000031A8, 0x00003107, 0x000030F6, 0x00003059, 0x00003314, 0x000033BB, 0x0000324A, 0x000032E5,
uci1 0:664899e0b988 30
uci1 0:664899e0b988 31 0x00005780, 0x0000572F, 0x000056DE, 0x00005671, 0x0000553C, 0x00005593, 0x00005462, 0x000054CD,
uci1 0:664899e0b988 32 0x000052F8, 0x00005257, 0x000053A6, 0x00005309, 0x00005044, 0x000050EB, 0x0000511A, 0x000051B5,
uci1 0:664899e0b988 33 0x00005D70, 0x00005DDF, 0x00005C2E, 0x00005C81, 0x00005FCC, 0x00005F63, 0x00005E92, 0x00005E3D,
uci1 0:664899e0b988 34 0x00005808, 0x000058A7, 0x00005956, 0x000059F9, 0x00005AB4, 0x00005A1B, 0x00005BEA, 0x00005B45,
uci1 0:664899e0b988 35 0x00004260, 0x000042CF, 0x0000433E, 0x00004391, 0x000040DC, 0x00004073, 0x00004182, 0x0000412D,
uci1 0:664899e0b988 36 0x00004718, 0x000047B7, 0x00004646, 0x000046E9, 0x000045A4, 0x0000450B, 0x000044FA, 0x00004455,
uci1 0:664899e0b988 37 0x00004890, 0x0000483F, 0x000049CE, 0x00004961, 0x00004A2C, 0x00004A83, 0x00004B72, 0x00004BDD,
uci1 0:664899e0b988 38 0x00004DE8, 0x00004D47, 0x00004CB6, 0x00004C19, 0x00004F54, 0x00004FFB, 0x00004E0A, 0x00004EA5,
uci1 0:664899e0b988 39 0x00007C40, 0x00007CEF, 0x00007D1E, 0x00007DB1, 0x00007EFC, 0x00007E53, 0x00007FA2, 0x00007F0D,
uci1 0:664899e0b988 40 0x00007938, 0x00007997, 0x00007866, 0x000078C9, 0x00007B84, 0x00007B2B, 0x00007ADA, 0x00007A75,
uci1 0:664899e0b988 41 0x000076B0, 0x0000761F, 0x000077EE, 0x00007741, 0x0000740C, 0x000074A3, 0x00007552, 0x000075FD,
uci1 0:664899e0b988 42 0x000073C8, 0x00007367, 0x00007296, 0x00007239, 0x00007174, 0x000071DB, 0x0000702A, 0x00007085,
uci1 0:664899e0b988 43 0x000069A0, 0x0000690F, 0x000068FE, 0x00006851, 0x00006B1C, 0x00006BB3, 0x00006A42, 0x00006AED,
uci1 0:664899e0b988 44 0x00006CD8, 0x00006C77, 0x00006D86, 0x00006D29, 0x00006E64, 0x00006ECB, 0x00006F3A, 0x00006F95,
uci1 0:664899e0b988 45 0x00006350, 0x000063FF, 0x0000620E, 0x000062A1, 0x000061EC, 0x00006143, 0x000060B2, 0x0000601D,
uci1 0:664899e0b988 46 0x00006628, 0x00006687, 0x00006776, 0x000067D9, 0x00006494, 0x0000643B, 0x000065CA, 0x00006565
uci1 0:664899e0b988 47 };
uci1 0:664899e0b988 48
uci1 0:664899e0b988 49 //
uci1 0:664899e0b988 50 // CRC functions
uci1 0:664899e0b988 51 //
uci1 1:e392595b4b76 52 uint32_t update_crc32_normal(const uint32_t* table, uint32_t crc, const uint8_t c ) {
uci1 0:664899e0b988 53 uint32_t long_c;
uci1 0:664899e0b988 54
uci1 0:664899e0b988 55 long_c = 0x000000ffL & (uint32_t) c;
uci1 0:664899e0b988 56
uci1 0:664899e0b988 57 return (crc << 8) ^ table[((crc >> 24) ^ long_c) & 0xff];
uci1 0:664899e0b988 58 }
uci1 0:664899e0b988 59
uci1 0:664899e0b988 60 uint32_t update_crc32_xfer( uint32_t crc, const uint8_t c ) {
uci1 0:664899e0b988 61 return update_crc32_normal(crc_tabxfer_normal,crc,c);
uci1 0:664899e0b988 62 }
uci1 0:664899e0b988 63
uci1 0:664899e0b988 64 uint32_t update_crc32_xfer_short( uint32_t crc, const uint16_t c) {
uci1 0:664899e0b988 65 SnBitUtils::tmp.s[0] = c;
uci1 1:e392595b4b76 66 for (uint8_t i=0; i<sizeof(uint16_t); i++) {
uci1 0:664899e0b988 67 crc = update_crc32_xfer(crc, SnBitUtils::tmp.c[i]);
uci1 0:664899e0b988 68 }
uci1 0:664899e0b988 69 return crc;
uci1 0:664899e0b988 70 }
uci1 0:664899e0b988 71
uci1 0:664899e0b988 72 uint32_t update_crc32_xfer_int( uint32_t crc, const uint32_t c) {
uci1 0:664899e0b988 73 SnBitUtils::tmp.i = c;
uci1 1:e392595b4b76 74 for (uint8_t i=0; i<sizeof(uint32_t); i++) {
uci1 0:664899e0b988 75 crc = update_crc32_xfer(crc, SnBitUtils::tmp.c[i]);
uci1 0:664899e0b988 76 }
uci1 0:664899e0b988 77 return crc;
uci1 0:664899e0b988 78 }
uci1 0:664899e0b988 79
uci1 0:664899e0b988 80
uci1 0:664899e0b988 81 #endif // SN_SnCRCUtils