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

Annotation of /PamelaDigitizer/calcrc.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations) (download)
Thu Sep 13 11:00:53 2007 UTC (17 years, 3 months ago) by silvio
Branch point for: PamelaDigitizer/, MAIN
Initial revision

1 silvio 1.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