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