fdhwlib  2.0.25
/home/kopmann/git-mirror/fdhwlib/fdhwlib/hw4/sltkatrin.h
Go to the documentation of this file.
00001 /***************************************************************************
00002     Slt.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/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/baseboardidreg.h>
00036 #include <hw4/sltdatablockreg.h>
00037 #include <hw4/basememory.h>
00038 
00039 #include <hw4/subrack.h>
00040 #include <hw4/subrackboard.h>
00041 
00042 
00043 #define SLT_REGS 50
00044 #define SLT_VREGS 10
00045 
00046 
00047 class Subrack;
00048 
00049 namespace hw4 {
00050 
00078 class Slt : public SubrackBoard {
00079 public:
00080   Slt(int ID, const char *inifile = "FE.ini");
00081 
00082   virtual ~Slt();
00083 
00086   bool checkPresence();
00087 
00089   int getVersion(int unit =0);
00090 
00098    int getHardwareModelVersion(); 
00099 
00103    void checkHardwareModelVersion(FILE *fout = stdout, const char *indent="");
00104 
00111   void getActualTime(SltTime *time);
00112 
00113 
00129   unsigned long setActualTime();
00130 
00131 
00162   int checkActualTime(long int *tDiff, long int *tDiffEye, int * tMeas, int *tPhase,
00163                       long int *tDiffGps=0, int id=0, int n=1,
00164                       const char *gpsserver = "localhost", int gpsport = 0);
00165 
00166 
00180   int checkTime(double *tDiff=0, int *tSecErr=0, int *tPhase=0, procDuration *tPC = 0);
00181 
00182 
00195    enum RunMode {
00196         RUN,
00197         CAL,
00198         WAIT,
00199         STOP,
00200         CERR,
00201         UNKNOWN};
00202 
00203 
00208   RunMode getRunMode();
00209 
00211   std::string getRunModeText();
00212   std::string getRunModeText(RunMode mode);
00213 
00221   void getActivePages(int time, int *pages, int *continous);
00222 
00230   void convertToUTC(time_t *t_utc, unsigned long time);
00231 
00232   void convertToUTC(time_t *t_utc, SltTime time);
00233 
00235   void convertToGPS(SltTime *time, time_t t_utc);
00236 
00237 
00239   void checkDeadTime(unsigned long long *tDead, unsigned long long *tVeto,
00240                 double *tRecord, double *tPageFull, procDuration *tMeas = 0);
00241 
00246   int readDeadTime (unsigned long long *tDead, unsigned long long *tVeto, 
00247                     unsigned long long *tInhibit);
00248 
00249 
00251   std::string convertTimeToText(unsigned long long time, int showSubSecs = 0);
00252 
00253 public: // members
00254 
00255   Subrack* theSubrack;
00256 
00257 
00259   SltControlReg *control;
00260 
00262   SltStatusReg *status;
00263 
00265   SltCommandReg *command;
00266 
00270   SltInterruptReg *interruptMask;
00271 
00279   SltInterruptReg *interruptRequest;
00280 
00283   BaseRegister *requestSemaphore;
00284 
00290   SltVersion *version; 
00291 
00293   BaseRegister *pixelBusPError;
00294 
00299   SltLongRegister *vetoTime;
00300 
00305   SltLongRegister *deadTime;
00306 
00307   SltLongRegister *runTime;
00308 
00309   BaseRegister * pixelBusEnable;
00310 
00311   BaseRegister * pixelBusTest;
00312 
00313   BaseRegister * auxBusTest;
00314 
00315   BaseRegister * debugStatus;
00316 
00318   BaseRegister *usctControl;
00319   
00321   BaseRegister *usctFifo;
00322 
00323 
00325   SltSetSecondCounter * setSecCounter;
00326   
00327   /* Second counter register */
00328   BaseRegister *secCounter;
00329   
00330   /* Register for sub second counter */
00331   BaseRegister *subSecCounter;
00332 
00334   SltPageManagementReg *pageManager;
00335 
00340   SltTimingReg *triggerTiming;
00341 
00343   SltPageSelectReg *pageSelect;
00344   
00346   //SltEventStatusReg *eventStatus;
00347   
00351   BaseRegister *numberOfPages;
00352 
00353   BaseRegister *pageNumbers;
00354 
00355   SltEventStatusMem *eventStatus;
00356 
00357   SltReadoutControlReg *readoutControl;
00358 
00359   SltReadoutStatusReg *readoutStatus;
00360   
00361   SltPageSelectReg *bufferSelect;
00362 
00363   BaseRegister *readoutDefinition;
00364 
00365   BaseRegister *tpTiming;
00366   
00367   BaseRegister *tpShape;
00368 
00369   SltI2CCommandReg *i2cCommand;
00370 
00371   SltEPCSCommandReg *epcsCommand;
00372   
00374   BaseBoardIdReg *boardId;
00375   
00376   BaseRegister *eepromControl; 
00377 
00378   BaseRegister *eepromBuffer;
00379 
00380 
00381   //BaseRegister *triggerData;
00382 
00383   BaseMemory *pixelTrigger;
00384 
00385   BaseRegister *multiplicity;
00386 
00387   BaseRegister *sltTrigger;
00388 
00389   BaseRegister *unpackPixelTrigger;
00390 
00391   BaseRegister *unpackMultiplicity;
00392 
00393   BaseRegister *unpackSltTrigger;
00394   
00395   BaseRegister *adcData;
00396   
00397   SltDataBlockReg *dataBlock;
00398   
00399 
00400 #if defined (SLT_VER) && (SLT_VER >= 300)
00401 
00402   procDuration deadCheckTime[24];
00403 
00405   unsigned long long deadStart[24];
00406 
00408   unsigned long long vetoStart[24];
00409 #endif // SLT_VER
00410 };
00411 
00412 } // namespace hw4
00413 
00414 #endif  // _HW4_SLTKATRIN_H_INCLUDED
00415