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

configuration.h

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   long numSlaves;
00042   SlaveConfig slaves[4];
00043 };
00044 
00048 struct TimConfig {
00050   unsigned long baseAddress;
00052   unsigned long mapSize;
00053 };
00054 
00062 struct BOCChannelConfig {
00064   int current;
00066   int delay;
00068   int markSpace;
00070   int threshold0;
00072   int delay0;
00074   int threshold1;
00076   int delay1;
00077 
00079   int txFibre;
00081   int rxFibre0;
00083   int rxFibre1;
00084 };
00085 
00086 enum MURType {BARREL, ENDCAP, UNMAPPED, UNKNOWN};
00087 
00091 class ConfigurationException : public std::exception {
00092   std::string desc;
00093  public:
00095   ConfigurationException(const std::string &str) throw() : desc(str) {}
00096 
00097   ~ConfigurationException() throw() {}
00098 
00100   virtual const char* what () const throw() { return desc.c_str(); }
00101 };
00102 
00130 class Configuration {
00131 public:
00135   virtual ~Configuration() {};
00136 
00137   /************* Get physical configuration ****************/
00138 
00143   virtual std::list<unsigned int> listPartitions() = 0;
00144 
00149   virtual std::list<unsigned int> listCratesInPartition(unsigned int partition) = 0;
00150 
00155   virtual std::list<unsigned int> listRodsInCrate(unsigned int partition, unsigned int crate) = 0;
00156 
00163   virtual std::list<unsigned int> listMURSInRod(unsigned int partition, unsigned int crate, unsigned int rod) = 0;
00164 
00171   virtual std::list<std::string> listModulesInMUR(unsigned int partition, unsigned int MUR) = 0;
00172 
00179   virtual std::list<std::string> listRModulesInMUR(unsigned int partition, unsigned int MUR) = 0;
00180 
00186   virtual std::list<std::string> listAllModules() = 0;
00187 
00191   virtual std::list<std::string> listUnusedModules() = 0;
00192 
00193   /************** Get configurations *****************/
00194 
00200   virtual ABCDModule getModuleConfig(const std::string module) = 0;
00201 
00207   virtual RodConfig getRodConfig(unsigned int partition, unsigned int crate, unsigned int rod) = 0;
00208 
00214   virtual BOCChannelConfig getBOCConfig(unsigned int partition, unsigned int crate, unsigned int rod, 
00215                                         unsigned int channel) = 0;
00216 
00222   virtual char *getFibreMappings(unsigned int partition, unsigned int crate, unsigned int rod) = 0;
00223 
00229   virtual TimConfig getTimConfig(unsigned int partition, unsigned int crate) = 0;
00230 
00236   virtual void setFibreMapping(unsigned int partition, unsigned int crate, unsigned int rod, 
00237                                unsigned int channel, unsigned int tx, unsigned int rx0, unsigned int rx1) = 0;
00238 
00242   virtual void printModuleConfig(const ABCDModule &conf) = 0;
00243 
00244   virtual MURType getMURType(unsigned int MUR) = 0;
00245 
00246   /************** Change indexing schemes ****************/
00247 
00251   virtual void translateToROD(unsigned int MUR, unsigned int module,
00252                               unsigned int &partition, unsigned int &crate, 
00253                               unsigned int &rod, unsigned int &channel) = 0;
00254  
00261   virtual void translateToRROD(unsigned int MUR, unsigned int module,
00262                                unsigned int &partition, unsigned int &crate, 
00263                                unsigned int &rod, unsigned int &channel) = 0;
00264  
00268   virtual void translateToSN(unsigned int MUR, unsigned int module,
00269                              std::string &sn) = 0;
00270 
00274   virtual void translateToBarrel(unsigned int MUR, unsigned int module,
00275                                  unsigned int &barrel, unsigned int &row, int &number) = 0;
00276 
00280   virtual void translateToEndcap(unsigned int MUR, unsigned int module,
00281                                  unsigned int &disk, unsigned int &ring, unsigned int &number) = 0;
00282 
00286   virtual void translateToPowerSupply(unsigned int MUR, unsigned int module,
00287                                       unsigned int &partition, 
00288                                       unsigned int &crate, unsigned int &channel) = 0;
00289 
00293   virtual void translateFromROD(unsigned int partition, unsigned int crate, 
00294                                 unsigned int rod, unsigned int channel,
00295                                 unsigned int &MUR, unsigned int &module) = 0;
00296 
00303   virtual void translateFromRROD(unsigned int partition, unsigned int crate,
00304                                  unsigned int rod, unsigned int channel,
00305                                  unsigned int &MUR, unsigned int &module) = 0;
00306 
00310   virtual void translateFromSN(const std::string sn,
00311                                unsigned int &MUR, unsigned int &module) = 0;
00312 
00316   virtual void translateFromBarrel(unsigned int barrel, unsigned int row, int number,
00317                                    unsigned int &MUR, unsigned int &module) = 0;
00318 
00322   virtual void translateFromEndcap(unsigned int disk, unsigned int ring, unsigned int number,
00323                                    unsigned int &MUR, unsigned int &module) = 0;
00324 
00328   virtual void translateFromPowerSupply(unsigned int partition, 
00329                                         unsigned int crate, unsigned int channel, 
00330                                         unsigned int &MUR, unsigned int &module) = 0;
00331 
00332 
00333   /************** Change configuration ******************/
00334 
00340   virtual void configureModuleFromStructure(const std::string module, const ABCDModule conf) = 0;
00341 
00347   virtual void configureModuleFromFile(const std::string filename) = 0;
00348 
00357   virtual void configureROD(unsigned int partition, unsigned int crate, unsigned int rod, RodConfig conf) = 0;
00358 
00367   virtual void configureTIM(unsigned int partition, unsigned int crate, TimConfig conf) = 0;
00368 
00373   virtual void clearAll() = 0;
00374 
00388   virtual void namePartition(int partition, const std::string name) = 0;
00389 
00393 /*virtual    void setBOCConfig(int partition, int crate, int rod, int channel, const BOCChannelConfig &conf) = 0; */
00394   
00398   virtual void configureBOCChannel(int MUR, int position, const BOCChannelConfig &conf) = 0;
00399 
00403   virtual void mapModuleMUR(int MUR, int order, int RMUR, int rorder, std::string number) = 0;
00404 
00408   virtual void mapRODMUR(int partition, int crate, int rod, int order, int number) = 0;
00409 
00413   virtual void mapBarrelMUR(int MUR, int barrel, int row, int position) = 0;
00414 
00421   virtual void swapMURNames(int MUR1, int MUR2) = 0;
00422 
00423 /* #warning "Need to think more about endcap mappings" */
00424 
00428   virtual void mapEndcapMUR(int MUR, int disk, int quadrant, int position) = 0;
00429 
00433   virtual void mapPowerChannel(int MUR, int number, unsigned int partition, unsigned int crate, unsigned int channel) = 0;
00434 
00438   virtual void modifyPowerParam(int MUR, int number, std::string name, float value) = 0;
00439 
00443   virtual void modifyDefaultPowerParam(std::string name, float value) = 0;
00444 
00448   virtual float getPowerParam(int MUR, int number, std::string name) = 0;
00449 
00453   virtual void loadConfiguration(const std::string &filename) = 0;
00454 
00455   /************** Save configuration *********************/
00456 
00466   virtual void saveConfiguration(const std::string filename = "") = 0;
00467 
00473   virtual void saveModuleConfiguration(const std::string modsn, const std::string filename) = 0;
00474 
00478   virtual std::string getModuleConfigurationString(const std::string modsn, const ABCDModule config) = 0;
00479 
00483   virtual void writePowerSupplyConfiguration(std::string filename) = 0;
00484  protected:
00490 /*   virtual void createPartition(int partition) = 0; */
00491 
00495 /*   virtual void createCrate(int partition, int crate) = 0; */
00496 
00500 /*   virtual void createROD(int partition, int crate, int rod) = 0; */
00501 
00505 /*   virtual void createMUR(int partition, int crate, int rod, int order, int number) = 0; */
00506 
00510 /*virtual    void createModule(int MUR, int order, int RMUR, int rorder, string number, const ABCDModule &mConf) = 0; */
00511 
00515 /*   virtual void createBOCConfig(int MUR, int order, const BOCChannelConfig &bConf) = 0; */
00516 
00517 };
00518 
00519 }
00520 
00521 #endif
00522 

Generated on Tue Dec 9 10:07:34 2003 for SCT DAQ/DCS Software by doxygen1.3-rc3