00001 #ifndef PSANA_RAYONIX_DDL_H
00002 #define PSANA_RAYONIX_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 Rayonix {
00013
00014
00015
00016
00017
00018
00019
00020 class ConfigV1 {
00021 public:
00022 enum { TypeId = Pds::TypeId::Id_RayonixConfig };
00023 enum { Version = 1 };
00024 enum { DeviceIDMax = 40 };
00025 enum ReadoutMode {
00026 Standard = 0,
00027 HighGain = 1,
00028 LowNoise = 2,
00029 EDR = 3,
00030 };
00031 virtual ~ConfigV1();
00032 virtual uint8_t binning_f() const = 0;
00033 virtual uint8_t binning_s() const = 0;
00034 virtual uint32_t exposure() const = 0;
00035 virtual uint32_t trigger() const = 0;
00036 virtual uint16_t rawMode() const = 0;
00037 virtual uint16_t darkFlag() const = 0;
00038 virtual Rayonix::ConfigV1::ReadoutMode readoutMode() const = 0;
00039 virtual const char* deviceID() const = 0;
00040 };
00041 std::ostream& operator<<(std::ostream& str, Rayonix::ConfigV1::ReadoutMode enval);
00042
00043
00044
00045
00046
00047
00048
00049 class ConfigV2 {
00050 public:
00051 enum { TypeId = Pds::TypeId::Id_RayonixConfig };
00052 enum { Version = 2 };
00053 enum { DeviceIDMax = 40 };
00054 enum ReadoutMode {
00055 Unknown = 0,
00056 Standard = 1,
00057 HighGain = 2,
00058 LowNoise = 3,
00059 HDR = 4,
00060 };
00061 virtual ~ConfigV2();
00062 virtual uint8_t binning_f() const = 0;
00063 virtual uint8_t binning_s() const = 0;
00064 virtual int16_t testPattern() const = 0;
00065 virtual uint32_t exposure() const = 0;
00066 virtual uint32_t trigger() const = 0;
00067 virtual uint16_t rawMode() const = 0;
00068 virtual uint16_t darkFlag() const = 0;
00069 virtual Rayonix::ConfigV2::ReadoutMode readoutMode() const = 0;
00070 virtual const char* deviceID() const = 0;
00071 };
00072 std::ostream& operator<<(std::ostream& str, Rayonix::ConfigV2::ReadoutMode enval);
00073 }
00074 }
00075 #endif // PSANA_RAYONIX_DDL_H