LibMultiSense
LibMultiSense Documentation
ImageMetaMessage.hh
Go to the documentation of this file.
1 
37 #ifndef LibMultiSense_ImageMetaMessage
38 #define LibMultiSense_ImageMetaMessage
39 
40 #include <typeinfo>
41 
42 #include "utility/Portability.hh"
43 
44 namespace crl {
45 namespace multisense {
46 namespace details {
47 namespace wire {
48 
50 public:
51 
53  static CRL_CONSTEXPR VersionType VERSION = 2;
54 
55  static CRL_CONSTEXPR uint32_t HISTOGRAM_CHANNELS = 4; // g0, r, b, g1
56  static CRL_CONSTEXPR uint32_t HISTOGRAM_BINS = 256;
57  static CRL_CONSTEXPR uint32_t HISTOGRAM_LENGTH = (HISTOGRAM_CHANNELS * HISTOGRAM_BINS *
58  sizeof(uint32_t));
59 
60 #ifdef SENSORPOD_FIRMWARE
61  IdType id;
62  VersionType version;
63 #endif // SENSORPOD_FIRMWARE
64 
65  int64_t frameId;
67  float gain;
68  uint32_t exposureTime;
69  uint32_t timeSeconds;
70  uint32_t timeMicroSeconds;
71  int32_t angle; // microradians
72  uint64_t ptpNanoSeconds;
73 
75  :
76 #ifdef SENSORPOD_FIRMWARE
77  id(ID),
78  version(VERSION),
79 #endif // SENSORPOD_FIRMWARE
80  frameId(0),
81  framesPerSecond(0),
82  gain(0.0),
83  exposureTime(0),
84  timeSeconds(0),
85  timeMicroSeconds(0),
86  angle(0),
87  ptpNanoSeconds(0) {};
88 };
89 
90 #ifndef SENSORPOD_FIRMWARE
91 
92 class ImageMeta : public ImageMetaHeader {
93 public:
94 
96 
97  //
98  // Constructors
99 
101  ImageMeta() {};
102 
103  //
104  // Serialization routine
105 
106  template<class Archive>
107  void serialize(Archive& message,
108  const VersionType version)
109  {
110  (void) version;
111  message & frameId;
112  message & framesPerSecond;
113  message & gain;
114  message & exposureTime;
115  message & timeSeconds;
116  message & timeMicroSeconds;
117  message & angle;
118 
119  if (typeid(Archive) == typeid(utility::BufferStreamWriter))
120  message.write(histogramP, HISTOGRAM_LENGTH);
121  else
122  message.read(histogramP, HISTOGRAM_LENGTH);
123 
124  if (version >= 2)
125  {
126  message &ptpNanoSeconds;
127  }
128  }
129 };
130 
131 #endif // !SENSORPOD_FIRMWARE
132 
133 }}}} // namespaces
134 
135 #endif
crl::multisense::details::wire::ImageMetaHeader::angle
int32_t angle
Definition: ImageMetaMessage.hh:71
crl::multisense::details::wire::ImageMetaHeader::ptpNanoSeconds
uint64_t ptpNanoSeconds
Definition: ImageMetaMessage.hh:72
crl::multisense::details::wire::ImageMetaHeader
Definition: ImageMetaMessage.hh:49
Portability.hh
WIRE_HEADER_ATTRIBS_
#define WIRE_HEADER_ATTRIBS_
Definition: Protocol.hh:65
CRL_CONSTEXPR
#define CRL_CONSTEXPR
Definition: Portability.hh:49
crl::multisense::details::wire::ImageMeta::ImageMeta
ImageMeta(utility::BufferStreamReader &r, VersionType v)
Definition: ImageMetaMessage.hh:100
crl::multisense::details::wire::ImageMetaHeader::framesPerSecond
float framesPerSecond
Definition: ImageMetaMessage.hh:66
crl
Definition: BufferStream.hh:51
crl::multisense::details::wire::ImageMetaHeader::HISTOGRAM_BINS
static CRL_CONSTEXPR uint32_t HISTOGRAM_BINS
Definition: ImageMetaMessage.hh:56
crl::multisense::details::wire::ImageMeta::ImageMeta
ImageMeta()
Definition: ImageMetaMessage.hh:101
crl::multisense::details::wire::ImageMeta::serialize
void serialize(Archive &message, const VersionType version)
Definition: ImageMetaMessage.hh:107
crl::multisense::details::wire::VersionType
uint16_t VersionType
Definition: Protocol.hh:137
crl::multisense::details::utility::BufferStreamWriter
Definition: BufferStream.hh:259
crl::multisense::details::wire::ImageMetaHeader::frameId
int64_t frameId
Definition: ImageMetaMessage.hh:65
crl::multisense::details::wire::ImageMetaHeader::gain
float gain
Definition: ImageMetaMessage.hh:67
crl::multisense::details::wire::ImageMetaHeader::timeSeconds
uint32_t timeSeconds
Definition: ImageMetaMessage.hh:69
crl::multisense::details::wire::ImageMeta
Definition: ImageMetaMessage.hh:92
crl::multisense::details::wire::ImageMetaHeader::HISTOGRAM_CHANNELS
static CRL_CONSTEXPR uint32_t HISTOGRAM_CHANNELS
Definition: ImageMetaMessage.hh:55
crl::multisense::details::wire::ImageMetaHeader::exposureTime
uint32_t exposureTime
Definition: ImageMetaMessage.hh:68
crl::multisense::details::utility::BufferStreamReader
Definition: BufferStream.hh:192
multisense
Definition: MultiSenseChannel.hh:44
crl::multisense::details::wire::ImageMetaHeader::HISTOGRAM_LENGTH
static CRL_CONSTEXPR uint32_t HISTOGRAM_LENGTH
Definition: ImageMetaMessage.hh:57
crl::multisense::details::wire::ID_DATA_IMAGE_META
static CRL_CONSTEXPR IdType ID_DATA_IMAGE_META
Definition: Protocol.hh:216
crl::multisense::details::wire::ImageMeta::histogramP
uint32_t histogramP[HISTOGRAM_BINS *HISTOGRAM_CHANNELS]
Definition: ImageMetaMessage.hh:95
crl::multisense::details::wire::ImageMetaHeader::ImageMetaHeader
ImageMetaHeader()
Definition: ImageMetaMessage.hh:74
crl::multisense::details::wire::IdType
uint16_t IdType
Definition: Protocol.hh:136
crl::multisense::details::wire::ImageMetaHeader::timeMicroSeconds
uint32_t timeMicroSeconds
Definition: ImageMetaMessage.hh:70