/[PAMELA software]/PamelaDigitizer/calcrc.cpp
ViewVC logotype

Contents of /PamelaDigitizer/calcrc.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1.1.1 - (show annotations) (download) (vendor branch)
Thu Sep 13 11:00:53 2007 UTC (17 years, 2 months ago) by silvio
Branch: PamelaDigitizer/, MAIN
CVS Tags: v1r00, v3r04, v3r05, v3r00, v3r01, v3r02, v3r03, start, v2r01, HEAD
Changes since 1.1: +0 -0 lines
First release

1 #include <stdlib.h>
2 #include <stdio.h>
3 #include <string.h>
4
5 #define BLEN 8
6 extern "C"{
7 short crc(short, short);
8 }
9 short crc(short oldCRC, short newCRC)
10 {
11 union crc_data {
12 short word;
13 struct bit_field {
14 unsigned b0:1;
15 unsigned b1:1;
16 unsigned b2:1;
17 unsigned b3:1;
18 unsigned b4:1;
19 unsigned b5:1;
20 unsigned b6:1;
21 unsigned b7:1;
22 unsigned b8:1;
23 unsigned b9:1;
24 unsigned b10:1;
25 unsigned b11:1;
26 unsigned b12:1;
27 unsigned b13:1;
28 unsigned b14:1;
29 unsigned b15:1;
30 } bit;
31 } c,d,r;
32
33 c.word = oldCRC;
34 d.word = newCRC;
35 r.word = 0;
36
37 r.bit.b0 = c.bit.b0 ^ c.bit.b4 ^ c.bit.b8 ^ c.bit.b11 ^ c.bit.b12 ^
38 d.bit.b0 ^ d.bit.b4 ^ d.bit.b8 ^ d.bit.b11 ^ d.bit.b12;
39
40 r.bit.b1 = c.bit.b1 ^ c.bit.b5 ^ c.bit.b9 ^ c.bit.b12 ^ c.bit.b13 ^
41 d.bit.b1 ^ d.bit.b5 ^ d.bit.b9 ^ d.bit.b12 ^ d.bit.b13;
42
43 r.bit.b2 = c.bit.b2 ^ c.bit.b6 ^ c.bit.b10 ^ c.bit.b13 ^ c.bit.b14 ^
44 d.bit.b2 ^ d.bit.b6 ^ d.bit.b10 ^ d.bit.b13 ^ d.bit.b14;
45
46 r.bit.b3 = c.bit.b3 ^ c.bit.b7 ^ c.bit.b11 ^ c.bit.b14 ^ c.bit.b15 ^
47 d.bit.b3 ^ d.bit.b7 ^ d.bit.b11 ^ d.bit.b14 ^ d.bit.b15;
48
49 r.bit.b4 = c.bit.b4 ^ c.bit.b8 ^ c.bit.b12 ^ c.bit.b15 ^
50 d.bit.b4 ^ d.bit.b8 ^ d.bit.b12 ^ d.bit.b15;
51
52 r.bit.b5 = c.bit.b0 ^ c.bit.b4 ^ c.bit.b5 ^ c.bit.b8 ^ c.bit.b9 ^
53 c.bit.b11 ^ c.bit.b12 ^ c.bit.b13 ^
54 d.bit.b0 ^ d.bit.b4 ^ d.bit.b5 ^ d.bit.b8 ^ d.bit.b9 ^
55 d.bit.b11 ^ d.bit.b12 ^ d.bit.b13;
56
57 r.bit.b6 = c.bit.b1 ^ c.bit.b5 ^ c.bit.b6 ^ c.bit.b9 ^ c.bit.b10 ^
58 c.bit.b12 ^ c.bit.b13 ^ c.bit.b14 ^
59 d.bit.b1 ^ d.bit.b5 ^ d.bit.b6 ^ d.bit.b9 ^ d.bit.b10 ^
60 d.bit.b12 ^ d.bit.b13 ^ d.bit.b14;
61
62 r.bit.b7 = c.bit.b2 ^ c.bit.b6 ^ c.bit.b7 ^ c.bit.b10 ^ c.bit.b11 ^
63 c.bit.b13 ^ c.bit.b14 ^ c.bit.b15 ^
64 d.bit.b2 ^ d.bit.b6 ^ d.bit.b7 ^ d.bit.b10 ^ d.bit.b11 ^
65 d.bit.b13 ^ d.bit.b14 ^ d.bit.b15;
66
67 r.bit.b8 = c.bit.b3 ^ c.bit.b7 ^ c.bit.b8 ^ c.bit.b11 ^ c.bit.b12 ^
68 c.bit.b14 ^ c.bit.b15 ^
69 d.bit.b3 ^ d.bit.b7 ^ d.bit.b8 ^ d.bit.b11 ^ d.bit.b12 ^
70 d.bit.b14 ^ d.bit.b15;
71
72 r.bit.b9 = c.bit.b4 ^ c.bit.b8 ^ c.bit.b9 ^ c.bit.b12 ^ c.bit.b13 ^
73 c.bit.b15 ^
74 d.bit.b4 ^ d.bit.b8 ^ d.bit.b9 ^ d.bit.b12 ^ d.bit.b13 ^
75 d.bit.b15;
76
77 r.bit.b10 = c.bit.b5 ^ c.bit.b9 ^ c.bit.b10 ^ c.bit.b13 ^ c.bit.b14 ^
78 d.bit.b5 ^ d.bit.b9 ^ d.bit.b10 ^ d.bit.b13 ^ d.bit.b14;
79
80 r.bit.b11 = c.bit.b6 ^ c.bit.b10 ^ c.bit.b11 ^ c.bit.b14 ^ c.bit.b15 ^
81 d.bit.b6 ^ d.bit.b10 ^ d.bit.b11 ^ d.bit.b14 ^ d.bit.b15;
82
83 r.bit.b12 = c.bit.b0 ^ c.bit.b4 ^ c.bit.b7 ^ c.bit.b8 ^ c.bit.b15 ^
84 d.bit.b0 ^ d.bit.b4 ^ d.bit.b7 ^ d.bit.b8 ^ d.bit.b15;
85
86 r.bit.b13 = c.bit.b1 ^ c.bit.b5 ^ c.bit.b8 ^ c.bit.b9 ^
87 d.bit.b1 ^ d.bit.b5 ^ d.bit.b8 ^ d.bit.b9;
88
89 r.bit.b14 = c.bit.b2 ^ c.bit.b6 ^ c.bit.b9 ^ c.bit.b10 ^
90 d.bit.b2 ^ d.bit.b6 ^ d.bit.b9 ^ d.bit.b10;
91
92 r.bit.b15 = c.bit.b3 ^ c.bit.b7 ^ c.bit.b10 ^ c.bit.b11 ^
93 d.bit.b3 ^ d.bit.b7 ^ d.bit.b10 ^ d.bit.b11;
94
95 return r.word;
96 /* *old = r.word; */
97 }
98

  ViewVC Help
Powered by ViewVC 1.1.23