00001 #ifndef SCTCONF_MARSHALLING_H
00002 #define SCTCONF_MARSHALLING_H
00003
00004 #include "sctConf.hh"
00005 #include "sctConf/configuration.h"
00006 #include "CommonWithDsp/sctStructure.h"
00007
00008 ABCDModule copyILUToABCDModule(const sctConf_T_ABCDModule& iluModule) {
00010 assert(sizeof(ABCDModule) == sizeof(sctConf_T_ABCDModule));
00011
00012 return ABCDModule(reinterpret_cast<const ABCDModule&>(iluModule));
00013 }
00014
00015 sctConf_T_ABCDModule* copyABCDModuleToILU(const ABCDModule &module) {
00016
00018 assert(sizeof(ABCDModule) == sizeof(sctConf_T_ABCDModule));
00019
00020 return new sctConf_T_ABCDModule(reinterpret_cast<const sctConf_T_ABCDModule&>(module)) ;
00021 }
00022
00023 SctConfiguration::SlaveConfig copyILUToSlaveConfig(sctConf_T_SlaveConfig *iluConfig) {
00024 SctConfiguration::SlaveConfig realConfig;
00025
00026 realConfig.ipramFile = iluConfig->ipramFile;
00027 realConfig.idramFile = iluConfig->idramFile;
00028 realConfig.extFile = iluConfig->extFile;
00029
00030 return realConfig;
00031 }
00032
00033 SctConfiguration::RodConfig copyILUToRodConfig(sctConf_T_RodConfig *iluConfig) {
00034 SctConfiguration::RodConfig realConfig;
00035
00036 realConfig.baseAddress = iluConfig->baseAddress;
00037
00038 realConfig.resetLevel = iluConfig->resetLevel;
00039
00040
00041 if(iluConfig->slaves->Length() != 4) {
00042 throw SctConfiguration::ConfigurationException("RodConfig must contain 4 slaves!");
00043 }
00044
00045 for(int i=0; i<4; i++) {
00046 realConfig.slaves[i] = copyILUToSlaveConfig(iluConfig->slaves->Nth(i));
00047 }
00048
00049 return realConfig;
00050 }
00051
00052 sctConf_T_SlaveConfig *copySlaveConfigToILU(const SctConfiguration::SlaveConfig &config) {
00053 sctConf_T_SlaveConfig *result = new sctConf_T_SlaveConfig;
00054
00055 result->ipramFile = (char *)malloc((config.ipramFile.length()+1) * sizeof(char));
00056 strncpy(result->ipramFile, config.ipramFile.c_str(), config.ipramFile.length());
00057 result->ipramFile[config.ipramFile.length()] = 0;
00058
00059 result->idramFile = (char *)malloc((config.idramFile.length()+1) * sizeof(char));
00060 strncpy(result->idramFile, config.idramFile.c_str(), config.idramFile.length());
00061 result->idramFile[config.idramFile.length()] = 0;
00062
00063 result->extFile = (char *)malloc((config.extFile.length()+1) * sizeof(char));
00064 strncpy(result->extFile, config.extFile.c_str(), config.extFile.length());
00065 result->extFile[config.extFile.length()] = 0;
00066
00067 return result;
00068 }
00069
00070 sctConf_T_RodConfig *copyRodConfigToILU(const SctConfiguration::RodConfig &config) {
00071 sctConf_T_RodConfig *result = new sctConf_T_RodConfig;
00072
00073 result->baseAddress = config.baseAddress;
00074 result->resetLevel = config.resetLevel;
00075
00076
00077
00078 result->slaves = _sctConf_T_SlaveList_sequence::Create(4, NULL);
00079 result->slaves->Clear(0);
00080
00081 for(int i=0; i<4; i++) {
00082 sctConf_T_SlaveConfig *slave = new sctConf_T_SlaveConfig;
00083
00084 const SctConfiguration::SlaveConfig &conf = config.slaves[i];
00085
00086 slave->ipramFile = (char *)malloc((conf.ipramFile.length()+1) * sizeof(char));
00087 strncpy(slave->ipramFile, conf.ipramFile.c_str(), conf.ipramFile.length());
00088 slave->ipramFile[conf.ipramFile.length()] = 0;
00089
00090 slave->idramFile = (char *)malloc((conf.idramFile.length()+1) * sizeof(char));
00091 strncpy(slave->idramFile, conf.idramFile.c_str(), conf.idramFile.length());
00092 slave->idramFile[conf.idramFile.length()] = 0;
00093
00094 slave->extFile = (char *)malloc((conf.extFile.length()+1) * sizeof(char));
00095 strncpy(slave->extFile, conf.extFile.c_str(), conf.extFile.length());
00096 slave->extFile[conf.extFile.length()] = 0;
00097
00098 result->slaves->Append(slave);
00099 }
00100
00101 return result;
00102 }
00103
00104 SctConfiguration::BOCChannelConfig copyILUToBOCChannelConfig(sctConf_T_BOCChannelConfig *iluConfig) {
00105 SctConfiguration::BOCChannelConfig newConf;
00106
00107 newConf.current = iluConfig->current;
00108 newConf.delay = iluConfig->delay;
00109 newConf.markSpace = iluConfig->markSpace;
00110
00111 newConf.threshold0 = iluConfig->threshold0;
00112 newConf.delay0 = iluConfig->delay0;
00113
00114 newConf.threshold1 = iluConfig->threshold1;
00115 newConf.delay1 = iluConfig->delay1;
00116
00117 return newConf;
00118 }
00119
00120 sctConf_T_BOCChannelConfig *copyBOCChannelConfigToILU(const SctConfiguration::BOCChannelConfig &config) {
00121 sctConf_T_BOCChannelConfig *res = new sctConf_T_BOCChannelConfig;
00122
00123 res->current = config.current;
00124 res->delay = config.delay;
00125 res->markSpace = config.markSpace;
00126
00127 res->threshold0 = config.threshold0;
00128 res->delay0 = config.delay0;
00129
00130 res->threshold1 = config.threshold1;
00131 res->delay1 = config.delay1;
00132
00133 return res;
00134 }
00135
00136 SctConfiguration::BOCGlobalConfig copyILUToBOCGlobalConfig(sctConf_T_BOCGlobalConfig *iluConfig) {
00137 SctConfiguration::BOCGlobalConfig newConf;
00138
00139 newConf.validMask = iluConfig->validMask;
00140 newConf.clockControl = iluConfig->clockControl;
00141 newConf.rxDataMode = iluConfig->rxDataMode;
00142 newConf.rxDacClear = iluConfig->rxDacClear;
00143 newConf.txDacClear = iluConfig->txDacClear;
00144 newConf.vernierFinePhase = iluConfig->vernierFinePhase;
00145 newConf.vernierClockPhase0 = iluConfig->vernierClockPhase0;
00146 newConf.vernierClockPhase1 = iluConfig->vernierClockPhase1;
00147 newConf.bpmClockPhase = iluConfig->bpmClockPhase;
00148 newConf.bregClockPhase = iluConfig->bregClockPhase;
00149
00150 return newConf;
00151 }
00152
00153 sctConf_T_BOCGlobalConfig *copyBOCGlobalConfigToILU(const SctConfiguration::BOCGlobalConfig &config) {
00154 sctConf_T_BOCGlobalConfig *res = new sctConf_T_BOCGlobalConfig;
00155
00156 res->validMask = config.validMask;
00157 res->clockControl = config.clockControl;
00158 res->rxDataMode = config.rxDataMode;
00159 res->rxDacClear = config.rxDacClear;
00160 res->txDacClear = config.txDacClear;
00161 res->vernierFinePhase = config.vernierFinePhase;
00162 res->vernierClockPhase0 = config.vernierClockPhase0;
00163 res->vernierClockPhase1 = config.vernierClockPhase1;
00164 res->bpmClockPhase = config.bpmClockPhase;
00165 res->bregClockPhase = config.bregClockPhase;
00166
00167 return res;
00168 }
00169
00170 SctConfiguration::TimConfig copyILUToTimConfig(sctConf_T_TimConfig *iluConfig) {
00171 SctConfiguration::TimConfig result;
00172
00173 result.baseAddress = iluConfig->baseAddress;
00174
00175 result.trigFrequency = iluConfig->trigFrequency;
00176 result.resetFrequency = iluConfig->resetFrequency;
00177
00178 return result;
00179 }
00180
00181 sctConf_T_TimConfig *copyTimConfigToILU(const SctConfiguration::TimConfig &config) {
00182 sctConf_T_TimConfig *res = new sctConf_T_TimConfig;
00183
00184 res->baseAddress = config.baseAddress;
00185
00186 res->trigFrequency = config.trigFrequency;
00187 res->resetFrequency = config.resetFrequency;
00188
00189 return res;
00190 }
00191
00192 #endif //SCTCONF_MARSHALLING_H