00001 #ifndef PSANA_PULNIX_DDL_H
00002 #define PSANA_PULNIX_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 Pulnix {
00013
00014
00015
00016
00017
00018
00019
00020 class TM6740ConfigV1 {
00021 public:
00022 enum { TypeId = Pds::TypeId::Id_TM6740Config };
00023 enum { Version = 1 };
00024 enum { Row_Pixels = 480 };
00025 enum { Column_Pixels = 640 };
00026 enum Depth {
00027 Eight_bit,
00028 Ten_bit,
00029 };
00030 enum Binning {
00031 x1,
00032 x2,
00033 x4,
00034 };
00035 enum LookupTable {
00036 Gamma,
00037 Linear,
00038 };
00039 virtual ~TM6740ConfigV1();
00040 virtual uint16_t gain_a() const = 0;
00041 virtual uint16_t gain_b() const = 0;
00042 virtual uint16_t vref() const = 0;
00043 virtual uint16_t shutter_width() const = 0;
00044 virtual uint8_t gain_balance() const = 0;
00045 virtual Pulnix::TM6740ConfigV1::Depth output_resolution() const = 0;
00046 virtual Pulnix::TM6740ConfigV1::Binning horizontal_binning() const = 0;
00047 virtual Pulnix::TM6740ConfigV1::Binning vertical_binning() const = 0;
00048 virtual Pulnix::TM6740ConfigV1::LookupTable lookuptable_mode() const = 0;
00049
00050 virtual uint8_t output_resolution_bits() const = 0;
00051 };
00052 std::ostream& operator<<(std::ostream& str, Pulnix::TM6740ConfigV1::Depth enval);
00053 std::ostream& operator<<(std::ostream& str, Pulnix::TM6740ConfigV1::Binning enval);
00054 std::ostream& operator<<(std::ostream& str, Pulnix::TM6740ConfigV1::LookupTable enval);
00055
00056
00057
00058
00059
00060
00061
00062 class TM6740ConfigV2 {
00063 public:
00064 enum { TypeId = Pds::TypeId::Id_TM6740Config };
00065 enum { Version = 2 };
00066 enum { Row_Pixels = 480 };
00067 enum { Column_Pixels = 640 };
00068 enum Depth {
00069 Eight_bit,
00070 Ten_bit,
00071 };
00072 enum Binning {
00073 x1,
00074 x2,
00075 x4,
00076 };
00077 enum LookupTable {
00078 Gamma,
00079 Linear,
00080 };
00081 virtual ~TM6740ConfigV2();
00082 virtual uint16_t gain_a() const = 0;
00083 virtual uint16_t gain_b() const = 0;
00084 virtual uint16_t vref_a() const = 0;
00085 virtual uint16_t vref_b() const = 0;
00086 virtual uint8_t gain_balance() const = 0;
00087 virtual Pulnix::TM6740ConfigV2::Depth output_resolution() const = 0;
00088 virtual Pulnix::TM6740ConfigV2::Binning horizontal_binning() const = 0;
00089 virtual Pulnix::TM6740ConfigV2::Binning vertical_binning() const = 0;
00090 virtual Pulnix::TM6740ConfigV2::LookupTable lookuptable_mode() const = 0;
00091
00092 virtual uint8_t output_resolution_bits() const = 0;
00093 };
00094 std::ostream& operator<<(std::ostream& str, Pulnix::TM6740ConfigV2::Depth enval);
00095 std::ostream& operator<<(std::ostream& str, Pulnix::TM6740ConfigV2::Binning enval);
00096 std::ostream& operator<<(std::ostream& str, Pulnix::TM6740ConfigV2::LookupTable enval);
00097 }
00098 }
00099 #endif // PSANA_PULNIX_DDL_H