00001 #ifndef SCTAPI_CONFIGURATION
00002 #define SCTAPI_CONFIGURATION
00003
00004 #include <list>
00005 #include <string>
00006 #include <stdexcept>
00007
00008
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
00027
00029 unsigned long baseAddress;
00030
00031
00033 unsigned long resetLevel;
00035 SlaveConfig slaves[4];
00036 };
00037
00041 struct TimConfig {
00043 unsigned long baseAddress;
00044
00045
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
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
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
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
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
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
00558
00559 virtual void getMapMURPhysical(unsigned int MUR, MURType &type, int &plane, int §ion, int &position) = 0;
00560
00567 virtual void swapMURNames(unsigned int MUR1, unsigned int MUR2) = 0;
00568
00569
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
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