Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Related Pages

crate.h

00001 #ifndef SCTAPI_CRATE
00002 #define SCTAPI_CRATE
00003 
00004 // Make sure all compilations have same SctApi structure!
00005 #include "config.h"
00006 
00007 #include <boost/shared_ptr.hpp>
00008 
00009 namespace SctPixelRod {
00010   class RodOutList;
00011   class RodModule;
00012   class TimModule;
00013   class VmeInterface;
00014 }
00015 
00016 namespace SctConfiguration {
00017   class Configuration;
00018   class BOCChannelConfig;
00019   class BOCGlobalConfig;
00020 }
00021 
00022 namespace SctApi {
00023   class PrimListWrapper;
00024 
00028   class CrateException : public std::exception {
00029     std::string desc;
00030   public:
00032     CrateException(const std::string &str) throw() : desc(str) {}
00033 
00034     ~CrateException() throw() {}
00035 
00037     virtual const char* what () const throw() { return desc.c_str(); }
00038   };
00039 
00049 class Crate {
00050   // Don't use copy constructor or assignment operator
00051   Crate(const Crate&);
00052   Crate &operator=(const Crate&);
00053  public:
00055   Crate() {};
00056 
00058 
00061   virtual ~Crate() {};
00062 
00063   /************** Interaction with Configuration **************/
00064 
00066 
00069   virtual int initialiseCrate() = 0;
00070 
00072 
00075   virtual int initialiseTim() = 0;
00076 
00078 
00082   virtual int initialiseRod(unsigned int rod) = 0;
00083 
00085 
00088   virtual int initialiseBOC(unsigned int rod) = 0;
00089 
00091 
00094   virtual int configureBOC(unsigned int rod) = 0;
00095 
00096   /*************** Primlists *********************/
00097 
00099 
00102   virtual int sendPrimList(unsigned int rod, boost::shared_ptr<PrimListWrapper> prim) = 0;
00103 
00105 
00108   virtual int sendPrimListAll(boost::shared_ptr<PrimListWrapper> prim) = 0;
00109 
00111 
00117   virtual int awaitResponse(unsigned int rod, int timeout) = 0;
00118 
00120 
00125   virtual int awaitResponseAll(int timeout) = 0;
00126 
00128 
00131   virtual boost::shared_ptr<SctPixelRod::RodOutList> getResponse(unsigned int rod) = 0;
00132 
00133   virtual void setMrsStream(MRSStream *stream) = 0;
00134 
00135   /***************** Messages ******************/
00136 
00138 
00145   virtual bool getRodMessage(unsigned int rod, char *buffer, unsigned long &length) = 0;
00146 
00147   /************** Misc read/writes *****************/
00148 
00150 
00153   virtual int mdspBlockRead(unsigned int rod, long dspStart, unsigned long *buffer, unsigned long numWords) = 0;
00154 
00156 
00159   virtual int slvBlockRead(unsigned int rod, long dspStart, unsigned long *buffer, unsigned long numWords, long slaveNumber) = 0;
00160 
00162 
00165   virtual int slvBlockWrite(unsigned int rod, long dspStart, unsigned long* buffer, unsigned long numWords, long dspNumber) = 0;
00166 
00168 
00171   virtual int mdspBlockWrite(unsigned int rod, long dspStart, unsigned long *buffer, unsigned long numWords) = 0;
00172 
00174 
00177   virtual unsigned long readRodStatusReg(unsigned int rod, long regNumber) = 0;
00178 
00179 
00181 
00184   virtual unsigned long readRodCommandReg(unsigned int rod, long regNumber) = 0;
00185 
00187 
00190   virtual unsigned long dspSingleRead(unsigned int rod, const unsigned long dspAddr, long dspNumber) = 0;
00191 
00193 
00196   virtual int dspSingleWrite(unsigned int rod, unsigned long dspAddr, unsigned long buffer, long dspNumber) = 0;
00197 
00199   virtual void status() = 0;
00200 
00202 
00208   enum PLControl {
00209     C_PL_STOP,
00210     C_PL_PAUSE,
00211     C_PL_RESUME,
00212     C_PL_CANCEL };
00213 
00215   virtual void primListControl(unsigned int rod, PLControl function) = 0;
00216 
00218   virtual void printBOCSetup(unsigned int rod) = 0;
00219 
00221   virtual std::vector<SctConfiguration::BOCChannelConfig> currentBOCSetup(unsigned int rod) = 0;
00222 
00224   virtual void printBOCRegisters(unsigned int rod) = 0;
00225 
00227   virtual SctConfiguration::BOCGlobalConfig currentBOCRegisters(unsigned int rod) = 0;
00228 
00230   virtual void saveBOCSetup(unsigned int rod) = 0;
00232   virtual void saveBOCRegisters(unsigned int rod) = 0;
00233 
00235   virtual void restoreBOCSetup(unsigned int rod) = 0;
00237   virtual void restoreBOCRegisters(unsigned int rod) = 0;
00238 
00240   virtual bool checkBOCLasersOn(unsigned int rod) = 0;
00241 
00243   virtual void enterBOCClockBy2Mode(unsigned int rod) = 0;
00244 
00246   virtual void leaveBOCClockBy2Mode(unsigned int rod) = 0;
00247 
00249 
00252   virtual void modifyBOCParam(unsigned int type, unsigned int val, bool raw) = 0;
00253 
00255 
00258   virtual void modifyBOCParam(unsigned int rod, unsigned int channel, unsigned int type, unsigned int val, bool raw) = 0;
00259 
00261   virtual void lasersOff() = 0;
00262 
00263   /* ******************* TIM Functions ***************************/
00264 
00266 
00270   virtual void timSetFrequency(double trigFreq, double rstFreq) = 0;
00271 
00273   virtual void freeTriggers() = 0;
00274 
00276   virtual void stopTriggers() = 0;
00277 
00279   virtual void timL1A() = 0;
00280 
00282   virtual void timCalL1A(int delay) = 0;
00283 
00284   virtual void timECR() = 0;
00285 
00286   virtual void timBCR() = 0;
00287 
00288   virtual void timFER() = 0;
00289 
00291   virtual void sendTimBurst(int count) = 0;
00292 
00294   virtual void timVerbose() = 0;
00295 
00297   virtual void timRegLoad(int reg, UINT16 val) = 0;
00298 
00300   virtual UINT16 timRegRead(int reg) = 0;
00301 
00303   virtual bool slavePresent(int rod, int index) const = 0;
00304 
00306   virtual void slaveStarted(int rod, int slave) = 0;
00307 
00309   virtual bool RODPresent(int rod) const = 0;
00310 
00311   virtual long getRodSlot(int rod) const = 0;
00312 
00314   virtual int getRodRevision(int rod) const = 0;
00315 
00317   virtual void stopPolling() = 0;
00318 
00320   virtual void resumePolling() = 0;
00321 };
00322 
00323 }  // End of namespace SctApi
00324 #endif

Generated on Thu Jul 15 09:50:44 2004 for SCT DAQ/DCS Software - C++ by doxygen 1.3.5