fdhwlib  2.0.25
/home/kopmann/git-mirror/fdhwlib/fdhwlib/katrinhw4/sltkatrin.h
Go to the documentation of this file.
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