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_SLTAUGER_H_INCLUDED 00011 #define _HW4_SLTAUGER_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/sltpagemanagementreg.h> 00024 #include <hw4/sltpageselectreg.h> 00025 #include <hw4/slteventstatusmem.h> 00026 #include <hw4/slttimingreg.h> 00027 #include <hw4/sltreadoutcontrolreg.h> 00028 #include <hw4/sltreadoutstatusreg.h> 00029 #include <hw4/sltbyteregister.h> 00030 #include <hw4/sltiiccommandreg.h> 00031 #include <hw4/sltepcscommandreg.h> 00032 #include <hw4/slteepromcontrolreg.h> 00033 #include <hw4/slttime.h> 00034 #include <hw4/sltversion.h> 00035 #include <hw4/sltdatablockreg.h> 00036 #include <hw4/basememory.h> 00037 00038 #include <hw4/subrack.h> 00039 #include <hw4/subrackboard.h> 00040 00041 00042 00043 00044 namespace hw4 { 00045 00046 // --- forward declaration(s) 00047 00048 class Subrack; 00049 00077 class SltAuger : public Slt { 00078 public: 00079 SltAuger(int ID, const char *inifile = "FE.ini"); 00080 00081 virtual ~SltAuger(); 00082 00083 00090 void getActualTime(SltTime *time); 00091 00092 00108 unsigned long setActualTime(); 00109 00110 00141 int checkActualTime(long int *tDiff, long int *tDiffEye, int * tMeas, int *tPhase, 00142 long int *tDiffGps=0, int id=0, int n=1, 00143 const char *gpsserver = "localhost", int gpsport = 0); 00144 00145 00159 int checkTime(double *tDiff=0, int *tSecErr=0, int *tPhase=0, procDuration *tPC = 0); 00160 00161 00174 enum RunMode { 00175 RUN, 00176 CAL, 00177 WAIT, 00178 STOP, 00179 CERR, 00180 UNKNOWN}; 00181 00182 00187 RunMode getRunMode(); 00188 00190 std::string getRunModeText(); 00191 std::string getRunModeText(RunMode mode); 00192 00200 void getActivePages(int time, int *pages, int *continous); 00201 00209 void convertToUTC(time_t *t_utc, unsigned long time); 00210 00211 void convertToUTC(time_t *t_utc, SltTime time); 00212 00214 void convertToGPS(SltTime *time, time_t t_utc); 00215 00216 00218 void checkDeadTime(unsigned long long *tDead, unsigned long long *tVeto, 00219 double *tRecord, double *tPageFull, procDuration *tMeas = 0); 00220 00225 int readDeadTime (unsigned long long *tDead, unsigned long long *tVeto, 00226 unsigned long long *tInhibit); 00227 00228 00230 std::string convertTimeToText(unsigned long long time, int showSubSecs = 0); 00231 00232 public: // members 00233 00234 00236 SltControlReg *control; 00237 00239 SltStatusReg *status; 00240 00242 SltCommandReg *command; 00243 00247 SltInterruptReg *interruptMask; 00248 00256 SltInterruptReg *interruptRequest; 00257 00260 BaseRegister *requestSemaphore; 00261 00262 00264 BaseRegister *pixelBusPError; 00265 00270 SltLongRegister *vetoTime; 00271 00276 SltLongRegister *deadTime; 00277 00278 SltLongRegister *runTime; 00279 00280 BaseRegister * pixelBusEnable; 00281 00282 BaseRegister * pixelBusTest; 00283 00284 BaseRegister * auxBusTest; 00285 00286 BaseRegister * debugStatus; 00287 00289 BaseRegister *usctControl; 00290 00292 BaseRegister *usctFifo; 00293 00294 00296 SltSetSecondCounter * setSecCounter; 00297 00298 /* Second counter register */ 00299 BaseRegister *secCounter; 00300 00301 /* Register for sub second counter */ 00302 BaseRegister *subSecCounter; 00303 00305 SltPageManagementReg *pageManager; 00306 00311 SltTimingReg *triggerTiming; 00312 00314 SltPageSelectReg *pageSelect; 00315 00317 //SltEventStatusReg *eventStatus; 00318 00322 BaseRegister *numberOfPages; 00323 00324 BaseRegister *pageNumbers; 00325 00326 SltEventStatusMem *eventStatus; 00327 00328 SltReadoutControlReg *readoutControl; 00329 00330 SltReadoutStatusReg *readoutStatus; 00331 00332 SltPageSelectReg *bufferSelect; 00333 00334 BaseRegister *readoutDefinition; 00335 00336 BaseRegister *tpTiming; 00337 00338 BaseRegister *tpShape; 00339 00340 SltI2CCommandReg *i2cCommand; 00341 00342 SltEPCSCommandReg *epcsCommand; 00343 00344 00345 BaseRegister *eepromControl; 00346 00347 BaseRegister *eepromBuffer; 00348 00349 00350 //BaseRegister *triggerData; 00351 00352 BaseMemory *pixelTrigger; 00353 00354 BaseRegister *multiplicity; 00355 00356 BaseRegister *sltTrigger; 00357 00358 BaseRegister *unpackPixelTrigger; 00359 00360 BaseRegister *unpackMultiplicity; 00361 00362 BaseRegister *unpackSltTrigger; 00363 00364 BaseRegister *adcData; 00365 00366 BaseRegister *dataBlockRW; 00367 00368 SltDataBlockReg *dataBlock; 00369 00370 00372 procDuration deadCheckTime[24]; 00373 00375 unsigned long long deadStart[24]; 00376 00378 unsigned long long vetoStart[24]; 00379 }; 00380 00381 } // namespace hw4 00382 00383 #endif // _HW4_SLTAUGER_H_INCLUDED 00384