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