@@ -103,7 +103,144 @@ struct RAWDataHeaderV2
103103 };
104104};
105105
106- using RAWDataHeader = RAWDataHeaderV2;
106+ typedef struct _RAWDataHeaderV3
107+ {
108+ // 32-bits words
109+
110+ union {
111+ uint32_t word3 = 0x00004003 ;
112+ // | | version 3
113+ // | header size 16x32 bit = 64 bytes
114+ struct {
115+ uint32_t version:8 ; // / bit 0 to 7: header version
116+ uint32_t headerSize:8 ; // / bit 8 to 15: header size
117+ uint32_t blockLength:16 ; // / bit 16 to 32: block length
118+ };
119+ };
120+
121+ union {
122+ uint32_t word2 = 0x00ffffff ;
123+ struct {
124+ uint32_t feeId:8 ; // / bit 0 to 15: FEE id
125+ uint32_t priorityBit:8 ; // / bit 16 to 23: priority bit
126+ uint32_t zero2:16 ; // / bit 16 to 32: reserved
127+ };
128+ };
129+
130+ union {
131+ uint32_t word1 = 0x0 ;
132+ struct {
133+ uint32_t zero1:32 ; // / bit 0 to 31: reserved
134+ };
135+ };
136+
137+ union {
138+ uint32_t word0 = 0x0 ;
139+ struct {
140+ uint32_t linkId:8 ; // / bit 0 to 7: linkId
141+ uint32_t zero0:24 ; // / bit 8 to 31: reserved
142+ };
143+ };
144+
145+ union {
146+ uint32_t word7 = 0xffffffff ;
147+ struct {
148+ uint32_t triggerOrbit; // / bit 0 to 31: TRG orbit
149+ };
150+ };
151+
152+ union {
153+ uint32_t word6 = 0xffffffff ;
154+ struct {
155+ uint32_t heartbeatOrbit; // / bit 0 to 31: TRG orbit
156+ };
157+ };
158+
159+ union {
160+ uint32_t word5 = 0x0 ;
161+ struct {
162+ uint32_t zero5; // / bit 0 to 31: reserved
163+ };
164+ };
165+
166+ union {
167+ uint32_t word4 = 0x0 ;
168+ struct {
169+ uint32_t zero4; // / bit 0 to 31: reserved
170+ };
171+ };
172+
173+ union {
174+ uint32_t word11 = 0x0 ;
175+ struct {
176+ uint32_t triggerBC:12 ; // / bit 0 to 11: trigger BC ID
177+ uint32_t zero11_0:4 ; // / bit 12 to 15: reserved
178+ uint32_t heartbeatBC:12 ; // / bit 16 to 27: heartbeat BC ID
179+ uint32_t zero11_1:4 ; // / bit 28 to 31: reserved
180+ };
181+ };
182+
183+ union {
184+ uint32_t word10 = 0x0 ;
185+ struct {
186+ uint32_t triggerType:32 ; // / bit 0 to 31: trigger types
187+ };
188+ };
189+
190+ union {
191+ uint32_t word9 = 0x0 ;
192+ struct {
193+ uint32_t zero9; // / bit 0 to 31: reserved
194+ };
195+ };
196+
197+ union {
198+ uint32_t word8 = 0x0 ;
199+ struct {
200+ uint32_t zero8; // / bit 0 to 31: reserved
201+ };
202+ };
203+
204+ union {
205+ uint32_t word15 = 0x0 ;
206+ struct {
207+ uint32_t detectorField:16 ; // / bit 0 to 15: detector field
208+ uint32_t par:16 ; // / bit 16 to 31: PAR
209+ };
210+ };
211+
212+ union {
213+ uint32_t word14 = 0x0 ;
214+ struct {
215+ uint32_t stopBit:8 ; // / bit 0 to 7: stop bit
216+ uint32_t pagesCoutner:16 ; // / bit 8 to 23: pages counter
217+ uint32_t zero14:8 ; // / bit 24 to 31: reserved
218+ };
219+ };
220+
221+ union {
222+ uint32_t word13 = 0x0 ;
223+ struct {
224+ uint32_t zero13; // / bit 0 to 31: reserved
225+ };
226+ };
227+
228+ union {
229+ uint32_t word12 = 0x0 ;
230+ struct {
231+ uint32_t zero12; // / bit 0 to 31: reserved
232+ };
233+ };
234+
235+ } RAWDataHeaderV3;
236+
237+
238+
239+
240+
241+
242+
243+ using RAWDataHeader = RAWDataHeaderV3;
107244
108245}
109246}
0 commit comments