]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TRD/AliTRDtrapConfig.h
Fix coding rule violations
[u/mrichter/AliRoot.git] / TRD / AliTRDtrapConfig.h
1 #ifndef ALITRDTRAPCONFIG_H
2 #define ALITRDTRAPCONFIG_H
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
11
12 #include <TObject.h>
13 #include <TString.h>
14
15 class 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
533   UInt_t fDmem[540*8*18][fgkDmemWords]; // DMEM storage
534   Bool_t fDmemValid[540*8*18][fgkDmemWords]; // DMEM valid flag storage
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
560
561  private:
562   AliTRDtrapConfig& operator=(const AliTRDtrapConfig &rhs); // not implemented
563   AliTRDtrapConfig(const AliTRDtrapConfig& cfg); // not implemented
564
565   ClassDef(AliTRDtrapConfig, 2);
566 };
567
568 #endif
569