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
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
00033 Log log;
00034
00035 ConfDALUtils::Builder *builder;
00036 ConfDALUtils::LookUp *lookup;
00037
00038 std::string lastFilename;
00039
00040 DalObject *where;
00041
00042
00043
00044
00045
00046
00047 public:
00052 ConfigurationDALImpl(std::string filename = "dummyFileName.xml");
00053
00057 virtual ~ConfigurationDALImpl();
00058
00059
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
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
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
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
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
00421
00422 void getMapMURPhysical(unsigned int MUR, SctConfiguration::MURType &type, int &plane, int §ion, 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
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
00569
00570
00571
00572
00573
00574 friend class ConfDALUtils::Builder;
00575 };
00576
00577 #endif