dalImpl.h

00001 #ifndef SCTAPI_CONFIGURATION_DAL_IMPL
00002 #define SCTAPI_CONFIGURATION_DAL_IMPL
00003 
00004 #include <utility>
00005 #include <vector>
00006 
00007 #include <config/Configuration.h>
00008 
00009 #include "../log.h"
00010 #include "../configuration.h"
00011 
00012 // #include "timings.h"
00013 
00016 namespace ConfDALUtils {
00017   class Builder;
00018   class LookUp;
00019 }
00020 
00021 class ConfigurationDALImpl : public SctConfiguration::Configuration {
00022   static const std::string schemaName;
00023 
00024   ConfigurationDALImpl(const ConfigurationDALImpl &);
00025   ConfigurationDALImpl &operator=(const ConfigurationDALImpl &);
00026 
00027   static ConfigurationDALImpl *m_config;
00028 
00029   ::Configuration *m_conf;
00030   ::Configuration &conf() {return *m_conf; }
00031 
00032   // Comes first as passed to next two constructors
00033   Log log;
00034 
00035   ConfDALUtils::Builder *builder;
00036   ConfDALUtils::LookUp *lookup;
00037 
00038   std::string lastFilename;
00039 
00040   DalObject *where;
00041 
00042 /*   ISInfoDictionary *is_dict; */
00043 /*   bool isLookupDone; */
00044 
00045 /*   Timings timings; */
00046 
00047 public:
00052   ConfigurationDALImpl(std::string filename = "dummyFileName.xml");
00053 
00057   virtual ~ConfigurationDALImpl();
00058 
00059   /************* Get physical configuration ****************/
00060 
00065   std::list<unsigned int> listPartitions();
00066 
00071   std::list<unsigned int> listCratesInPartition(unsigned int partition);
00072 
00073   bool isDummyCrate(unsigned int partition, unsigned int crate);
00074 
00079   std::list<unsigned int> listRodsInCrate(unsigned int partition, unsigned int crate);
00080 
00087   std::list<unsigned int> listMURSInRod(unsigned int partition, unsigned int crate, unsigned int rod);
00088 
00095   std::list<std::string> listModulesInMUR(unsigned int partition, unsigned int MUR);
00096 
00103   std::list<std::string> listRModulesInMUR(unsigned int partition, unsigned int MUR);
00104 
00110   std::list<std::string> listAllModules();
00111 
00115   std::list<std::string> listUnusedModules();
00116 
00117   /************** Get configurations *****************/
00118 
00124   ABCDModule getModuleConfig(const std::string module);
00125 
00129   short getModuleGroup(const std::string module);
00130 
00134   void setModuleGroup(const std::string module, short group);
00135 
00139   unsigned int getModuleErrorMask(unsigned int partition, unsigned int crate, unsigned int rod,
00140                                   unsigned int channel, unsigned int link);
00141 
00145   void setModuleErrorMask(unsigned int partition, unsigned int crate, unsigned int rod,
00146                           unsigned int channel, unsigned int link, unsigned int mask);
00147 
00151   void setDefaultModuleErrorMask(unsigned int mask);
00152 
00158   SctConfiguration::RodConfig getRodConfig(unsigned int partition, unsigned int crate, unsigned int rod);
00159 
00165   SctConfiguration::SlaveConfig getDefaultSlaveConfig(char type);
00166 
00172   SctConfiguration::BOCChannelConfig getBOCConfig(unsigned int partition, unsigned int crate, unsigned int rod, 
00173                                 unsigned int channel);
00174 
00175   SctConfiguration::BOCGlobalConfig getBOCGlobalConfig(unsigned int partition, unsigned int crate, unsigned int rod);
00176 
00182   unsigned char *getFibreMappings(unsigned int partition, unsigned int crate, unsigned int rod);
00183 
00189   SctConfiguration::TimConfig getTimConfig(unsigned int partition, unsigned int crate);
00190 
00196   void setFibreMapping(unsigned int partition, unsigned int crate, unsigned int rod, 
00197                        unsigned int channel, unsigned int tx, unsigned int rx0, unsigned int rx1);
00198 
00202   std::string printModuleConfig(const ABCDModule &conf);
00203 
00204   SctConfiguration::MURType getMURType(unsigned int MUR);
00205 
00206   unsigned int getFreeMurId();
00207 
00208   /************** Change indexing schemes ****************/
00209 
00213   void translateToROD(unsigned int MUR, unsigned int module,
00214               unsigned int &partition, unsigned int &crate, 
00215               unsigned int &rod, unsigned int &channel);
00216  
00223   void translateToRROD(unsigned int MUR, unsigned int module,
00224                unsigned int &partition, unsigned int &crate, 
00225                unsigned int &rod, unsigned int &channel);
00226  
00230   void translateToSN(unsigned int MUR, unsigned int module,
00231                      std::string &sn);
00232 
00236   void translateToRMUR(unsigned int MUR, unsigned int module,
00237                        unsigned int &RMUR, unsigned int &rmodule);
00238 
00242   void translateToBarrel(unsigned int MUR, unsigned int module,
00243                          unsigned int &barrel, unsigned int &row, int &number);
00244 
00248   void translateToEndcap(unsigned int MUR, unsigned int module,
00249                          int &disk, unsigned int &ring, unsigned int &number);
00250 
00254   void translateToPowerSupply(unsigned int MUR, unsigned int module,
00255                               unsigned int &partition, 
00256                               unsigned int &crate, unsigned int &channel);
00257 
00261   void translateFromROD(unsigned int partition, unsigned int crate, 
00262                         unsigned int rod, unsigned int channel,
00263                         unsigned int &MUR, unsigned int &module);
00264 
00271   void translateFromRROD(unsigned int partition, unsigned int crate,
00272                          unsigned int rod, unsigned int channel,
00273                          unsigned int &MUR, unsigned int &module);
00277   void translateFromSN(const std::string sn,
00278                        unsigned int &MUR, unsigned int &module);
00279 
00283   void translateFromRMUR(unsigned int RMUR, unsigned int rmodule,
00284                          unsigned int &MUR, unsigned int &module);
00285 
00289   void translateFromBarrel(unsigned int barrel, unsigned int row, int number,
00290                            unsigned int &MUR, unsigned int &module);
00291 
00295   void translateFromEndcap(int disk, unsigned int ring, unsigned int number,
00296                            unsigned int &MUR, unsigned int &module);
00297 
00301   void translateFromPowerSupply(unsigned int partition, 
00302                                 unsigned int crate, unsigned int channel, 
00303                                 unsigned int &MUR, unsigned int &module);
00304 
00305 
00306   /************** Change configuration ******************/
00307 
00313   void configureModuleFromStructure(const std::string module, const ABCDModule conf);
00314 
00320   void configureModuleFromFile(const std::string filename);
00321 
00330   void configureROD(unsigned int partition, unsigned int crate, unsigned int rod, SctConfiguration::RodConfig conf);
00331 
00340   void configureTIM(unsigned int partition, unsigned int crate, SctConfiguration::TimConfig conf);
00341 
00345   void configureBOC(unsigned int partition, unsigned int crate, unsigned int rod, const SctConfiguration::BOCGlobalConfig &conf);
00346 
00351   void clearAll();
00352 
00366   void namePartition(unsigned int partition, const std::string name);
00367 
00368  public:
00372 /*   void setBOCConfig(int partition, int crate, int rod, int channel, const BOCChannelConfig &conf); */
00373   
00377   void configureBOCChannel(unsigned int MUR, unsigned int position, const SctConfiguration::BOCChannelConfig &conf);
00378 
00382   void mapModuleMUR(unsigned int MUR, unsigned int order, unsigned int RMUR, unsigned int rorder, std::string number);
00383 
00387   void unmapModuleMUR(unsigned int MUR, unsigned int order);
00388 
00392   void mapRODMUR(unsigned int partition, unsigned int crate, unsigned int rod, unsigned int order, unsigned int number);
00393 
00397   void unmapRODMUR(unsigned int number);
00398 
00402   void mapBarrelMUR(unsigned int MUR, unsigned int barrel, unsigned int row, int position);
00403 
00407   void unmapBarrelMUR(unsigned int MUR);
00408 
00412   void getMapMURROD(unsigned int MUR, unsigned int &partition, unsigned int &crate, unsigned int &rod, unsigned int &order);
00413 
00417   void getMapRODMUR(unsigned int partition, unsigned int crate, unsigned int rod, unsigned int order, unsigned int &MUR);
00418 
00419   /*
00420     Get mapping of MUR to physical structure
00421   */
00422   void getMapMURPhysical(unsigned int MUR, SctConfiguration::MURType &type, int &plane, int &section, int &position);
00423 
00427   void mapEndcapMUR(unsigned int MUR, int disk, unsigned int quadrant, unsigned int position);
00428  
00432   void unmapEndcapMUR(unsigned int MUR);
00433 
00440   void swapMURNames(unsigned int MUR1, unsigned int MUR2);
00441 
00445   void mapPowerChannel(unsigned int MUR, unsigned int number, unsigned int partition, unsigned int crate, unsigned int channel);
00446 
00450   void unmapPowerChannel(unsigned int MUR, unsigned int number);
00451 
00455   void modifyDefaultPowerParam(std::string state, std::string name, std::string type, float value);
00456 
00460   void modifyHVCardParam(unsigned int crate, unsigned int card,
00461                          std::string name, std::string type, float value);
00462 
00466   void modifyLVCardParam(unsigned int crate, unsigned int card,
00467                          std::string name, std::string type, float value);
00468 
00472   void modifyPowerParam(unsigned int MUR, unsigned int number,
00473                          std::string state, std::string name, std::string type, float value);
00474 
00478   void modifyPowerParamCC(unsigned int crate, unsigned int channel,
00479           std::string state, std::string name, std::string type, float value);
00480 
00484   float getDefaultPowerParam(std::string state, std::string name, std::string type);
00485 
00489   float getHVCardParam(unsigned int crate, unsigned int card, std::string name, std::string type);
00490 
00494   float getLVCardParam(unsigned int crate, unsigned int card, std::string name, std::string type);
00495 
00499   float getPowerParam(unsigned int MUR, unsigned int number, std::string state, std::string name, std::string type);
00500 
00504   float getPowerParamCC(unsigned int crate, unsigned int channel, std::string state, std::string name, std::string type);
00505 
00509   std::list<std::string> listDefaultPowerParams();
00510 
00514   float getCratePowerParam(unsigned int crate, std::string name);
00515 
00516   std::list<std::string> listDCSChannelParams();
00517 
00518   std::list<std::string> listDCSCardParams();
00519 
00520   std::list<std::string> listDCSCrateParams();
00521 
00522   void useISForChanges(bool valid = true);
00523 
00524   void useMRSForMessages(bool valid = true);
00525 
00529   void loadConfiguration(const std::string &filename);
00530 
00534   std::string getConfigurationFileName();
00535 
00536   /************** Save configuration *********************/
00537 
00547   void saveConfiguration(const std::string filename = "");
00548 
00554   void saveModuleConfiguration(const std::string modsn, const std::string filename);
00555 
00559   std::string getModuleConfigurationString(const std::string modsn, const ABCDModule config);
00560 
00564   void writePowerSupplyConfiguration(std::string filename);
00565 
00566  protected:
00567   bool createFile(std::string filename);
00568 /*   void notifyModuleConfChange(); */
00569 
00570 /*   void notifyModuleMappingChange(); */
00571 
00572 /*   void notifySystemStructureChange(); */
00573 
00574   friend class ConfDALUtils::Builder;
00575 };
00576 
00577 #endif

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