00001 #include "Configuration.h" 00002 #include "ScanMap.h" 00003 #include "Sct/Env.h" 00004 #include "Sct/IoExceptions.h" 00005 #include "Sct/OmniMarshalling.h" 00006 #include "Sct_SctApi/SctApiServer.h" 00007 #include "Sct/SctNames.h" 00008 00009 using namespace Sct; 00010 00011 namespace SctTest { 00012 00013 Configuration::Configuration() : IPCNamedObject<POA_SctTestApi::Configuration>(SctNames::getPartition(), SctTestApi::Configuration::instanceName){ 00014 try { 00015 handy_setDataFile("${SCT_DAQ_ROOT}/installed/config/TestConfig/ModuleData.txt"); 00016 } catch (Sct::FileException& fe) { 00017 fe.sendToMrs(MRS_INFORMATION); 00018 } 00019 handy_setFastTimes(); 00020 //handy_setRealisticTimes(); 00021 } 00022 00023 Configuration& Configuration::instance() { 00024 static Configuration configuration; 00025 return configuration; 00026 } 00027 00028 void Configuration::handy_setDataFile(string file) { 00029 string temp = Env::substituteVariables(file); 00030 ScanMap::instance().initialize(temp); 00031 dataFile = temp; 00032 } 00033 00034 string Configuration::handy_getDataFile() const { 00035 return dataFile; 00036 } 00037 00038 void Configuration::handy_setFastTimes() { 00039 handy_setScanTime(5); 00040 handy_setReadoutTime(1); 00041 handy_setMultiDspEfficiency(1); 00042 } 00043 00044 void Configuration::handy_setRealisticTimes() { 00045 handy_setScanTime(30); 00046 handy_setReadoutTime(1); 00047 handy_setMultiDspEfficiency(0.9); 00048 } 00049 00050 void Configuration::handy_setScanTime(unsigned int time) { 00051 scanTime = time; 00052 } 00053 00054 unsigned int Configuration::handy_getScanTime() const { 00055 return scanTime; 00056 } 00057 00058 void Configuration::handy_setMultiDspEfficiency(double efficiency) { 00059 dspEfficiency = efficiency; 00060 } 00061 00062 double Configuration::handy_getMultiDspEfficiency() const { 00063 return dspEfficiency; 00064 } 00065 00066 void Configuration::handy_setReadoutTime(unsigned int time) { 00067 readoutTime = time; 00068 } 00069 00070 unsigned int Configuration::handy_getReadoutTime() const { 00071 return readoutTime; 00072 } 00073 00074 //CORBA methods: 00075 void Configuration::setDataFile (const char * file) { 00076 try { 00077 handy_setDataFile(file); 00078 } catch (Sct::FileException& e) { 00079 //_status->returnCode = 00080 throw SctTestApi::NoSuchFileException(); 00081 } 00082 } 00083 00084 char * Configuration::getDataFile () { 00085 return copyStringToCorba(handy_getDataFile()); 00086 } 00087 00088 void Configuration::setFastTimes () { 00089 handy_setFastTimes(); 00090 } 00091 00092 void Configuration::setRealisticTimes () { 00093 handy_setRealisticTimes(); 00094 } 00095 00096 void Configuration::setScanTime (CORBA::Long time) { 00097 handy_setScanTime(time); 00098 } 00099 00100 CORBA::Long Configuration::getScanTime () { 00101 return handy_getScanTime(); 00102 } 00103 00104 void Configuration::setMultiDspEfficiency (CORBA::Double efficiency) { 00105 handy_setMultiDspEfficiency(efficiency); 00106 } 00107 00108 CORBA::Double Configuration::getMultiDspEfficiency () { 00109 return handy_getMultiDspEfficiency(); 00110 } 00111 00112 void Configuration::setReadoutTime (CORBA::Long time) { 00113 handy_setReadoutTime(time); 00114 } 00115 00116 CORBA::Long Configuration::getReadoutTime () { 00117 return handy_getReadoutTime(); 00118 } 00119 00120 }