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 
00229   virtual unsigned int getModuleErrorMask(unsigned int partition, unsigned int crate, unsigned int rod,
00230                                           unsigned int channel, unsigned int link) = 0;
00231 
00235   virtual void setModuleErrorMask(unsigned int partition, unsigned int crate, unsigned int rod,
00236                                   unsigned int channel, unsigned int link, unsigned int mask) = 0;
00237 
00241   virtual void setDefaultModuleErrorMask(unsigned int mask) = 0;
00242 
00248   virtual RodConfig getRodConfig(unsigned int partition, unsigned int crate, unsigned int rod) = 0;
00249 
00255   virtual SlaveConfig getDefaultSlaveConfig(char type) = 0;
00256 
00264   virtual BOCChannelConfig getBOCConfig(unsigned int partition, unsigned int crate, unsigned int rod, 
00265                                         unsigned int channel) = 0;
00266 
00270   virtual BOCGlobalConfig getBOCGlobalConfig(unsigned int partition, unsigned int crate, unsigned int rod) = 0;
00271 
00277   virtual unsigned char *getFibreMappings(unsigned int partition, unsigned int crate, unsigned int rod) = 0;
00278 
00284   virtual TimConfig getTimConfig(unsigned int partition, unsigned int crate) = 0;
00285 
00291   virtual void setFibreMapping(unsigned int partition, unsigned int crate, unsigned int rod, 
00292                                unsigned int channel, unsigned int tx, unsigned int rx0, unsigned int rx1) = 0;
00293 
00297   virtual void printModuleConfig(const ABCDModule &conf) = 0;
00298 
00299   virtual MURType getMURType(unsigned int MUR) = 0;
00300 
00304   virtual unsigned int getFreeMurId() = 0;
00305 
00306   /************** Change indexing schemes ****************/
00307 
00314   virtual void translateToROD(unsigned int MUR, unsigned int module,
00315                               unsigned int &partition, unsigned int &crate, 
00316                               unsigned int &rod, unsigned int &channel) = 0;
00317  
00327   virtual void translateToRROD(unsigned int MUR, unsigned int module,
00328                                unsigned int &partition, unsigned int &crate, 
00329                                unsigned int &rod, unsigned int &channel) = 0;
00330  
00337   virtual void translateToSN(unsigned int MUR, unsigned int module,
00338                              std::string &sn) = 0;
00339 
00346   virtual void translateToRMUR(unsigned int MUR, unsigned int module,
00347                                unsigned int &RMUR, unsigned int &rmodule) = 0;
00348 
00355   virtual void translateToBarrel(unsigned int MUR, unsigned int module,
00356                                  unsigned int &barrel, unsigned int &row, int &number) = 0;
00357 
00364   virtual void translateToEndcap(unsigned int MUR, unsigned int module,
00365                                  int &disk, unsigned int &ring, unsigned int &number) = 0;
00366 
00373   virtual void translateToPowerSupply(unsigned int MUR, unsigned int module,
00374                                       unsigned int &partition, 
00375                                       unsigned int &crate, unsigned int &channel) = 0;
00376 
00383   virtual void translateFromROD(unsigned int partition, unsigned int crate, 
00384                                 unsigned int rod, unsigned int channel,
00385                                 unsigned int &MUR, unsigned int &module) = 0;
00386 
00396   virtual void translateFromRROD(unsigned int partition, unsigned int crate,
00397                                  unsigned int rod, unsigned int channel,
00398                                  unsigned int &MUR, unsigned int &module) = 0;
00399 
00406   virtual void translateFromSN(const std::string sn,
00407                                unsigned int &MUR, unsigned int &module) = 0;
00408 
00415   virtual void translateFromRMUR(unsigned int RMUR, unsigned int rmodule,
00416                                  unsigned int &MUR, unsigned int &module) = 0;
00417 
00424   virtual void translateFromBarrel(unsigned int barrel, unsigned int row, int number,
00425                                    unsigned int &MUR, unsigned int &module) = 0;
00426 
00433   virtual void translateFromEndcap(int disk, unsigned int ring, unsigned int number,
00434                                    unsigned int &MUR, unsigned int &module) = 0;
00435 
00442   virtual void translateFromPowerSupply(unsigned int partition, 
00443                                         unsigned int crate, unsigned int channel, 
00444                                         unsigned int &MUR, unsigned int &module) = 0;
00445 
00446 
00447   /************** Change configuration ******************/
00448 
00454   virtual void configureModuleFromStructure(const std::string module, const ABCDModule conf) = 0;
00455 
00461   virtual void configureModuleFromFile(const std::string filename) = 0;
00462 
00471   virtual void configureROD(unsigned int partition, unsigned int crate, unsigned int rod, RodConfig conf) = 0;
00472 
00481   virtual void configureTIM(unsigned int partition, unsigned int crate, TimConfig conf) = 0;
00482 
00486   virtual void configureBOC(unsigned int partition, unsigned int crate, unsigned int rod, const BOCGlobalConfig &conf) = 0;
00487 
00492   virtual void clearAll() = 0;
00493 
00507   virtual void namePartition(unsigned int partition, const std::string name) = 0;
00508 
00512 /*virtual    void setBOCConfig(int partition, int crate, int rod, int channel, const BOCChannelConfig &conf) = 0; */
00513   
00520   virtual void configureBOCChannel(unsigned int MUR, unsigned int position, const BOCChannelConfig &conf) = 0;
00521 
00528   virtual void mapModuleMUR(unsigned int MUR, unsigned int order, unsigned int RMUR, unsigned int rorder, std::string number) = 0;
00529 
00536   virtual void unmapModuleMUR(unsigned int MUR, unsigned int order) = 0;
00537  
00541   virtual void mapRODMUR(unsigned int partition, unsigned int crate, unsigned int rod, unsigned int order, unsigned int MUR) = 0;
00542 
00546   virtual void unmapRODMUR(unsigned int MUR) = 0;
00547 
00553   virtual void mapBarrelMUR(unsigned int MUR, unsigned int barrel, unsigned int row, int position) = 0;
00554 
00558   virtual void unmapBarrelMUR(unsigned int MUR) = 0;
00559 
00563   virtual void getMapMURROD(unsigned int MUR, unsigned int &partition, unsigned int &crate, unsigned int &rod, unsigned int &order) = 0;
00564 
00571   virtual void getMapRODMUR(unsigned int partition, unsigned int crate, unsigned int rod, unsigned int order, unsigned int &number) = 0;
00572 
00573   /*
00574     Get mapping of MUR to physical structure
00575   */
00576   virtual void getMapMURPhysical(unsigned int MUR, MURType &type, int &plane, int &section, int &position) = 0;
00577 
00584   virtual void swapMURNames(unsigned int MUR1, unsigned int MUR2) = 0;
00585 
00586 /* #warning "Need to think more about endcap mappings" */
00587 
00593   virtual void mapEndcapMUR(unsigned int MUR, int disk, unsigned int quadrant, unsigned int position) = 0;
00594 
00598   virtual void unmapEndcapMUR(unsigned int MUR) = 0;
00599 
00603   virtual void mapPowerChannel(unsigned int MUR, unsigned int number, unsigned int partition, unsigned int crate, unsigned int channel) = 0;
00604 
00608   virtual void unmapPowerChannel(unsigned int MUR, unsigned int number) = 0;
00609 
00613   virtual void modifyDefaultPowerParam(std::string state, std::string name, std::string type, float value) = 0;
00614 
00618   virtual void modifyHVCardParam(unsigned int crate, unsigned int card,
00619                                  std::string name, std::string type, float value) = 0;
00620 
00624   virtual void modifyLVCardParam(unsigned int crate, unsigned int card,
00625                                  std::string name, std::string type, float value) = 0;
00626 
00630   virtual void modifyPowerParam(unsigned int MUR, unsigned int number,
00631                                 std::string state, std::string name, std::string type, float value) = 0;
00632 
00636   virtual void modifyPowerParamCC(unsigned int crate, unsigned int channel,
00637                                   std::string state, std::string name, std::string type, float value) = 0;
00638 
00642   virtual float getDefaultPowerParam(std::string state, std::string name, std::string type) = 0;
00643 
00647   virtual float getHVCardParam(unsigned int crate, unsigned int card,
00648                               std::string name, std::string type) = 0;
00649 
00653   virtual float getLVCardParam(unsigned int crate, unsigned int card,
00654                               std::string name, std::string type) = 0;
00655 
00659   virtual float getPowerParam(unsigned int MUR, unsigned int number,
00660                               std::string state, std::string name, std::string type) = 0;
00661 
00665   virtual float getPowerParamCC(unsigned int crate, unsigned int channel,
00666                                 std::string state, std::string name, std::string type) = 0;
00667 
00671   virtual std::list<std::string> listDefaultPowerParams() = 0;
00672 
00676   virtual float getCratePowerParam(unsigned int crate, std::string name) = 0;
00677 
00681   virtual std::list<std::string> listDCSChannelParams() = 0;
00682 
00686   virtual std::list<std::string> listDCSCardParams() = 0;
00687 
00691   virtual std::list<std::string> listDCSCrateParams() = 0;
00692 
00696   virtual void loadConfiguration(const std::string &filename) = 0;
00697 
00698   /************** Save configuration *********************/
00699 
00709   virtual void saveConfiguration(const std::string filename = "") = 0;
00710 
00716   virtual void saveModuleConfiguration(const std::string modsn, const std::string filename) = 0;
00717 
00721   virtual std::string getModuleConfigurationString(const std::string modsn, const ABCDModule config) = 0;
00722 
00726   virtual void writePowerSupplyConfiguration(std::string filename) = 0;
00727 };
00728 
00729 }
00730 
00731 #endif
00732 

Generated on Fri Jan 14 12:47:02 2005 for SCT DAQ/DCS Software - C++ by doxygen 1.3.5