LibMultiSense
LibMultiSense Documentation
JpegMessage.hh
Go to the documentation of this file.
1 
37 #ifndef LibMultiSense_JpegMessage
38 #define LibMultiSense_JpegMessage
39 
40 #include <typeinfo>
41 #include <cmath>
42 
43 #include "utility/Portability.hh"
44 
45 namespace crl {
46 namespace multisense {
47 namespace details {
48 namespace wire {
49 
51 public:
52 
54 static CRL_CONSTEXPR VersionType VERSION = 2;
55 
56 #ifdef SENSORPOD_FIRMWARE
57  IdType id;
58  VersionType version;
59 #endif // SENSORPOD_FIRMWARE
60 
61  uint32_t source;
62  int64_t frameId;
63  uint16_t width;
64  uint16_t height;
65  uint32_t length;
66  uint32_t quality;
67  uint32_t sourceExtended;
68 
70 #ifdef SENSORDPOD_FIRMWARE
71  id(ID),
72  version(VERSION),
73 #endif // SENSORPOD_FIRMWARE
74  source(0),
75  frameId(0),
76  width(0),
77  height(0),
78  length(0),
79  quality(0),
80  sourceExtended(0)
81  {};
82 };
83 
84 #ifndef SENSORPOD_FIRMWARE
85 
86 class JpegImage : public JpegImageHeader {
87 public:
88 
89  void *dataP;
90 
91  //
92  // Constructors
93 
95  JpegImage() : dataP(NULL) {};
96 
97  //
98  // Serialization routine
99 
100  template<class Archive>
101  void serialize(Archive& message,
102  const VersionType version)
103  {
104  message & source;
105  message & frameId;
106  message & width;
107  message & height;
108  message & length;
109  message & quality;
110 
111  if (typeid(Archive) == typeid(utility::BufferStreamWriter)) {
112 
113  message.write(dataP, length);
114 
115  } else {
116 
117  dataP = message.peek();
118  message.seek(message.tell() + length);
119  }
120 
121  if (version >= 2)
122  {
123  message & sourceExtended;
124  }
125  else
126  {
127  sourceExtended = 0;
128  }
129  }
130 };
131 
132 #endif // !SENSORPOD_FIRMWARE
133 
134 }}}} // namespaces
135 
136 #endif
crl::multisense::details::wire::JpegImageHeader::JpegImageHeader
JpegImageHeader()
Definition: JpegMessage.hh:69
crl::multisense::details::wire::JpegImage::dataP
void * dataP
Definition: JpegMessage.hh:89
crl::multisense::details::wire::JpegImage::JpegImage
JpegImage()
Definition: JpegMessage.hh:95
crl::multisense::details::wire::JpegImageHeader::quality
uint32_t quality
Definition: JpegMessage.hh:66
crl::multisense::details::wire::JpegImageHeader::source
uint32_t source
Definition: JpegMessage.hh:61
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::JpegImageHeader::height
uint16_t height
Definition: JpegMessage.hh:64
crl::multisense::details::wire::JpegImageHeader::length
uint32_t length
Definition: JpegMessage.hh:65
crl
Definition: BufferStream.hh:51
crl::multisense::details::wire::JpegImage::JpegImage
JpegImage(utility::BufferStreamReader &r, VersionType v)
Definition: JpegMessage.hh:94
crl::multisense::details::wire::JpegImageHeader
Definition: JpegMessage.hh:50
crl::multisense::details::wire::VersionType
uint16_t VersionType
Definition: Protocol.hh:137
crl::multisense::details::wire::ID_DATA_JPEG_IMAGE
static CRL_CONSTEXPR IdType ID_DATA_JPEG_IMAGE
Definition: Protocol.hh:225
crl::multisense::details::utility::BufferStreamWriter
Definition: BufferStream.hh:259
crl::multisense::details::utility::BufferStreamReader
Definition: BufferStream.hh:192
multisense
Definition: MultiSenseChannel.hh:44
crl::multisense::details::wire::JpegImageHeader::frameId
int64_t frameId
Definition: JpegMessage.hh:62
crl::multisense::details::wire::JpegImage::serialize
void serialize(Archive &message, const VersionType version)
Definition: JpegMessage.hh:101
crl::multisense::details::wire::JpegImageHeader::sourceExtended
uint32_t sourceExtended
Definition: JpegMessage.hh:67
crl::multisense::details::wire::IdType
uint16_t IdType
Definition: Protocol.hh:136
crl::multisense::details::wire::JpegImageHeader::width
uint16_t width
Definition: JpegMessage.hh:63
crl::multisense::details::wire::JpegImage
Definition: JpegMessage.hh:86