ModuleConfigurationStreamer_v1.cpp

00001 #include "ModuleConfigurationStreamer_v1.h"
00002 #include "../ModuleConfiguration.h"
00003 #include <Sct/AbcdModule.h>
00004 
00005 namespace SctData {
00006 namespace IO {
00007 
00008 unsigned ModuleConfigurationStreamer_v1::s_version=1;
00009 /* READ NOTES ON STREAMERS AND VERSIONS BEFORE EDITING THIS FILE! */
00010 
00011 ModuleConfigurationStreamer_v1::ModuleConfigurationStreamer_v1() throw() {}
00012     
00013 bool ModuleConfigurationStreamer_v1::inMap = IOManager::addToMap("SctData::ModuleConfiguration",  std::auto_ptr<Streamer>(new ModuleConfigurationStreamer_v1()));
00014 
00015 
00016 shared_ptr<Streamable> ModuleConfigurationStreamer_v1::read(IStream& in, const IOManager& manager) const throw(LogicError, IoError) {
00017     shared_ptr<Streamable> m (new ModuleConfiguration());
00018     read(in, *m, manager);
00019     return m;
00020 }
00021 
00022 void ModuleConfigurationStreamer_v1::write(OStream& out, const Streamable& ob, const IOManager& manager) const throw(LogicError, IoError) {
00023     const ModuleConfiguration& config = dynamic_cast<const ModuleConfiguration&>(ob);
00024     const ABCDModule& data = config.getABCDModule();
00025     
00026     for (unsigned int i=0; i<Sct::nChipModule; ++i) {
00027     writeChipConfig(out, data.chip[i]);
00028     }
00029     out << data.present << data.active << data.select << data.groupId << data.pTTC << data.rTTC;
00030     out.put(data.rx, 2);  
00031     //cout << (int) data.rx[3] << endl;
00032 }
00033 
00034 void ModuleConfigurationStreamer_v1::read(IStream& in, Streamable& ob, const IOManager& manager) const throw(LogicError, IoError) {
00035     ModuleConfiguration& config = dynamic_cast<ModuleConfiguration&>(ob);
00036     ABCDModule& data = config.getABCDModule();
00037     
00038     for (unsigned int i=0; i<Sct::nChipModule; ++i) {
00039     readChipConfig(in, data.chip[i]);
00040     }
00041     in >> data.present >> data.active >> data.select >> data.groupId >> data.pTTC >> data.rTTC;
00042     in.get(data.rx, 2);
00043     //cout << "data.groupId: " << (int)data.groupId  << endl;
00044     //cout << (int)data.rx[3] << endl;
00045 }
00046 
00047 void ModuleConfigurationStreamer_v1::writeChipConfig(OStream& out, const ABCDChip& data) const throw(Sct::LogicError, Sct::IoError){
00048     out << data.active << data.address << data.target;
00049       
00050     //ABCDBasic stuff:
00051     
00052     //Config values
00053     out << (UINT16)data.basic.config.readoutMode << (UINT16)data.basic.config.calibMode << (UINT16)data.basic.config.trimRange;
00054     out << (UINT16)data.basic.config.edgeDetect << (UINT16)data.basic.config.mask << (UINT16)data.basic.config.accumulate;
00055     out << (UINT16)data.basic.config.inputBypass << (UINT16)data.basic.config.outputBypass << (UINT16)data.basic.config.master;
00056     out << (UINT16)data.basic.config.end << (UINT16)data.basic.config.feedThrough;
00057     
00058     out << data.basic.vthr << data.basic.vcal << data.basic.delay << data.basic.preamp << data.basic.shaper;
00059     out.put(data.basic.mask, 4);
00060     
00061     //ABCDCalData
00062     out << data.caldata.rc_function;
00063     out.put(data.caldata.rc_params, 3);
00064     out << data.caldata.c_factor;
00065     
00066     out.put(data.trim, Sct::nChannelChip);
00067 }
00068 
00069 void ModuleConfigurationStreamer_v1::readChipConfig(IStream& in, ABCDChip& data) const throw(Sct::LogicError, Sct::IoError) {
00070     in >> data.active >> data.address >> data.target;
00071     
00072     //ABCDBasic stuff:
00073     
00074     //Config values    
00075     UINT16 temp = 0;
00076     in >> temp;
00077     data.basic.config.readoutMode = temp;
00078     in >> temp;
00079     data.basic.config.calibMode = temp;
00080     in >> temp;
00081     data.basic.config.trimRange = temp;
00082     in >> temp;
00083     data.basic.config.edgeDetect = temp;
00084     in >> temp;
00085     data.basic.config.mask = temp;
00086     in >> temp;
00087     data.basic.config.accumulate = temp;
00088     in >> temp;
00089     data.basic.config.inputBypass = temp;
00090     in >> temp;
00091     data.basic.config.outputBypass = temp;
00092     in >> temp;
00093     data.basic.config.master = temp;
00094     in >> temp;
00095     data.basic.config.end = temp;
00096     in >> temp;
00097     data.basic.config.feedThrough = temp;
00098     
00099     in >> data.basic.vthr >> data.basic.vcal >> data.basic.delay >> data.basic.preamp >> data.basic.shaper;
00100     in.get(data.basic.mask, 4);
00101     
00102     //ABCDCalData
00103     in >> data.caldata.rc_function;
00104     //cout << "rc_function: " << (int)data.caldata.rc_function << endl;
00105     in.get(data.caldata.rc_params, 3);
00106     in >> data.caldata.c_factor;
00107     
00108     in.get(data.trim, Sct::nChannelChip);
00109     //cout << "data.trim[35]" << (int)data.trim[35] << endl;    
00110 }
00111 }
00112 }

Generated on Mon Feb 6 14:01:23 2006 for SCT DAQ/DCS Software - C++ by  doxygen 1.4.6