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
00012
00013
00014
00015
00016
00017 namespace SctConfiguration {
00018
00022 struct SlaveConfig {
00023 std::string emifFile;
00024 std::string ipramFile;
00025 std::string idramFile;
00026 std::string extFile;
00027 };
00028
00032 struct RodConfig {
00033
00034
00036 unsigned long baseAddress;
00038 unsigned long mapSize;
00040 unsigned long resetLevel;
00042 long numSlaves;
00044 SlaveConfig slaves[4];
00045 };
00046
00050 struct TimConfig {
00052 unsigned long baseAddress;
00054 unsigned long mapSize;
00055 };
00056
00064 struct BOCChannelConfig {
00066 int current;
00068 int delay;
00070 int markSpace;
00072 int threshold0;
00074 int delay0;
00076 int threshold1;
00078 int delay1;
00079
00081 int txFibre;
00083 int rxFibre0;
00085 int rxFibre1;
00086 };
00087
00088 struct BOCGlobalConfig {
00094 int validMask;
00095
00096 int clockControl;
00097 int rxDataMode;
00098 int rxDacClear;
00099 int txDacClear;
00100 int vernierFinePhase;
00101 int vernierClockPhase0;
00102 int vernierClockPhase1;
00103 int bpmClockPhase;
00104 int bregClockPhase;
00105 };
00106
00107 enum MURType {BARREL, ENDCAP, UNMAPPED, UNKNOWN};
00108
00112 class ConfigurationException : public std::exception {
00113 std::string desc;
00114 public:
00116 ConfigurationException(const std::string &str) throw() : desc(str) {}
00117
00118 ~ConfigurationException() throw() {}
00119
00121 virtual const char* what () const throw() { return desc.c_str(); }
00122 };
00123
00151 class Configuration {
00152 public:
00156 virtual ~Configuration() {};
00157
00158
00159
00164 virtual std::list<unsigned int> listPartitions() = 0;
00165
00170 virtual std::list<unsigned int> listCratesInPartition(unsigned int partition) = 0;
00171
00175 virtual bool isDummyCrate(unsigned int partition, unsigned int crate) = 0;
00176
00181 virtual std::list<unsigned int> listRodsInCrate(unsigned int partition, unsigned int crate) = 0;
00182
00189 virtual std::list<unsigned int> listMURSInRod(unsigned int partition, unsigned int crate, unsigned int rod) = 0;
00190
00197 virtual std::list<std::string> listModulesInMUR(unsigned int partition, unsigned int MUR) = 0;
00198
00205 virtual std::list<std::string> listRModulesInMUR(unsigned int partition, unsigned int MUR) = 0;
00206
00212 virtual std::list<std::string> listAllModules() = 0;
00213
00217 virtual std::list<std::string> listUnusedModules() = 0;
00218
00219
00220
00226 virtual ABCDModule getModuleConfig(const std::string module) = 0;
00227
00233 virtual RodConfig getRodConfig(unsigned int partition, unsigned int crate, unsigned int rod) = 0;
00234
00240 virtual BOCChannelConfig getBOCConfig(unsigned int partition, unsigned int crate, unsigned int rod,
00241 unsigned int channel) = 0;
00242
00246 virtual BOCGlobalConfig getBOCGlobalConfig(unsigned int partition, unsigned int crate, unsigned int rod) = 0;
00247
00253 virtual char *getFibreMappings(unsigned int partition, unsigned int crate, unsigned int rod) = 0;
00254
00260 virtual TimConfig getTimConfig(unsigned int partition, unsigned int crate) = 0;
00261
00267 virtual void setFibreMapping(unsigned int partition, unsigned int crate, unsigned int rod,
00268 unsigned int channel, unsigned int tx, unsigned int rx0, unsigned int rx1) = 0;
00269
00273 virtual void printModuleConfig(const ABCDModule &conf) = 0;
00274
00275 virtual MURType getMURType(unsigned int MUR) = 0;
00276
00277
00278
00282 virtual void translateToROD(unsigned int MUR, unsigned int module,
00283 unsigned int &partition, unsigned int &crate,
00284 unsigned int &rod, unsigned int &channel) = 0;
00285
00292 virtual void translateToRROD(unsigned int MUR, unsigned int module,
00293 unsigned int &partition, unsigned int &crate,
00294 unsigned int &rod, unsigned int &channel) = 0;
00295
00299 virtual void translateToSN(unsigned int MUR, unsigned int module,
00300 std::string &sn) = 0;
00301
00305 virtual void translateToBarrel(unsigned int MUR, unsigned int module,
00306 unsigned int &barrel, unsigned int &row, int &number) = 0;
00307
00311 virtual void translateToEndcap(unsigned int MUR, unsigned int module,
00312 unsigned int &disk, unsigned int &ring, unsigned int &number) = 0;
00313
00317 virtual void translateToPowerSupply(unsigned int MUR, unsigned int module,
00318 unsigned int &partition,
00319 unsigned int &crate, unsigned int &channel) = 0;
00320
00324 virtual void translateFromROD(unsigned int partition, unsigned int crate,
00325 unsigned int rod, unsigned int channel,
00326 unsigned int &MUR, unsigned int &module) = 0;
00327
00334 virtual void translateFromRROD(unsigned int partition, unsigned int crate,
00335 unsigned int rod, unsigned int channel,
00336 unsigned int &MUR, unsigned int &module) = 0;
00337
00341 virtual void translateFromSN(const std::string sn,
00342 unsigned int &MUR, unsigned int &module) = 0;
00343
00347 virtual void translateFromBarrel(unsigned int barrel, unsigned int row, int number,
00348 unsigned int &MUR, unsigned int &module) = 0;
00349
00353 virtual void translateFromEndcap(unsigned int disk, unsigned int ring, unsigned int number,
00354 unsigned int &MUR, unsigned int &module) = 0;
00355
00359 virtual void translateFromPowerSupply(unsigned int partition,
00360 unsigned int crate, unsigned int channel,
00361 unsigned int &MUR, unsigned int &module) = 0;
00362
00363
00364
00365
00371 virtual void configureModuleFromStructure(const std::string module, const ABCDModule conf) = 0;
00372
00378 virtual void configureModuleFromFile(const std::string filename) = 0;
00379
00388 virtual void configureROD(unsigned int partition, unsigned int crate, unsigned int rod, RodConfig conf) = 0;
00389
00398 virtual void configureTIM(unsigned int partition, unsigned int crate, TimConfig conf) = 0;
00399
00403 virtual void configureBOC(unsigned int partition, unsigned int crate, unsigned int rod, const BOCGlobalConfig &conf) = 0;
00404
00409 virtual void clearAll() = 0;
00410
00424 virtual void namePartition(int partition, const std::string name) = 0;
00425
00429
00430
00434 virtual void configureBOCChannel(int MUR, int position, const BOCChannelConfig &conf) = 0;
00435
00439 virtual void mapModuleMUR(int MUR, int order, int RMUR, int rorder, std::string number) = 0;
00440
00444 virtual void mapRODMUR(int partition, int crate, int rod, int order, int number) = 0;
00445
00449 virtual void mapBarrelMUR(int MUR, int barrel, int row, int position) = 0;
00450
00457 virtual void swapMURNames(int MUR1, int MUR2) = 0;
00458
00459
00460
00464 virtual void mapEndcapMUR(int MUR, int disk, int quadrant, int position) = 0;
00465
00469 virtual void mapPowerChannel(int MUR, int number, unsigned int partition, unsigned int crate, unsigned int channel) = 0;
00470
00474 virtual void modifyPowerParam(int MUR, int number, std::string name, float value) = 0;
00475
00479 virtual void modifyDefaultPowerParam(std::string name, float value) = 0;
00480
00484 virtual float getPowerParam(int MUR, int number, std::string name) = 0;
00485
00489 virtual void loadConfiguration(const std::string &filename) = 0;
00490
00491
00492
00502 virtual void saveConfiguration(const std::string filename = "") = 0;
00503
00509 virtual void saveModuleConfiguration(const std::string modsn, const std::string filename) = 0;
00510
00514 virtual std::string getModuleConfigurationString(const std::string modsn, const ABCDModule config) = 0;
00515
00519 virtual void writePowerSupplyConfiguration(std::string filename) = 0;
00520 protected:
00526
00527
00531
00532
00536
00537
00541
00542
00546
00547
00551
00552
00553 };
00554
00555 }
00556
00557 #endif
00558