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 #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
00053 Crate(const Crate&);
00054 Crate &operator=(const Crate&);
00055 public:
00057 Crate() {};
00058
00060
00063 virtual ~Crate() {};
00064
00065
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
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
00138
00140
00147 virtual bool getRodMessage(unsigned int rod, char *buffer, unsigned long &length) = 0;
00148
00149
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
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 }
00329 #endif