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 <Sct/AbcdModule.h>
00010 #include "ConfigurationException.h"
00011 
00012 namespace SctConfiguration {
00013 
00017 struct SlaveConfig {
00018   std::string ipramFile;
00019   std::string idramFile;
00020   std::string extFile;
00021 };
00022 
00026 struct RodConfig {
00027 /*   /// Is there a BOC? (Shouldn't be necessary) */
00028 /*   bool bocPresent; */
00030   unsigned long baseAddress;
00031 /*   /// VME map size */
00032 /*   unsigned long mapSize; */
00034   unsigned long resetLevel;
00036   SlaveConfig slaves[4];
00037 
00043   int validMask;
00044 
00046   unsigned char triggerTypeTTC;
00048   unsigned char triggerTypeTIM;
00050   unsigned char offsetBCID;
00051 };
00052 
00056 struct TimConfig {
00058   unsigned long baseAddress;
00059 /*   /// VME map size */
00060 /*   unsigned long mapSize; */
00061 
00063   float trigFrequency;
00065   float resetFrequency;
00066 
00072   int validMask;
00073 
00075   unsigned char triggerTypeTTC;
00077   unsigned char triggerTypeTIM;
00079   unsigned char offsetBCID;
00081   unsigned short triggerEnablesInternal;
00083   unsigned short triggerEnablesTTC;
00084 };
00085 
00093 struct BOCChannelConfig {
00095   int current;
00097   int delay;
00099   int markSpace;
00101   int threshold0;
00103   int delay0;
00105   int threshold1;
00107   int delay1;
00108 };
00109 
00110 struct BOCGlobalConfig {
00116   int validMask;
00117 
00118   int clockControl;
00119   int rxDataMode;
00120   int rxDacClear;
00121   int txDacClear;
00122   int vernierFinePhase;
00123   int vernierClockPhase0;
00124   int vernierClockPhase1;
00125   int bpmClockPhase;
00126   int bregClockPhase;
00127 };
00128 
00129 enum MURType {BARREL, ENDCAP, UNMAPPED, UNKNOWN};
00130 
00158 class Configuration {
00159 public:
00163   virtual ~Configuration() {};
00164 
00165   /************* Get physical configuration ****************/
00166 
00171   virtual std::list<unsigned int> listPartitions() = 0;
00172 
00177   virtual std::list<unsigned int> listCratesInPartition(unsigned int partition) = 0;
00178 
00182   virtual bool isDummyCrate(unsigned int partition, unsigned int crate) = 0;
00183 
00188   virtual std::list<unsigned int> listRodsInCrate(unsigned int partition, unsigned int crate) = 0;
00189 
00196   virtual std::list<unsigned int> listMURSInRod(unsigned int partition, unsigned int crate, unsigned int rod) = 0;
00197 
00204   virtual std::list<std::string> listModulesInMUR(unsigned int partition, unsigned int MUR) = 0;
00205 
00212   virtual std::list<std::string> listRModulesInMUR(unsigned int partition, unsigned int MUR) = 0;
00213 
00219   virtual std::list<std::string> listAllModules() = 0;
00220 
00224   virtual std::list<std::string> listUnusedModules() = 0;
00225 
00226   /************** Get configurations *****************/
00227 
00233   virtual ABCDModule getModuleConfig(const std::string module) = 0;
00234 
00238   virtual short getModuleGroup(const std::string module) = 0;
00239 
00243   virtual void setModuleGroup(const std::string module, short group) = 0;
00244 
00248   virtual unsigned int getModuleErrorMask(unsigned int partition, unsigned int crate, unsigned int rod,
00249                                           unsigned int channel, unsigned int link) = 0;
00250 
00254   virtual void setModuleErrorMask(unsigned int partition, unsigned int crate, unsigned int rod,
00255                                   unsigned int channel, unsigned int link, unsigned int mask) = 0;
00256 
00260   virtual void setDefaultModuleErrorMask(unsigned int mask) = 0;
00261 
00267   virtual RodConfig getRodConfig(unsigned int partition, unsigned int crate, unsigned int rod) = 0;
00268 
00274   virtual SlaveConfig getDefaultSlaveConfig(char type) = 0;
00275 
00283   virtual BOCChannelConfig getBOCConfig(unsigned int partition, unsigned int crate, unsigned int rod, 
00284                                         unsigned int channel) = 0;
00285 
00289   virtual BOCGlobalConfig getBOCGlobalConfig(unsigned int partition, unsigned int crate, unsigned int rod) = 0;
00290 
00296   virtual unsigned char *getFibreMappings(unsigned int partition, unsigned int crate, unsigned int rod) = 0;
00297 
00303   virtual TimConfig getTimConfig(unsigned int partition, unsigned int crate) = 0;
00304 
00310   virtual void setFibreMapping(unsigned int partition, unsigned int crate, unsigned int rod, 
00311                                unsigned int channel, unsigned int tx, unsigned int rx0, unsigned int rx1) = 0;
00312 
00316   virtual std::string printModuleConfig(const ABCDModule &conf) = 0;
00317 
00318   virtual MURType getMURType(unsigned int MUR) = 0;
00319 
00323   virtual unsigned int getFreeMurId() = 0;
00324 
00325   /************** Change indexing schemes ****************/
00326 
00333   virtual void translateToROD(unsigned int MUR, unsigned int module,
00334                               unsigned int &partition, unsigned int &crate, 
00335                               unsigned int &rod, unsigned int &channel) = 0;
00336  
00346   virtual void translateToRROD(unsigned int MUR, unsigned int module,
00347                                unsigned int &partition, unsigned int &crate, 
00348                                unsigned int &rod, unsigned int &channel) = 0;
00349  
00356   virtual void translateToSN(unsigned int MUR, unsigned int module,
00357                              std::string &sn) = 0;
00358 
00365   virtual void translateToRMUR(unsigned int MUR, unsigned int module,
00366                                unsigned int &RMUR, unsigned int &rmodule) = 0;
00367 
00374   virtual void translateToBarrel(unsigned int MUR, unsigned int module,
00375                                  unsigned int &barrel, unsigned int &row, int &number) = 0;
00376 
00383   virtual void translateToEndcap(unsigned int MUR, unsigned int module,
00384                                  int &disk, unsigned int &ring, unsigned int &number) = 0;
00385 
00392   virtual void translateToPowerSupply(unsigned int MUR, unsigned int module,
00393                                       unsigned int &partition, 
00394                                       unsigned int &crate, unsigned int &channel) = 0;
00395 
00402   virtual void translateFromROD(unsigned int partition, unsigned int crate, 
00403                                 unsigned int rod, unsigned int channel,
00404                                 unsigned int &MUR, unsigned int &module) = 0;
00405 
00415   virtual void translateFromRROD(unsigned int partition, unsigned int crate,
00416                                  unsigned int rod, unsigned int channel,
00417                                  unsigned int &MUR, unsigned int &module) = 0;
00418 
00425   virtual void translateFromSN(const std::string sn,
00426                                unsigned int &MUR, unsigned int &module) = 0;
00427 
00434   virtual void translateFromRMUR(unsigned int RMUR, unsigned int rmodule,
00435                                  unsigned int &MUR, unsigned int &module) = 0;
00436 
00443   virtual void translateFromBarrel(unsigned int barrel, unsigned int row, int number,
00444                                    unsigned int &MUR, unsigned int &module) = 0;
00445 
00452   virtual void translateFromEndcap(int disk, unsigned int ring, unsigned int number,
00453                                    unsigned int &MUR, unsigned int &module) = 0;
00454 
00461   virtual void translateFromPowerSupply(unsigned int partition, 
00462                                         unsigned int crate, unsigned int channel, 
00463                                         unsigned int &MUR, unsigned int &module) = 0;
00464 
00465 
00466   /************** Change configuration ******************/
00467 
00473   virtual void configureModuleFromStructure(const std::string module, const ABCDModule conf) = 0;
00474 
00480   virtual void configureModuleFromFile(const std::string filename) = 0;
00481 
00490   virtual void configureROD(unsigned int partition, unsigned int crate, unsigned int rod, RodConfig conf) = 0;
00491 
00500   virtual void configureTIM(unsigned int partition, unsigned int crate, TimConfig conf) = 0;
00501 
00505   virtual void configureBOC(unsigned int partition, unsigned int crate, unsigned int rod, const BOCGlobalConfig &conf) = 0;
00506 
00511   virtual void clearAll() = 0;
00512 
00526   virtual void namePartition(unsigned int partition, const std::string name) = 0;
00527 
00531 /*virtual    void setBOCConfig(int partition, int crate, int rod, int channel, const BOCChannelConfig &conf) = 0; */
00532   
00539   virtual void configureBOCChannel(unsigned int MUR, unsigned int position, const BOCChannelConfig &conf) = 0;
00540 
00547   virtual void mapModuleMUR(unsigned int MUR, unsigned int order, unsigned int RMUR, unsigned int rorder, std::string number) = 0;
00548 
00555   virtual void unmapModuleMUR(unsigned int MUR, unsigned int order) = 0;
00556  
00560   virtual void mapRODMUR(unsigned int partition, unsigned int crate, unsigned int rod, unsigned int order, unsigned int MUR) = 0;
00561 
00565   virtual void unmapRODMUR(unsigned int MUR) = 0;
00566 
00572   virtual void mapBarrelMUR(unsigned int MUR, unsigned int barrel, unsigned int row, int position) = 0;
00573 
00577   virtual void unmapBarrelMUR(unsigned int MUR) = 0;
00578 
00582   virtual void getMapMURROD(unsigned int MUR, unsigned int &partition, unsigned int &crate, unsigned int &rod, unsigned int &order) = 0;
00583 
00590   virtual void getMapRODMUR(unsigned int partition, unsigned int crate, unsigned int rod, unsigned int order, unsigned int &number) = 0;
00591 
00592   /*
00593     Get mapping of MUR to physical structure
00594   */
00595   virtual void getMapMURPhysical(unsigned int MUR, MURType &type, int &plane, int &section, int &position) = 0;
00596 
00603   virtual void swapMURNames(unsigned int MUR1, unsigned int MUR2) = 0;
00604 
00605 /* #warning "Need to think more about endcap mappings" */
00606 
00612   virtual void mapEndcapMUR(unsigned int MUR, int disk, unsigned int quadrant, unsigned int position) = 0;
00613 
00617   virtual void unmapEndcapMUR(unsigned int MUR) = 0;
00618 
00622   virtual void mapPowerChannel(unsigned int MUR, unsigned int number, unsigned int partition, unsigned int crate, unsigned int channel) = 0;
00623 
00627   virtual void unmapPowerChannel(unsigned int MUR, unsigned int number) = 0;
00628 
00632   virtual void modifyDefaultPowerParam(std::string state, std::string name, std::string type, float value) = 0;
00633 
00637   virtual void modifyHVCardParam(unsigned int crate, unsigned int card,
00638                                  std::string name, std::string type, float value) = 0;
00639 
00643   virtual void modifyLVCardParam(unsigned int crate, unsigned int card,
00644                                  std::string name, std::string type, float value) = 0;
00645 
00649   virtual void modifyPowerParam(unsigned int MUR, unsigned int number,
00650                                 std::string state, std::string name, std::string type, float value) = 0;
00651 
00655   virtual void modifyPowerParamCC(unsigned int crate, unsigned int channel,
00656                                   std::string state, std::string name, std::string type, float value) = 0;
00657 
00661   virtual float getDefaultPowerParam(std::string state, std::string name, std::string type) = 0;
00662 
00666   virtual float getHVCardParam(unsigned int crate, unsigned int card,
00667                               std::string name, std::string type) = 0;
00668 
00672   virtual float getLVCardParam(unsigned int crate, unsigned int card,
00673                               std::string name, std::string type) = 0;
00674 
00678   virtual float getPowerParam(unsigned int MUR, unsigned int number,
00679                               std::string state, std::string name, std::string type) = 0;
00680 
00684   virtual float getPowerParamCC(unsigned int crate, unsigned int channel,
00685                                 std::string state, std::string name, std::string type) = 0;
00686 
00690   virtual std::list<std::string> listDefaultPowerParams() = 0;
00691 
00695   virtual std::list<std::string> listDCSChannelParams() = 0;
00696 
00700   virtual std::list<std::string> listDCSCardParams() = 0;
00701 
00705   virtual std::list<std::string> listDCSCrateParams() = 0;
00706 
00710   virtual void useISForChanges(bool valid = true) = 0;
00711 
00715   virtual void useMRSForMessages(bool valid = true) = 0;
00716 
00720   virtual void loadConfiguration(const std::string &filename) = 0;
00721 
00725   virtual std::string getConfigurationFileName() = 0;
00726 
00727   /************** Save configuration *********************/
00728 
00738   virtual void saveConfiguration(const std::string filename = "") = 0;
00739 
00740 #warning "what are these used for? they tie to XML..."
00741 
00747   virtual void saveModuleConfiguration(const std::string modsn, const std::string filename) = 0;
00748 
00752   virtual std::string getModuleConfigurationString(const std::string modsn, const ABCDModule config) = 0;
00753 
00757   virtual void writePowerSupplyConfiguration(std::string filename) = 0;
00758 };
00759 
00760 }
00761 
00762 #endif
00763 

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