PrimBuilder.h

00001 #include <boost/shared_ptr.hpp>
00002 
00003 #include "primListWrapper.h"
00004 
00005 // This defines ABCDModule (a typedef)
00006 #include <Sct/AbcdModule.h>
00007 
00008 // Any way to get rid of this? (For CmdList)
00009 #include "serialStreams.h"
00010 
00011 namespace SctApi {
00012 namespace Utility {
00013   class MemoryBlock;
00014 }
00015 
00016 class PrimBuilder {
00017  private:
00018   // These are really not allowed!
00019   PrimBuilder(const PrimBuilder&);
00020   PrimBuilder& operator=(const PrimBuilder&);
00021 
00022  protected:
00023   // But this one is internally (helps with gcc warning for factories)
00024   PrimBuilder();
00025 
00026  public:
00028 
00032   void slavePrimList(boost::shared_ptr<PrimListWrapper> primList, boost::shared_ptr<PrimListWrapper> prim, 
00033                           unsigned int slaveNumber, bool await, bool response);
00034 
00035   void startSlaveList(boost::shared_ptr<PrimListWrapper> primList, unsigned int slaveNumber, bool await, bool response);
00036 
00037   void echo(boost::shared_ptr<PrimListWrapper> prim, Utility::MemoryBlock block);
00038 
00039   void flashLed(boost::shared_ptr<PrimListWrapper> prim, int period, int flashes);
00040 
00041   void startSlave(boost::shared_ptr<PrimListWrapper> prim, int s);
00042 
00043   void readFifo(boost::shared_ptr<PrimListWrapper> prim, int id, int bank, int elems);
00044 
00045   void pollRegister(boost::shared_ptr<PrimListWrapper> prim, int r, int off, int width, int val, int timeout);
00046 
00047   void taskOp(boost::shared_ptr<PrimListWrapper> prim, int typ, int op, int data);
00048 
00049   void readRegister(boost::shared_ptr<PrimListWrapper> prim, int r);
00050 
00051   void writeRegister(boost::shared_ptr<PrimListWrapper> prim, int r, int off, int wid, int value);
00052 
00053   void buildStream(boost::shared_ptr<PrimListWrapper> primList, int port);
00054 
00055   void sendStream(boost::shared_ptr<PrimListWrapper> primList, int cmdBuff, bool capture = 0);
00056 
00057   void startEvTrap(boost::shared_ptr<PrimListWrapper> primList);
00058 
00059   void stopEvTrap(boost::shared_ptr<PrimListWrapper> primList);
00060 
00061   void setMemory(boost::shared_ptr<PrimListWrapper> primList, unsigned long address, unsigned long words, long value);
00062 
00063   void readSlaveMemory(boost::shared_ptr<PrimListWrapper> primList, unsigned long slave, unsigned long address, unsigned long words);
00064 
00065   void writeSlaveMemory(boost::shared_ptr<PrimListWrapper> primList, unsigned long slave, unsigned long address, unsigned long words, unsigned long *data);
00066 
00067   void readModuleData(boost::shared_ptr<PrimListWrapper> primList, int bank, int channel);
00068 
00069   void writeModuleData(boost::shared_ptr<PrimListWrapper> primList, const ABCDModule* module, int cfgset_bits, int channel, UINT32 moduleParts);
00070 
00071   void copyModuleData(boost::shared_ptr<PrimListWrapper> primList, int from_bank, UINT32 to_banks_bitset, int channel);
00072 
00073   void sendConfig(boost::shared_ptr<PrimListWrapper>, 
00074                   int port, int capture, int module0, int module1, int chip, int setLinks, int restore, 
00075                   int bank, int group, int data, int active, int enableData);
00076 
00077   void writeModuleVariable(boost::shared_ptr<PrimListWrapper>, UINT32 dsp_bank_set, int group, int module, int chip, int type, float val);
00078 
00079   void rodMode(boost::shared_ptr<PrimListWrapper> rodModeList, 
00080                int mode, int flag, int fifoSetup, int nBits, int delay, int message);
00081 
00083   void moduleMask(boost::shared_ptr<PrimListWrapper> maskList, 
00084                   int module, int port, int useStructSet, int passOn, int slvs,
00085                   int cmdLine, int dataLine0, int dataLine1, // 2 and 3 only for pixels
00086                   int cfg, int modMask0, int modMask1, int maskType, int storage, int maskSet);
00087 
00092   void masksFromConfig(boost::shared_ptr<PrimListWrapper> maskList, int port);
00093 
00098   void masksToSlaves(boost::shared_ptr<PrimListWrapper> maskList, int slvBits);
00099 
00105   void masksConfig(boost::shared_ptr<PrimListWrapper> maskList, int moduleMask[2], int port, int maskType, int command, int maskSet);
00106 
00111   void masksUpdate(boost::shared_ptr<PrimListWrapper> maskList, int moduleMask[2], int port, int maskType, int maskSet);
00112 
00117   void masksConfigModule(boost::shared_ptr<PrimListWrapper> maskList, int module, int cmd, int rx0, int rx1);
00118 
00119   void bocHistogram(boost::shared_ptr<PrimListWrapper> primList, int delay, int width, int numEvents, 
00120             struct ::CmdList trigger, int port);
00121 
00122   void setTrigger(boost::shared_ptr<PrimListWrapper> primList, int currentBin, int histogramSet);
00123 
00124   static PrimBuilder& instance();
00125   static PrimBuilder *singleton;
00126 };
00127 }

Generated on Mon Feb 6 14:01:25 2006 for SCT DAQ/DCS Software - C++ by  doxygen 1.4.6