LibMultiSense
LibMultiSense Documentation
LidarDataMessage.hh
Go to the documentation of this file.
1 
40 #ifndef LibMultiSense_LidarDataMessage
41 #define LibMultiSense_LidarDataMessage
42 
43 #include <typeinfo>
44 
45 #include "utility/Portability.hh"
46 
47 namespace crl {
48 namespace multisense {
49 namespace details {
50 namespace wire {
51 
53 public:
54 
56  static CRL_CONSTEXPR VersionType VERSION = 1;
57  static CRL_CONSTEXPR uint32_t SCAN_POINTS = 1081;
58 
59 #ifdef SENSORPOD_FIRMWARE
60  IdType id;
61  VersionType version;
62 #endif // SENSORDPOD_FIRMWARE
63 
64  uint32_t scanCount;
65  uint32_t timeStartSeconds;
67  uint32_t timeEndSeconds;
69  int32_t angleStart; // microradians
70  int32_t angleEnd;
71  uint32_t points;
72 #ifdef SENSORPOD_FIRMWARE
73  uint32_t distanceP[SCAN_POINTS]; // millimeters
74  uint32_t intensityP[SCAN_POINTS];
75 #else
76  uint32_t *distanceP;
77  uint32_t *intensityP;
78 #endif // SENSORPOD_FIRMWARE
79 
81  :
82 #ifdef SENSORPOD_FIRMWARE
83  id(ID),
84  version(VERSION),
85 #endif // SENSORPOD_FIRMWARE
86  points(0) {};
87 };
88 
89 #ifndef SENSORPOD_FIRMWARE
90 
91 class LidarData : public LidarDataHeader {
92 public:
93 
94  //
95  // Constructors
96 
98  LidarData() {};
99 
100  //
101  // Serialization routine
102 
103  template<class Archive>
104  void serialize(Archive& message,
105  const VersionType version)
106  {
107  (void) version;
108  message & scanCount;
109  message & timeStartSeconds;
110  message & timeStartMicroSeconds;
111  message & timeEndSeconds;
112  message & timeEndMicroSeconds;
113  message & angleStart;
114  message & angleEnd;
115  message & points;
116 
117  const uint32_t rangeSize = sizeof(uint32_t) * points;
118  const uint32_t intensitySize = sizeof(uint32_t) * points;
119 
120  if (typeid(Archive) == typeid(utility::BufferStreamWriter)) {
121 
122  message.write(distanceP, rangeSize);
123  message.write(intensityP, intensitySize);
124 
125  } else {
126 
127  distanceP = (uint32_t *) message.peek();
128  message.seek(message.tell() + rangeSize);
129 
130  intensityP = (uint32_t *) message.peek();
131  message.seek(message.tell() + intensitySize);
132  }
133  }
134 };
135 
136 #endif // !SENSORPOD_FIRMWARE
137 
138 }}}} // namespaces
139 
140 #endif
crl::multisense::details::wire::LidarData
Definition: LidarDataMessage.hh:91
crl::multisense::details::wire::LidarDataHeader::scanCount
uint32_t scanCount
Definition: LidarDataMessage.hh:64
crl::multisense::details::wire::LidarDataHeader::intensityP
uint32_t * intensityP
Definition: LidarDataMessage.hh:77
crl::multisense::details::wire::LidarDataHeader
Definition: LidarDataMessage.hh:52
crl::multisense::details::wire::LidarDataHeader::timeEndMicroSeconds
uint32_t timeEndMicroSeconds
Definition: LidarDataMessage.hh:68
crl::multisense::details::wire::LidarDataHeader::LidarDataHeader
LidarDataHeader()
Definition: LidarDataMessage.hh:80
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::LidarDataHeader::distanceP
uint32_t * distanceP
Definition: LidarDataMessage.hh:76
crl::multisense::details::wire::LidarDataHeader::timeEndSeconds
uint32_t timeEndSeconds
Definition: LidarDataMessage.hh:67
crl
Definition: BufferStream.hh:51
crl::multisense::details::wire::LidarDataHeader::timeStartMicroSeconds
uint32_t timeStartMicroSeconds
Definition: LidarDataMessage.hh:66
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::LidarDataHeader::timeStartSeconds
uint32_t timeStartSeconds
Definition: LidarDataMessage.hh:65
crl::multisense::details::wire::LidarDataHeader::angleStart
int32_t angleStart
Definition: LidarDataMessage.hh:69
crl::multisense::details::wire::LidarData::serialize
void serialize(Archive &message, const VersionType version)
Definition: LidarDataMessage.hh:104
crl::multisense::details::wire::ID_DATA_LIDAR_SCAN
static CRL_CONSTEXPR IdType ID_DATA_LIDAR_SCAN
Definition: Protocol.hh:210
crl::multisense::details::wire::LidarDataHeader::points
uint32_t points
Definition: LidarDataMessage.hh:71
crl::multisense::details::wire::LidarData::LidarData
LidarData()
Definition: LidarDataMessage.hh:98
crl::multisense::details::utility::BufferStreamReader
Definition: BufferStream.hh:192
multisense
Definition: MultiSenseChannel.hh:44
crl::multisense::details::wire::LidarData::LidarData
LidarData(utility::BufferStreamReader &r, VersionType v)
Definition: LidarDataMessage.hh:97
crl::multisense::details::wire::IdType
uint16_t IdType
Definition: Protocol.hh:136
crl::multisense::details::wire::LidarDataHeader::angleEnd
int32_t angleEnd
Definition: LidarDataMessage.hh:70