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

marshalling.h

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 /*   realConfig.mapSize = iluConfig->mapSize; */
00038   realConfig.resetLevel = iluConfig->resetLevel;
00039 /*   realConfig.numSlaves = iluConfig->numSlaves; */
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 /*   result->mapSize = config.mapSize; */
00076 /*   result->numSlaves = config.numSlaves; */
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 /*   result.mapSize = iluConfig->mapSize; */
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 /*   res->mapSize = config.mapSize; */
00186   res->trigFrequency = config.trigFrequency;
00187   res->resetFrequency = config.resetFrequency;
00188 
00189   return res;
00190 }
00191 
00192 #endif //SCTCONF_MARSHALLING_H

Generated on Thu Jul 15 09:50:48 2004 for SCT DAQ/DCS Software - C++ by doxygen 1.3.5