psddl_psana/include/imp.ddl.h

Go to the documentation of this file.
00001 #ifndef PSANA_IMP_DDL_H
00002 #define PSANA_IMP_DDL_H 1
00003 
00004 // *** Do not edit this file, it is auto-generated ***
00005 
00006 #include <vector>
00007 #include <iosfwd>
00008 #include <cstring>
00009 #include "ndarray/ndarray.h"
00010 #include "pdsdata/xtc/TypeId.hh"
00011 namespace Psana {
00012 namespace Imp {
00013 
00014 /** @class ConfigV1
00015 
00016   
00017 */
00018 
00019 
00020 class ConfigV1 {
00021 public:
00022   enum { TypeId = Pds::TypeId::Id_ImpConfig /**< XTC type ID value (from Pds::TypeId class) */ };
00023   enum { Version = 1 /**< XTC type version number */ };
00024   enum { MaxNumberOfSamples = 0x3ff };
00025   enum Registers {
00026     Range,
00027     Cal_range,
00028     Reset,
00029     Bias_data,
00030     Cal_data,
00031     BiasDac_data,
00032     Cal_strobe,
00033     NumberOfSamples,
00034     TrigDelay,
00035     Adc_delay,
00036     NumberOfRegisters,
00037   };
00038   virtual ~ConfigV1();
00039   virtual uint32_t range() const = 0;
00040   virtual uint32_t calRange() const = 0;
00041   virtual uint32_t reset() const = 0;
00042   virtual uint32_t biasData() const = 0;
00043   virtual uint32_t calData() const = 0;
00044   virtual uint32_t biasDacData() const = 0;
00045   virtual uint32_t calStrobe() const = 0;
00046   virtual uint32_t numberOfSamples() const = 0;
00047   virtual uint32_t trigDelay() const = 0;
00048   virtual uint32_t adcDelay() const = 0;
00049 };
00050 std::ostream& operator<<(std::ostream& str, Imp::ConfigV1::Registers enval);
00051 
00052 /** @class Sample
00053 
00054   
00055 */
00056 
00057 
00058 class Sample {
00059 public:
00060   enum { channelsPerDevice = 4 };
00061   Sample(const uint16_t* arg__channels)
00062   {
00063     if (arg__channels) std::copy(arg__channels, arg__channels+(4), &_channels[0]);
00064   }
00065   Sample() {}
00066   /**     Note: this method returns ndarray instance which does not control lifetime
00067     of the data, do not use returned ndarray after this instance disappears. */
00068   ndarray<const uint16_t, 1> channels() const { return make_ndarray(&_channels[0], 4); }
00069   static uint32_t _sizeof() { return ((((0+(2*(4)))+2)-1)/2)*2; }
00070 private:
00071   uint16_t      _channels[4];
00072 };
00073 
00074 /** @class LaneStatus
00075 
00076   
00077 */
00078 
00079 
00080 class LaneStatus {
00081 public:
00082   LaneStatus(uint8_t arg__usLinkErrCount, uint8_t arg__usLinkDownCount, uint8_t arg__usCellErrCount, uint8_t arg__usRxCount, uint8_t arg__usLocLinked, uint8_t arg__usRemLinked, uint16_t arg__zeros, uint8_t arg__powersOkay)
00083     : _value(((arg__usLinkErrCount) & 0xf)|(((arg__usLinkDownCount) & 0xf)<<4)|(((arg__usCellErrCount) & 0xf)<<8)|(((arg__usRxCount) & 0xf)<<12)|(((arg__usLocLinked) & 0x1)<<16)|(((arg__usRemLinked) & 0x1)<<17)|(((arg__zeros) & 0x3ff)<<18)|(((arg__powersOkay) & 0xf)<<28))
00084   {
00085   }
00086   LaneStatus() {}
00087   uint8_t linkErrCount() const { return uint8_t(this->_value & 0xf); }
00088   uint8_t linkDownCount() const { return uint8_t((this->_value>>4) & 0xf); }
00089   uint8_t cellErrCount() const { return uint8_t((this->_value>>8) & 0xf); }
00090   uint8_t rxCount() const { return uint8_t((this->_value>>12) & 0xf); }
00091   uint8_t locLinked() const { return uint8_t((this->_value>>16) & 0x1); }
00092   uint8_t remLinked() const { return uint8_t((this->_value>>17) & 0x1); }
00093   uint16_t zeros() const { return uint16_t((this->_value>>18) & 0x3ff); }
00094   uint8_t powersOkay() const { return uint8_t((this->_value>>28) & 0xf); }
00095   static uint32_t _sizeof() { return 4; }
00096 private:
00097   uint32_t      _value;
00098 };
00099 
00100 /** @class ElementV1
00101 
00102   
00103 */
00104 
00105 class ConfigV1;
00106 
00107 class ElementV1 {
00108 public:
00109   enum { TypeId = Pds::TypeId::Id_ImpData /**< XTC type ID value (from Pds::TypeId class) */ };
00110   enum { Version = 1 /**< XTC type version number */ };
00111   virtual ~ElementV1();
00112   virtual uint8_t vc() const = 0;
00113   virtual uint8_t lane() const = 0;
00114   virtual uint32_t frameNumber() const = 0;
00115   virtual uint32_t range() const = 0;
00116   virtual const Imp::LaneStatus& laneStatus() const = 0;
00117   virtual ndarray<const Imp::Sample, 1> samples() const = 0;
00118 };
00119 } // namespace Imp
00120 } // namespace Psana
00121 #endif // PSANA_IMP_DDL_H

Generated on 19 Dec 2016 for PSANAclasses by  doxygen 1.4.7