fdhwlib  2.0.25
/home/kopmann/git-mirror/fdhwlib/fdhwlib/Hw/SltTimeBase.h
Go to the documentation of this file.
00001 /***************************************************************************
00002     SltTimeBase.h  -  description
00003 
00004     begin                : Fri Jul 3 2009
00005     copyright            : (C) 2000 by Andreas Kopmann
00006     email                : kopmann@hpe.fzk.de
00007  ***************************************************************************/
00008 
00009 
00010 #ifndef SLTTIMEBASE_H
00011 #define SLTTIMEBASE_H
00012 
00013 #include <ctime>  // time_t
00014 
00015 // --- forward declaration(s)
00016 
00017 namespace hw4 {
00018   class SltAuger;
00019   class SltKatrin;
00020   class SltCmds;
00021 
00022   class TsBackground;
00023 }
00024 
00032 class SltTimeBase {
00033 // those bad guys want to access my data ...
00034 friend class SimPageController;
00035 friend class Slt;
00036 friend class EventLoop;
00037 
00038 friend class hw4::SltAuger;
00039 friend class hw4::SltKatrin;
00040 
00041 friend class KaSubrack;
00042 
00043 friend class CursesEvent;
00044 friend class TsEvent;
00045 friend class TsBackground;
00046 friend class hw4::TsBackground;
00047 
00048 friend class SubrackCmds;
00049 friend class SltCmds;
00050 friend class hw4::SltCmds;
00051 
00052 public:
00053 
00055   SltTimeBase();
00057   virtual ~SltTimeBase();
00058 
00060   void setSec(unsigned long gps_time) {
00061     sec = gps_time; // 32bit !!!
00062   }
00063 
00065   unsigned long getSec() {
00066     return sec;
00067   }
00068 
00073   virtual void setSecFromUTC(time_t t_utc);
00074 
00076   virtual time_t getUTCSec();
00077 
00081   virtual void setSubSec(unsigned long) {
00082     isNotImplemented("setSubSec(unsigned long)"); 
00083   }
00084 
00085 #if 1
00086 
00087   void setSubSec(int subSec1, int subSec2) {
00088     printf("%d %d\n", subsec1, subsec2);
00089     subsec1 = subSec1; subsec2 = subSec2;
00090   }
00091 #endif
00092 
00093   void setSubSec1(int subSec1) {
00094     subsec1 = subSec1;
00095   }
00096   void setSubSec2(int subSec2) {
00097     subsec2 = subSec2;
00098   }
00099   
00101   virtual unsigned long getSubSec() {
00102     isNotImplemented("getSubSec()"); 
00103     return 0;
00104   }
00105 
00106 #if 1
00107 
00108   void getSubSec(int& subSec1, int& subSec2) {
00109     subSec1 = subsec1; subSec2 = subsec2;
00110   }
00111 #endif
00112 
00113   virtual int getSubSec1() {
00114     return subsec1;
00115   }
00116   virtual int getSubSec2() {
00117     return subsec2;
00118   }
00119   
00125   virtual void setSubSecFromNanoSec(unsigned long time);
00126 
00128   virtual void setNanoSec(unsigned long time);
00129 
00131   virtual unsigned long getNanoSec();
00132 
00139   virtual void setLastTrigger(unsigned long) {
00140     isNotImplemented("setLastTrigger(unsigned long)"); 
00141   }
00142 
00144   virtual unsigned long getLastTrigger() {
00145     isNotImplemented("getLastTrigger()"); 
00146     return 0;
00147   }
00148   
00150   void setTriggerSource(int source) {
00151     triggerSource = source;
00152   }
00153 
00155   int getTriggerSource() {
00156     return triggerSource;
00157   }
00158   
00160   virtual const char * getTriggerSourceBrief() {
00161     isNotImplemented("getTriggerSourceBrief()"); 
00162     return "";
00163   }
00164 
00170   virtual void setAllActiveTriggerSources(int sources) {
00171     triggerAllActive = sources;
00172   }
00173 
00177   virtual int getAllActiveTriggerSources() {
00178     return triggerAllActive;
00179   }
00180 
00187   virtual int getLastEventPage() {
00188     return lastEventPage;
00189   }
00190 
00192   virtual int getFltOffset() {
00193     isNotImplemented("getFltOffset()");
00194     return 0;
00195   }
00196 
00198   virtual int getSltOffset() {
00199     isNotImplemented("getSltOffset()"); 
00200     return 0;
00201   }
00202 
00204   virtual int getVersion() {
00205     return sltVersion;
00206   }
00207 
00212   virtual void setVersion(int version) {
00213     sltVersion = version;
00214   }
00215   
00217   virtual SltTimeBase& operator=(const SltTimeBase&);
00218 
00220   virtual SltTimeBase& operator=(const unsigned long&);
00221 
00226   virtual SltTimeBase& minus(const SltTimeBase &t1, const SltTimeBase &t2);
00227 
00228   virtual void minus(SltTimeBase& time) {
00229     minus( *this, time );
00230   }
00231 
00232 #if 1
00233 
00234   virtual void add(SltTimeBase& time);
00235 #endif
00236 
00238   virtual void addNanoSec(unsigned long nanosec);
00239 
00240 #if 1
00241 
00242   virtual SltTimeBase mean(const SltTimeBase& t1, const SltTimeBase& t2);
00243 #endif
00244 
00246   void displayTime(FILE *fout);
00247 
00249   const char *cDate();
00250 
00252   const char *cTime();
00253 
00254 protected:
00255 
00257   void isNotImplemented(const char *what);
00258   
00260   unsigned long sec;
00261 
00263   int subsec1;
00264 
00266   int subsec2;
00267 
00269   int lastTrigger;
00270   
00287   int triggerSource;
00288 
00292   int triggerAllActive;
00293 
00299   int lastEventPage;
00300 
00305   int sltVersion;
00306 };
00307 
00308 #endif // SLTTIMEBASE_H