channel.hh
Go to the documentation of this file.
1 
36 #ifndef _LibMultiSense_details_channel_hh
37 #define _LibMultiSense_details_channel_hh
38 
40 
52 
53 #ifdef WIN32
54 #ifndef WIN32_LEAN_AND_MEAN
55 #define WIN32_LEAN_AND_MEAN 1
56 #endif
57 
58 #include <windows.h>
59 #include <winsock2.h>
60 
61 #else
62 #include <netinet/ip.h>
63 #include <unistd.h>
64 
65 #ifndef INVALID_SOCKET
66 #define INVALID_SOCKET (-1)
67 #endif
68 #endif
69 
70 #include <assert.h>
71 #include <vector>
72 #include <list>
73 #include <set>
74 #include <map>
75 #include <iostream>
76 #include <fstream>
77 
78 namespace crl {
79 namespace multisense {
80 namespace details {
81 
82 //
83 // The implementation details
84 
85 class impl : public Channel {
86 public:
87 
88 #ifdef WIN32
89  typedef SOCKET socket_t;
90 #else
91  typedef int32_t socket_t;
92 #endif
93 
94  //
95  // Construction
96 
97  impl(const std::string& address, const RemoteHeadChannel& cameraId, const std::string& ifName);
98  ~impl();
99 
100  //
101  // Public API
102 
103  virtual Status addIsolatedCallback (image::Callback callback,
104  DataSource imageSourceMask,
105  void *userDataP);
106  virtual Status addIsolatedCallback (lidar::Callback callback,
107  void *userDataP);
108  virtual Status addIsolatedCallback (pps::Callback callback,
109  void *userDataP);
110  virtual Status addIsolatedCallback (imu::Callback callback,
111  void *userDataP);
112 
114  DataSource imageSourceMask,
115  void *userDataP);
116 
118  void *userDataP);
119 
121  void *userDataP);
122 
125  virtual Status removeIsolatedCallback(pps::Callback callback);
126  virtual Status removeIsolatedCallback(imu::Callback callback);
130 
131  virtual void* reserveCallbackBuffer ();
132  virtual Status releaseCallbackBuffer (void *referenceP);
133 
134  virtual Status networkTimeSynchronization(bool enabled);
135  virtual Status ptpTimeSynchronization(bool enabled);
136 
137  virtual Status startStreams (DataSource mask);
138  virtual Status stopStreams (DataSource mask);
139  virtual Status getEnabledStreams (DataSource& mask);
140 
142 
143  virtual Status setMotorSpeed (float rpm);
144 
146  virtual Status setLightingConfig (const lighting::Config& c);
147 
149 
150  virtual Status getSensorVersion (VersionType& version);
151  virtual Status getApiVersion (VersionType& version);
153 
154  virtual Status getImageConfig (image::Config& c);
155  virtual Status setImageConfig (const image::Config& c);
156 
158  virtual Status setAuxImageConfig (const image::AuxConfig& c);
159 
162 
164  virtual Status setImageCalibration (const image::Calibration& c);
165 
167  virtual Status setTransmitDelay (const image::TransmitDelay& c);
168 
170  virtual Status setLidarCalibration (const lidar::Calibration& c);
171 
172  virtual Status getImageHistogram (int64_t frameId, image::Histogram& histogram);
173 
174  virtual Status getPtpStatus (int64_t frameId, system::PtpStatus& ptpStatus);
175 
176  virtual Status getDeviceModes (std::vector<system::DeviceMode>& modes);
177 
178  virtual Status getMtu (int32_t& mtu);
179  virtual Status setMtu (int32_t mtu);
180 
181  virtual Status getMotorPos (int32_t& mtu);
182 
184  virtual Status setNetworkConfig (const system::NetworkConfig& c);
185 
186  virtual Status getDeviceInfo (system::DeviceInfo& info);
187  virtual Status setDeviceInfo (const std::string& key,
188  const system::DeviceInfo& i);
189 
190  virtual Status getDeviceStatus (system::StatusMessage& status);
191 
193  virtual Status setExternalCalibration (const system::ExternalCalibration& calibration);
194 
196  virtual Status setApriltagParams (const system::ApriltagParams& params);
197 
198  virtual Status flashBitstream (const std::string& file);
199  virtual Status flashFirmware (const std::string& file);
200 
201  virtual Status verifyBitstream (const std::string& file);
202  virtual Status verifyFirmware (const std::string& file);
203 
204  virtual Status getImuInfo (uint32_t& maxSamplesPerMessage,
205  std::vector<imu::Info>& info);
206  virtual Status getImuConfig (uint32_t& samplesPerMessage,
207  std::vector<imu::Config>& c);
208  virtual Status setImuConfig (bool storeSettingsInFlash,
209  uint32_t samplesPerMessage,
210  const std::vector<imu::Config>& c);
211 
212  virtual Status getLargeBufferDetails (uint32_t& bufferCount,
213  uint32_t& bufferSize);
214  virtual Status setLargeBuffers (const std::vector<uint8_t*>& buffers,
215  uint32_t bufferSize);
216  virtual Status getLocalUdpPort (uint16_t& port);
217 
218 private:
219 
220  //
221  // A handler prototype for custom UDP datagram reassembly
222 
223  typedef void (*UdpAssembler)(utility::BufferStreamWriter& stream,
224  const uint8_t *dataP,
225  uint32_t offset,
226  uint32_t length);
227 
228  template <typename T>
229  void toHeaderTime(T nanoSeconds,
230  uint32_t &seconds,
231  uint32_t &microSeconds) const
232  {
233  const T oneBillion = static_cast<T>(1e9);
234 
235  seconds = static_cast<uint32_t>(nanoSeconds / oneBillion);
236  microSeconds = static_cast<uint32_t>((nanoSeconds % oneBillion) /
237  static_cast<T>(1000));
238  }
239 
240  template <class WireT>
241  void getImageTime(const WireT *wire,
242  uint32_t &seconds,
243  uint32_t &microSeconds)
244  {
245  if (m_ptpTimeSyncEnabled) {
246 
247  toHeaderTime(wire->ptpNanoSeconds, seconds, microSeconds);
248 
249  return;
250  } else {
251  if (false == m_networkTimeSyncEnabled) {
252 
253  seconds = wire->timeSeconds;
254  microSeconds = wire->timeMicroSeconds;
255 
256  return;
257  } else {
258  sensorToLocalTime(utility::TimeStamp(static_cast<int32_t>(wire->timeSeconds),
259  static_cast<int32_t>(wire->timeMicroSeconds)),
260  seconds, microSeconds);
261  return;
262  }
263  }
264  }
265 
266  //
267  // The version of this API
268 
269  static CRL_CONSTEXPR VersionType API_VERSION = 0x0601; // 6.1
270 
271  //
272  // Misc. internal constants
273 
274  static CRL_CONSTEXPR uint32_t MAX_MTU_SIZE = 9000;
275  static CRL_CONSTEXPR uint16_t DEFAULT_SENSOR_TX_PORT = 9001;
276 
277  //
278  // Handle the worst case size of a 2MP floating point image
279 
280  static CRL_CONSTEXPR uint32_t RX_POOL_LARGE_BUFFER_SIZE = (10 * (1024 * 1024));
282  static CRL_CONSTEXPR uint32_t RX_POOL_SMALL_BUFFER_SIZE = (8 * (1024));
285 
286  static double DEFAULT_ACK_TIMEOUT () { return 0.5; }
287  static CRL_CONSTEXPR uint32_t DEFAULT_ACK_ATTEMPTS = 5;
291 
292 #if __cplusplus > 199711L
293  static_assert(RX_POOL_LARGE_BUFFER_COUNT > IMAGE_META_CACHE_DEPTH, "Image metadata depth cache too large");
294  static_assert(RX_POOL_LARGE_BUFFER_COUNT > UDP_TRACKER_CACHE_DEPTH, "UDP depth cache too large");
295  static_assert(RX_POOL_SMALL_BUFFER_COUNT > UDP_TRACKER_CACHE_DEPTH, "UDP depth cache too large");
296 #endif
297 
298  //
299  // We must protect ourselves from user callbacks misbehaving
300  // and gobbling up all of our RX buffers
301  //
302  // These define the maximum number of datums that we will
303  // queue up in a user dispatch thread.
304 
308 
309 #if __cplusplus > 199711L
310  static_assert(RX_POOL_LARGE_BUFFER_COUNT > MAX_USER_IMAGE_QUEUE_SIZE, "Image queue too large");
311  static_assert(RX_POOL_LARGE_BUFFER_COUNT > MAX_USER_LASER_QUEUE_SIZE, "Laser queue too large");
312  static_assert(RX_POOL_LARGE_BUFFER_COUNT > MAX_USER_COMPRESSED_IMAGE_QUEUE_SIZE, "Compressed image queue too large");
313 #endif
314 
315  //
316  // PPS and IMU callbacks do not reserve an RX buffer, so queue
317  // depths are limited by RAM (via heap.)
318 
323 
324  //
325  // The maximum number of directed streams
326 
327  static CRL_CONSTEXPR uint32_t MAX_DIRECTED_STREAMS = 8;
328 
329  //
330  // A re-assembler for multi-packet messages
331 
332  class UdpTracker {
333  public:
334 
335  UdpTracker(uint32_t t,
336  UdpAssembler a,
339  m_bytesAssembled(0),
341  m_lastByteOffset(-1),
342  m_assembler(a),
343  m_stream(s) {};
344 
346  uint32_t packets() { return m_packetsAssembled; };
347 
348  bool assemble(uint32_t bytes,
349  uint32_t offset,
350  const uint8_t *dataP) {
351 
352  if (offset <= m_lastByteOffset)
353  CRL_EXCEPTION("out-of-order or duplicate packet", "");
354 
355  m_assembler(m_stream, dataP, offset, bytes);
356 
357  m_bytesAssembled += bytes;
358  m_lastByteOffset = offset;
360 
362  return true;
363  return false;
364  }
365 
366  private:
367 
374  };
375 
376  //
377  // The socket identifier and local port
378 
379  socket_t m_serverSocket;
381 
382  //
383  // The address of the sensor
384 
385  struct sockaddr_in m_sensorAddress;
386 
387  //
388  // The operating MTU of the sensor
389 
390  int32_t m_sensorMtu;
391 
392  //
393  // A buffer to receive incoming UDP packets
394 
395  std::vector<uint8_t> m_incomingBuffer;
396 
397  //
398  // Sequence ID for multi-packet message reassembly
399 
400  uint16_t m_txSeqId;
401  int32_t m_lastRxSeqId;
403 
404  //
405  // A cache to track incoming messages by sequence ID
406 
408 
409  //
410  // A pool of RX buffers, to reduce the amount of internal copying
411 
412  typedef std::vector<utility::BufferStreamWriter*> BufferPool;
413 
416 
417  //
418  // A cache of image meta data
419 
421 
422  //
423  // A map of custom UDP assemblers
424 
425  typedef std::map<wire::IdType, UdpAssembler> UdpAssemblerMap;
426 
427  UdpAssemblerMap m_udpAssemblerMap;
428 
429  //
430  // Mutex for callback registration and dispatching
431 
433 
434  //
435  // Mutex for stream control
436 
438 
439  //
440  // A flag to shut down the internal threads
441 
443 
444  //
445  // Internal UDP reception thread
446 
449 
450  //
451  // Internal status thread
452 
454 
455  //
456  // The lists of user callbacks
457 
458  std::list<ImageListener*> m_imageListeners;
459  std::list<LidarListener*> m_lidarListeners;
460  std::list<PpsListener*> m_ppsListeners;
461  std::list<ImuListener*> m_imuListeners;
462  std::list<CompressedImageListener*> m_compressedImageListeners;
463  std::list<GroundSurfaceSplineListener*> m_groundSurfaceSplineListeners;
464  std::list<AprilTagDetectionListener*> m_aprilTagDetectionListeners;
465 
466  //
467  // A message signal interface
468 
470 
471  //
472  // A message storage interface
473 
475 
476  //
477  // The mask of currently enabled streams (desired)
478 
480 
481  //
482  // The current sensor time offset
483 
489 
490  //
491  // Cached version info from the device
492 
494 
495  //
496  // Cached StatusResponseMessage from the MultiSense
497 
499 
500  //
501  // Status set in statusThread indicating if the request for status msg timed out
503 
504  //
505  // Private procedures
506 
507  template<class T, class U> Status waitData(const T& command,
508  U& data,
509  const double& timeout=DEFAULT_ACK_TIMEOUT(),
510  int32_t attempts=DEFAULT_ACK_ATTEMPTS);
511 #if defined (_MSC_VER)
512  template<class T> Status waitAck (const T& msg,
513  wire::IdType id,
514  const double& timeout,
515  int32_t attempts);
516  template<class T> Status waitAck (const T& msg) {
517  return waitAck (msg, MSG_ID(T::ID), double(DEFAULT_ACK_TIMEOUT()), DEFAULT_ACK_ATTEMPTS);
518  }
519 #else
520  template<class T> Status waitAck (const T& msg,
521  wire::IdType id=MSG_ID(T::ID),
522  const double& timeout=DEFAULT_ACK_TIMEOUT(),
523  int32_t attempts=DEFAULT_ACK_ATTEMPTS);
524 #endif
525 
526  template<class T> void publish (const T& message);
527  void publish (const utility::BufferStreamWriter& stream);
528  void dispatch (utility::BufferStreamWriter& buffer);
530  image::Header& header);
532  lidar::Header& header);
533  void dispatchPps (pps::Header& header);
534  void dispatchImu (imu::Header& header);
536  compressed_image::Header& header);
539 
540  utility::BufferStreamWriter& findFreeBuffer (uint32_t messageLength);
541  const int64_t& unwrapSequenceId(uint16_t id);
542  UdpAssembler getUdpAssembler (const uint8_t *udpDatagramP,
543  uint32_t length);
544 
545  void eraseFlashRegion (uint32_t region);
546  void programOrVerifyFlashRegion(std::ifstream& file,
547  uint32_t operation,
548  uint32_t region);
549  Status doFlashOp (const std::string& filename,
550  uint32_t operation,
551  uint32_t region);
552 
553  void applySensorTimeOffset(const utility::TimeStamp& offset);
555  void sensorToLocalTime (const utility::TimeStamp& sensorTime,
556  uint32_t& seconds,
557  uint32_t& microseconds);
558 
559  void cleanup();
560  void bind (const std::string& ifName);
561  void handle ();
562 
563  //
564  // Static members
565 
568  static uint32_t hardwareApiToWire(uint32_t h);
569  static uint32_t hardwareWireToApi(uint32_t h);
570  static uint32_t imagerApiToWire(uint32_t h);
571  static uint32_t imagerWireToApi(uint32_t h);
572 #if WIN32
573  static DWORD WINAPI rxThread (void *userDataP);
574  static DWORD WINAPI statusThread (void *userDataP);
575 #else
576  static void *rxThread (void *userDataP);
577  static void *statusThread (void *userDataP);
578 #endif
579 };
580 
581 
582 }}} // namespaces
583 
584 #endif // LibMultiSense_details_channel_hh
std::list< ImageListener * > m_imageListeners
Definition: channel.hh:458
static uint32_t imagerWireToApi(uint32_t h)
Definition: channel.cc:580
virtual Status setNetworkConfig(const system::NetworkConfig &c)
Definition: public.cc:1236
#define CRL_EXCEPTION(fmt,...)
Definition: Exception.hh:85
static uint32_t hardwareWireToApi(uint32_t h)
Definition: channel.cc:540
virtual Status getPtpStatus(int64_t frameId, system::PtpStatus &ptpStatus)
Definition: public.cc:559
virtual Status getMtu(int32_t &mtu)
Definition: public.cc:1211
virtual Status verifyBitstream(const std::string &file)
Definition: public.cc:1475
virtual Status getLocalUdpPort(uint16_t &port)
Definition: public.cc:1641
virtual Status setImuConfig(bool storeSettingsInFlash, uint32_t samplesPerMessage, const std::vector< imu::Config > &c)
Definition: public.cc:1562
void dispatchCompressedImage(utility::BufferStream &buffer, compressed_image::Header &header)
Definition: dispatch.cc:170
virtual Status verifyFirmware(const std::string &file)
Definition: public.cc:1485
virtual Status setTriggerSource(TriggerSource s)
Definition: public.cc:659
virtual Status getMotorPos(int32_t &mtu)
Definition: public.cc:1222
virtual Status getExternalCalibration(system::ExternalCalibration &calibration)
Definition: public.cc:1341
bool assemble(uint32_t bytes, uint32_t offset, const uint8_t *dataP)
Definition: channel.hh:348
static CRL_CONSTEXPR uint32_t MAX_DIRECTED_STREAMS
Definition: channel.hh:327
virtual Status getLightingSensorStatus(lighting::SensorStatus &status)
Definition: public.cc:757
struct sockaddr_in m_sensorAddress
Definition: channel.hh:385
void applySensorTimeOffset(const utility::TimeStamp &offset)
Definition: channel.cc:600
virtual Status networkTimeSynchronization(bool enabled)
Definition: public.cc:592
virtual Status removeIsolatedCallback(image::Callback callback)
Definition: public.cc:276
virtual Status setRemoteHeadConfig(const image::RemoteHeadConfig &c)
Definition: public.cc:1030
UdpTracker(uint32_t t, UdpAssembler a, utility::BufferStreamWriter &s)
Definition: channel.hh:335
void(* Callback)(const Header &header, void *userDataP)
void dispatchGroundSurfaceSpline(ground_surface::Header &header)
Definition: dispatch.cc:186
UdpAssemblerMap m_udpAssemblerMap
Definition: channel.hh:427
virtual Status ptpTimeSynchronization(bool enabled)
Definition: public.cc:601
virtual Status setExternalCalibration(const system::ExternalCalibration &calibration)
Definition: public.cc:1359
virtual Status getLightingConfig(lighting::Config &c)
Definition: public.cc:703
virtual Status getImageConfig(image::Config &c)
Definition: public.cc:808
wire::StatusResponse m_statusResponseMessage
Definition: channel.hh:498
virtual Status setLidarCalibration(const lidar::Calibration &c)
Definition: public.cc:1145
static wire::SourceType sourceApiToWire(DataSource mask)
Definition: channel.cc:438
virtual Status setGroundSurfaceParams(const system::GroundSurfaceParams &params)
Definition: public.cc:1373
std::list< PpsListener * > m_ppsListeners
Definition: channel.hh:460
virtual Status getLargeBufferDetails(uint32_t &bufferCount, uint32_t &bufferSize)
Definition: public.cc:1587
virtual Status setMotorSpeed(float rpm)
Definition: public.cc:695
std::list< AprilTagDetectionListener * > m_aprilTagDetectionListeners
Definition: channel.hh:464
DepthCache< int64_t, wire::ImageMeta > m_imageMetaCache
Definition: channel.hh:420
impl(const std::string &address, const RemoteHeadChannel &cameraId, const std::string &ifName)
Definition: channel.cc:65
void(* Callback)(const Header &header, void *userDataP)
virtual Status getAuxImageConfig(image::AuxConfig &c)
Definition: public.cc:872
void dispatch(utility::BufferStreamWriter &buffer)
Definition: dispatch.cc:217
virtual Status setMtu(int32_t mtu)
Definition: public.cc:1187
DepthCache< int64_t, UdpTracker > m_udpTrackerCache
Definition: channel.hh:407
virtual Status getDeviceStatus(system::StatusMessage &status)
Definition: public.cc:1304
utility::Thread * m_rxThreadP
Definition: channel.hh:447
void dispatchAprilTagDetections(apriltag::Header &header)
Definition: dispatch.cc:201
UdpAssembler getUdpAssembler(const uint8_t *udpDatagramP, uint32_t length)
Definition: dispatch.cc:641
void(* Callback)(const Header &header, void *userDataP)
virtual Status stopStreams(DataSource mask)
Definition: public.cc:633
virtual Status getNetworkConfig(system::NetworkConfig &c)
Definition: public.cc:1243
static CRL_CONSTEXPR uint32_t MAX_USER_APRILTAG_QUEUE_SIZE
Definition: channel.hh:322
void eraseFlashRegion(uint32_t region)
Definition: flash.cc:51
void getImageTime(const WireT *wire, uint32_t &seconds, uint32_t &microSeconds)
Definition: channel.hh:241
std::vector< uint8_t > m_incomingBuffer
Definition: channel.hh:395
static CRL_CONSTEXPR uint32_t RX_POOL_SMALL_BUFFER_COUNT
Definition: channel.hh:283
void(* Callback)(const Header &header, void *userDataP)
static CRL_CONSTEXPR uint32_t RX_POOL_SMALL_BUFFER_SIZE
Definition: channel.hh:282
static CRL_CONSTEXPR uint32_t MAX_USER_GROUND_SURFACE_QUEUE_SIZE
Definition: channel.hh:321
virtual Status addIsolatedCallback(image::Callback callback, DataSource imageSourceMask, void *userDataP)
Definition: public.cc:127
static CRL_CONSTEXPR uint32_t MAX_USER_COMPRESSED_IMAGE_QUEUE_SIZE
Definition: channel.hh:307
void(* UdpAssembler)(utility::BufferStreamWriter &stream, const uint8_t *dataP, uint32_t offset, uint32_t length)
Definition: channel.hh:223
utility::Mutex m_dispatchLock
Definition: channel.hh:432
static CRL_CONSTEXPR uint32_t MAX_USER_PPS_QUEUE_SIZE
Definition: channel.hh:319
virtual Status getVersionInfo(system::VersionInfo &v)
Definition: public.cc:792
virtual Status setApriltagParams(const system::ApriltagParams &params)
Definition: public.cc:1397
static double DEFAULT_ACK_TIMEOUT()
Definition: channel.hh:286
static CRL_CONSTEXPR uint32_t IMAGE_META_CACHE_DEPTH
Definition: channel.hh:288
virtual Status getSensorVersion(VersionType &version)
Definition: public.cc:774
static CRL_CONSTEXPR VersionType API_VERSION
Definition: channel.hh:269
static CRL_CONSTEXPR uint16_t DEFAULT_SENSOR_TX_PORT
Definition: channel.hh:275
Definition: channel.cc:58
virtual Status getImuConfig(uint32_t &samplesPerMessage, std::vector< imu::Config > &c)
Definition: public.cc:1535
static CRL_CONSTEXPR uint32_t MAX_BUFFER_ALLOCATION_RETRIES
Definition: channel.hh:284
#define MSG_ID(x)
Definition: Protocol.hh:311
static CRL_CONSTEXPR uint32_t RX_POOL_LARGE_BUFFER_COUNT
Definition: channel.hh:281
void bind(const std::string &ifName)
Definition: channel.cc:300
virtual Status getEnabledStreams(DataSource &mask)
Definition: public.cc:647
wire::VersionResponse m_sensorVersion
Definition: channel.hh:493
utility::BufferStreamWriter & stream()
Definition: channel.hh:345
static CRL_CONSTEXPR uint32_t MAX_USER_IMU_QUEUE_SIZE
Definition: channel.hh:320
std::list< CompressedImageListener * > m_compressedImageListeners
Definition: channel.hh:462
const int64_t & unwrapSequenceId(uint16_t id)
Definition: dispatch.cc:693
utility::BufferStreamWriter & findFreeBuffer(uint32_t messageLength)
Definition: dispatch.cc:667
static CRL_CONSTEXPR uint32_t DEFAULT_ACK_ATTEMPTS
Definition: channel.hh:287
virtual Status getImageHistogram(int64_t frameId, image::Histogram &histogram)
Definition: public.cc:522
std::list< GroundSurfaceSplineListener * > m_groundSurfaceSplineListeners
Definition: channel.hh:463
static uint32_t imagerApiToWire(uint32_t h)
Definition: channel.cc:564
utility::Mutex m_streamLock
Definition: channel.hh:437
static CRL_CONSTEXPR uint32_t MAX_MTU_SIZE
Definition: channel.hh:274
void toHeaderTime(T nanoSeconds, uint32_t &seconds, uint32_t &microSeconds) const
Definition: channel.hh:229
static CRL_CONSTEXPR uint32_t UDP_TRACKER_CACHE_DEPTH
Definition: channel.hh:289
virtual Status startStreams(DataSource mask)
Definition: public.cc:619
utility::TimeStamp m_timeOffset
Definition: channel.hh:486
virtual Status setDeviceInfo(const std::string &key, const system::DeviceInfo &i)
Definition: public.cc:1415
virtual void * reserveCallbackBuffer()
Definition: public.cc:472
virtual Status getApiVersion(VersionType &version)
Definition: public.cc:783
virtual Status setImageCalibration(const image::Calibration &c)
Definition: public.cc:1076
static CRL_CONSTEXPR uint32_t MAX_USER_LASER_QUEUE_SIZE
Definition: channel.hh:306
void dispatchImu(imu::Header &header)
Definition: dispatch.cc:155
Status waitAck(const T &msg, wire::IdType id=MSG_ID(T::ID), const double &timeout=DEFAULT_ACK_TIMEOUT(), int32_t attempts=DEFAULT_ACK_ATTEMPTS)
Definition: query.hh:89
void dispatchPps(pps::Header &header)
Definition: dispatch.cc:140
virtual Status getImageCalibration(image::Calibration &c)
Definition: public.cc:1047
static CRL_CONSTEXPR uint32_t RX_POOL_LARGE_BUFFER_SIZE
Definition: channel.hh:280
std::list< LidarListener * > m_lidarListeners
Definition: channel.hh:459
virtual Status getImuInfo(uint32_t &maxSamplesPerMessage, std::vector< imu::Info > &info)
Definition: public.cc:1495
utility::TimeStamp sensorToLocalTime(const utility::TimeStamp &sensorTime)
Definition: channel.cc:637
virtual Status getDeviceModes(std::vector< system::DeviceMode > &modes)
Definition: public.cc:1158
virtual Status getRemoteHeadConfig(image::RemoteHeadConfig &c)
Definition: public.cc:1010
static uint32_t hardwareApiToWire(uint32_t h)
Definition: channel.cc:516
void(* Callback)(const Header &header, void *userDataP)
virtual Status flashBitstream(const std::string &file)
Definition: public.cc:1455
void publish(const T &message)
Definition: query.hh:50
void(* Callback)(const Header &header, void *userDataP)
virtual Status setLargeBuffers(const std::vector< uint8_t *> &buffers, uint32_t bufferSize)
Definition: public.cc:1599
static void * rxThread(void *userDataP)
Definition: dispatch.cc:859
virtual Status setTransmitDelay(const image::TransmitDelay &c)
Definition: public.cc:1116
void dispatchLidar(utility::BufferStream &buffer, lidar::Header &header)
Definition: dispatch.cc:125
std::list< ImuListener * > m_imuListeners
Definition: channel.hh:461
std::vector< utility::BufferStreamWriter * > BufferPool
Definition: channel.hh:412
static CRL_CONSTEXPR uint32_t TIME_SYNC_OFFSET_DECAY
Definition: channel.hh:290
virtual Status getLidarCalibration(lidar::Calibration &c)
Definition: public.cc:1128
virtual Status getTransmitDelay(image::TransmitDelay &c)
Definition: public.cc:1101
utility::BufferStreamWriter m_stream
Definition: channel.hh:373
std::map< wire::IdType, UdpAssembler > UdpAssemblerMap
Definition: channel.hh:425
static CRL_CONSTEXPR uint32_t MAX_USER_IMAGE_QUEUE_SIZE
Definition: channel.hh:305
Status waitData(const T &command, U &data, const double &timeout=DEFAULT_ACK_TIMEOUT(), int32_t attempts=DEFAULT_ACK_ATTEMPTS)
Definition: query.hh:120
static void * statusThread(void *userDataP)
Definition: channel.cc:661
virtual Status flashFirmware(const std::string &file)
Definition: public.cc:1465
virtual Status setLightingConfig(const lighting::Config &c)
Definition: public.cc:732
void programOrVerifyFlashRegion(std::ifstream &file, uint32_t operation, uint32_t region)
Definition: flash.cc:115
virtual Status setAuxImageConfig(const image::AuxConfig &c)
Definition: public.cc:973
#define CRL_CONSTEXPR
Definition: Portability.hh:49
virtual Status setImageConfig(const image::Config &c)
Definition: public.cc:931
utility::Thread * m_statusThreadP
Definition: channel.hh:453
static DataSource sourceWireToApi(wire::SourceType mask)
Definition: channel.cc:477
Status doFlashOp(const std::string &filename, uint32_t operation, uint32_t region)
Definition: flash.cc:185
virtual Status getDeviceInfo(system::DeviceInfo &info)
Definition: public.cc:1260
void(* Callback)(const Header &header, void *userDataP)
void dispatchImage(utility::BufferStream &buffer, image::Header &header)
Definition: dispatch.cc:109
virtual Status releaseCallbackBuffer(void *referenceP)
Definition: public.cc:496


multisense_lib
Author(s):
autogenerated on Sat Jun 24 2023 03:01:21