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 long numSlaves;
00042 SlaveConfig slaves[4];
00043 };
00044
00048 struct TimConfig {
00050 unsigned long baseAddress;
00052 unsigned long mapSize;
00053 };
00054
00062 struct BOCChannelConfig {
00064 int current;
00066 int delay;
00068 int markSpace;
00070 int threshold0;
00072 int delay0;
00074 int threshold1;
00076 int delay1;
00077
00079 int txFibre;
00081 int rxFibre0;
00083 int rxFibre1;
00084 };
00085
00086 enum MURType {BARREL, ENDCAP, UNMAPPED, UNKNOWN};
00087
00091 class ConfigurationException : public std::exception {
00092 std::string desc;
00093 public:
00095 ConfigurationException(const std::string &str) throw() : desc(str) {}
00096
00097 ~ConfigurationException() throw() {}
00098
00100 virtual const char* what () const throw() { return desc.c_str(); }
00101 };
00102
00130 class Configuration {
00131 public:
00135 virtual ~Configuration() {};
00136
00137
00138
00143 virtual std::list<unsigned int> listPartitions() = 0;
00144
00149 virtual std::list<unsigned int> listCratesInPartition(unsigned int partition) = 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
00207 virtual RodConfig getRodConfig(unsigned int partition, unsigned int crate, unsigned int rod) = 0;
00208
00214 virtual BOCChannelConfig getBOCConfig(unsigned int partition, unsigned int crate, unsigned int rod,
00215 unsigned int channel) = 0;
00216
00222 virtual char *getFibreMappings(unsigned int partition, unsigned int crate, unsigned int rod) = 0;
00223
00229 virtual TimConfig getTimConfig(unsigned int partition, unsigned int crate) = 0;
00230
00236 virtual void setFibreMapping(unsigned int partition, unsigned int crate, unsigned int rod,
00237 unsigned int channel, unsigned int tx, unsigned int rx0, unsigned int rx1) = 0;
00238
00242 virtual void printModuleConfig(const ABCDModule &conf) = 0;
00243
00244 virtual MURType getMURType(unsigned int MUR) = 0;
00245
00246
00247
00251 virtual void translateToROD(unsigned int MUR, unsigned int module,
00252 unsigned int &partition, unsigned int &crate,
00253 unsigned int &rod, unsigned int &channel) = 0;
00254
00261 virtual void translateToRROD(unsigned int MUR, unsigned int module,
00262 unsigned int &partition, unsigned int &crate,
00263 unsigned int &rod, unsigned int &channel) = 0;
00264
00268 virtual void translateToSN(unsigned int MUR, unsigned int module,
00269 std::string &sn) = 0;
00270
00274 virtual void translateToBarrel(unsigned int MUR, unsigned int module,
00275 unsigned int &barrel, unsigned int &row, int &number) = 0;
00276
00280 virtual void translateToEndcap(unsigned int MUR, unsigned int module,
00281 unsigned int &disk, unsigned int &ring, unsigned int &number) = 0;
00282
00286 virtual void translateToPowerSupply(unsigned int MUR, unsigned int module,
00287 unsigned int &partition,
00288 unsigned int &crate, unsigned int &channel) = 0;
00289
00293 virtual void translateFromROD(unsigned int partition, unsigned int crate,
00294 unsigned int rod, unsigned int channel,
00295 unsigned int &MUR, unsigned int &module) = 0;
00296
00303 virtual void translateFromRROD(unsigned int partition, unsigned int crate,
00304 unsigned int rod, unsigned int channel,
00305 unsigned int &MUR, unsigned int &module) = 0;
00306
00310 virtual void translateFromSN(const std::string sn,
00311 unsigned int &MUR, unsigned int &module) = 0;
00312
00316 virtual void translateFromBarrel(unsigned int barrel, unsigned int row, int number,
00317 unsigned int &MUR, unsigned int &module) = 0;
00318
00322 virtual void translateFromEndcap(unsigned int disk, unsigned int ring, unsigned int number,
00323 unsigned int &MUR, unsigned int &module) = 0;
00324
00328 virtual void translateFromPowerSupply(unsigned int partition,
00329 unsigned int crate, unsigned int channel,
00330 unsigned int &MUR, unsigned int &module) = 0;
00331
00332
00333
00334
00340 virtual void configureModuleFromStructure(const std::string module, const ABCDModule conf) = 0;
00341
00347 virtual void configureModuleFromFile(const std::string filename) = 0;
00348
00357 virtual void configureROD(unsigned int partition, unsigned int crate, unsigned int rod, RodConfig conf) = 0;
00358
00367 virtual void configureTIM(unsigned int partition, unsigned int crate, TimConfig conf) = 0;
00368
00373 virtual void clearAll() = 0;
00374
00388 virtual void namePartition(int partition, const std::string name) = 0;
00389
00393
00394
00398 virtual void configureBOCChannel(int MUR, int position, const BOCChannelConfig &conf) = 0;
00399
00403 virtual void mapModuleMUR(int MUR, int order, int RMUR, int rorder, std::string number) = 0;
00404
00408 virtual void mapRODMUR(int partition, int crate, int rod, int order, int number) = 0;
00409
00413 virtual void mapBarrelMUR(int MUR, int barrel, int row, int position) = 0;
00414
00421 virtual void swapMURNames(int MUR1, int MUR2) = 0;
00422
00423
00424
00428 virtual void mapEndcapMUR(int MUR, int disk, int quadrant, int position) = 0;
00429
00433 virtual void mapPowerChannel(int MUR, int number, unsigned int partition, unsigned int crate, unsigned int channel) = 0;
00434
00438 virtual void modifyPowerParam(int MUR, int number, std::string name, float value) = 0;
00439
00443 virtual void modifyDefaultPowerParam(std::string name, float value) = 0;
00444
00448 virtual float getPowerParam(int MUR, int number, std::string name) = 0;
00449
00453 virtual void loadConfiguration(const std::string &filename) = 0;
00454
00455
00456
00466 virtual void saveConfiguration(const std::string filename = "") = 0;
00467
00473 virtual void saveModuleConfiguration(const std::string modsn, const std::string filename) = 0;
00474
00478 virtual std::string getModuleConfigurationString(const std::string modsn, const ABCDModule config) = 0;
00479
00483 virtual void writePowerSupplyConfiguration(std::string filename) = 0;
00484 protected:
00490
00491
00495
00496
00500
00501
00505
00506
00510
00511
00515
00516
00517 };
00518
00519 }
00520
00521 #endif
00522