channel.hh
Go to the documentation of this file.
1 
36 #ifndef _LibMultiSense_details_channel_hh
37 #define _LibMultiSense_details_channel_hh
38 
39 #include "MultiSenseChannel.hh"
40 
44 #include "details/utility/Units.hh"
45 #include "details/listeners.hh"
46 #include "details/signal.hh"
47 #include "details/storage.hh"
48 #include "details/wire/Protocol.h"
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 <vector>
71 #include <list>
72 #include <set>
73 #include <map>
74 #include <iostream>
75 #include <fstream>
76 
77 namespace crl {
78 namespace multisense {
79 namespace details {
80 
81 //
82 // The implementation details
83 
84 class impl : public Channel {
85 public:
86 
87 #ifdef WIN32
88  typedef SOCKET socket_t;
89 #else
90  typedef int32_t socket_t;
91 #endif
92 
93  //
94  // Construction
95 
96  impl(const std::string& address);
97  ~impl();
98 
99  //
100  // Public API
101 
102  virtual Status addIsolatedCallback (image::Callback callback,
103  DataSource imageSourceMask,
104  void *userDataP);
105  virtual Status addIsolatedCallback (lidar::Callback callback,
106  void *userDataP);
107  virtual Status addIsolatedCallback (pps::Callback callback,
108  void *userDataP);
109  virtual Status addIsolatedCallback (imu::Callback callback,
110  void *userDataP);
111 
114  virtual Status removeIsolatedCallback(pps::Callback callback);
115  virtual Status removeIsolatedCallback(imu::Callback callback);
116 
117  virtual void* reserveCallbackBuffer ();
118  virtual Status releaseCallbackBuffer (void *referenceP);
119 
120  virtual Status networkTimeSynchronization(bool enabled);
121  virtual Status ptpTimeSynchronization(bool enabled);
122 
123  virtual Status startStreams (DataSource mask);
124  virtual Status stopStreams (DataSource mask);
125  virtual Status getEnabledStreams (DataSource& mask);
126 
127  virtual Status startDirectedStream (const DirectedStream& stream);
128  virtual Status startDirectedStreams (const std::vector<DirectedStream>& streams);
129  virtual Status stopDirectedStream (const DirectedStream& stream);
130  virtual Status getDirectedStreams (std::vector<DirectedStream>& streams);
131  virtual Status maxDirectedStreams (uint32_t& maximum);
132 
134 
135  virtual Status setMotorSpeed (float rpm);
136 
138  virtual Status setLightingConfig (const lighting::Config& c);
139 
141 
142  virtual Status getSensorVersion (VersionType& version);
143  virtual Status getApiVersion (VersionType& version);
145 
146  virtual Status getImageConfig (image::Config& c);
147  virtual Status setImageConfig (const image::Config& c);
148 
150  virtual Status setImageCalibration (const image::Calibration& c);
151 
154 
156  virtual Status setTransmitDelay (const image::TransmitDelay& c);
157 
159  virtual Status setLidarCalibration (const lidar::Calibration& c);
160 
161  virtual Status getImageHistogram (int64_t frameId, image::Histogram& histogram);
162 
163  virtual Status getPtpStatus (int64_t frameId, system::PtpStatus& ptpStatus);
164 
165  virtual Status getDeviceModes (std::vector<system::DeviceMode>& modes);
166 
167  virtual Status getMtu (int32_t& mtu);
168  virtual Status setMtu (int32_t mtu);
169 
170  virtual Status getMotorPos (int32_t& mtu);
171 
173  virtual Status setNetworkConfig (const system::NetworkConfig& c);
174 
175  virtual Status getDeviceInfo (system::DeviceInfo& info);
176  virtual Status setDeviceInfo (const std::string& key,
177  const system::DeviceInfo& i);
178 
179  virtual Status getDeviceStatus (system::StatusMessage& status);
180 
182  virtual Status setExternalCalibration (const system::ExternalCalibration& calibration);
183 
184  virtual Status flashBitstream (const std::string& file);
185  virtual Status flashFirmware (const std::string& file);
186 
187  virtual Status verifyBitstream (const std::string& file);
188  virtual Status verifyFirmware (const std::string& file);
189 
190  virtual Status getImuInfo (uint32_t& maxSamplesPerMessage,
191  std::vector<imu::Info>& info);
192  virtual Status getImuConfig (uint32_t& samplesPerMessage,
193  std::vector<imu::Config>& c);
194  virtual Status setImuConfig (bool storeSettingsInFlash,
195  uint32_t samplesPerMessage,
196  const std::vector<imu::Config>& c);
197 
198  virtual Status getLargeBufferDetails (uint32_t& bufferCount,
199  uint32_t& bufferSize);
200  virtual Status setLargeBuffers (const std::vector<uint8_t*>& buffers,
201  uint32_t bufferSize);
202  virtual Status getLocalUdpPort (uint16_t& port);
203 
204 private:
205 
206  //
207  // A handler prototype for custom UDP datagram reassembly
208 
209  typedef void (*UdpAssembler)(utility::BufferStreamWriter& stream,
210  const uint8_t *dataP,
211  uint32_t offset,
212  uint32_t length);
213 
214  template <typename T>
215  void toHeaderTime(T nanoSeconds,
216  uint32_t &seconds,
217  uint32_t &microSeconds) const
218  {
219  const T oneBillion = static_cast<T>(1e9);
220 
221  seconds = static_cast<uint32_t>(nanoSeconds / oneBillion);
222  microSeconds = static_cast<uint32_t>((nanoSeconds % oneBillion) /
223  static_cast<T>(1000));
224  }
225 
226  template <class WireT>
227  void getImageTime(const WireT *wire,
228  uint32_t &seconds,
229  uint32_t &microSeconds)
230  {
232  {
233 
234  toHeaderTime(wire->ptpNanoSeconds, seconds, microSeconds);
235 
236  return;
237  } else
238  {
239  if (false == m_networkTimeSyncEnabled) {
240 
241  seconds = wire->timeSeconds;
242  microSeconds = wire->timeMicroSeconds;
243 
244  return;
245 
246  } else {
247  sensorToLocalTime(static_cast<double>(wire->timeSeconds) +
248  1e-6 * static_cast<double>(wire->timeMicroSeconds),
249  seconds, microSeconds);
250  return;
251  }
252  }
253  }
254 
255  //
256  // The version of this API
257 
258  static CRL_CONSTEXPR VersionType API_VERSION = 0x0308; // 3.8
259 
260  //
261  // Misc. internal constants
262 
263  static CRL_CONSTEXPR uint32_t MAX_MTU_SIZE = 9000;
264  static CRL_CONSTEXPR uint16_t DEFAULT_SENSOR_TX_PORT = 9001;
265  static CRL_CONSTEXPR uint32_t RX_POOL_LARGE_BUFFER_SIZE = (10 * (1024 * 1024));
267  static CRL_CONSTEXPR uint32_t RX_POOL_SMALL_BUFFER_SIZE = (10 * (1024));
269 
270  static double DEFAULT_ACK_TIMEOUT () { return 0.2; }
271  static CRL_CONSTEXPR uint32_t DEFAULT_ACK_ATTEMPTS = 5;
272  static CRL_CONSTEXPR uint32_t IMAGE_META_CACHE_DEPTH = 20;
275 
276  //
277  // We must protect ourselves from user callbacks misbehaving
278  // and gobbling up all of our RX buffers
279  //
280  // These define the maximum number of datums that we will
281  // queue up in a user dispatch thread.
282 
285 
286  //
287  // PPS and IMU callbacks do not reserve an RX buffer, so queue
288  // depths are limited by RAM (via heap.)
289 
292 
293  //
294  // The maximum number of directed streams
295 
296  static CRL_CONSTEXPR uint32_t MAX_DIRECTED_STREAMS = 8;
297 
298  //
299  // A re-assembler for multi-packet messages
300 
301  class UdpTracker {
302  public:
303 
304  UdpTracker(uint32_t t,
305  UdpAssembler a,
308  m_bytesAssembled(0),
310  m_lastByteOffset(-1),
311  m_assembler(a),
312  m_stream(s) {};
313 
315  uint32_t packets() { return m_packetsAssembled; };
316 
317  bool assemble(uint32_t bytes,
318  uint32_t offset,
319  const uint8_t *dataP) {
320 
321  if (offset <= m_lastByteOffset)
322  CRL_EXCEPTION("out-of-order or duplicate packet", "");
323 
324  m_assembler(m_stream, dataP, offset, bytes);
325 
326  m_bytesAssembled += bytes;
327  m_lastByteOffset = offset;
329 
331  return true;
332  return false;
333  }
334 
335  private:
336 
343  };
344 
345  //
346  // The socket identifier and local port
347 
348  socket_t m_serverSocket;
350 
351  //
352  // The address of the sensor
353 
354  struct sockaddr_in m_sensorAddress;
355 
356  //
357  // The operating MTU of the sensor
358 
359  int32_t m_sensorMtu;
360 
361  //
362  // A buffer to receive incoming UDP packets
363 
364  std::vector<uint8_t> m_incomingBuffer;
365 
366  //
367  // Sequence ID for multi-packet message reassembly
368 
369  uint16_t m_txSeqId;
370  int32_t m_lastRxSeqId;
372 
373  //
374  // A cache to track incoming messages by sequence ID
375 
377 
378  //
379  // A pool of RX buffers, to reduce the amount of internal copying
380 
381  typedef std::vector<utility::BufferStreamWriter*> BufferPool;
382 
385 
386  //
387  // A cache of image meta data
388 
390 
391  //
392  // A map of custom UDP assemblers
393 
394  typedef std::map<wire::IdType, UdpAssembler> UdpAssemblerMap;
395 
396  UdpAssemblerMap m_udpAssemblerMap;
397 
398  //
399  // Mutex for callback registration and dispatching
400 
402 
403  //
404  // Mutex for stream control
405 
407 
408  //
409  // A flag to shut down the internal threads
410 
412 
413  //
414  // Internal UDP reception thread
415 
418 
419  //
420  // Internal status thread
421 
423 
424  //
425  // The lists of user callbacks
426 
427  std::list<ImageListener*> m_imageListeners;
428  std::list<LidarListener*> m_lidarListeners;
429  std::list<PpsListener*> m_ppsListeners;
430  std::list<ImuListener*> m_imuListeners;
431 
432  //
433  // A message signal interface
434 
436 
437  //
438  // A message storage interface
439 
441 
442  //
443  // The mask of currently enabled streams (desired)
444 
446 
447  //
448  // The current sensor time offset
449 
452  double m_timeOffset;
455 
456  //
457  // Cached version info from the device
458 
460 
461  //
462  // Cached StatusResponseMessage from the MultiSense
463 
465 
466  //
467  // Private procedures
468 
469  template<class T, class U> Status waitData(const T& command,
470  U& data,
471  const double& timeout=DEFAULT_ACK_TIMEOUT(),
472  int32_t attempts=DEFAULT_ACK_ATTEMPTS);
473 #if defined (_MSC_VER)
474  template<class T> Status waitAck (const T& msg,
475  wire::IdType id,
476  const double& timeout,
477  int32_t attempts);
478  template<class T> Status waitAck (const T& msg) {
479  return waitAck (msg, MSG_ID(T::ID), double(DEFAULT_ACK_TIMEOUT()), DEFAULT_ACK_ATTEMPTS);
480  }
481 #else
482  template<class T> Status waitAck (const T& msg,
483  wire::IdType id=MSG_ID(T::ID),
484  const double& timeout=DEFAULT_ACK_TIMEOUT(),
485  int32_t attempts=DEFAULT_ACK_ATTEMPTS);
486 #endif
487 
488  template<class T> void publish (const T& message);
489  void publish (const utility::BufferStreamWriter& stream);
490  void dispatch (utility::BufferStreamWriter& buffer);
492  image::Header& header);
494  lidar::Header& header);
495  void dispatchPps (pps::Header& header);
496  void dispatchImu (imu::Header& header);
497 
498 
499  utility::BufferStreamWriter& findFreeBuffer (uint32_t messageLength);
500  const int64_t& unwrapSequenceId(uint16_t id);
501  UdpAssembler getUdpAssembler (const uint8_t *udpDatagramP,
502  uint32_t length);
503 
504  void eraseFlashRegion (uint32_t region);
505  void programOrVerifyFlashRegion(std::ifstream& file,
506  uint32_t operation,
507  uint32_t region);
508  Status doFlashOp (const std::string& filename,
509  uint32_t operation,
510  uint32_t region);
511 
512  void applySensorTimeOffset(const double& offset);
513  double sensorToLocalTime (const double& sensorTime);
514  void sensorToLocalTime (const double& sensorTime,
515  uint32_t& seconds,
516  uint32_t& microseconds);
517 
518  void cleanup();
519  void bind ();
520  void handle ();
521 
522  //
523  // Static members
524 
527  static uint32_t hardwareApiToWire(uint32_t h);
528  static uint32_t hardwareWireToApi(uint32_t h);
529  static uint32_t imagerApiToWire(uint32_t h);
530  static uint32_t imagerWireToApi(uint32_t h);
531 #if WIN32
532  static DWORD WINAPI rxThread (void *userDataP);
533  static DWORD WINAPI statusThread (void *userDataP);
534 #else
535  static void *rxThread (void *userDataP);
536  static void *statusThread (void *userDataP);
537 #endif
538 };
539 
540 
541 }}} // namespaces
542 
543 #endif // LibMultiSense_details_channel_hh
std::list< ImageListener * > m_imageListeners
Definition: channel.hh:427
static uint32_t imagerWireToApi(uint32_t h)
Definition: channel.cc:484
virtual Status setNetworkConfig(const system::NetworkConfig &c)
Definition: public.cc:1035
#define CRL_EXCEPTION(fmt,...)
Definition: Exception.hh:71
static uint32_t hardwareWireToApi(uint32_t h)
Definition: channel.cc:449
virtual Status getPtpStatus(int64_t frameId, system::PtpStatus &ptpStatus)
Definition: public.cc:404
virtual Status getMtu(int32_t &mtu)
Definition: public.cc:1010
virtual Status verifyBitstream(const std::string &file)
Definition: public.cc:1231
virtual Status getLocalUdpPort(uint16_t &port)
Definition: public.cc:1397
virtual Status setImuConfig(bool storeSettingsInFlash, uint32_t samplesPerMessage, const std::vector< imu::Config > &c)
Definition: public.cc:1318
double sensorToLocalTime(const double &sensorTime)
Definition: channel.cc:521
virtual Status verifyFirmware(const std::string &file)
Definition: public.cc:1241
virtual Status setTriggerSource(TriggerSource s)
Definition: public.cc:570
virtual Status getMotorPos(int32_t &mtu)
Definition: public.cc:1021
virtual Status getExternalCalibration(system::ExternalCalibration &calibration)
Definition: public.cc:1136
bool assemble(uint32_t bytes, uint32_t offset, const uint8_t *dataP)
Definition: channel.hh:317
static CRL_CONSTEXPR uint32_t MAX_DIRECTED_STREAMS
Definition: channel.hh:296
virtual Status getLightingSensorStatus(lighting::SensorStatus &status)
Definition: public.cc:652
struct sockaddr_in m_sensorAddress
Definition: channel.hh:354
virtual Status networkTimeSynchronization(bool enabled)
Definition: public.cc:437
virtual Status removeIsolatedCallback(image::Callback callback)
Definition: public.cc:205
UdpTracker(uint32_t t, UdpAssembler a, utility::BufferStreamWriter &s)
Definition: channel.hh:304
void(* Callback)(const Header &header, void *userDataP)
UdpAssemblerMap m_udpAssemblerMap
Definition: channel.hh:396
virtual Status ptpTimeSynchronization(bool enabled)
Definition: public.cc:446
virtual Status setExternalCalibration(const system::ExternalCalibration &calibration)
Definition: public.cc:1154
virtual Status getLightingConfig(lighting::Config &c)
Definition: public.cc:614
virtual Status getImageConfig(image::Config &c)
Definition: public.cc:703
void applySensorTimeOffset(const double &offset)
Definition: channel.cc:503
wire::StatusResponse m_statusResponseMessage
Definition: channel.hh:464
virtual Status setLidarCalibration(const lidar::Calibration &c)
Definition: public.cc:943
static wire::SourceType sourceApiToWire(DataSource mask)
Definition: channel.cc:369
std::list< PpsListener * > m_ppsListeners
Definition: channel.hh:429
virtual Status getLargeBufferDetails(uint32_t &bufferCount, uint32_t &bufferSize)
Definition: public.cc:1343
virtual Status startDirectedStream(const DirectedStream &stream)
Definition: public.cc:504
virtual Status setMotorSpeed(float rpm)
Definition: public.cc:606
DepthCache< int64_t, wire::ImageMeta > m_imageMetaCache
Definition: channel.hh:389
void dispatch(utility::BufferStreamWriter &buffer)
Definition: dispatch.cc:165
virtual Status setMtu(int32_t mtu)
Definition: public.cc:985
DepthCache< int64_t, UdpTracker > m_udpTrackerCache
Definition: channel.hh:376
virtual Status getDeviceStatus(system::StatusMessage &status)
Definition: public.cc:1103
utility::Thread * m_rxThreadP
Definition: channel.hh:416
UdpAssembler getUdpAssembler(const uint8_t *udpDatagramP, uint32_t length)
Definition: dispatch.cc:474
void(* Callback)(const Header &header, void *userDataP)
virtual Status stopStreams(DataSource mask)
Definition: public.cc:478
virtual Status getNetworkConfig(system::NetworkConfig &c)
Definition: public.cc:1042
virtual Status getSensorCalibration(image::SensorCalibration &c)
Definition: public.cc:868
void eraseFlashRegion(uint32_t region)
Definition: flash.cc:51
void getImageTime(const WireT *wire, uint32_t &seconds, uint32_t &microSeconds)
Definition: channel.hh:227
virtual Status setSensorCalibration(const image::SensorCalibration &c)
Definition: public.cc:885
std::vector< uint8_t > m_incomingBuffer
Definition: channel.hh:364
static CRL_CONSTEXPR uint32_t RX_POOL_SMALL_BUFFER_COUNT
Definition: channel.hh:268
virtual Status startDirectedStreams(const std::vector< DirectedStream > &streams)
Definition: public.cc:515
#define MSG_ID(x)
Definition: Protocol.h:273
static CRL_CONSTEXPR uint32_t RX_POOL_SMALL_BUFFER_SIZE
Definition: channel.hh:267
virtual Status addIsolatedCallback(image::Callback callback, DataSource imageSourceMask, void *userDataP)
Definition: public.cc:120
void(* UdpAssembler)(utility::BufferStreamWriter &stream, const uint8_t *dataP, uint32_t offset, uint32_t length)
Definition: channel.hh:209
utility::Mutex m_dispatchLock
Definition: channel.hh:401
static CRL_CONSTEXPR uint32_t MAX_USER_PPS_QUEUE_SIZE
Definition: channel.hh:290
virtual Status getVersionInfo(system::VersionInfo &v)
Definition: public.cc:687
static double DEFAULT_ACK_TIMEOUT()
Definition: channel.hh:270
static CRL_CONSTEXPR uint32_t IMAGE_META_CACHE_DEPTH
Definition: channel.hh:272
virtual Status getSensorVersion(VersionType &version)
Definition: public.cc:669
static CRL_CONSTEXPR VersionType API_VERSION
Definition: channel.hh:258
static CRL_CONSTEXPR uint16_t DEFAULT_SENSOR_TX_PORT
Definition: channel.hh:264
Definition: channel.cc:56
virtual Status getImuConfig(uint32_t &samplesPerMessage, std::vector< imu::Config > &c)
Definition: public.cc:1291
static CRL_CONSTEXPR uint32_t RX_POOL_LARGE_BUFFER_COUNT
Definition: channel.hh:266
virtual Status getEnabledStreams(DataSource &mask)
Definition: public.cc:492
wire::VersionResponse m_sensorVersion
Definition: channel.hh:459
utility::BufferStreamWriter & stream()
Definition: channel.hh:314
static CRL_CONSTEXPR uint32_t MAX_USER_IMU_QUEUE_SIZE
Definition: channel.hh:291
const int64_t & unwrapSequenceId(uint16_t id)
Definition: dispatch.cc:526
utility::BufferStreamWriter & findFreeBuffer(uint32_t messageLength)
Definition: dispatch.cc:500
static CRL_CONSTEXPR uint32_t DEFAULT_ACK_ATTEMPTS
Definition: channel.hh:271
virtual Status getImageHistogram(int64_t frameId, image::Histogram &histogram)
Definition: public.cc:367
virtual Status setLargeBuffers(const std::vector< uint8_t * > &buffers, uint32_t bufferSize)
Definition: public.cc:1355
static uint32_t imagerApiToWire(uint32_t h)
Definition: channel.cc:469
utility::Mutex m_streamLock
Definition: channel.hh:406
static CRL_CONSTEXPR uint32_t MAX_MTU_SIZE
Definition: channel.hh:263
static CRL_CONSTEXPR uint32_t UDP_TRACKER_CACHE_DEPTH
Definition: channel.hh:273
virtual Status startStreams(DataSource mask)
Definition: public.cc:464
virtual Status setDeviceInfo(const std::string &key, const system::DeviceInfo &i)
Definition: public.cc:1171
virtual void * reserveCallbackBuffer()
Definition: public.cc:317
virtual Status getApiVersion(VersionType &version)
Definition: public.cc:678
virtual Status setImageCalibration(const image::Calibration &c)
Definition: public.cc:843
static CRL_CONSTEXPR uint32_t MAX_USER_LASER_QUEUE_SIZE
Definition: channel.hh:284
void dispatchImu(imu::Header &header)
Definition: dispatch.cc:150
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
virtual Status stopDirectedStream(const DirectedStream &stream)
Definition: public.cc:530
void dispatchPps(pps::Header &header)
Definition: dispatch.cc:135
virtual Status getImageCalibration(image::Calibration &c)
Definition: public.cc:814
static CRL_CONSTEXPR uint32_t RX_POOL_LARGE_BUFFER_SIZE
Definition: channel.hh:265
std::list< LidarListener * > m_lidarListeners
Definition: channel.hh:428
virtual Status getImuInfo(uint32_t &maxSamplesPerMessage, std::vector< imu::Info > &info)
Definition: public.cc:1251
virtual Status maxDirectedStreams(uint32_t &maximum)
Definition: public.cc:561
virtual Status getDeviceModes(std::vector< system::DeviceMode > &modes)
Definition: public.cc:956
static uint32_t hardwareApiToWire(uint32_t h)
Definition: channel.cc:429
impl(const std::string &address)
Definition: channel.cc:63
void toHeaderTime(T nanoSeconds, uint32_t &seconds, uint32_t &microSeconds) const
Definition: channel.hh:215
virtual Status flashBitstream(const std::string &file)
Definition: public.cc:1211
void publish(const T &message)
Definition: query.hh:50
void(* Callback)(const Header &header, void *userDataP)
static void * rxThread(void *userDataP)
Definition: dispatch.cc:690
virtual Status setTransmitDelay(const image::TransmitDelay &c)
Definition: public.cc:914
void dispatchLidar(utility::BufferStream &buffer, lidar::Header &header)
Definition: dispatch.cc:120
std::list< ImuListener * > m_imuListeners
Definition: channel.hh:430
std::vector< utility::BufferStreamWriter * > BufferPool
Definition: channel.hh:381
static CRL_CONSTEXPR uint32_t TIME_SYNC_OFFSET_DECAY
Definition: channel.hh:274
virtual Status getLidarCalibration(lidar::Calibration &c)
Definition: public.cc:926
virtual Status getTransmitDelay(image::TransmitDelay &c)
Definition: public.cc:899
utility::BufferStreamWriter m_stream
Definition: channel.hh:342
std::map< wire::IdType, UdpAssembler > UdpAssemblerMap
Definition: channel.hh:394
static CRL_CONSTEXPR uint32_t MAX_USER_IMAGE_QUEUE_SIZE
Definition: channel.hh:283
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:545
virtual Status flashFirmware(const std::string &file)
Definition: public.cc:1221
virtual Status setLightingConfig(const lighting::Config &c)
Definition: public.cc:635
void programOrVerifyFlashRegion(std::ifstream &file, uint32_t operation, uint32_t region)
Definition: flash.cc:115
#define CRL_CONSTEXPR
Definition: Portability.hh:51
virtual Status setImageConfig(const image::Config &c)
Definition: public.cc:769
virtual Status getDirectedStreams(std::vector< DirectedStream > &streams)
Definition: public.cc:541
utility::Thread * m_statusThreadP
Definition: channel.hh:422
static DataSource sourceWireToApi(wire::SourceType mask)
Definition: channel.cc:399
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:1059
void(* Callback)(const Header &header, void *userDataP)
void dispatchImage(utility::BufferStream &buffer, image::Header &header)
Definition: dispatch.cc:104
virtual Status releaseCallbackBuffer(void *referenceP)
Definition: public.cc:341


multisense_lib
Author(s):
autogenerated on Sun Mar 14 2021 02:34:50