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 #include "SctApiFwd.h"
00023 
00024 namespace SctApi {
00025   class PrimListWrapper;
00026 
00030   class CrateException : public std::exception {
00031     std::string desc;
00032   public:
00034     CrateException(const std::string &str) throw() : desc(str) {}
00035 
00036     ~CrateException() throw() {}
00037 
00039     virtual const char* what () const throw() { return desc.c_str(); }
00040   };
00041 
00051 class Crate {
00052   // Don't use copy constructor or assignment operator
00053   Crate(const Crate&);
00054   Crate &operator=(const Crate&);
00055  public:
00057   Crate() {};
00058 
00060 
00063   virtual ~Crate() {};
00064 
00065   /************** Interaction with Configuration **************/
00066 
00068 
00071   virtual int initialiseCrate() = 0;
00072 
00074 
00077   virtual int initialiseTim() = 0;
00078 
00080 
00084   virtual int initialiseRod(unsigned int rod) = 0;
00085 
00087 
00090   virtual int initialiseBOC(unsigned int rod) = 0;
00091 
00093 
00096   virtual int configureBOC(unsigned int rod) = 0;
00097 
00098   /*************** Primlists *********************/
00099 
00101 
00104   virtual int sendPrimList(unsigned int rod, boost::shared_ptr<PrimListWrapper> prim) = 0;
00105 
00107 
00110   virtual int sendPrimListAll(boost::shared_ptr<PrimListWrapper> prim) = 0;
00111 
00113 
00119   virtual int awaitResponse(unsigned int rod, int timeout) = 0;
00120 
00122 
00127   virtual int awaitResponseAll(int timeout) = 0;
00128 
00130 
00133   virtual boost::shared_ptr<SctPixelRod::RodOutList> getResponse(unsigned int rod) = 0;
00134 
00135   virtual void setMrsStream(MRSStream *stream) = 0;
00136 
00137   /***************** Messages ******************/
00138 
00140 
00147   virtual bool getRodMessage(unsigned int rod, char *buffer, unsigned long &length) = 0;
00148 
00149   /************** Misc read/writes *****************/
00150 
00152 
00155   virtual int mdspBlockRead(unsigned int rod, long dspStart, unsigned long *buffer, unsigned long numWords) = 0;
00156 
00158 
00161   virtual int slvBlockRead(unsigned int rod, long dspStart, unsigned long *buffer, unsigned long numWords, long slaveNumber) = 0;
00162 
00164 
00167   virtual int slvBlockWrite(unsigned int rod, long dspStart, unsigned long* buffer, unsigned long numWords, long dspNumber) = 0;
00168 
00170 
00173   virtual int mdspBlockWrite(unsigned int rod, long dspStart, unsigned long *buffer, unsigned long numWords) = 0;
00174 
00176 
00179   virtual unsigned long readRodStatusReg(unsigned int rod, long regNumber) = 0;
00180 
00181 
00183 
00186   virtual unsigned long readRodCommandReg(unsigned int rod, long regNumber) = 0;
00187 
00189 
00192   virtual unsigned long dspSingleRead(unsigned int rod, const unsigned long dspAddr, long dspNumber) = 0;
00193 
00195 
00198   virtual int dspSingleWrite(unsigned int rod, unsigned long dspAddr, unsigned long buffer, long dspNumber) = 0;
00199 
00201   virtual void status() = 0;
00202 
00204 
00210   enum PLControl {
00211     C_PL_STOP,
00212     C_PL_PAUSE,
00213     C_PL_RESUME,
00214     C_PL_CANCEL };
00215 
00217   virtual void primListControl(unsigned int rod, PLControl function) = 0;
00218 
00220   virtual void printBOCSetup(unsigned int rod) = 0;
00221 
00223   virtual std::vector<SctConfiguration::BOCChannelConfig> currentBOCSetup(unsigned int rod) = 0;
00224 
00226   virtual void printBOCRegisters(unsigned int rod) = 0;
00227 
00229   virtual SctConfiguration::BOCGlobalConfig currentBOCRegisters(unsigned int rod) = 0;
00230 
00232   virtual void saveBOCSetup(unsigned int rod, BankType bank) = 0;
00234   virtual void saveBOCRegisters(unsigned int rod, BankType bank) = 0;
00235 
00237   virtual void restoreBOCSetup(unsigned int rod, BankType bank) = 0;
00239   virtual void restoreBOCRegisters(unsigned int rod, BankType bank) = 0;
00240 
00242   virtual bool checkBOCLasersOn(unsigned int rod) = 0;
00243 
00245   virtual void enterBOCClockBy2Mode(unsigned int rod) = 0;
00246 
00248   virtual void leaveBOCClockBy2Mode(unsigned int rod) = 0;
00249 
00251   virtual std::vector<double> getBOCMonitorArray(unsigned int rod) = 0;
00252 
00254 
00257   virtual void modifyBOCParam(unsigned int type, unsigned int val, bool raw) = 0;
00258 
00260 
00263   virtual void modifyBOCParam(unsigned int rod, unsigned int channel, unsigned int type, unsigned int val, bool raw) = 0;
00264 
00266   virtual void lasersOff() = 0;
00267 
00268   /* ******************* TIM Functions ***************************/
00269 
00271 
00275   virtual void timSetFrequency(double trigFreq, double rstFreq) = 0;
00276 
00278   virtual void freeTriggers() = 0;
00279 
00281   virtual void stopTriggers() = 0;
00282 
00284   virtual void timL1A() = 0;
00285 
00287   virtual void timCalL1A(int delay) = 0;
00288 
00289   virtual void timECR() = 0;
00290 
00291   virtual void timBCR() = 0;
00292 
00293   virtual void timFER() = 0;
00294 
00296   virtual void sendTimBurst(int count) = 0;
00297 
00299   virtual void timVerbose() = 0;
00300 
00302   virtual void timRegLoad(int reg, UINT16 val) = 0;
00303 
00305   virtual UINT16 timRegRead(int reg) = 0;
00306 
00308   virtual bool slavePresent(int rod, int index) const = 0;
00309 
00311   virtual void slaveStarted(int rod, int slave) = 0;
00312 
00314   virtual bool RODPresent(int rod) const = 0;
00315 
00316   virtual long getRodSlot(int rod) const = 0;
00317 
00319   virtual int getRodRevision(int rod) const = 0;
00320 
00322   virtual void stopPolling() = 0;
00323 
00325   virtual void resumePolling() = 0;
00326 };
00327 
00328 }  // End of namespace SctApi
00329 #endif

Generated on Fri Jan 14 12:47:02 2005 for SCT DAQ/DCS Software - C++ by doxygen 1.3.5