00001 #ifndef PSANA_EPIXSAMPLER_DDL_H
00002 #define PSANA_EPIXSAMPLER_DDL_H 1
00003
00004
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 EpixSampler {
00013
00014
00015
00016
00017
00018
00019
00020 class ConfigV1 {
00021 public:
00022 enum { TypeId = Pds::TypeId::Id_EpixSamplerConfig };
00023 enum { Version = 1 };
00024 virtual ~ConfigV1();
00025 virtual uint32_t version() const = 0;
00026 virtual uint32_t runTrigDelay() const = 0;
00027 virtual uint32_t daqTrigDelay() const = 0;
00028 virtual uint32_t daqSetting() const = 0;
00029 virtual uint32_t adcClkHalfT() const = 0;
00030 virtual uint32_t adcPipelineDelay() const = 0;
00031 virtual uint32_t digitalCardId0() const = 0;
00032 virtual uint32_t digitalCardId1() const = 0;
00033 virtual uint32_t analogCardId0() const = 0;
00034 virtual uint32_t analogCardId1() const = 0;
00035 virtual uint32_t numberOfChannels() const = 0;
00036 virtual uint32_t samplesPerChannel() const = 0;
00037 virtual uint32_t baseClockFrequency() const = 0;
00038 virtual uint8_t testPatternEnable() const = 0;
00039 virtual double sampleInterval_sec() const = 0;
00040 };
00041
00042
00043
00044
00045
00046
00047 class ConfigV1;
00048
00049 class ElementV1 {
00050 public:
00051 enum { TypeId = Pds::TypeId::Id_EpixSamplerElement };
00052 enum { Version = 1 };
00053 virtual ~ElementV1();
00054 virtual uint8_t vc() const = 0;
00055 virtual uint8_t lane() const = 0;
00056 virtual uint16_t acqCount() const = 0;
00057 virtual uint32_t frameNumber() const = 0;
00058 virtual uint32_t ticks() const = 0;
00059 virtual uint32_t fiducials() const = 0;
00060 virtual ndarray<const uint16_t, 2> frame() const = 0;
00061 virtual ndarray<const uint16_t, 1> temperatures() const = 0;
00062 virtual uint32_t lastWord() const = 0;
00063 };
00064 }
00065 }
00066 #endif // PSANA_EPIXSAMPLER_DDL_H