Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Related Pages

configuration.h

00001 #ifndef SCTAPI_CONFIGURATION
00002 #define SCTAPI_CONFIGURATION
00003 
00004 #include <list>
00005 #include <string>
00006 #include <stdexcept>
00007 
00008 // For ABCDModule
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 /*   /// Is there a BOC? (Shouldn't be necessary) */
00028 /*   bool bocPresent; */
00030   unsigned long baseAddress;
00031 /*   /// VME map size */
00032 /*   unsigned long mapSize; */
00034   unsigned long resetLevel;
00036   SlaveConfig slaves[4];
00037 };
00038 
00042 struct TimConfig {
00044   unsigned long baseAddress;
00045 /*   /// VME map size */
00046 /*   unsigned long mapSize; */
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   /************* Get physical configuration ****************/
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   /************** Get configurations *****************/
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   /************** Change indexing schemes ****************/
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   /************** Change configuration ******************/
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 /*virtual    void setBOCConfig(int partition, int crate, int rod, int channel, const BOCChannelConfig &conf) = 0; */
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     Get mapping of MUR to physical structure
00561   */
00562   virtual void getMapMURPhysical(unsigned int MUR, MURType &type, int &plane, int &section, int &position) = 0;
00563 
00570   virtual void swapMURNames(unsigned int MUR1, unsigned int MUR2) = 0;
00571 
00572 /* #warning "Need to think more about endcap mappings" */
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   /************** Save configuration *********************/
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 

Generated on Fri Sep 16 18:01:49 2005 for SCT DAQ/DCS Software - C++ by doxygen 1.3.5