fdhwlib
2.0.25
|
00001 /*************************************************************************** 00002 SltAuger.h - description 00003 00004 begin : Thu Jun 29 2000 00005 copyright : (C) 2000 by Andreas Kopmann 00006 email : kopmann@hpe.fzk.de 00007 ***************************************************************************/ 00008 00009 00010 #ifndef _HW4_SLTKATRIN_H_INCLUDED 00011 #define _HW4_SLTKATRIN_H_INCLUDED 00012 00013 00014 #include <hw4/sltdef.h> 00015 #include <hw4/baseregister.h> 00016 #include <hw4/sltlongregister.h> 00017 00018 #include <hw4/sltcontrolreg.h> 00019 #include <hw4/sltstatusreg.h> 00020 #include <hw4/sltcommandreg.h> 00021 #include <hw4/sltinterruptreg.h> 00022 #include <hw4/sltsetsecondcounter.h> 00023 #include <hw4/sltsecondcounter.h> 00024 #include <hw4/sltpagemanagementreg.h> 00025 #include <hw4/sltpageselectreg.h> 00026 #include <hw4/slteventstatusmem.h> 00027 #include <hw4/slttimingreg.h> 00028 #include <hw4/sltreadoutcontrolreg.h> 00029 #include <hw4/sltreadoutstatusreg.h> 00030 #include <hw4/sltbyteregister.h> 00031 #include <hw4/sltiiccommandreg.h> 00032 #include <hw4/sltepcscommandreg.h> 00033 #include <hw4/slteepromcontrolreg.h> 00034 #include <hw4/slttime.h> 00035 #include <hw4/sltversion.h> 00036 #include <hw4/sltdatablockreg.h> 00037 #include <hw4/basememory.h> 00038 #include <hw4/basefifo.h> 00039 #include <katrinhw4/sltfifostatus.h> 00040 #include <katrinhw4/sltfiforeset.h> 00041 #include <hw4/sltcounter.h> 00042 00043 #include <hw4/subrack.h> 00044 #include <hw4/subrackboard.h> 00045 00046 00047 00048 00049 namespace hw4 { 00050 00051 // --- forward declaration(s) 00052 00053 class Subrack; 00054 00084 class SltKatrin : public Slt { 00085 public: 00086 SltKatrin(int ID, const char *inifile = "FE.ini"); 00087 00088 virtual ~SltKatrin(); 00089 00090 00097 void getActualTime(SltTime *time); 00098 00099 00115 unsigned long setActualTime(); 00116 00117 00148 // int checkActualTime(long int *tDiff, long int *tDiffEye, int * tMeas, int *tPhase, 00149 // long int *tDiffGps=0, int id=0, int n=1, 00150 // const char *gpsserver = "localhost", int gpsport = 0); 00151 00152 00166 int checkTime(double *tDiff=0, int *tSecErr=0, int *tPhase=0, int *tMeas= 0); 00167 00168 00181 enum RunMode { 00182 RUN, 00183 CAL, 00184 WAIT, 00185 STOP, 00186 CERR, 00187 UNKNOWN}; 00188 00189 00194 RunMode getRunMode(); 00195 00197 std::string getRunModeText(); 00198 std::string getRunModeText(RunMode mode); 00199 00207 void getActivePages(int time, int *pages, int *continous); 00208 00216 void convertToUTC(time_t *t_utc, unsigned long time); 00217 00218 void convertToUTC(time_t *t_utc, SltTime time); 00219 00221 void convertToGPS(SltTime *time, time_t t_utc); 00222 00223 00225 void checkDeadTime(unsigned long long *tDead, unsigned long long *tVeto, 00226 double *tRecord, double *tPageFull, procDuration *tMeas = 0); 00227 00232 int readDeadTime (unsigned long long *tDead, unsigned long long *tVeto, 00233 unsigned long long *tInhibit); 00234 00235 00237 std::string convertTimeToText(unsigned long long time, int showSubSecs = 0); 00238 00239 public: // members 00240 00241 00243 SltControlReg *control; 00244 00246 SltStatusReg *status; 00247 00249 SltCommandReg *command; 00250 00254 SltInterruptReg *interruptMask; 00255 00263 SltInterruptReg *interruptRequest; 00264 00267 BaseRegister *requestSemaphore; 00268 00269 00271 BaseRegister *pixelBusPError; 00272 00277 SltCounter *vetoTime; 00278 00283 SltCounter *deadTime; 00284 00285 SltCounter *runTime; 00286 00287 BaseRegister * pixelBusEnable; 00288 00289 BaseRegister * pixelBusTest; 00290 00291 BaseRegister * auxBusTest; 00292 00293 BaseRegister * debugStatus; 00294 00296 BaseRegister *usctControl; 00297 00299 BaseRegister *usctFifo; 00300 00301 00303 SltSetSecondCounter * setSecCounter; 00304 00305 /* Second counter register */ 00306 BaseRegister *secCounter; 00307 SltSecondCounter *secondCounter; 00308 00309 /* Register for sub second counter */ 00310 BaseRegister *subSecCounter; 00311 00313 //SltPageManagementReg *pageManager; 00314 00319 //SltTimingReg *triggerTiming; 00320 00322 //SltPageSelectReg *pageSelect; 00323 00325 //SltEventStatusReg *eventStatus; 00326 00330 //BaseRegister *numberOfPages; 00331 00332 //BaseRegister *pageNumbers; 00333 00334 //SltEventStatusMem *eventStatus; 00335 00336 //SltReadoutControlReg *readoutControl; 00337 00338 //SltReadoutStatusReg *readoutStatus; 00339 00340 //SltPageSelectReg *bufferSelect; 00341 00342 //BaseRegister *readoutDefinition; 00343 00344 BaseRegister *tpTiming; 00345 00346 BaseRegister *tpShape; 00347 00348 SltI2CCommandReg *i2cCommand; 00349 00350 SltEPCSCommandReg *epcsCommand; 00351 00352 00353 BaseRegister *eepromControl; 00354 00355 BaseRegister *eepromBuffer; 00356 00357 00358 BaseFIFO *fifoData; 00359 00360 //BaseRegister *multiplicity; 00361 00362 //BaseRegister *sltTrigger; 00363 00364 //BaseRegister *unpackPixelTrigger; 00365 00366 //BaseRegister *unpackMultiplicity; 00367 00368 //BaseRegister *unpackSltTrigger; 00369 00370 //BaseRegister *adcData; 00371 00372 00373 BaseRegister *fifoSize; 00374 00375 SltFIFOStatus *fifoStatus; 00376 00377 SltFIFOReset *fifoReset; 00378 00379 SltFIFOStatus *fifoRequest; 00380 00381 SltFIFOStatus *fifoMask; 00382 00383 00384 BaseRegister *dataBlockRW; 00385 00386 SltDataBlockReg *dataBlock; 00387 00388 00390 procDuration deadCheckTime[24]; 00391 00393 unsigned long long deadStart[24]; 00394 00396 unsigned long long vetoStart[24]; 00397 }; 00398 00399 } // namespace hw4 00400 00401 #endif // _HW4_SLTKATRIN_H_INCLUDED 00402