]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TRD/AliTRDtrapConfig.h
RC12, RC17 violation: suppression
[u/mrichter/AliRoot.git] / TRD / AliTRDtrapConfig.h
CommitLineData
ce4786b9 1#ifndef ALITRDTRAPCONFIG_H
2#define ALITRDTRAPCONFIG_H
36dc3337 3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
6//
7// Class holding the configuration of the tracklet processor
8// in the TRD FEE
9//
10
ce4786b9 11
12#include <TObject.h>
13#include <TString.h>
ce4786b9 14
15class AliTRDtrapConfig : public TObject
16{
17 public:
18 static AliTRDtrapConfig* Instance();
19
20 enum TrapReg_t { kSML0,
21 kSML1,
22 kSML2,
23 kSMMODE,
24 kNITM0,
25 kNITM1,
26 kNITM2,
27 kNIP4D,
28 kCPU0CLK,
29 kCPU1CLK,
30 kCPU2CLK,
31 kCPU3CLK,
32 kNICLK,
33 kFILCLK,
34 kPRECLK,
35 kADCEN,
36 kNIODE,
37 kNIOCE,
38 kNIIDE,
39 kNIICE,
40 kARBTIM,
41 kIA0IRQ0,
42 kIA0IRQ1,
43 kIA0IRQ2,
44 kIA0IRQ3,
45 kIA0IRQ4,
46 kIA0IRQ5,
47 kIA0IRQ6,
48 kIA0IRQ7,
49 kIA0IRQ8,
50 kIA0IRQ9,
51 kIA0IRQA,
52 kIA0IRQB,
53 kIA0IRQC,
54 kIRQSW0,
55 kIRQHW0,
56 kIRQHL0,
57 kIA1IRQ0,
58 kIA1IRQ1,
59 kIA1IRQ2,
60 kIA1IRQ3,
61 kIA1IRQ4,
62 kIA1IRQ5,
63 kIA1IRQ6,
64 kIA1IRQ7,
65 kIA1IRQ8,
66 kIA1IRQ9,
67 kIA1IRQA,
68 kIA1IRQB,
69 kIA1IRQC,
70 kIRQSW1,
71 kIRQHW1,
72 kIRQHL1,
73 kIA2IRQ0,
74 kIA2IRQ1,
75 kIA2IRQ2,
76 kIA2IRQ3,
77 kIA2IRQ4,
78 kIA2IRQ5,
79 kIA2IRQ6,
80 kIA2IRQ7,
81 kIA2IRQ8,
82 kIA2IRQ9,
83 kIA2IRQA,
84 kIA2IRQB,
85 kIA2IRQC,
86 kIRQSW2,
87 kIRQHW2,
88 kIRQHL2,
89 kIA3IRQ0,
90 kIA3IRQ1,
91 kIA3IRQ2,
92 kIA3IRQ3,
93 kIA3IRQ4,
94 kIA3IRQ5,
95 kIA3IRQ6,
96 kIA3IRQ7,
97 kIA3IRQ8,
98 kIA3IRQ9,
99 kIA3IRQA,
100 kIA3IRQB,
101 kIA3IRQC,
102 kIRQSW3,
103 kIRQHW3,
104 kIRQHL3,
105 kCTGDINI,
106 kCTGCTRL,
107 kC08CPU0,
108 kC09CPU0,
109 kC10CPU0,
110 kC11CPU0,
111 kC12CPUA,
112 kC13CPUA,
113 kC14CPUA,
114 kC15CPUA,
115 kC08CPU1,
116 kC09CPU1,
117 kC10CPU1,
118 kC11CPU1,
119 kC08CPU2,
120 kC09CPU2,
121 kC10CPU2,
122 kC11CPU2,
123 kC08CPU3,
124 kC09CPU3,
125 kC10CPU3,
126 kC11CPU3,
127 kNMOD,
128 kNDLY,
129 kNED,
130 kNTRO,
131 kNRRO,
132 kNES,
133 kNTP,
134 kNBND,
135 kNP0,
136 kNP1,
137 kNP2,
138 kNP3,
139 kNCUT,
140 kTPPT0,
141 kTPFS,
142 kTPFE,
143 kTPPGR,
144 kTPPAE,
145 kTPQS0,
146 kTPQE0,
147 kTPQS1,
148 kTPQE1,
149 kEBD,
150 kEBAQA,
151 kEBSIA,
152 kEBSF,
153 kEBSIM,
154 kEBPP,
155 kEBPC,
156 kEBIS,
157 kEBIT,
158 kEBIL,
159 kEBIN,
160 kFLBY,
161 kFPBY,
162 kFGBY,
163 kFTBY,
164 kFCBY,
165 kFPTC,
166 kFPNP,
167 kFPCL,
168 kFGTA,
169 kFGTB,
170 kFGCL,
171 kFTAL,
172 kFTLL,
173 kFTLS,
174 kFCW1,
175 kFCW2,
176 kFCW3,
177 kFCW4,
178 kFCW5,
179 kTPFP,
180 kTPHT,
181 kTPVT,
182 kTPVBY,
183 kTPCT,
184 kTPCL,
185 kTPCBY,
186 kTPD,
187 kTPCI0,
188 kTPCI1,
189 kTPCI2,
190 kTPCI3,
191 kADCMSK,
192 kADCINB,
193 kADCDAC,
194 kADCPAR,
195 kADCTST,
196 kSADCAZ,
197 kFGF0,
198 kFGF1,
199 kFGF2,
200 kFGF3,
201 kFGF4,
202 kFGF5,
203 kFGF6,
204 kFGF7,
205 kFGF8,
206 kFGF9,
207 kFGF10,
208 kFGF11,
209 kFGF12,
210 kFGF13,
211 kFGF14,
212 kFGF15,
213 kFGF16,
214 kFGF17,
215 kFGF18,
216 kFGF19,
217 kFGF20,
218 kFGA0,
219 kFGA1,
220 kFGA2,
221 kFGA3,
222 kFGA4,
223 kFGA5,
224 kFGA6,
225 kFGA7,
226 kFGA8,
227 kFGA9,
228 kFGA10,
229 kFGA11,
230 kFGA12,
231 kFGA13,
232 kFGA14,
233 kFGA15,
234 kFGA16,
235 kFGA17,
236 kFGA18,
237 kFGA19,
238 kFGA20,
239 kFLL00,
240 kFLL01,
241 kFLL02,
242 kFLL03,
243 kFLL04,
244 kFLL05,
245 kFLL06,
246 kFLL07,
247 kFLL08,
248 kFLL09,
249 kFLL0A,
250 kFLL0B,
251 kFLL0C,
252 kFLL0D,
253 kFLL0E,
254 kFLL0F,
255 kFLL10,
256 kFLL11,
257 kFLL12,
258 kFLL13,
259 kFLL14,
260 kFLL15,
261 kFLL16,
262 kFLL17,
263 kFLL18,
264 kFLL19,
265 kFLL1A,
266 kFLL1B,
267 kFLL1C,
268 kFLL1D,
269 kFLL1E,
270 kFLL1F,
271 kFLL20,
272 kFLL21,
273 kFLL22,
274 kFLL23,
275 kFLL24,
276 kFLL25,
277 kFLL26,
278 kFLL27,
279 kFLL28,
280 kFLL29,
281 kFLL2A,
282 kFLL2B,
283 kFLL2C,
284 kFLL2D,
285 kFLL2E,
286 kFLL2F,
287 kFLL30,
288 kFLL31,
289 kFLL32,
290 kFLL33,
291 kFLL34,
292 kFLL35,
293 kFLL36,
294 kFLL37,
295 kFLL38,
296 kFLL39,
297 kFLL3A,
298 kFLL3B,
299 kFLL3C,
300 kFLL3D,
301 kFLL3E,
302 kFLL3F,
303 kPASADEL,
304 kPASAPHA,
305 kPASAPRA,
306 kPASADAC,
307 kPASACHM,
308 kPASASTL,
309 kPASAPR1,
310 kPASAPR0,
311 kSADCTRG,
312 kSADCRUN,
313 kSADCPWR,
314 kL0TSIM,
315 kSADCEC,
316 kSADCMC,
317 kSADCOC,
318 kSADCGTB,
319 kSEBDEN,
320 kSEBDOU,
321 kTPL00,
322 kTPL01,
323 kTPL02,
324 kTPL03,
325 kTPL04,
326 kTPL05,
327 kTPL06,
328 kTPL07,
329 kTPL08,
330 kTPL09,
331 kTPL0A,
332 kTPL0B,
333 kTPL0C,
334 kTPL0D,
335 kTPL0E,
336 kTPL0F,
337 kTPL10,
338 kTPL11,
339 kTPL12,
340 kTPL13,
341 kTPL14,
342 kTPL15,
343 kTPL16,
344 kTPL17,
345 kTPL18,
346 kTPL19,
347 kTPL1A,
348 kTPL1B,
349 kTPL1C,
350 kTPL1D,
351 kTPL1E,
352 kTPL1F,
353 kTPL20,
354 kTPL21,
355 kTPL22,
356 kTPL23,
357 kTPL24,
358 kTPL25,
359 kTPL26,
360 kTPL27,
361 kTPL28,
362 kTPL29,
363 kTPL2A,
364 kTPL2B,
365 kTPL2C,
366 kTPL2D,
367 kTPL2E,
368 kTPL2F,
369 kTPL30,
370 kTPL31,
371 kTPL32,
372 kTPL33,
373 kTPL34,
374 kTPL35,
375 kTPL36,
376 kTPL37,
377 kTPL38,
378 kTPL39,
379 kTPL3A,
380 kTPL3B,
381 kTPL3C,
382 kTPL3D,
383 kTPL3E,
384 kTPL3F,
385 kTPL40,
386 kTPL41,
387 kTPL42,
388 kTPL43,
389 kTPL44,
390 kTPL45,
391 kTPL46,
392 kTPL47,
393 kTPL48,
394 kTPL49,
395 kTPL4A,
396 kTPL4B,
397 kTPL4C,
398 kTPL4D,
399 kTPL4E,
400 kTPL4F,
401 kTPL50,
402 kTPL51,
403 kTPL52,
404 kTPL53,
405 kTPL54,
406 kTPL55,
407 kTPL56,
408 kTPL57,
409 kTPL58,
410 kTPL59,
411 kTPL5A,
412 kTPL5B,
413 kTPL5C,
414 kTPL5D,
415 kTPL5E,
416 kTPL5F,
417 kTPL60,
418 kTPL61,
419 kTPL62,
420 kTPL63,
421 kTPL64,
422 kTPL65,
423 kTPL66,
424 kTPL67,
425 kTPL68,
426 kTPL69,
427 kTPL6A,
428 kTPL6B,
429 kTPL6C,
430 kTPL6D,
431 kTPL6E,
432 kTPL6F,
433 kTPL70,
434 kTPL71,
435 kTPL72,
436 kTPL73,
437 kTPL74,
438 kTPL75,
439 kTPL76,
440 kTPL77,
441 kTPL78,
442 kTPL79,
443 kTPL7A,
444 kTPL7B,
445 kTPL7C,
446 kTPL7D,
447 kTPL7E,
448 kTPL7F,
449 kMEMRW,
450 kMEMCOR,
451 kDMDELA,
452 kDMDELS,
453 kLastReg }; // enum of all TRAP registers, to be used for access to them
454
455 const char* GetRegName(TrapReg_t reg) const { return fRegs[reg].fName.Data(); }
456 UShort_t GetRegAddress(TrapReg_t reg) const { return fRegs[reg].fAddr; }
457 UShort_t GetRegNBits(TrapReg_t reg) const { return fRegs[reg].fNbits; }
458 UInt_t GetRegResetValue(TrapReg_t reg) const { return fRegs[reg].fResetValue; }
459
460 TrapReg_t GetRegByAddress(Int_t address) const;
461
462 Int_t GetTrapReg(TrapReg_t reg, Int_t det = -1, Int_t rob = -1, Int_t mcm = -1);
463 Bool_t PrintTrapReg(TrapReg_t reg, Int_t det = -1, Int_t rob = -1, Int_t mcm = -1);
464 Bool_t PrintTrapAddr(Int_t addr, Int_t det = -1, Int_t rob = -1, Int_t mcm = -1);
465
466 Bool_t SetTrapReg(TrapReg_t reg, Int_t value);
467 Bool_t SetTrapReg(TrapReg_t reg, Int_t value, Int_t det);
468 Bool_t SetTrapReg(TrapReg_t reg, Int_t value, Int_t det, Int_t rob, Int_t mcm);
469
470 Int_t Peek(Int_t addr, Int_t det, Int_t rob, Int_t mcm);
471 Bool_t Poke(Int_t addr, Int_t value, Int_t det, Int_t rob, Int_t mcm);
472
473 void InitRegs();
474 void ResetRegs();
475
476 // DMEM
477 Bool_t SetDmem(Int_t addr, Int_t value);
478 Bool_t SetDmem(Int_t addr, Int_t value, Int_t det);
479 Bool_t SetDmem(Int_t addr, Int_t value, Int_t det, Int_t rob, Int_t mcm);
480
481 Int_t GetDmem(Int_t addr, Int_t det, Int_t rob, Int_t mcm);
482
483 // configuration handling
484 Bool_t LoadConfig();
485 Bool_t LoadConfig(Int_t det, TString filename);
486
487 Bool_t ReadPackedConfig(UInt_t *data, Int_t size);
488
489 Int_t ExtAliToAli( UInt_t dest, UShort_t linkpair, UShort_t rocType);
490
491 protected:
492 static AliTRDtrapConfig *fgInstance; // pointer to instance (singleton)
493
494 struct SimpleReg_t {
495 TString fName; // Name of the register
496 UShort_t fAddr; // Address in GIO of TRAP
497 UShort_t fNbits; // Number of bits, from 1 to 32
498 UInt_t fResetValue; // reset value
499 SimpleReg_t(const char *nnn = 0, UShort_t a = 0, UShort_t n = 0, UInt_t r = 0) :
500 fName(nnn), fAddr(a), fNbits(n), fResetValue(r) {}
501 };
502
503 struct RegValue_t {
504 enum {
505 kInvalid = 0,
506 kGlobal,
507 kIndividual
508 } state; // mode of storage (global or per MCM)
509 union {
510 Int_t globalValue;
511 Int_t *individualValue;
512 };
513 };
514
515 // configuration registers
516 SimpleReg_t fRegs[kLastReg]; // array of TRAP registers
517 RegValue_t fRegisterValue[kLastReg]; // array of TRAP register values in use
518
519 Bool_t AddValues(UInt_t det, UInt_t cmd, UInt_t extali, Int_t addr, UInt_t data);
520 Short_t GetRobAB( UShort_t robsel, UShort_t linkpair ) const; // Converts the ROB part of the extended ALICE ID to robs
521 Short_t ChipmaskToMCMlist( Int_t cmA, Int_t cmB, UShort_t linkpair ); // Converts the chipmask to a list of MCMs
522
523 static const UInt_t fgkScsnCmdWrite=10; // Command number for the write command
524 static const Int_t fgkMaxLinkPairs=4; // number of linkpairs used during configuration
525 static const Int_t fgkMaxMcm; // max. no. of MCMs to be treated
526 static const Int_t fgkMcmlistSize=256; // list of MCMs to which a value has to be written
527
528 Int_t fMcmlist[fgkMcmlistSize]; // stores the list of MCMs after the conversion from extAliID -> AliID
529
530 // DMEM
531 static const Int_t fgkDmemStartAddress; // = 0xc000; // start address in TRAP GIO
532 static const Int_t fgkDmemWords = 0x400; // number of words in DMEM
59f78ad5 533 UInt_t fDmem[540*8*18][fgkDmemWords]; // DMEM storage
534 Bool_t fDmemValid[540*8*18][fgkDmemWords]; // DMEM valid flag storage
ce4786b9 535
536 AliTRDtrapConfig(); // private constructor due to singleton implementation
537
538/* not yet used
539 struct BlockDescr_t {
540 UShort_t addr;
541 UShort_t nregs;
542 UShort_t nbits;
543 UShort_t step;
544 };
545
546 struct CmdReg_t {
547 char *name;
548 UShort_t addr;
549 };
550
551 enum DbankProp_t { kDBankEmpty = 0,
552 kDBankHeader,
553 kDBankData,
554 kDBankNoB,
555 kDBankCRC,
556 kDBankEHeader,
557 kDBankSCSNData };
558*/
559
36dc3337 560
561 private:
562 AliTRDtrapConfig& operator=(const AliTRDtrapConfig &rhs); // not implemented
563 AliTRDtrapConfig(const AliTRDtrapConfig& cfg); // not implemented
564
ce4786b9 565 ClassDef(AliTRDtrapConfig, 2);
566};
567
568#endif
569