/[PAMELA software]/calo/unpacking/calcrc.cpp
ViewVC logotype

Annotation of /calo/unpacking/calcrc.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations) (download)
Mon Dec 5 16:23:22 2005 UTC (18 years, 11 months ago) by mocchiut
Branch point for: MAIN, unpacking
Initial revision

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

  ViewVC Help
Powered by ViewVC 1.1.23