00001 #ifndef SCTAPI_CONFIGURATION
00002 #define SCTAPI_CONFIGURATION
00003
00004 #include <list>
00005 #include <string>
00006 #include <stdexcept>
00007
00008
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
00028
00030 unsigned long baseAddress;
00031
00032
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
00060
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
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
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
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
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
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
00594
00595 virtual void getMapMURPhysical(unsigned int MUR, MURType &type, int &plane, int §ion, int &position) = 0;
00596
00603 virtual void swapMURNames(unsigned int MUR1, unsigned int MUR2) = 0;
00604
00605
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
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