Main Page   Modules   Namespace List   Class Hierarchy   Data Structures   File List   Namespace Members   Data Fields   Globals   Related Pages  

configuration.h

Go to the documentation of this file.
00001 #ifndef SCTAPI_CONFIGURATION
00002 #define SCTAPI_CONFIGURATION
00003 
00004 #include <list>
00005 #include <string>
00006 #include <stdexcept>
00007 
00008 // For ABCDModule
00009 #include <CommonWithDsp/sctStructure.h>
00010 
00011 /*  struct xmlDoc; */
00012 /*  struct xmlXPathContext; */
00013 
00014 /*  typedef struct xmlDoc *xmlDocPtr; */
00015 /*  typedef struct xmlXPathContext *xmlXPathContextPtr; */
00016 
00017 namespace SctConfiguration {
00018 
00022 struct SlaveConfig {
00023   std::string emifFile;
00024   std::string ipramFile;
00025   std::string idramFile;
00026   std::string extFile;
00027 };
00028 
00032 struct RodConfig {
00033 /*   
00034 /*   bool bocPresent; */
00036   unsigned long baseAddress;
00038   unsigned long mapSize;
00040   unsigned long resetLevel;
00042   long numSlaves;
00044   SlaveConfig slaves[4];
00045 };
00046 
00050 struct TimConfig {
00052   unsigned long baseAddress;
00054   unsigned long mapSize;
00055 };
00056 
00064 struct BOCChannelConfig {
00066   int current;
00068   int delay;
00070   int markSpace;
00072   int threshold0;
00074   int delay0;
00076   int threshold1;
00078   int delay1;
00079 
00081   int txFibre;
00083   int rxFibre0;
00085   int rxFibre1;
00086 };
00087 
00088 struct BOCGlobalConfig {
00094   int validMask;
00095 
00096   int clockControl;
00097   int rxDataMode;
00098   int rxDacClear;
00099   int txDacClear;
00100   int vernierFinePhase;
00101   int vernierClockPhase0;
00102   int vernierClockPhase1;
00103   int bpmClockPhase;
00104   int bregClockPhase;
00105 };
00106 
00107 enum MURType {BARREL, ENDCAP, UNMAPPED, UNKNOWN};
00108 
00112 class ConfigurationException : public std::exception {
00113   std::string desc;
00114  public:
00116   ConfigurationException(const std::string &str) throw() : desc(str) {}
00117 
00118   ~ConfigurationException() throw() {}
00119 
00121   virtual const char* what () const throw() { return desc.c_str(); }
00122 };
00123 
00151 class Configuration {
00152 public:
00156   virtual ~Configuration() {};
00157 
00158   /************* Get physical configuration ****************/
00159 
00164   virtual std::list<unsigned int> listPartitions() = 0;
00165 
00170   virtual std::list<unsigned int> listCratesInPartition(unsigned int partition) = 0;
00171 
00175   virtual bool isDummyCrate(unsigned int partition, unsigned int crate) = 0;
00176 
00181   virtual std::list<unsigned int> listRodsInCrate(unsigned int partition, unsigned int crate) = 0;
00182 
00189   virtual std::list<unsigned int> listMURSInRod(unsigned int partition, unsigned int crate, unsigned int rod) = 0;
00190 
00197   virtual std::list<std::string> listModulesInMUR(unsigned int partition, unsigned int MUR) = 0;
00198 
00205   virtual std::list<std::string> listRModulesInMUR(unsigned int partition, unsigned int MUR) = 0;
00206 
00212   virtual std::list<std::string> listAllModules() = 0;
00213 
00217   virtual std::list<std::string> listUnusedModules() = 0;
00218 
00219   /************** Get configurations *****************/
00220 
00226   virtual ABCDModule getModuleConfig(const std::string module) = 0;
00227 
00233   virtual RodConfig getRodConfig(unsigned int partition, unsigned int crate, unsigned int rod) = 0;
00234 
00240   virtual BOCChannelConfig getBOCConfig(unsigned int partition, unsigned int crate, unsigned int rod, 
00241                                         unsigned int channel) = 0;
00242 
00246   virtual BOCGlobalConfig getBOCGlobalConfig(unsigned int partition, unsigned int crate, unsigned int rod) = 0;
00247 
00253   virtual char *getFibreMappings(unsigned int partition, unsigned int crate, unsigned int rod) = 0;
00254 
00260   virtual TimConfig getTimConfig(unsigned int partition, unsigned int crate) = 0;
00261 
00267   virtual void setFibreMapping(unsigned int partition, unsigned int crate, unsigned int rod, 
00268                                unsigned int channel, unsigned int tx, unsigned int rx0, unsigned int rx1) = 0;
00269 
00273   virtual void printModuleConfig(const ABCDModule &conf) = 0;
00274 
00275   virtual MURType getMURType(unsigned int MUR) = 0;
00276 
00277   /************** Change indexing schemes ****************/
00278 
00282   virtual void translateToROD(unsigned int MUR, unsigned int module,
00283                               unsigned int &partition, unsigned int &crate, 
00284                               unsigned int &rod, unsigned int &channel) = 0;
00285  
00292   virtual void translateToRROD(unsigned int MUR, unsigned int module,
00293                                unsigned int &partition, unsigned int &crate, 
00294                                unsigned int &rod, unsigned int &channel) = 0;
00295  
00299   virtual void translateToSN(unsigned int MUR, unsigned int module,
00300                              std::string &sn) = 0;
00301 
00305   virtual void translateToBarrel(unsigned int MUR, unsigned int module,
00306                                  unsigned int &barrel, unsigned int &row, int &number) = 0;
00307 
00311   virtual void translateToEndcap(unsigned int MUR, unsigned int module,
00312                                  unsigned int &disk, unsigned int &ring, unsigned int &number) = 0;
00313 
00317   virtual void translateToPowerSupply(unsigned int MUR, unsigned int module,
00318                                       unsigned int &partition, 
00319                                       unsigned int &crate, unsigned int &channel) = 0;
00320 
00324   virtual void translateFromROD(unsigned int partition, unsigned int crate, 
00325                                 unsigned int rod, unsigned int channel,
00326                                 unsigned int &MUR, unsigned int &module) = 0;
00327 
00334   virtual void translateFromRROD(unsigned int partition, unsigned int crate,
00335                                  unsigned int rod, unsigned int channel,
00336                                  unsigned int &MUR, unsigned int &module) = 0;
00337 
00341   virtual void translateFromSN(const std::string sn,
00342                                unsigned int &MUR, unsigned int &module) = 0;
00343 
00347   virtual void translateFromBarrel(unsigned int barrel, unsigned int row, int number,
00348                                    unsigned int &MUR, unsigned int &module) = 0;
00349 
00353   virtual void translateFromEndcap(unsigned int disk, unsigned int ring, unsigned int number,
00354                                    unsigned int &MUR, unsigned int &module) = 0;
00355 
00359   virtual void translateFromPowerSupply(unsigned int partition, 
00360                                         unsigned int crate, unsigned int channel, 
00361                                         unsigned int &MUR, unsigned int &module) = 0;
00362 
00363 
00364   /************** Change configuration ******************/
00365 
00371   virtual void configureModuleFromStructure(const std::string module, const ABCDModule conf) = 0;
00372 
00378   virtual void configureModuleFromFile(const std::string filename) = 0;
00379 
00388   virtual void configureROD(unsigned int partition, unsigned int crate, unsigned int rod, RodConfig conf) = 0;
00389 
00398   virtual void configureTIM(unsigned int partition, unsigned int crate, TimConfig conf) = 0;
00399 
00403   virtual void configureBOC(unsigned int partition, unsigned int crate, unsigned int rod, const BOCGlobalConfig &conf) = 0;
00404 
00409   virtual void clearAll() = 0;
00410 
00424   virtual void namePartition(int partition, const std::string name) = 0;
00425 
00429 /*virtual    void setBOCConfig(int partition, int crate, int rod, int channel, const BOCChannelConfig &conf) = 0; */
00430   
00434   virtual void configureBOCChannel(int MUR, int position, const BOCChannelConfig &conf) = 0;
00435 
00439   virtual void mapModuleMUR(int MUR, int order, int RMUR, int rorder, std::string number) = 0;
00440 
00444   virtual void mapRODMUR(int partition, int crate, int rod, int order, int number) = 0;
00445 
00449   virtual void mapBarrelMUR(int MUR, int barrel, int row, int position) = 0;
00450 
00457   virtual void swapMURNames(int MUR1, int MUR2) = 0;
00458 
00459 /* #warning "Need to think more about endcap mappings" */
00460 
00464   virtual void mapEndcapMUR(int MUR, int disk, int quadrant, int position) = 0;
00465 
00469   virtual void mapPowerChannel(int MUR, int number, unsigned int partition, unsigned int crate, unsigned int channel) = 0;
00470 
00474   virtual void modifyPowerParam(int MUR, int number, std::string name, float value) = 0;
00475 
00479   virtual void modifyDefaultPowerParam(std::string name, float value) = 0;
00480 
00484   virtual float getPowerParam(int MUR, int number, std::string name) = 0;
00485 
00489   virtual void loadConfiguration(const std::string &filename) = 0;
00490 
00491   /************** Save configuration *********************/
00492 
00502   virtual void saveConfiguration(const std::string filename = "") = 0;
00503 
00509   virtual void saveModuleConfiguration(const std::string modsn, const std::string filename) = 0;
00510 
00514   virtual std::string getModuleConfigurationString(const std::string modsn, const ABCDModule config) = 0;
00515 
00519   virtual void writePowerSupplyConfiguration(std::string filename) = 0;
00520  protected:
00526 /*   virtual void createPartition(int partition) = 0; */
00527 
00531 /*   virtual void createCrate(int partition, int crate) = 0; */
00532 
00536 /*   virtual void createROD(int partition, int crate, int rod) = 0; */
00537 
00541 /*   virtual void createMUR(int partition, int crate, int rod, int order, int number) = 0; */
00542 
00546 /*virtual    void createModule(int MUR, int order, int RMUR, int rorder, string number, const ABCDModule &mConf) = 0; */
00547 
00551 /*   virtual void createBOCConfig(int MUR, int order, const BOCChannelConfig &bConf) = 0; */
00552 
00553 };
00554 
00555 }
00556 
00557 #endif
00558 

Generated on Mon Dec 15 19:35:59 2003 for SCT DAQ/DCS Software by doxygen1.3-rc3