fdhwlib  2.0.25
/home/kopmann/git-mirror/fdhwlib/fdhwlib/hw4/sltauger.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_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