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 #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 };
00038
00042 struct TimConfig {
00044 unsigned long baseAddress;
00045
00046
00048 float trigFrequency;
00050 float resetFrequency;
00051 };
00052
00060 struct BOCChannelConfig {
00062 int current;
00064 int delay;
00066 int markSpace;
00068 int threshold0;
00070 int delay0;
00072 int threshold1;
00074 int delay1;
00075 };
00076
00077 struct BOCGlobalConfig {
00083 int validMask;
00084
00085 int clockControl;
00086 int rxDataMode;
00087 int rxDacClear;
00088 int txDacClear;
00089 int vernierFinePhase;
00090 int vernierClockPhase0;
00091 int vernierClockPhase1;
00092 int bpmClockPhase;
00093 int bregClockPhase;
00094 };
00095
00096 enum MURType {BARREL, ENDCAP, UNMAPPED, UNKNOWN};
00097
00125 class Configuration {
00126 public:
00130 virtual ~Configuration() {};
00131
00132
00133
00138 virtual std::list<unsigned int> listPartitions() = 0;
00139
00144 virtual std::list<unsigned int> listCratesInPartition(unsigned int partition) = 0;
00145
00149 virtual bool isDummyCrate(unsigned int partition, unsigned int crate) = 0;
00150
00155 virtual std::list<unsigned int> listRodsInCrate(unsigned int partition, unsigned int crate) = 0;
00156
00163 virtual std::list<unsigned int> listMURSInRod(unsigned int partition, unsigned int crate, unsigned int rod) = 0;
00164
00171 virtual std::list<std::string> listModulesInMUR(unsigned int partition, unsigned int MUR) = 0;
00172
00179 virtual std::list<std::string> listRModulesInMUR(unsigned int partition, unsigned int MUR) = 0;
00180
00186 virtual std::list<std::string> listAllModules() = 0;
00187
00191 virtual std::list<std::string> listUnusedModules() = 0;
00192
00193
00194
00200 virtual ABCDModule getModuleConfig(const std::string module) = 0;
00201
00205 virtual short getModuleGroup(const std::string module) = 0;
00206
00210 virtual void setModuleGroup(const std::string module, short group) = 0;
00211
00215 virtual unsigned int getModuleErrorMask(unsigned int partition, unsigned int crate, unsigned int rod,
00216 unsigned int channel, unsigned int link) = 0;
00217
00221 virtual void setModuleErrorMask(unsigned int partition, unsigned int crate, unsigned int rod,
00222 unsigned int channel, unsigned int link, unsigned int mask) = 0;
00223
00227 virtual void setDefaultModuleErrorMask(unsigned int mask) = 0;
00228
00234 virtual RodConfig getRodConfig(unsigned int partition, unsigned int crate, unsigned int rod) = 0;
00235
00241 virtual SlaveConfig getDefaultSlaveConfig(char type) = 0;
00242
00250 virtual BOCChannelConfig getBOCConfig(unsigned int partition, unsigned int crate, unsigned int rod,
00251 unsigned int channel) = 0;
00252
00256 virtual BOCGlobalConfig getBOCGlobalConfig(unsigned int partition, unsigned int crate, unsigned int rod) = 0;
00257
00263 virtual unsigned char *getFibreMappings(unsigned int partition, unsigned int crate, unsigned int rod) = 0;
00264
00270 virtual TimConfig getTimConfig(unsigned int partition, unsigned int crate) = 0;
00271
00277 virtual void setFibreMapping(unsigned int partition, unsigned int crate, unsigned int rod,
00278 unsigned int channel, unsigned int tx, unsigned int rx0, unsigned int rx1) = 0;
00279
00283 virtual void printModuleConfig(const ABCDModule &conf) = 0;
00284
00285 virtual MURType getMURType(unsigned int MUR) = 0;
00286
00290 virtual unsigned int getFreeMurId() = 0;
00291
00292
00293
00300 virtual void translateToROD(unsigned int MUR, unsigned int module,
00301 unsigned int &partition, unsigned int &crate,
00302 unsigned int &rod, unsigned int &channel) = 0;
00303
00313 virtual void translateToRROD(unsigned int MUR, unsigned int module,
00314 unsigned int &partition, unsigned int &crate,
00315 unsigned int &rod, unsigned int &channel) = 0;
00316
00323 virtual void translateToSN(unsigned int MUR, unsigned int module,
00324 std::string &sn) = 0;
00325
00332 virtual void translateToRMUR(unsigned int MUR, unsigned int module,
00333 unsigned int &RMUR, unsigned int &rmodule) = 0;
00334
00341 virtual void translateToBarrel(unsigned int MUR, unsigned int module,
00342 unsigned int &barrel, unsigned int &row, int &number) = 0;
00343
00350 virtual void translateToEndcap(unsigned int MUR, unsigned int module,
00351 int &disk, unsigned int &ring, unsigned int &number) = 0;
00352
00359 virtual void translateToPowerSupply(unsigned int MUR, unsigned int module,
00360 unsigned int &partition,
00361 unsigned int &crate, unsigned int &channel) = 0;
00362
00369 virtual void translateFromROD(unsigned int partition, unsigned int crate,
00370 unsigned int rod, unsigned int channel,
00371 unsigned int &MUR, unsigned int &module) = 0;
00372
00382 virtual void translateFromRROD(unsigned int partition, unsigned int crate,
00383 unsigned int rod, unsigned int channel,
00384 unsigned int &MUR, unsigned int &module) = 0;
00385
00392 virtual void translateFromSN(const std::string sn,
00393 unsigned int &MUR, unsigned int &module) = 0;
00394
00401 virtual void translateFromRMUR(unsigned int RMUR, unsigned int rmodule,
00402 unsigned int &MUR, unsigned int &module) = 0;
00403
00410 virtual void translateFromBarrel(unsigned int barrel, unsigned int row, int number,
00411 unsigned int &MUR, unsigned int &module) = 0;
00412
00419 virtual void translateFromEndcap(int disk, unsigned int ring, unsigned int number,
00420 unsigned int &MUR, unsigned int &module) = 0;
00421
00428 virtual void translateFromPowerSupply(unsigned int partition,
00429 unsigned int crate, unsigned int channel,
00430 unsigned int &MUR, unsigned int &module) = 0;
00431
00432
00433
00434
00440 virtual void configureModuleFromStructure(const std::string module, const ABCDModule conf) = 0;
00441
00447 virtual void configureModuleFromFile(const std::string filename) = 0;
00448
00457 virtual void configureROD(unsigned int partition, unsigned int crate, unsigned int rod, RodConfig conf) = 0;
00458
00467 virtual void configureTIM(unsigned int partition, unsigned int crate, TimConfig conf) = 0;
00468
00472 virtual void configureBOC(unsigned int partition, unsigned int crate, unsigned int rod, const BOCGlobalConfig &conf) = 0;
00473
00478 virtual void clearAll() = 0;
00479
00493 virtual void namePartition(unsigned int partition, const std::string name) = 0;
00494
00498
00499
00506 virtual void configureBOCChannel(unsigned int MUR, unsigned int position, const BOCChannelConfig &conf) = 0;
00507
00514 virtual void mapModuleMUR(unsigned int MUR, unsigned int order, unsigned int RMUR, unsigned int rorder, std::string number) = 0;
00515
00522 virtual void unmapModuleMUR(unsigned int MUR, unsigned int order) = 0;
00523
00527 virtual void mapRODMUR(unsigned int partition, unsigned int crate, unsigned int rod, unsigned int order, unsigned int MUR) = 0;
00528
00532 virtual void unmapRODMUR(unsigned int MUR) = 0;
00533
00539 virtual void mapBarrelMUR(unsigned int MUR, unsigned int barrel, unsigned int row, int position) = 0;
00540
00544 virtual void unmapBarrelMUR(unsigned int MUR) = 0;
00545
00549 virtual void getMapMURROD(unsigned int MUR, unsigned int &partition, unsigned int &crate, unsigned int &rod, unsigned int &order) = 0;
00550
00557 virtual void getMapRODMUR(unsigned int partition, unsigned int crate, unsigned int rod, unsigned int order, unsigned int &number) = 0;
00558
00559
00560
00561
00562 virtual void getMapMURPhysical(unsigned int MUR, MURType &type, int &plane, int §ion, int &position) = 0;
00563
00570 virtual void swapMURNames(unsigned int MUR1, unsigned int MUR2) = 0;
00571
00572
00573
00579 virtual void mapEndcapMUR(unsigned int MUR, int disk, unsigned int quadrant, unsigned int position) = 0;
00580
00584 virtual void unmapEndcapMUR(unsigned int MUR) = 0;
00585
00589 virtual void mapPowerChannel(unsigned int MUR, unsigned int number, unsigned int partition, unsigned int crate, unsigned int channel) = 0;
00590
00594 virtual void unmapPowerChannel(unsigned int MUR, unsigned int number) = 0;
00595
00599 virtual void modifyDefaultPowerParam(std::string state, std::string name, std::string type, float value) = 0;
00600
00604 virtual void modifyHVCardParam(unsigned int crate, unsigned int card,
00605 std::string name, std::string type, float value) = 0;
00606
00610 virtual void modifyLVCardParam(unsigned int crate, unsigned int card,
00611 std::string name, std::string type, float value) = 0;
00612
00616 virtual void modifyPowerParam(unsigned int MUR, unsigned int number,
00617 std::string state, std::string name, std::string type, float value) = 0;
00618
00622 virtual void modifyPowerParamCC(unsigned int crate, unsigned int channel,
00623 std::string state, std::string name, std::string type, float value) = 0;
00624
00628 virtual float getDefaultPowerParam(std::string state, std::string name, std::string type) = 0;
00629
00633 virtual float getHVCardParam(unsigned int crate, unsigned int card,
00634 std::string name, std::string type) = 0;
00635
00639 virtual float getLVCardParam(unsigned int crate, unsigned int card,
00640 std::string name, std::string type) = 0;
00641
00645 virtual float getPowerParam(unsigned int MUR, unsigned int number,
00646 std::string state, std::string name, std::string type) = 0;
00647
00651 virtual float getPowerParamCC(unsigned int crate, unsigned int channel,
00652 std::string state, std::string name, std::string type) = 0;
00653
00657 virtual std::list<std::string> listDefaultPowerParams() = 0;
00658
00662 virtual std::list<std::string> listDCSChannelParams() = 0;
00663
00667 virtual std::list<std::string> listDCSCardParams() = 0;
00668
00672 virtual std::list<std::string> listDCSCrateParams() = 0;
00673
00677 virtual void loadConfiguration(const std::string &filename) = 0;
00678
00679
00680
00690 virtual void saveConfiguration(const std::string filename = "") = 0;
00691
00697 virtual void saveModuleConfiguration(const std::string modsn, const std::string filename) = 0;
00698
00702 virtual std::string getModuleConfigurationString(const std::string modsn, const ABCDModule config) = 0;
00703
00707 virtual void writePowerSupplyConfiguration(std::string filename) = 0;
00708 };
00709
00710 }
00711
00712 #endif
00713