fdhwlib
2.0.25
|
00001 /*************************************************************************** 00002 pbusimp.h - description 00003 00004 begin : Wed Oct 22 2003 00005 copyright : (C) 2003 by A Kopmann 00006 email : kopmann@ipe.fzk.de 00007 status : 00008 test : 00009 history : 00010 ***************************************************************************/ 00011 00012 00013 #ifndef PBUSIMP_H 00014 #define PBUSIMP_H 00015 00016 #include <cstdio> 00017 00018 #include "Pbus.h" 00019 00020 class semaphore; 00021 00027 class PbusImp 00028 { 00029 public: 00030 PbusImp(); 00031 00032 virtual ~PbusImp(); 00033 00034 virtual const char *getVersion(); 00035 00036 virtual const char *getMode(); 00037 00038 virtual int getModeId(); 00039 00040 virtual const char *getLibName(); 00041 00042 virtual int get(std::string item, std::string *value); 00043 00044 virtual int set(std::string item, std::string value); 00045 00052 virtual int init(char *inifile, int host=0); 00053 00054 00055 virtual int free(int host=0); 00056 00058 virtual void reset(); 00059 00060 virtual unsigned long getState(); 00061 00062 virtual unsigned long getState(unsigned long addr); 00063 00064 virtual int waitForIR(int timeout); 00065 00066 virtual int checkIR(); 00067 00068 virtual unsigned long getIRvector(); 00069 00070 virtual unsigned long readIRvector(); 00071 00072 virtual void writeIRvector(unsigned long vector); 00073 00077 virtual unsigned long read(unsigned long addr); 00078 00081 virtual unsigned long rawRead(unsigned long addr); 00082 00086 virtual void write(unsigned long addr, unsigned long data); 00087 00090 virtual void rawWrite(unsigned long addr, unsigned long data); 00091 00095 virtual void writeBits(unsigned long addr, unsigned long data, 00096 unsigned long mask, int shift); 00097 00101 virtual void setBitsToHigh(unsigned long addr, unsigned long mask); 00102 00106 virtual void setBitsToLow(unsigned long addr, unsigned long mask); 00107 00111 virtual void readBlock(unsigned long addr, unsigned long * data, 00112 unsigned long n, unsigned long incr=1); 00113 00117 virtual void writeBlock(unsigned long addr, unsigned long * data, 00118 unsigned long n, unsigned long incr=1); 00119 00123 virtual void clearBlock(unsigned long addr, unsigned long data, 00124 unsigned long n, unsigned long incr=1); 00125 00139 virtual void readRegisterBlock(unsigned long addr, unsigned long *data, 00140 unsigned long nPix, unsigned long incrPix, 00141 unsigned long nSlots=1, unsigned long incrSlots=0); 00142 00145 virtual void selectTelescope(int id); 00146 00149 virtual int getTelescope(); 00150 00152 virtual int getNTelescopes(); 00153 00161 virtual bool isConnected(int id=0); 00162 00163 virtual void shutdown(); 00164 00165 virtual int startBackgroundLoop(char *host, int telId); 00166 00167 virtual int startBackgroundLoop(int eyeId, char *host, int telId); 00168 00169 virtual char *getHostName(int tel); 00170 00171 virtual unsigned long getPCTime(); 00172 00184 virtual void stop(); 00185 00187 virtual void cont(); 00188 00210 virtual void initDebugOutput(); 00211 00212 virtual void endDebugOutput(); 00213 00214 virtual void debugMsg(const char *msg, ...); 00215 00216 virtual void vdebugMsg(const char *msg, va_list va); 00217 00218 00220 static int debugLevel; 00221 00222 static FILE *fdebug; 00223 00224 static bool newLine; 00225 00226 static bool mounted; 00227 00228 static char libName[256]; 00229 00230 #ifdef USE_SEMAPHORE 00231 00233 static semaphore mE; 00234 00241 static bool useSemaphore; 00242 00243 static bool running; 00244 #endif 00245 00246 #ifdef USE_MFC_LOCAL_SYNC 00247 00256 static CMutex s_sock; 00257 //static CMutex *s_sock; 00258 #endif 00259 00261 static unsigned long nBlockAccess; 00262 00264 static unsigned long nBlockErrors; 00265 00266 }; 00267 00268 #endif