fdhwlib  2.0.25
/home/kopmann/git-mirror/fdhwlib/fdhwlib/Hw/SltControlReg.h
Go to the documentation of this file.
00001 /***************************************************************************
00002     SltControlReg.h  -  description
00003 
00004     begin                : Mon Jul 17 2000
00005     copyright            : (C) 2000 by Andreas Kopmann
00006     email                : kopmann@hpe.fzk.de
00007  ***************************************************************************/
00008 
00009 
00010 #ifndef SLTCONTROLREG_H
00011 #define SLTCONTROLREG_H
00012 
00013 #include <Hw/SltDef.h>
00014 #include <Hw/SltRegister.h>
00015 
00016 // Sources
00017 #if defined (SLT_VER) && (SLT_VER >= 110)
00018 // Version 1.10
00019 # define SLT_TRIGGER_SW    0x01  // Software
00020 # define SLT_TRIGGER_I_N   0x07  // Internal + Neighbors
00021 # define SLT_TRIGGER_LEFT  0x04  // left neighbor
00022 # define SLT_TRIGGER_RIGHT 0x02  // right neighbor
00023 # define SLT_TRIGGER_INT   0x08  // Internal only
00024 # define SLT_TRIGGER_EXT   0x10  // External
00025 
00026 # define SLT_INHIBIT_SW    0x01  // Software
00027 # define SLT_INHIBIT_INT   0x02  // Internal
00028 # define SLT_INHIBIT_EXT   0x04  // External
00029 # define SLT_INHIBIT_ALL   0x07  // Internal + External
00030 # define SLT_INHIBIT_NO    0x01  // None of both (only Software)
00031 
00032 // not required any more !
00033 # define SLT_NXPG_INT      0x00   // Internal
00034 # define SLT_NXPG_EXT      0x01   // External
00035 # define SLT_NXPG_SW       0x01   // Software
00036 
00037 # define SLT_TESTPULS_NO   0x00   // None
00038 # define SLT_TESTPULS_EXT  0x02   // External
00039 # define SLT_TESTPULS_SW   0x01   // Software
00040 
00041 # define SLT_SECSTROBE_INT 0x00   // Internal SecStrobe Signal
00042 # define SLT_SECSTROBE_EXT 0x01   // Extern
00043 # define SLT_SECSTROBE_SW  0x00   // Software - not available -
00044 # define SLT_SECSTROBE_CAR 0x00   // Carry of Subsecond Counter
00045                                  //   - not available -
00046 
00047 // called also watchdog in the slt hardware documentation
00048 # define SLT_LOADADC_INT   0x02   // Start with internal second strobe
00049 # define SLT_LOADADC_EXT   0x00   // External  - not available -
00050 # define SLT_LOADADC_SW    0x01   // Software
00051 
00052 #else
00053 // Version 1.00
00054 # define SLT_TRIGGER_SW    0   // Software
00055 # define SLT_TRIGGER_I_N   1   // Internal + Neighbors
00056 # define SLT_TRIGGER_INT   2   // Internal only
00057 # define SLT_TRIGGER_EXT   3   // External
00058 
00059 # define SLT_INHIBIT_INT   0   // Internal  (Software is always allowed)
00060 # define SLT_INHIBIT_EXT   1   // External
00061 # define SLT_INHIBIT_ALL   2   // Internal + External
00062 # define SLT_INHIBIT_NO    3   // None of both (only Software)
00063 
00064 # define SLT_NXPG_INT      0   // Internal
00065 # define SLT_NXPG_EXT      1   // External
00066 # define SLT_NXPG_SW       2   // Software
00067 
00068 # define SLT_TESTPULS_NO   0   // None
00069 # define SLT_TESTPULS_EXT  1   // External
00070 # define SLT_TESTPULS_SW   2   // Software
00071 
00072 # define SLT_SECSTROBE_INT 0   // Internal SecStrobe Signal
00073 # define SLT_SECSTROBE_EXT 1   // Extern
00074 # define SLT_SECSTROBE_SW  2   // Software
00075 # define SLT_SECSTROBE_CAR 3   // Carry of Subsecond Counter
00076 
00077 # define SLT_LOADADC_INT   0   // Start with internal second strobe
00078 # define SLT_LOADADC_EXT   1   // External
00079 # define SLT_LOADADC_SW    2   // Software
00080 #endif
00081 
00082 
00083 // Position of the bit field?!
00084 #if defined (SLT_VER) && (SLT_VER >= 110)
00085 
00086 // Version 1.10
00087 #define SLT_TRIGGER_LOW       0
00088 #define SLT_TRIGGER_MASK   0x1f
00089 
00090 #define SLT_INHIBIT_LOW       5
00091 #define SLT_INHIBIT_MASK   0x07
00092 
00093 // Not required any more!
00094 #define SLT_NXPG_LOW          0
00095 #define SLT_NXPG_MASK      0x00
00096 
00097 #define SLT_TESTPULS_LOW      8
00098 #define SLT_TESTPULS_MASK  0x03
00099 
00100 #define SLT_SECSTROBE_LOW    10
00101 #define SLT_SECSTROBE_MASK 0x01
00102 
00103 #define SLT_LOADADC_LOW      11
00104 #define SLT_LOADADC_MASK   0x03
00105 
00106 #else
00107 // Version 1.00
00108 #define SLT_TRIGGER_LOW       0
00109 #define SLT_TRIGGER_MASK   0x0f
00110 
00111 #define SLT_INHIBIT_LOW       4
00112 #define SLT_INHIBIT_MASK   0x03
00113 
00114 #define SLT_NXPG_LOW          6
00115 #define SLT_NXPG_MASK      0x03
00116 
00117 #define SLT_TESTPULS_LOW      8
00118 #define SLT_TESTPULS_MASK  0x03
00119 
00120 #define SLT_SECSTROBE_LOW    10
00121 #define SLT_SECSTROBE_MASK 0x03
00122 
00123 #define SLT_LOADADC_LOW      12
00124 #define SLT_LOADADC_MASK   0x03
00125 #endif
00126 
00127 #define SLT_DEADTIME_LOW      13
00128 #define SLT_DEADTIME_MASK   0x01
00129 
00130 
00145 //##ModelId=3991507D007A
00146 class SltControlReg : public SltRegister {
00147 public:
00148   //##ModelId=3991507D00B7
00149   SltControlReg(const char *name, int slotID, int regID, int r, int w);
00150   //##ModelId=3991507D00B6
00151   ~SltControlReg();
00152 
00156   //##ModelId=3991507D00B1
00157   unsigned long read();
00158 
00159 
00167   int writeBitsByName(char *name, unsigned long data);
00168 
00169   //##ModelId=3991507D00AF
00170   void  setTriggerSource(int source);
00171   //##ModelId=3991507D00AE
00172   int getTriggerSource();
00173   //##ModelId=3991507D00AC
00174   void  setInhibitSource(int source);
00175   //##ModelId=3991507D00A7
00176   int getInhibitSource();
00177   //##ModelId=3991507D00A5
00178   void setNextPageSource(int source);
00179   //##ModelId=3991507D00A4
00180   int getNextPageSource();
00181   //##ModelId=3991507D00A2
00182   void setTestpulsSource(int source);
00183   //##ModelId=3991507D009C
00184   int getTestpulsSource();
00185   //##ModelId=3991507D009A
00186   void setSecStrobeSource(int source);
00187   //##ModelId=3991507D0099
00188   int getSecStrobeSource();
00189   //##ModelId=3991507D0092
00190   void setInitADCSource(int source);
00191   //##ModelId=3991507D0091
00192   int getInitADCSource();
00193 
00195   void setDeadTimeSource(int source);
00196 
00198   void enableDeadTime();
00199 
00201   void disableDeadTime();
00202 
00204   bool isEnabledDeadTime();
00205 
00206 
00207   //##ModelId=3991507D0090
00208   int triggerSource;
00209   //##ModelId=3991507D008F
00210   int inhibitSource;
00211   //##ModelId=3991507D008E
00212   int nextPageSource;
00213   //##ModelId=3991507D0087
00214   int testpulsSource;
00215   //##ModelId=3991507D0086
00216   int secStrobeSource;
00217   //##ModelId=3991507D0085
00218   int initADCSource;
00219 
00220   int deadTimeSource;
00221 
00222 };
00223 
00224 #endif