00001 #include <ipc/object.h>
00002 #include <ipc/server.h>
00003
00004 #include "sctConf.hh"
00005
00006 #include "sctConf/configXMLImpl.h"
00007
00008 #include <is/isinfo.h>
00009 #include <rc/RCStateInfo.h>
00010 #include <memory>
00011
00012 class ConfigServer : public IPCObject, public virtual sctConf_T_Configuration {
00014 ConfigurationXMLImpl config;
00015 std::auto_ptr<ISInfoReceiver> infoReceiver;
00016 RCStateInfo::activity_E lastState;
00017
00018 public:
00019
00020 ConfigServer(const char* oid, IPCServer* server);
00021 virtual ~ConfigServer();
00022
00023 void RCEvent(const RCStateInfo& info);
00024
00025
00026
00027 virtual sctConf_T_PartitionList listPartitions (sctConfStatus *_status);
00028 virtual sctConf_T_CrateList listCratesInPartition (sctConfStatus *_status, ilu_Cardinal partition);
00029 virtual ilu_Boolean isDummyCrate (sctConfStatus *_status, ilu_Cardinal partition, ilu_Cardinal crate);
00030 virtual sctConf_T_RodList listRodsInCrate (sctConfStatus *_status, ilu_Cardinal partition, ilu_Cardinal crate);
00031 virtual sctConf_T_MURList listMURSInRod (sctConfStatus *_status, ilu_Cardinal partition, ilu_Cardinal crate, ilu_Cardinal rod);
00032 virtual sctConf_T_ModuleList listModulesInMUR (sctConfStatus *_status, ilu_Cardinal partition, ilu_Cardinal MUR);
00033 virtual sctConf_T_ModuleList listRModulesInMUR (sctConfStatus *_status, ilu_Cardinal partition, ilu_Cardinal MUR);
00034 virtual sctConf_T_ModuleList listAllModules (sctConfStatus *_status);
00035 virtual sctConf_T_ModuleList listUnusedModules (sctConfStatus *_status);
00036 virtual sctConf_T_ABCDModule * getModuleConfig (sctConfStatus *_status, ilu_T_CString mod);
00037 virtual ilu_ShortCardinal getModuleGroup (sctConfStatus *_status, ilu_T_CString mod);
00038 virtual void setModuleGroup (sctConfStatus *_status, ilu_T_CString mod, ilu_ShortInteger group);
00039 virtual sctConf_T_RodConfig * getRodConfig (sctConfStatus *_status, ilu_Cardinal partition, ilu_Cardinal crate, ilu_Cardinal rod);
00040 virtual sctConf_T_SlaveConfig * getDefaultSlaveConfig (sctConfStatus *_status, ilu_Byte type);
00041 virtual sctConf_T_TimConfig * getTimConfig (sctConfStatus *_status, ilu_Cardinal partition, ilu_Cardinal crate);
00042 virtual sctConf_T_CharBlock getFibreMappings (sctConfStatus *_status, ilu_Cardinal partition, ilu_Cardinal crate, ilu_Cardinal rod);
00043 virtual void setFibreMapping (sctConfStatus *_status, ilu_Cardinal partition, ilu_Cardinal crate, ilu_Cardinal rod, ilu_Cardinal channel, ilu_Cardinal tx, ilu_Cardinal rx0, ilu_Cardinal rx1);
00044 virtual sctConf_T_BOCChannelConfig * getBOCConfig (sctConfStatus *_status, ilu_Cardinal partition, ilu_Cardinal crate, ilu_Cardinal rod, ilu_Cardinal channel);
00045 virtual sctConf_T_BOCGlobalConfig * getBOCGlobalConfig (sctConfStatus *_status, ilu_Cardinal partition, ilu_Cardinal crate, ilu_Cardinal rod);
00046 virtual void printModuleConfig (sctConfStatus *_status, sctConf_T_ABCDModule * conf);
00047 virtual sctConf_T_MURType getMURType (sctConfStatus *_status, ilu_Cardinal MUR);
00048 virtual ilu_Cardinal getFreeMurId (sctConfStatus *_status);
00049 virtual void translateToROD (sctConfStatus *_status, ilu_Cardinal MUR, ilu_Cardinal mod, ilu_Cardinal * partition, ilu_Cardinal * crate, ilu_Cardinal * rod, ilu_Cardinal * channel);
00050 virtual void translateToRROD (sctConfStatus *_status, ilu_Cardinal MUR, ilu_Cardinal mod, ilu_Cardinal * partition, ilu_Cardinal * crate, ilu_Cardinal * rod, ilu_Cardinal * channel);
00051 virtual void translateToSN (sctConfStatus *_status, ilu_Cardinal MUR, ilu_Cardinal mod, ilu_T_CString * sn);
00052 virtual void translateToRMUR (sctConfStatus *_status, ilu_Cardinal RMUR, ilu_Cardinal rmod, ilu_Cardinal * MUR, ilu_Cardinal * mod);
00053 virtual void translateToBarrel (sctConfStatus *_status, ilu_Cardinal MUR, ilu_Cardinal mod, ilu_Cardinal * barrel, ilu_Cardinal * row, ilu_Integer * number);
00054 virtual void translateToEndcap (sctConfStatus *_status, ilu_Cardinal MUR, ilu_Cardinal mod, ilu_Integer * disk, ilu_Cardinal * ring, ilu_Cardinal * number);
00055 virtual void translateToPowerSupply (sctConfStatus *_status, ilu_Cardinal MUR, ilu_Cardinal mod, ilu_Cardinal * partition, ilu_Cardinal * crate, ilu_Cardinal * channel);
00056 virtual void translateFromROD (sctConfStatus *_status, ilu_Cardinal partition, ilu_Cardinal crate, ilu_Cardinal rod, ilu_Cardinal channel, ilu_Cardinal * MUR, ilu_Cardinal * mod);
00057 virtual void translateFromRROD (sctConfStatus *_status, ilu_Cardinal partition, ilu_Cardinal crate, ilu_Cardinal rod, ilu_Cardinal channel, ilu_Cardinal * MUR, ilu_Cardinal * mod);
00058 virtual void translateFromSN (sctConfStatus *_status, ilu_T_CString sn, ilu_Cardinal * MUR, ilu_Cardinal * mod);
00059 virtual void translateFromRMUR (sctConfStatus *_status, ilu_Cardinal MUR, ilu_Cardinal mod, ilu_Cardinal * RMUR, ilu_Cardinal * rmod);
00060 virtual void translateFromBarrel (sctConfStatus *_status, ilu_Cardinal barrel, ilu_Cardinal row, ilu_Integer number, ilu_Cardinal * MUR, ilu_Cardinal * mod);
00061 virtual void translateFromEndcap (sctConfStatus *_status, ilu_Integer disk, ilu_Cardinal ring, ilu_Cardinal number, ilu_Cardinal * MUR, ilu_Cardinal * mod);
00062 virtual void translateFromPowerSupply (sctConfStatus *_status, ilu_Cardinal partition, ilu_Cardinal crate, ilu_Cardinal channel, ilu_Cardinal * MUR, ilu_Cardinal * mod);
00063 virtual void configureModuleFromStructure (sctConfStatus *_status, ilu_T_CString number, sctConf_T_ABCDModule * mConf);
00064 virtual void configureModuleFromFile (sctConfStatus *_status, ilu_T_CString filename);
00065 virtual void configureROD (sctConfStatus *_status, ilu_Cardinal partition, ilu_Cardinal crate, ilu_Cardinal rod, sctConf_T_RodConfig * conf);
00066 virtual void configureTIM (sctConfStatus *_status, ilu_Cardinal partition, ilu_Cardinal crate, sctConf_T_TimConfig * conf);
00067 virtual void configureBOC (sctConfStatus *_status, ilu_Cardinal partition, ilu_Cardinal crate, ilu_Cardinal rod, sctConf_T_BOCGlobalConfig * conf);
00068 virtual void clearAll (sctConfStatus *_status);
00069 virtual void namePartition (sctConfStatus *_status, ilu_Cardinal partition, ilu_T_CString name);
00070 virtual void mapRODMUR (sctConfStatus *_status, ilu_Cardinal partition, ilu_Cardinal crate, ilu_Cardinal rod, ilu_Cardinal order, ilu_Cardinal number);
00071 virtual void unmapRODMUR (sctConfStatus *_status, ilu_Cardinal MUR);
00072 virtual void mapBarrelMUR (sctConfStatus *_status, ilu_Cardinal MUR, ilu_Cardinal barrel, ilu_Cardinal row, ilu_Integer position);
00073 virtual void unmapBarrelMUR (sctConfStatus *_status, ilu_Cardinal MUR);
00074 virtual void mapEndcapMUR (sctConfStatus *_status, ilu_Cardinal MUR, ilu_Integer disk, ilu_Cardinal quadrant, ilu_Cardinal position);
00075 virtual void unmapEndcapMUR (sctConfStatus *_status, ilu_Cardinal MUR);
00076 virtual void mapPowerChannel (sctConfStatus *_status, ilu_Cardinal MUR, ilu_Cardinal number, ilu_Cardinal partition, ilu_Cardinal crate, ilu_Cardinal channel);
00077 virtual void unmapPowerChannel (sctConfStatus *_status, ilu_Cardinal MUR, ilu_Cardinal number);
00078 virtual void mapModuleMUR (sctConfStatus *_status, ilu_Cardinal MUR, ilu_Cardinal order, ilu_Cardinal RMUR, ilu_Cardinal rorder, ilu_T_CString sn);
00079 virtual void unmapModuleMUR (sctConfStatus *_status, ilu_Cardinal MUR, ilu_Cardinal order);
00080 virtual void getMapMURROD (sctConfStatus *_status, ilu_Cardinal MUR, ilu_Cardinal * partition, ilu_Cardinal * crate, ilu_Cardinal * rod, ilu_Cardinal * order);
00081 virtual void getMapRODMUR (sctConfStatus *_status, ilu_Cardinal partition, ilu_Cardinal crate, ilu_Cardinal rod, ilu_Cardinal order, ilu_Cardinal * MUR);
00082 virtual sctConf_T_MURType getMapMURPhysical (sctConfStatus *_status, ilu_Cardinal MUR, ilu_Cardinal * plane, ilu_Cardinal * section, ilu_Cardinal * position);
00083 virtual void swapMURNames (sctConfStatus *_status, ilu_Cardinal MUR1, ilu_Cardinal MUR2);
00084 virtual void modifyDefaultPowerParam (sctConfStatus *_status, ilu_T_CString state, ilu_T_CString name, ilu_T_CString type, ilu_ShortReal value);
00085 virtual void modifyHVCardParam (sctConfStatus *_status, ilu_Cardinal crate, ilu_Cardinal card, ilu_T_CString name, ilu_T_CString type, ilu_ShortReal value);
00086 virtual void modifyLVCardParam (sctConfStatus *_status, ilu_Cardinal crate, ilu_Cardinal card, ilu_T_CString name, ilu_T_CString type, ilu_ShortReal value);
00087 virtual void modifyPowerParam (sctConfStatus *_status, ilu_Cardinal MUR, ilu_Cardinal number, ilu_T_CString state, ilu_T_CString name, ilu_T_CString type, ilu_ShortReal value);
00088 virtual void modifyPowerParamCC (sctConfStatus *_status, ilu_Cardinal crate, ilu_Cardinal channel, ilu_T_CString state, ilu_T_CString name, ilu_T_CString type, ilu_ShortReal value);
00089 virtual ilu_ShortReal getDefaultPowerParam (sctConfStatus *_status, ilu_T_CString state, ilu_T_CString name, ilu_T_CString type);
00090 virtual ilu_ShortReal getHVCardParam (sctConfStatus *_status, ilu_Cardinal crate, ilu_Cardinal card, ilu_T_CString name, ilu_T_CString type);
00091 virtual ilu_ShortReal getLVCardParam (sctConfStatus *_status, ilu_Cardinal crate, ilu_Cardinal card, ilu_T_CString name, ilu_T_CString type);
00092 virtual ilu_ShortReal getPowerParam (sctConfStatus *_status, ilu_Cardinal MUR, ilu_Cardinal number, ilu_T_CString state, ilu_T_CString name, ilu_T_CString type);
00093 virtual ilu_ShortReal getPowerParamCC (sctConfStatus *_status, ilu_Cardinal crate, ilu_Cardinal channel, ilu_T_CString state, ilu_T_CString name, ilu_T_CString type);
00094 virtual sctConf_T_NameList listDefaultPowerParams (sctConfStatus *_status);
00095 virtual ilu_ShortReal getCratePowerParam (sctConfStatus *_status, ilu_Cardinal crate, ilu_T_CString name);
00096 virtual sctConf_T_NameList listDCSChannelParams (sctConfStatus *_status);
00097 virtual sctConf_T_NameList listDCSCardParams (sctConfStatus *_status);
00098 virtual sctConf_T_NameList listDCSCrateParams (sctConfStatus *_status);
00099 virtual void configureBOCChannel (sctConfStatus *_status, ilu_Cardinal MUR, ilu_Cardinal position, sctConf_T_BOCChannelConfig * conf);
00100 virtual void loadConfiguration (sctConfStatus *_status, ilu_T_CString filename);
00101 virtual void saveConfiguration (sctConfStatus *_status, ilu_T_CString filename);
00102 virtual void saveModuleConfiguration (sctConfStatus *_status, ilu_T_CString sn, ilu_T_CString filename);
00103 virtual ilu_T_CString getModuleConfigurationString (sctConfStatus *_status, ilu_T_CString modsn, sctConf_T_ABCDModule * config);
00104 virtual void writePowerSupplyConfiguration (sctConfStatus *_status, ilu_T_CString directory);
00105 };