00001 #ifndef SCTAPI_CRATE
00002 #define SCTAPI_CRATE
00003
00004
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
00051 Crate(const Crate&);
00052 Crate &operator=(const Crate&);
00053 public:
00055 Crate() {};
00056
00058
00061 virtual ~Crate() {};
00062
00063
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
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
00136
00138
00145 virtual bool getRodMessage(unsigned int rod, char *buffer, unsigned long &length) = 0;
00146
00147
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
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 }
00324 #endif