/[PAMELA software]/yoda/techmodel/forroutines/calorimeter/calcrc.cpp
ViewVC logotype

Contents of /yoda/techmodel/forroutines/calorimeter/calcrc.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3.0 - (show annotations) (download)
Fri Mar 4 15:54:11 2005 UTC (19 years, 10 months ago) by kusanagi
Branch: MAIN
Changes since 2.0: +0 -0 lines
Error proof version.
Implemented all detectors packets plus all the main telemetries packets.
Missing all the Init and Alarm packets.
Disabled CRC control on VarDump, ArrDump, TabDump for CPU debugging needs
(the data formats seems correct even if CRC get wrong)

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