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
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
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
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
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
00575
00576 virtual void getMapMURPhysical(unsigned int MUR, MURType &type, int &plane, int §ion, int &position) = 0;
00577
00584 virtual void swapMURNames(unsigned int MUR1, unsigned int MUR2) = 0;
00585
00586
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
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