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 //other fwddecs 
00010 class MRSStream; // needed by Crate
00011 
00012 namespace SctPixelRod {
00013   class RodOutList;
00014   class RodModule;
00015   class TimModule;
00016   class VmeInterface;
00017 }
00018 
00019 namespace SctConfiguration {
00020   class Configuration;
00021   class BOCChannelConfig;
00022   class BOCGlobalConfig;
00023 }
00024 
00025 #include "SctApiFwd.h"
00026 
00027 namespace SctApi {
00028   class PrimListWrapper;
00029 
00033   class CrateException : public std::exception {
00034     std::string desc;
00035   public:
00037     CrateException(const std::string &str) throw() : desc(str) {}
00038 
00039     ~CrateException() throw() {}
00040 
00042     virtual const char* what () const throw() { return desc.c_str(); }
00043   };
00044 
00055 class Crate {
00056   // Don't use copy constructor or assignment operator
00057   Crate(const Crate&);
00058   Crate &operator=(const Crate&);
00059  public:
00061   Crate() {};
00062 
00064 
00067   virtual ~Crate() {};
00068 
00069   /************** Interaction with Configuration **************/
00070 
00072 
00075   virtual int initialiseCrate() = 0;
00076 
00078 
00081   virtual int initialiseTim() = 0;
00082 
00084 
00088   virtual int initialiseRod(unsigned int rod) = 0;
00089 
00091 
00094   virtual int initialiseBOC(unsigned int rod) = 0;
00095 
00097 
00100   virtual int configureBOC(unsigned int rod) = 0;
00101 
00102   /*************** Primlists *********************/
00103 
00105 
00108   virtual int sendPrimList(unsigned int rod, boost::shared_ptr<PrimListWrapper> prim) = 0;
00109 
00111 
00114   virtual int sendPrimListAll(boost::shared_ptr<PrimListWrapper> prim) = 0;
00115 
00117 
00123   virtual int awaitResponse(unsigned int rod, int timeout) = 0;
00124 
00126 
00131   virtual int awaitResponseAll(int timeout) = 0;
00132 
00134 
00137   virtual boost::shared_ptr<SctPixelRod::RodOutList> getResponse(unsigned int rod) = 0;
00138 
00139   virtual void setMrsStream(MRSStream *stream) = 0;
00140 
00141   /***************** Messages ******************/
00142 
00144 
00151   virtual bool getRodMessage(unsigned int rod, char *buffer, unsigned long &length) = 0;
00152 
00153   /************** Misc read/writes *****************/
00154 
00156 
00159   virtual int mdspBlockRead(unsigned int rod, long dspStart, unsigned long *buffer, unsigned long numWords) = 0;
00160 
00162 
00165   virtual int slvBlockRead(unsigned int rod, long dspStart, unsigned long *buffer, unsigned long numWords, long slaveNumber) = 0;
00166 
00168 
00171   virtual int slvBlockWrite(unsigned int rod, long dspStart, unsigned long* buffer, unsigned long numWords, long dspNumber) = 0;
00172 
00174 
00177   virtual int mdspBlockWrite(unsigned int rod, long dspStart, unsigned long *buffer, unsigned long numWords) = 0;
00178 
00180 
00183   virtual unsigned long readRodStatusReg(unsigned int rod, long regNumber) = 0;
00184 
00185 
00187 
00190   virtual unsigned long readRodCommandReg(unsigned int rod, long regNumber) = 0;
00191 
00193 
00196   virtual unsigned long dspSingleRead(unsigned int rod, const unsigned long dspAddr, long dspNumber) = 0;
00197 
00199 
00202   virtual int dspSingleWrite(unsigned int rod, unsigned long dspAddr, unsigned long buffer, long dspNumber) = 0;
00203 
00205   virtual void status() = 0;
00206 
00207 
00208   virtual std::list<unsigned> getListOfRods() const = 0;
00209 
00211 
00217   enum PLControl {
00218     C_PL_STOP,
00219     C_PL_PAUSE,
00220     C_PL_RESUME,
00221     C_PL_CANCEL };
00222 
00224   virtual void primListControl(unsigned int rod, PLControl function) = 0;
00225 
00227   virtual void printBOCSetup(unsigned int rod) = 0;
00228 
00230   virtual std::vector<SctConfiguration::BOCChannelConfig> currentBOCSetup(unsigned int rod) = 0;
00231 
00233   virtual void printBOCRegisters(unsigned int rod) = 0;
00234 
00236   virtual SctConfiguration::BOCGlobalConfig currentBOCRegisters(unsigned int rod) = 0;
00237 
00239   virtual void saveBOCSetup(unsigned int rod, BankType bank) = 0;
00241   virtual void saveBOCRegisters(unsigned int rod, BankType bank) = 0;
00242 
00244   virtual void restoreBOCSetup(unsigned int rod, BankType bank) = 0;
00246   virtual void restoreBOCRegisters(unsigned int rod, BankType bank) = 0;
00247 
00249   virtual bool checkBOCLasersOn(unsigned int rod) = 0;
00250 
00252   virtual void enterBOCClockBy2Mode(unsigned int rod) = 0;
00253 
00255   virtual void leaveBOCClockBy2Mode(unsigned int rod) = 0;
00256 
00258   virtual std::vector<double> getBOCMonitorArray(unsigned int rod) = 0;
00259 
00261 
00264   virtual void modifyBOCParam(unsigned int type, unsigned int val, bool raw) = 0;
00265 
00267 
00270   virtual void modifyBOCParam(unsigned int rod, unsigned int channel, unsigned int type, unsigned int val, bool raw) = 0;
00271 
00273   virtual void lasersOff() = 0;
00274 
00275   /* ******************* TIM Functions ***************************/
00276 
00278 
00282   virtual void timSetFrequency(double trigFreq, double rstFreq) = 0;
00283 
00285   virtual void freeTriggers() = 0;
00286 
00288   virtual void stopTriggers() = 0;
00289 
00291   virtual void timL1A() = 0;
00292 
00294   virtual void timCalL1A(int delay) = 0;
00295 
00296   virtual void timECR() = 0;
00297 
00298   virtual void timBCR() = 0;
00299 
00300   virtual void timFER() = 0;
00301 
00303   virtual void sendTimBurst(int count) = 0;
00304 
00306   virtual void timVerbose() = 0;
00307 
00309   virtual void timRegLoad(int reg, UINT16 val) = 0;
00310 
00312   virtual UINT16 timRegRead(int reg) = 0;
00313 
00315   virtual bool slavePresent(int rod, int index) const = 0;
00316 
00318   virtual void slaveStarted(int rod, int slave) = 0;
00319 
00321   virtual bool RODPresent(int rod) const = 0;
00322 
00323   virtual long getRodSlot(int rod) const = 0;
00324 
00326   virtual int getRodRevision(int rod) const = 0;
00327 
00329   virtual void stopPolling() = 0;
00330 
00332   virtual void resumePolling() = 0;
00333 };
00334 
00335 }  // End of namespace SctApi
00336 #endif

Generated on Fri Sep 16 18:01:50 2005 for SCT DAQ/DCS Software - C++ by doxygen 1.3.5