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

ModuleConfigurationStreamer.cpp

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

Generated on Mon Dec 15 19:36:06 2003 for SCT DAQ/DCS Software by doxygen1.3-rc3