Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | 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 namespace SctConfiguration {
00012 
00016 struct SlaveConfig {
00017   std::string ipramFile;
00018   std::string idramFile;
00019   std::string extFile;
00020 };
00021 
00025 struct RodConfig {
00026 /*   /// Is there a BOC? (Shouldn't be necessary) */
00027 /*   bool bocPresent; */
00029   unsigned long baseAddress;
00030 /*   /// VME map size */
00031 /*   unsigned long mapSize; */
00033   unsigned long resetLevel;
00035   SlaveConfig slaves[4];
00036 };
00037 
00041 struct TimConfig {
00043   unsigned long baseAddress;
00044 /*   /// VME map size */
00045 /*   unsigned long mapSize; */
00047   float trigFrequency;
00049   float resetFrequency;
00050 };
00051 
00059 struct BOCChannelConfig {
00061   int current;
00063   int delay;
00065   int markSpace;
00067   int threshold0;
00069   int delay0;
00071   int threshold1;
00073   int delay1;
00074 };
00075 
00076 struct BOCGlobalConfig {
00082   int validMask;
00083 
00084   int clockControl;
00085   int rxDataMode;
00086   int rxDacClear;
00087   int txDacClear;
00088   int vernierFinePhase;
00089   int vernierClockPhase0;
00090   int vernierClockPhase1;
00091   int bpmClockPhase;
00092   int bregClockPhase;
00093 };
00094 
00095 enum MURType {BARREL, ENDCAP, UNMAPPED, UNKNOWN};
00096 
00100 class ConfigurationException : public std::exception {
00101   std::string desc;
00102  public:
00104   ConfigurationException(const std::string &str) throw() : desc(str) {}
00105 
00106   ~ConfigurationException() throw() {}
00107 
00109   virtual const char* what () const throw() { return desc.c_str(); }
00110 };
00111 
00139 class Configuration {
00140 public:
00144   virtual ~Configuration() {};
00145 
00146   /************* Get physical configuration ****************/
00147 
00152   virtual std::list<unsigned int> listPartitions() = 0;
00153 
00158   virtual std::list<unsigned int> listCratesInPartition(unsigned int partition) = 0;
00159 
00163   virtual bool isDummyCrate(unsigned int partition, unsigned int crate) = 0;
00164 
00169   virtual std::list<unsigned int> listRodsInCrate(unsigned int partition, unsigned int crate) = 0;
00170 
00177   virtual std::list<unsigned int> listMURSInRod(unsigned int partition, unsigned int crate, unsigned int rod) = 0;
00178 
00185   virtual std::list<std::string> listModulesInMUR(unsigned int partition, unsigned int MUR) = 0;
00186 
00193   virtual std::list<std::string> listRModulesInMUR(unsigned int partition, unsigned int MUR) = 0;
00194 
00200   virtual std::list<std::string> listAllModules() = 0;
00201 
00205   virtual std::list<std::string> listUnusedModules() = 0;
00206 
00207   /************** Get configurations *****************/
00208 
00214   virtual ABCDModule getModuleConfig(const std::string module) = 0;
00215 
00219   virtual short getModuleGroup(const std::string module) = 0;
00220 
00224   virtual void setModuleGroup(const std::string module, short group) = 0;
00225 
00231   virtual RodConfig getRodConfig(unsigned int partition, unsigned int crate, unsigned int rod) = 0;
00232 
00238   virtual SlaveConfig getDefaultSlaveConfig(char type) = 0;
00239 
00247   virtual BOCChannelConfig getBOCConfig(unsigned int partition, unsigned int crate, unsigned int rod, 
00248                                         unsigned int channel) = 0;
00249 
00253   virtual BOCGlobalConfig getBOCGlobalConfig(unsigned int partition, unsigned int crate, unsigned int rod) = 0;
00254 
00260   virtual char *getFibreMappings(unsigned int partition, unsigned int crate, unsigned int rod) = 0;
00261 
00267   virtual TimConfig getTimConfig(unsigned int partition, unsigned int crate) = 0;
00268 
00274   virtual void setFibreMapping(unsigned int partition, unsigned int crate, unsigned int rod, 
00275                                unsigned int channel, unsigned int tx, unsigned int rx0, unsigned int rx1) = 0;
00276 
00280   virtual void printModuleConfig(const ABCDModule &conf) = 0;
00281 
00282   virtual MURType getMURType(unsigned int MUR) = 0;
00283 
00287   virtual unsigned int getFreeMurId() = 0;
00288 
00289   /************** Change indexing schemes ****************/
00290 
00297   virtual void translateToROD(unsigned int MUR, unsigned int module,
00298                               unsigned int &partition, unsigned int &crate, 
00299                               unsigned int &rod, unsigned int &channel) = 0;
00300  
00310   virtual void translateToRROD(unsigned int MUR, unsigned int module,
00311                                unsigned int &partition, unsigned int &crate, 
00312                                unsigned int &rod, unsigned int &channel) = 0;
00313  
00320   virtual void translateToSN(unsigned int MUR, unsigned int module,
00321                              std::string &sn) = 0;
00322 
00329   virtual void translateToRMUR(unsigned int MUR, unsigned int module,
00330                                unsigned int &RMUR, unsigned int &rmodule) = 0;
00331 
00338   virtual void translateToBarrel(unsigned int MUR, unsigned int module,
00339                                  unsigned int &barrel, unsigned int &row, int &number) = 0;
00340 
00347   virtual void translateToEndcap(unsigned int MUR, unsigned int module,
00348                                  int &disk, unsigned int &ring, unsigned int &number) = 0;
00349 
00356   virtual void translateToPowerSupply(unsigned int MUR, unsigned int module,
00357                                       unsigned int &partition, 
00358                                       unsigned int &crate, unsigned int &channel) = 0;
00359 
00366   virtual void translateFromROD(unsigned int partition, unsigned int crate, 
00367                                 unsigned int rod, unsigned int channel,
00368                                 unsigned int &MUR, unsigned int &module) = 0;
00369 
00379   virtual void translateFromRROD(unsigned int partition, unsigned int crate,
00380                                  unsigned int rod, unsigned int channel,
00381                                  unsigned int &MUR, unsigned int &module) = 0;
00382 
00389   virtual void translateFromSN(const std::string sn,
00390                                unsigned int &MUR, unsigned int &module) = 0;
00391 
00398   virtual void translateFromRMUR(unsigned int RMUR, unsigned int rmodule,
00399                                  unsigned int &MUR, unsigned int &module) = 0;
00400 
00407   virtual void translateFromBarrel(unsigned int barrel, unsigned int row, int number,
00408                                    unsigned int &MUR, unsigned int &module) = 0;
00409 
00416   virtual void translateFromEndcap(int disk, unsigned int ring, unsigned int number,
00417                                    unsigned int &MUR, unsigned int &module) = 0;
00418 
00425   virtual void translateFromPowerSupply(unsigned int partition, 
00426                                         unsigned int crate, unsigned int channel, 
00427                                         unsigned int &MUR, unsigned int &module) = 0;
00428 
00429 
00430   /************** Change configuration ******************/
00431 
00437   virtual void configureModuleFromStructure(const std::string module, const ABCDModule conf) = 0;
00438 
00444   virtual void configureModuleFromFile(const std::string filename) = 0;
00445 
00454   virtual void configureROD(unsigned int partition, unsigned int crate, unsigned int rod, RodConfig conf) = 0;
00455 
00464   virtual void configureTIM(unsigned int partition, unsigned int crate, TimConfig conf) = 0;
00465 
00469   virtual void configureBOC(unsigned int partition, unsigned int crate, unsigned int rod, const BOCGlobalConfig &conf) = 0;
00470 
00475   virtual void clearAll() = 0;
00476 
00490   virtual void namePartition(unsigned int partition, const std::string name) = 0;
00491 
00495 /*virtual    void setBOCConfig(int partition, int crate, int rod, int channel, const BOCChannelConfig &conf) = 0; */
00496   
00503   virtual void configureBOCChannel(unsigned int MUR, unsigned int position, const BOCChannelConfig &conf) = 0;
00504 
00511   virtual void mapModuleMUR(unsigned int MUR, unsigned int order, unsigned int RMUR, unsigned int rorder, std::string number) = 0;
00512 
00519   virtual void unmapModuleMUR(unsigned int MUR, unsigned int order) = 0;
00520  
00524   virtual void mapRODMUR(unsigned int partition, unsigned int crate, unsigned int rod, unsigned int order, unsigned int MUR) = 0;
00525 
00529   virtual void unmapRODMUR(unsigned int MUR) = 0;
00530 
00536   virtual void mapBarrelMUR(unsigned int MUR, unsigned int barrel, unsigned int row, int position) = 0;
00537 
00541   virtual void unmapBarrelMUR(unsigned int MUR) = 0;
00542 
00546   virtual void getMapMURROD(unsigned int MUR, unsigned int &partition, unsigned int &crate, unsigned int &rod, unsigned int &order) = 0;
00547 
00554   virtual void getMapRODMUR(unsigned int partition, unsigned int crate, unsigned int rod, unsigned int order, unsigned int &number) = 0;
00555 
00556   /*
00557     Get mapping of MUR to physical structure
00558   */
00559   virtual void getMapMURPhysical(unsigned int MUR, MURType &type, int &plane, int &section, int &position) = 0;
00560 
00567   virtual void swapMURNames(unsigned int MUR1, unsigned int MUR2) = 0;
00568 
00569 /* #warning "Need to think more about endcap mappings" */
00570 
00576   virtual void mapEndcapMUR(unsigned int MUR, int disk, unsigned int quadrant, unsigned int position) = 0;
00577 
00581   virtual void unmapEndcapMUR(unsigned int MUR) = 0;
00582 
00586   virtual void mapPowerChannel(unsigned int MUR, unsigned int number, unsigned int partition, unsigned int crate, unsigned int channel) = 0;
00587 
00591   virtual void unmapPowerChannel(unsigned int MUR, unsigned int number) = 0;
00592 
00596   virtual void modifyDefaultPowerParam(std::string state, std::string name, std::string type, float value) = 0;
00597 
00601   virtual void modifyHVCardParam(unsigned int crate, unsigned int card,
00602                                  std::string name, std::string type, float value) = 0;
00603 
00607   virtual void modifyLVCardParam(unsigned int crate, unsigned int card,
00608                                  std::string name, std::string type, float value) = 0;
00609 
00613   virtual void modifyPowerParam(unsigned int MUR, unsigned int number,
00614                                 std::string state, std::string name, std::string type, float value) = 0;
00615 
00619   virtual void modifyPowerParamCC(unsigned int crate, unsigned int channel,
00620                                   std::string state, std::string name, std::string type, float value) = 0;
00621 
00625   virtual float getDefaultPowerParam(std::string state, std::string name, std::string type) = 0;
00626 
00630   virtual float getHVCardParam(unsigned int crate, unsigned int card,
00631                               std::string name, std::string type) = 0;
00632 
00636   virtual float getLVCardParam(unsigned int crate, unsigned int card,
00637                               std::string name, std::string type) = 0;
00638 
00642   virtual float getPowerParam(unsigned int MUR, unsigned int number,
00643                               std::string state, std::string name, std::string type) = 0;
00644 
00648   virtual float getPowerParamCC(unsigned int crate, unsigned int channel,
00649                                 std::string state, std::string name, std::string type) = 0;
00650 
00654   virtual std::list<std::string> listDefaultPowerParams() = 0;
00655 
00659   virtual float getCratePowerParam(unsigned int crate, std::string name) = 0;
00660 
00664   virtual std::list<std::string> listDCSChannelParams() = 0;
00665 
00669   virtual std::list<std::string> listDCSCardParams() = 0;
00670 
00674   virtual std::list<std::string> listDCSCrateParams() = 0;
00675 
00679   virtual void loadConfiguration(const std::string &filename) = 0;
00680 
00681   /************** Save configuration *********************/
00682 
00692   virtual void saveConfiguration(const std::string filename = "") = 0;
00693 
00699   virtual void saveModuleConfiguration(const std::string modsn, const std::string filename) = 0;
00700 
00704   virtual std::string getModuleConfigurationString(const std::string modsn, const ABCDModule config) = 0;
00705 
00709   virtual void writePowerSupplyConfiguration(std::string filename) = 0;
00710 };
00711 
00712 }
00713 
00714 #endif
00715 

Generated on Thu Jul 15 09:50:44 2004 for SCT DAQ/DCS Software - C++ by doxygen 1.3.5