00001
00002
00003
00004 #include "psddl_pds2psana/genericpgp.ddl.h"
00005
00006 #include <cstddef>
00007
00008 #include <stdexcept>
00009
00010 namespace psddl_pds2psana {
00011 namespace GenericPgp {
00012 CDimension::CDimension(const boost::shared_ptr<const XtcType>& xtcPtr)
00013 : Psana::GenericPgp::CDimension()
00014 , m_xtcObj(xtcPtr)
00015 {
00016 }
00017 CDimension::~CDimension()
00018 {
00019 }
00020
00021
00022 uint32_t CDimension::rows() const {
00023 return m_xtcObj->rows();
00024 }
00025
00026
00027 uint32_t CDimension::columns() const {
00028 return m_xtcObj->columns();
00029 }
00030
00031 Psana::GenericPgp::CRegister::Action pds_to_psana(Pds::GenericPgp::CRegister::Action e)
00032 {
00033 return Psana::GenericPgp::CRegister::Action(e);
00034 }
00035
00036 Psana::GenericPgp::CRegister pds_to_psana(Pds::GenericPgp::CRegister pds)
00037 {
00038 return Psana::GenericPgp::CRegister(pds_to_psana(pds.action()), pds.datasize(), pds.address(), pds.offset(), pds.mask());
00039 }
00040
00041 Psana::GenericPgp::CStream pds_to_psana(Pds::GenericPgp::CStream pds)
00042 {
00043 return Psana::GenericPgp::CStream(pds.pgp_channel(), pds.data_type(), pds.config_type(), pds.config_offset());
00044 }
00045
00046 ConfigV1::ConfigV1(const boost::shared_ptr<const XtcType>& xtcPtr)
00047 : Psana::GenericPgp::ConfigV1()
00048 , m_xtcObj(xtcPtr)
00049 , _frame_dim(boost::shared_ptr<const Pds::GenericPgp::CDimension>(xtcPtr, &xtcPtr->frame_dim()))
00050 , _aux_dim(boost::shared_ptr<const Pds::GenericPgp::CDimension>(xtcPtr, &xtcPtr->aux_dim()))
00051 , _env_dim(boost::shared_ptr<const Pds::GenericPgp::CDimension>(xtcPtr, &xtcPtr->env_dim()))
00052 {
00053 {
00054 typedef ndarray<Psana::GenericPgp::CRegister, 1> NDArray;
00055 typedef ndarray<const Pds::GenericPgp::CRegister, 1> XtcNDArray;
00056 const XtcNDArray& xtc_ndarr = xtcPtr->sequence();
00057 _sequence_ndarray_storage_ = NDArray(xtc_ndarr.shape());
00058 NDArray::iterator out = _sequence_ndarray_storage_.begin();
00059 for (XtcNDArray::iterator it = xtc_ndarr.begin(); it != xtc_ndarr.end(); ++ it, ++ out) {
00060 *out = psddl_pds2psana::GenericPgp::pds_to_psana(*it);
00061 }
00062 }
00063 {
00064 typedef ndarray<Psana::GenericPgp::CStream, 1> NDArray;
00065 typedef ndarray<const Pds::GenericPgp::CStream, 1> XtcNDArray;
00066 const XtcNDArray& xtc_ndarr = xtcPtr->stream();
00067 _stream_ndarray_storage_ = NDArray(xtc_ndarr.shape());
00068 NDArray::iterator out = _stream_ndarray_storage_.begin();
00069 for (XtcNDArray::iterator it = xtc_ndarr.begin(); it != xtc_ndarr.end(); ++ it, ++ out) {
00070 *out = psddl_pds2psana::GenericPgp::pds_to_psana(*it);
00071 }
00072 }
00073 }
00074 ConfigV1::~ConfigV1()
00075 {
00076 }
00077
00078
00079 uint32_t ConfigV1::id() const {
00080 return m_xtcObj->id();
00081 }
00082
00083 const Psana::GenericPgp::CDimension& ConfigV1::frame_dim() const { return _frame_dim; }
00084 const Psana::GenericPgp::CDimension& ConfigV1::aux_dim() const { return _aux_dim; }
00085 const Psana::GenericPgp::CDimension& ConfigV1::env_dim() const { return _env_dim; }
00086
00087 uint32_t ConfigV1::number_of_registers() const {
00088 return m_xtcObj->number_of_registers();
00089 }
00090
00091
00092 uint32_t ConfigV1::number_of_sequences() const {
00093 return m_xtcObj->number_of_sequences();
00094 }
00095
00096
00097 uint32_t ConfigV1::number_of_streams() const {
00098 return m_xtcObj->number_of_streams();
00099 }
00100
00101
00102 uint32_t ConfigV1::payload_size() const {
00103 return m_xtcObj->payload_size();
00104 }
00105
00106
00107 ndarray<const uint32_t, 2> ConfigV1::pixel_settings() const {
00108 return m_xtcObj->pixel_settings(m_xtcObj);
00109 }
00110
00111
00112 ndarray<const uint32_t, 1> ConfigV1::sequence_length() const {
00113 return m_xtcObj->sequence_length(m_xtcObj);
00114 }
00115
00116 ndarray<const Psana::GenericPgp::CRegister, 1> ConfigV1::sequence() const { return _sequence_ndarray_storage_; }
00117 ndarray<const Psana::GenericPgp::CStream, 1> ConfigV1::stream() const { return _stream_ndarray_storage_; }
00118
00119 ndarray<const uint32_t, 1> ConfigV1::payload() const {
00120 return m_xtcObj->payload(m_xtcObj);
00121 }
00122
00123
00124 uint32_t ConfigV1::numberOfRows() const {
00125 return m_xtcObj->numberOfRows();
00126 }
00127
00128
00129 uint32_t ConfigV1::numberOfColumns() const {
00130 return m_xtcObj->numberOfColumns();
00131 }
00132
00133
00134 uint32_t ConfigV1::lastRowExclusions() const {
00135 return m_xtcObj->lastRowExclusions();
00136 }
00137
00138
00139 uint32_t ConfigV1::numberOfAsics() const {
00140 return m_xtcObj->numberOfAsics();
00141 }
00142
00143 }
00144 }