Legacy/details/channel.cc
Go to the documentation of this file.
1 
40 
41 #include <wire/DisparityMessage.hh>
42 #include <wire/SysMtuMessage.hh>
43 #include <wire/SysGetMtuMessage.hh>
50 
52 
53 #ifdef WIN32
54 #include <ws2tcpip.h>
55 #else
56 #include <netdb.h>
57 #endif
58 #include <errno.h>
59 #include <fcntl.h>
60 
61 namespace crl {
62 namespace multisense {
63 namespace details {
64 
65 //
66 // Implementation constructor
67 
68 impl::impl(const std::string& address, const RemoteHeadChannel& cameraId, const std::string& ifName) :
69  m_serverSocket(INVALID_SOCKET),
70  m_serverSocketPort(0),
71  m_sensorAddress(),
72  m_sensorMtu(MAX_MTU_SIZE),
73  m_incomingBuffer(MAX_MTU_SIZE),
74  m_txSeqId(0),
75  m_lastRxSeqId(-1),
76  m_unWrappedRxSeqId(0),
77  m_lastUnexpectedSequenceId(-1),
78  m_udpTrackerCache(UDP_TRACKER_CACHE_DEPTH),
79  m_rxLargeBufferPool(),
80  m_rxSmallBufferPool(),
81  m_imageMetaCache(IMAGE_META_CACHE_DEPTH),
82  m_secondaryAppMetaCache(SECONDARY_APP_META_CACHE_DEPTH),
83  m_udpAssemblerMap(),
84  m_dispatchLock(),
85  m_streamLock(),
86  m_threadsRunning(false),
87  m_rxThreadP(NULL),
88  m_rxLock(),
89  m_statusThreadP(NULL),
90  m_imageListeners(),
91  m_lidarListeners(),
92  m_ppsListeners(),
93  m_imuListeners(),
94  m_compressedImageListeners(),
95  m_secondaryAppListeners(),
96  m_watch(),
97  m_messages(),
98  m_streamsEnabled(0),
99  m_timeLock(),
100  m_timeOffsetInit(false),
101  m_timeOffset(0),
102  m_networkTimeSyncEnabled(true),
103  m_ptpTimeSyncEnabled(false),
104  m_sensorVersion()
105 {
106 
107 #if WIN32
108  WSADATA wsaData;
109  int result = WSAStartup (MAKEWORD (0x02, 0x02), &wsaData);
110  if (result != 0)
111  CRL_EXCEPTION("WSAStartup() failed: %d", result);
112 
113 #endif
114 
115  struct addrinfo hints, *res;
116  memset(&hints, 0, sizeof(hints));
117  hints.ai_family = AF_INET;
118  hints.ai_socktype = 0;
119 
120  const int addrstatus = getaddrinfo(address.c_str(), NULL, &hints, &res);
121  if (addrstatus != 0 || res == NULL)
122  CRL_EXCEPTION("unable to resolve \"%s\": %s", address.c_str(), strerror(errno));
123 
124  in_addr addr;
125  memcpy(&addr, &(((struct sockaddr_in *)(res->ai_addr))->sin_addr), sizeof(in_addr));
126 
127  memset(&m_sensorAddress, 0, sizeof(m_sensorAddress));
128 
129  m_sensorAddress.sin_family = AF_INET;
130  m_sensorAddress.sin_port = htons(DEFAULT_SENSOR_TX_PORT + static_cast<uint16_t>(cameraId + 1));
131  m_sensorAddress.sin_addr = addr;
132 
133  freeaddrinfo(res);
134 
135  //
136  // Create a pool of RX buffers
137 
138  uint32_t largeBufferRetry = 0;
139  for(uint32_t i=0; i<RX_POOL_LARGE_BUFFER_COUNT;)
140  {
141  try {
143  i++;
144  largeBufferRetry = 0;
145  }
146  catch (const std::exception &e) {
147  CRL_DEBUG("Failed to allocate memory (will sleep and try again): %s", e.what());
148  usleep(static_cast<unsigned int> (10000));
149  largeBufferRetry++;
150 
151  if (largeBufferRetry >= MAX_BUFFER_ALLOCATION_RETRIES)
152  throw e;
153  }
154  }
155 
156  uint32_t smallBufferRetry = 0;
157  for(uint32_t i=0; i<RX_POOL_SMALL_BUFFER_COUNT;)
158  {
159  try {
161  i++;
162  smallBufferRetry = 0;
163  }
164  catch (const std::exception &e) {
165  CRL_DEBUG("Failed to allocate memory (will sleep and try again): %s", e.what());
166  usleep(static_cast<unsigned int> (10000));
167  smallBufferRetry++;
168 
169  if (smallBufferRetry >= MAX_BUFFER_ALLOCATION_RETRIES)
170  throw e;
171  }
172  }
173 
174  //
175  // Bind to the port
176 
177  try {
178  bind(ifName);
179  } catch (const std::exception& e) {
180  CRL_DEBUG("exception: %s\n", e.what());
181  cleanup();
182  throw e;
183  }
184 
185  //
186  // Register any special UDP reassemblers
187 
189 
190  //
191  // Create UDP reception thread
192 
193  m_threadsRunning = true;
194  m_rxThreadP = new utility::Thread(rxThread, this);
195 
196  //
197  // Request the current operating MTU of the device
198 
199  wire::SysMtu mtu;
200 
201  Status status = waitData(wire::SysGetMtu(), mtu);
202  if (Status_Ok != status) {
203  cleanup();
204  CRL_EXCEPTION("failed to establish comms with the sensor at \"%s\", with remote head enum %d",
205  address.c_str(), cameraId);
206  } else {
207 
208  //
209  // Use the same MTU for TX
210 
211  m_sensorMtu = mtu.mtu;
212  }
213 
214  //
215  // Request version info from the device
216 
218  if (Status_Ok != status) {
219  cleanup();
220  CRL_EXCEPTION("failed to request version info from sensor at \"%s\"",
221  address.c_str());
222  }
223 
224  //
225  // Create status thread
226 
228 }
229 
230 //
231 // Implementation cleanup
232 
234 {
235  m_threadsRunning = false;
236 
237  if (m_rxThreadP)
238  delete m_rxThreadP;
239  if (m_statusThreadP)
240  delete m_statusThreadP;
241 
242  std::list<ImageListener*>::const_iterator iti;
243  for(iti = m_imageListeners.begin();
244  iti != m_imageListeners.end();
245  ++ iti)
246  delete *iti;
247  std::list<LidarListener*>::const_iterator itl;
248  for(itl = m_lidarListeners.begin();
249  itl != m_lidarListeners.end();
250  ++ itl)
251  delete *itl;
252  std::list<PpsListener*>::const_iterator itp;
253  for(itp = m_ppsListeners.begin();
254  itp != m_ppsListeners.end();
255  ++ itp)
256  delete *itp;
257  std::list<ImuListener*>::const_iterator itm;
258  for(itm = m_imuListeners.begin();
259  itm != m_imuListeners.end();
260  ++ itm)
261  delete *itm;
262  std::list<CompressedImageListener*>::const_iterator itc;
263  for(itc = m_compressedImageListeners.begin();
264  itc != m_compressedImageListeners.end();
265  ++ itc)
266  delete *itc;
267  std::list<SecondaryAppListener*>::const_iterator its;
268  for(its = m_secondaryAppListeners.begin();
269  its != m_secondaryAppListeners.end();
270  its ++)
271  delete *its;
272  BufferPool::const_iterator it;
273  for(it = m_rxLargeBufferPool.begin();
274  it != m_rxLargeBufferPool.end();
275  ++it)
276  delete *it;
277  for(it = m_rxSmallBufferPool.begin();
278  it != m_rxSmallBufferPool.end();
279  ++it)
280  delete *it;
281 
282  m_imageListeners.clear();
283  m_lidarListeners.clear();
284  m_ppsListeners.clear();
285  m_imuListeners.clear();
286  m_secondaryAppListeners.clear();
288  m_rxLargeBufferPool.clear();
289  m_rxSmallBufferPool.clear();
290 
291  if (m_serverSocket > 0)
293 
294 #if WIN32
295  WSACleanup ();
296 #endif
297 }
298 
299 //
300 // Implementation destructor
301 
303 {
304  cleanup();
305 }
306 
307 //
308 // Binds the communications channel, preparing it to send/receive data
309 // over the network.
310 
311 void impl::bind(const std::string& ifName)
312 {
313  //
314  // Create the socket.
315 
316  m_serverSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
317 #if defined(__MINGW64__)
319 #else
320  if (m_serverSocket < 0)
321 #endif
322  CRL_EXCEPTION("failed to create the UDP socket: %s",
323  strerror(errno));
324 
325  #if __linux__
326  //
327  // Bind to specific interface if specified
328  if (!ifName.empty()){
329  if (0 != setsockopt(m_serverSocket, SOL_SOCKET, SO_BINDTODEVICE, ifName.c_str(), ifName.size())){
330  CRL_EXCEPTION("Failed to bind to device %s. Error: %s", ifName.c_str(),
331  strerror(errno));
332  }
333  }
334  #else
335  if (!ifName.empty())
336  CRL_DEBUG("User specified binding to adapter %s, but this feature is only supported under linux. Ignoring bind to specific adapter", ifName.c_str());
337  #endif
338 
339  //
340  // Turn non-blocking on.
341 #if WIN32
342  u_long ioctl_arg = 1;
343  if (0 != ioctlsocket(m_serverSocket, FIONBIO, &ioctl_arg))
344  CRL_EXCEPTION("failed to make a socket non-blocking: %d",WSAGetLastError ());
345 #else
346  const int flags = fcntl(m_serverSocket, F_GETFL, 0);
347 
348  if (0 != fcntl(m_serverSocket, F_SETFL, flags | O_NONBLOCK))
349  CRL_EXCEPTION("failed to make a socket non-blocking: %s",
350  strerror(errno));
351 #endif
352 
353  //
354  // Allow reusing sockets.
355 
356  int reuseSocket = 1;
357 
358  if (0 != setsockopt(m_serverSocket, SOL_SOCKET, SO_REUSEADDR, (char*) &reuseSocket,
359  sizeof(reuseSocket)))
360  CRL_EXCEPTION("failed to turn on socket reuse flag: %s",
361  strerror(errno));
362 
363  //
364  // We want very large buffers to store several images
365 
366 #if __APPLE__
367  // MacOS cannot reliably allocate a buffer larger than this
368  int bufferSize = 4 * 1024 * 1024;
369 #else
370  int bufferSize = 48 * 1024 * 1024;
371 #endif
372 
373  if (0 != setsockopt(m_serverSocket, SOL_SOCKET, SO_RCVBUF, (char*) &bufferSize,
374  sizeof(bufferSize)) ||
375  0 != setsockopt(m_serverSocket, SOL_SOCKET, SO_SNDBUF, (char*) &bufferSize,
376  sizeof(bufferSize)))
377  CRL_EXCEPTION("failed to adjust socket buffer sizes (%d bytes): %s",
378  bufferSize, strerror(errno));
379 
380  //
381  // Bind the connection to the port.
382 
383  struct sockaddr_in address;
384 
385  address.sin_family = AF_INET;
386  address.sin_port = htons(0); // system assigned
387  address.sin_addr.s_addr = htonl(INADDR_ANY);
388 
389  if (0 != ::bind(m_serverSocket, (struct sockaddr*) &address, sizeof(address)))
390  CRL_EXCEPTION("failed to bind the server socket to system-assigned port: %s",
391  strerror(errno));
392 
393  //
394  // Retrieve the system assigned local UDP port
395 #if WIN32
396  int len = sizeof(address);
397 #else
398  socklen_t len = sizeof(address);
399 #endif
400  if (0 != getsockname(m_serverSocket, (struct sockaddr*) &address, &len))
401  CRL_EXCEPTION("getsockname() failed: %s", strerror(errno));
402  m_serverSocketPort = htons(address.sin_port);
403 }
404 
405 //
406 // Publish a stream to the sensor
407 
409 {
410  //
411  // Install the header
412 
413  wire::Header& header = *(reinterpret_cast<wire::Header*>(stream.data()));
414 
415  header.magic = wire::HEADER_MAGIC;
416  header.version = wire::HEADER_VERSION;
417  header.group = wire::HEADER_GROUP;
418  header.flags = 0;
419 #if WIN32
420  // TBD: This returns the post-incremented value
421  header.sequenceIdentifier = InterlockedIncrement16((short*)&m_txSeqId);
422 #else
423  // TBD: This returns the pre-incremented value
424  header.sequenceIdentifier = __sync_fetch_and_add(&m_txSeqId, 1);
425 #endif
426  header.messageLength = static_cast<uint32_t> (stream.tell() - sizeof(wire::Header));
427  header.byteOffset = 0;
428 
429  //
430  // Send the packet along
431 
432 // disable MSVC warning for narrowing conversion.
433 #if defined(WIN32) && !defined(__MINGW64__)
434 #pragma warning (push)
435 #pragma warning (disable : 4267)
436 #endif
437  const int32_t ret = sendto(m_serverSocket, (char*)stream.data(), stream.tell(), 0,
438  (struct sockaddr *) &m_sensorAddress,
439  sizeof(m_sensorAddress));
440 #if defined(WIN32) && !defined(__MINGW64__)
441 #pragma warning (pop)
442 #endif
443 
444  if (static_cast<size_t>(ret) != stream.tell())
445  CRL_EXCEPTION("error sending data to sensor, %d/%d bytes written: %s",
446  ret, stream.tell(), strerror(errno));
447 }
448 
449 //
450 // Convert data source types from wire<->API. These match 1:1 right now, but we
451 // want the freedom to change the wire protocol as we see fit.
452 
454 {
455  wire::SourceType wire_mask = 0;
456 
457  if (mask & Source_Raw_Left) wire_mask |= wire::SOURCE_RAW_LEFT;
458  if (mask & Source_Raw_Right) wire_mask |= wire::SOURCE_RAW_RIGHT;
459  if (mask & Source_Raw_Aux) wire_mask |= wire::SOURCE_RAW_AUX;
460  if (mask & Source_Luma_Left) wire_mask |= wire::SOURCE_LUMA_LEFT;
461  if (mask & Source_Luma_Right) wire_mask |= wire::SOURCE_LUMA_RIGHT;
462  if (mask & Source_Luma_Aux) wire_mask |= wire::SOURCE_LUMA_AUX;
465  if (mask & Source_Luma_Rectified_Aux) wire_mask |= wire::SOURCE_LUMA_RECT_AUX;
466  if (mask & Source_Chroma_Left) wire_mask |= wire::SOURCE_CHROMA_LEFT;
467  if (mask & Source_Chroma_Right) wire_mask |= wire::SOURCE_CHROMA_RIGHT;
469  if (mask & Source_Chroma_Aux) wire_mask |= wire::SOURCE_CHROMA_AUX;
470  if (mask & Source_Disparity) wire_mask |= wire::SOURCE_DISPARITY;
471  if (mask & Source_Disparity_Right) wire_mask |= wire::SOURCE_DISPARITY_RIGHT;
472  if (mask & Source_Disparity_Aux) wire_mask |= wire::SOURCE_DISPARITY_AUX;
473  if (mask & Source_Disparity_Cost) wire_mask |= wire::SOURCE_DISPARITY_COST;
474  if (mask & Source_Jpeg_Left) wire_mask |= wire::SOURCE_JPEG_LEFT;
475  if (mask & Source_Rgb_Left) wire_mask |= wire::SOURCE_RGB_LEFT;
476  if (mask & Source_Lidar_Scan) wire_mask |= wire::SOURCE_LIDAR_SCAN;
477  if (mask & Source_Imu) wire_mask |= wire::SOURCE_IMU;
478  if (mask & Source_Pps) wire_mask |= wire::SOURCE_PPS;
479  if (mask & Source_Compressed_Left) wire_mask |= wire::SOURCE_COMPRESSED_LEFT;
483  if (mask & Source_Compressed_Aux) wire_mask |= wire::SOURCE_COMPRESSED_AUX;
494 
495  return wire_mask;
496 }
497 
499 {
500  DataSource api_mask = 0;
501 
502  if (mask & wire::SOURCE_RAW_LEFT) api_mask |= Source_Raw_Left;
503  if (mask & wire::SOURCE_RAW_RIGHT) api_mask |= Source_Raw_Right;
504  if (mask & wire::SOURCE_RAW_AUX) api_mask |= Source_Raw_Aux;
505  if (mask & wire::SOURCE_LUMA_LEFT) api_mask |= Source_Luma_Left;
506  if (mask & wire::SOURCE_LUMA_RIGHT) api_mask |= Source_Luma_Right;
507  if (mask & wire::SOURCE_LUMA_AUX) api_mask |= Source_Luma_Aux;
511  if (mask & wire::SOURCE_CHROMA_LEFT) api_mask |= Source_Chroma_Left;
512  if (mask & wire::SOURCE_CHROMA_RIGHT) api_mask |= Source_Chroma_Right;
513  if (mask & wire::SOURCE_CHROMA_AUX) api_mask |= Source_Chroma_Aux;
515  if (mask & wire::SOURCE_DISPARITY) api_mask |= Source_Disparity;
517  if (mask & wire::SOURCE_DISPARITY_AUX) api_mask |= Source_Disparity_Aux;
518  if (mask & wire::SOURCE_DISPARITY_COST) api_mask |= Source_Disparity_Cost;
519  if (mask & wire::SOURCE_JPEG_LEFT) api_mask |= Source_Jpeg_Left;
520  if (mask & wire::SOURCE_RGB_LEFT) api_mask |= Source_Rgb_Left;
521  if (mask & wire::SOURCE_LIDAR_SCAN) api_mask |= Source_Lidar_Scan;
522  if (mask & wire::SOURCE_IMU) api_mask |= Source_Imu;
523  if (mask & wire::SOURCE_PPS) api_mask |= Source_Pps;
531  if (mask & wire::SOURCE_COMPRESSED_AUX) api_mask |= Source_Compressed_Aux;
539 
540  return api_mask;
541 }
542 
543 uint32_t impl::hardwareApiToWire(uint32_t a)
544 {
545  switch(a) {
565  default:
566  CRL_DEBUG("unknown API hardware type \"%d\"\n", a);
567  return a; // pass through
568  }
569 }
570 uint32_t impl::hardwareWireToApi(uint32_t w)
571 {
572  switch(w) {
592  default:
593  CRL_DEBUG("unknown WIRE hardware type \"%d\"\n", w);
594  return w; // pass through
595  }
596 }
597 uint32_t impl::imagerApiToWire(uint32_t a)
598 {
599  switch(a) {
608  default:
609  CRL_DEBUG("unknown API imager type \"%d\"\n", a);
610  return a; // pass through
611  }
612 }
613 uint32_t impl::imagerWireToApi(uint32_t w)
614 {
615  switch(w) {
624  default:
625  CRL_DEBUG("unknown WIRE imager type \"%d\"\n", w);
626  return w; // pass through
627  }
628 }
629 
630 //
631 // Apply a time offset correction
632 
634 {
636 
637  //
638  // Reseed on startup or if there is a large jump in time
639  //
640  CRL_CONSTEXPR int TIME_SYNC_THRESH_SECONDS = 100;
641  const bool seed_offset = (false == m_timeOffsetInit) ||
642  (abs(m_timeOffset.getSeconds() - offset.getSeconds()) > TIME_SYNC_THRESH_SECONDS);
643 
644  if (seed_offset)
645  {
646  m_timeOffset = offset; // seed
647  m_timeOffsetInit = true;
648  return;
649  }
650 
651  //
652  // Use doubles to compute offsets to prevent overflow
653 
654  const double samples = static_cast<double>(TIME_SYNC_OFFSET_DECAY);
655 
656  const double currentOffset = m_timeOffset.getSeconds() + m_timeOffset.getMicroSeconds() * 1e-6;
657  const double measuredOffset = offset.getSeconds() + offset.getMicroSeconds() * 1e-6;
658 
659  const double newOffset = utility::decayedAverage(currentOffset, samples, measuredOffset);
660 
661  m_timeOffset = utility::TimeStamp(static_cast<int64_t>(newOffset * 1e9));
662 }
663 
664 //
665 // Return the corrected time
666 
668 {
670  return m_timeOffset + sensorTime;
671 }
672 
673 //
674 // Correct the time, populate seconds/microseconds
675 
677  uint32_t& seconds,
678  uint32_t& microseconds)
679 {
680  const utility::TimeStamp corrected = sensorToLocalTime(sensorTime);
681  seconds = corrected.getSeconds();
682  microseconds = corrected.getMicroSeconds();
683 }
684 
685 //
686 // An internal thread for status/time-synchronization
687 
688 #ifdef WIN32
689 DWORD impl::statusThread(void *userDataP)
690 #else
691 void *impl::statusThread(void *userDataP)
692 #endif
693 {
694  impl *selfP = reinterpret_cast<impl*>(userDataP);
695 
696  //
697  // Loop until shutdown
698 
699  while(selfP->m_threadsRunning) {
700 
701  //
702  // Try to get device status message
703  try {
704 
705  //
706  // Setup handler for the status response
707 
709 
710  //
711  // Send the status request, recording the (approx) local time
712 
714  selfP->publish(wire::StatusRequest());
715 
716  //
717  // Wait for the response
718 
719  Status status;
720  if (ack.wait(status, DEFAULT_ACK_TIMEOUT())) {
721 
722  //
723  // Record (approx) time of response
724 
726 
727  //
728  // Extract the response payload
729 
731  selfP->m_messages.extract(msg);
732 
733 
734  //
735  // Estimate 'msg.uptime' capture using half of the round trip period
736 
737  const utility::TimeStamp latency((pong.getNanoSeconds() - ping.getNanoSeconds()) / 2);
738 
739  //
740  // If it took less than 5ms each direction for transmission consider this for a valid time offset
741 
742  if (latency.getNanoSeconds() < 5000000) {
743 
744  //
745  // Compute and apply the estimated time offset
746 
747  const utility::TimeStamp offset = ping + latency - msg.uptime;
748 
749  selfP->applySensorTimeOffset(offset);
750  }
751 
752  //
753  // Cache the status message
754 
755  selfP->m_statusResponseMessage = msg;
757  } else {
759  }
760 
761  } catch (const std::exception& e) {
762 
763  CRL_DEBUG("exception: %s\n", e.what());
764 
765  } catch (...) {
766 
767  CRL_DEBUG_RAW("unknown exception\n");
768  }
769 
770  //
771  // Try to get device PTP status if FW supports it
772  if (selfP->m_sensorVersion.firmwareVersion >= 0x60A /*FW release v6.10*/ ){
773  try {
774 
775  //
776  // Setup handler for the PTP status response
777 
778  wire::PtpStatusResponse ptpStatusResponse;
779  Status status = selfP->waitData(wire::PtpStatusRequest(), ptpStatusResponse, DEFAULT_ACK_TIMEOUT(), 1);
780 
781  //
782  // Cache the PTP status message
783 
784  if (status == Status_Ok) {
785  selfP->m_ptpStatusResponseMessage = ptpStatusResponse;
787  } else if (status == Status_Unknown){
789  } else {
790  selfP->m_getPtpStatusReturnStatus = status;
791  }
792 
793  } catch (const std::exception& e) {
794 
795  CRL_DEBUG("exception: %s\n", e.what());
796 
797  } catch (...) {
798 
799  CRL_DEBUG_RAW("unknown exception\n");
800  }
801  }
802  //
803  // Recompute offset at ~1Hz
804 
805  usleep(static_cast<unsigned int> (1e6));
806  }
807 
808 #if defined(__MINGW64__)
809  return 0;
810 #else
811  return NULL;
812 #endif
813 }
814 
815 } // namespace details
816 
817 Channel* Channel::Create(const std::string& address)
818 {
819  try {
820 
821  return new details::impl(address, Remote_Head_VPB, "");
822 
823  } catch (const std::exception& e) {
824 
825  CRL_DEBUG("exception: %s\n", e.what());
826  return NULL;
827  }
828 }
829 
830 Channel* Channel::Create(const std::string& address, const RemoteHeadChannel &cameraId)
831 {
832  try {
833 
834  return new details::impl(address, cameraId, "");
835 
836  } catch (const std::exception& e) {
837 
838  CRL_DEBUG("exception: %s\n", e.what());
839  return NULL;
840  }
841 }
842 
843 Channel* Channel::Create(const std::string &address, const std::string& ifName)
844  {
845  try {
846  return new details::impl(address, Remote_Head_VPB, ifName);
847  } catch (const std::exception& e) {
848  CRL_DEBUG("exception: %s\n", e.what());
849  return NULL;
850  }
851  }
852 
853 Channel* Channel::Create(const std::string &address, const RemoteHeadChannel &cameraId, const std::string &ifName)
854  {
855  try {
856  return new details::impl(address, cameraId, ifName);
857  } catch (const std::exception& e) {
858  CRL_DEBUG("exception: %s\n", e.what());
859  return NULL;
860  }
861  }
862 
863 void Channel::Destroy(Channel *instanceP)
864 {
865  try {
866 
867  if (instanceP)
868  delete static_cast<details::impl*>(instanceP);
869 
870  } catch (const std::exception& e) {
871 
872  CRL_DEBUG("exception: %s\n", e.what());
873  }
874 }
875 
876 const char *Channel::statusString(Status status)
877 {
878  switch(status) {
879  case Status_Ok: return "Ok";
880  case Status_TimedOut: return "Timed out";
881  case Status_Error: return "Error";
882  case Status_Failed: return "Failed";
883  case Status_Unsupported: return "Unsupported";
884  case Status_Unknown: return "Unknown command";
885  case Status_Exception: return "Exception";
886  }
887 
888  return "Unknown Error";
889 }
890 
891 } // namespace multisense
892 } // namespace crl
crl::multisense::details::wire::VersionRequest
Definition: VersionRequestMessage.hh:50
crl::multisense::details::impl::publish
void publish(const T &message)
Definition: query.hh:50
StatusResponseMessage.hh
crl::multisense::details::impl
Definition: Legacy/include/MultiSense/details/channel.hh:88
crl::multisense::details::wire::SysDeviceInfo::HARDWARE_REV_BCAM
static CRL_CONSTEXPR uint32_t HARDWARE_REV_BCAM
Definition: SysDeviceInfoMessage.hh:107
crl::multisense::Status_Failed
static CRL_CONSTEXPR Status Status_Failed
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:102
SysMtuMessage.hh
crl::multisense::details::wire::Disparity::assembler
static void assembler(utility::BufferStreamWriter &stream, const uint8_t *dataP, uint32_t offset, uint32_t length)
Definition: DisparityMessage.hh:123
crl::multisense::details::impl::m_compressedImageListeners
std::list< CompressedImageListener * > m_compressedImageListeners
Definition: Legacy/include/MultiSense/details/channel.hh:497
crl::multisense::details::wire::SysDeviceInfo::HARDWARE_REV_MULTISENSE_S7
static CRL_CONSTEXPR uint32_t HARDWARE_REV_MULTISENSE_S7
Definition: SysDeviceInfoMessage.hh:91
crl::multisense::Status_Ok
static CRL_CONSTEXPR Status Status_Ok
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:99
crl::multisense::details::impl::sourceApiToWire
static wire::SourceType sourceApiToWire(DataSource mask)
Definition: Legacy/details/channel.cc:453
crl::multisense::Source_Compressed_Aux
static CRL_CONSTEXPR DataSource Source_Compressed_Aux
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:147
crl::multisense::system::DeviceInfo::HARDWARE_REV_MULTISENSE_SL
static CRL_CONSTEXPR uint32_t HARDWARE_REV_MULTISENSE_SL
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3251
crl::multisense::Source_Compressed_Rectified_Aux
static CRL_CONSTEXPR DataSource Source_Compressed_Rectified_Aux
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:150
crl::multisense::details::impl::m_sensorVersion
wire::VersionResponse m_sensorVersion
Definition: Legacy/include/MultiSense/details/channel.hh:529
crl::multisense::Status_Error
static CRL_CONSTEXPR Status Status_Error
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:101
crl::multisense::details::wire::SOURCE_SECONDARY_APP_DATA_3
static CRL_CONSTEXPR SourceType SOURCE_SECONDARY_APP_DATA_3
Definition: Protocol.hh:289
crl::multisense::details::impl::m_serverSocket
socket_t m_serverSocket
Definition: Legacy/include/MultiSense/details/channel.hh:404
crl::multisense::details::impl::impl
impl(const std::string &address, const RemoteHeadChannel &cameraId, const std::string &ifName)
Definition: Legacy/details/channel.cc:68
crl::multisense::Source_Luma_Rectified_Right
static CRL_CONSTEXPR DataSource Source_Luma_Rectified_Right
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:124
crl::multisense::Source_AprilTag_Detections
static CRL_CONSTEXPR DataSource Source_AprilTag_Detections
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:136
crl::multisense::Source_Disparity_Aux
static CRL_CONSTEXPR DataSource Source_Disparity_Aux
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:144
crl::multisense::system::DeviceInfo::IMAGER_TYPE_CMV2000_GREY
static CRL_CONSTEXPR uint32_t IMAGER_TYPE_CMV2000_GREY
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3273
crl::multisense::details::utility::TimeStamp::getCurrentTime
static TimeStamp getCurrentTime()
Definition: TimeStamp.cc:140
crl::multisense::Source_Secondary_App_Data_0
static CRL_CONSTEXPR DataSource Source_Secondary_App_Data_0
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:151
CRL_DEBUG
#define CRL_DEBUG(fmt,...)
Definition: Exception.hh:71
crl::multisense::details::impl::m_ppsListeners
std::list< PpsListener * > m_ppsListeners
Definition: Legacy/include/MultiSense/details/channel.hh:495
crl::multisense::details::wire::VersionResponse::firmwareVersion
VersionType firmwareVersion
Definition: VersionResponseMessage.hh:56
crl::multisense::details::wire::SOURCE_JPEG_LEFT
static CRL_CONSTEXPR SourceType SOURCE_JPEG_LEFT
Definition: Protocol.hh:266
crl::multisense::Source_Raw_Aux
static CRL_CONSTEXPR DataSource Source_Raw_Aux
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:140
crl::multisense::details::wire::SOURCE_CHROMA_AUX
static CRL_CONSTEXPR SourceType SOURCE_CHROMA_AUX
Definition: Protocol.hh:278
crl::multisense::details::impl::m_rxThreadP
utility::Thread * m_rxThreadP
Definition: Legacy/include/MultiSense/details/channel.hh:482
crl::multisense::Source_Compressed_Left
static CRL_CONSTEXPR DataSource Source_Compressed_Left
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:145
crl::multisense::details::wire::HEADER_MAGIC
static CRL_CONSTEXPR uint16_t HEADER_MAGIC
Definition: Protocol.hh:76
crl::multisense::Channel::Destroy
static void Destroy(Channel *instanceP)
Definition: Legacy/details/channel.cc:863
crl::multisense::details::wire::SOURCE_LUMA_AUX
static CRL_CONSTEXPR SourceType SOURCE_LUMA_AUX
Definition: Protocol.hh:276
crl::multisense::Source_Compressed_Rectified_Right
static CRL_CONSTEXPR DataSource Source_Compressed_Rectified_Right
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:149
crl::multisense::details::impl::cleanup
void cleanup()
Definition: Legacy/details/channel.cc:233
crl::multisense::Source_Luma_Left
static CRL_CONSTEXPR DataSource Source_Luma_Left
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:121
crl::multisense::details::wire::SOURCE_GROUND_SURFACE_CLASS_IMAGE
static CRL_CONSTEXPR SourceType SOURCE_GROUND_SURFACE_CLASS_IMAGE
Definition: Protocol.hh:269
crl::multisense::details::wire::SOURCE_RGB_LEFT
static CRL_CONSTEXPR SourceType SOURCE_RGB_LEFT
Definition: Protocol.hh:267
crl::multisense::system::DeviceInfo::HARDWARE_REV_MULTISENSE_KS21
static CRL_CONSTEXPR uint32_t HARDWARE_REV_MULTISENSE_KS21
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3261
crl::multisense::Source_Imu
static CRL_CONSTEXPR DataSource Source_Imu
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:138
crl::multisense::details::impl::RX_POOL_SMALL_BUFFER_COUNT
static CRL_CONSTEXPR uint32_t RX_POOL_SMALL_BUFFER_COUNT
Definition: Legacy/include/MultiSense/details/channel.hh:301
crl::multisense::details::wire::SysDeviceInfo::HARDWARE_REV_MULTISENSE_KS21i
static CRL_CONSTEXPR uint32_t HARDWARE_REV_MULTISENSE_KS21i
Definition: SysDeviceInfoMessage.hh:106
crl::multisense::Source_Disparity
static CRL_CONSTEXPR DataSource Source_Disparity
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:128
DisparityMessage.hh
crl::multisense::details::wire::PtpStatusResponse
Definition: PtpStatusResponseMessage.hh:51
crl::multisense::Remote_Head_VPB
static CRL_CONSTEXPR RemoteHeadChannel Remote_Head_VPB
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:212
crl::multisense::Source_Secondary_App_Data_3
static CRL_CONSTEXPR DataSource Source_Secondary_App_Data_3
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:154
crl::multisense::details::wire::HEADER_VERSION
static CRL_CONSTEXPR uint16_t HEADER_VERSION
Definition: Protocol.hh:77
CRL_CONSTEXPR
#define CRL_CONSTEXPR
Definition: Legacy/include/MultiSense/details/utility/Portability.hh:49
crl::multisense::details::wire::SysDeviceInfo::HARDWARE_REV_MULTISENSE_ST21
static CRL_CONSTEXPR uint32_t HARDWARE_REV_MULTISENSE_ST21
Definition: SysDeviceInfoMessage.hh:95
crl::multisense::details::impl::sourceWireToApi
static DataSource sourceWireToApi(wire::SourceType mask)
Definition: Legacy/details/channel.cc:498
crl::multisense::details::utility::BufferStream::tell
std::size_t tell() const
Definition: BufferStream.hh:70
crl::multisense::details::utility::decayedAverage
Type decayedAverage(Type const &previous, Type const &samples, Type const &newest)
Definition: Functional.hh:67
crl::multisense::details::wire::SysDeviceInfo::HARDWARE_REV_MULTISENSE_REMOTE_HEAD_MONOCAM
static CRL_CONSTEXPR uint32_t HARDWARE_REV_MULTISENSE_REMOTE_HEAD_MONOCAM
Definition: SysDeviceInfoMessage.hh:103
crl::multisense::details::wire::SOURCE_SECONDARY_APP_DATA_2
static CRL_CONSTEXPR SourceType SOURCE_SECONDARY_APP_DATA_2
Definition: Protocol.hh:288
crl::multisense::details::impl::m_messages
MessageMap m_messages
Definition: Legacy/include/MultiSense/details/channel.hh:510
SysGetMtuMessage.hh
CRL_DEBUG_RAW
#define CRL_DEBUG_RAW(fmt)
Definition: Exception.hh:78
crl::multisense::system::DeviceInfo::HARDWARE_REV_MULTISENSE_REMOTE_HEAD_STEREO
static CRL_CONSTEXPR uint32_t HARDWARE_REV_MULTISENSE_REMOTE_HEAD_STEREO
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3264
crl::multisense::Source_Ground_Surface_Spline_Data
static CRL_CONSTEXPR DataSource Source_Ground_Surface_Spline_Data
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:134
crl::multisense::details::impl::m_sensorAddress
struct sockaddr_in m_sensorAddress
Definition: Legacy/include/MultiSense/details/channel.hh:410
crl::multisense::details::impl::m_secondaryAppListeners
std::list< SecondaryAppListener * > m_secondaryAppListeners
Definition: Legacy/include/MultiSense/details/channel.hh:500
crl::multisense::details::impl::m_rxLargeBufferPool
BufferPool m_rxLargeBufferPool
Definition: Legacy/include/MultiSense/details/channel.hh:444
crl::multisense::details::wire::SOURCE_COMPRESSED_RECTIFIED_AUX
static CRL_CONSTEXPR SourceType SOURCE_COMPRESSED_RECTIFIED_AUX
Definition: Protocol.hh:285
crl::multisense::system::DeviceInfo::HARDWARE_REV_MULTISENSE_ST25
static CRL_CONSTEXPR uint32_t HARDWARE_REV_MULTISENSE_ST25
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3267
crl::multisense::details::wire::SOURCE_CHROMA_LEFT
static CRL_CONSTEXPR SourceType SOURCE_CHROMA_LEFT
Definition: Protocol.hh:259
crl::multisense::details::utility::TimeStamp::getSeconds
int32_t getSeconds() const
Definition: TimeStamp.cc:190
crl::multisense::Source_Chroma_Aux
static CRL_CONSTEXPR DataSource Source_Chroma_Aux
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:143
PtpStatusRequestMessage.hh
crl::multisense::system::DeviceInfo::HARDWARE_REV_MULTISENSE_S21
static CRL_CONSTEXPR uint32_t HARDWARE_REV_MULTISENSE_S21
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3256
crl::multisense::details::impl::m_watch
MessageWatch m_watch
Definition: Legacy/include/MultiSense/details/channel.hh:505
crl::multisense::details::wire::SOURCE_COMPRESSED_RIGHT
static CRL_CONSTEXPR SourceType SOURCE_COMPRESSED_RIGHT
Definition: Protocol.hh:281
crl::multisense::system::DeviceInfo::HARDWARE_REV_MULTISENSE_KS21_SILVER
static CRL_CONSTEXPR uint32_t HARDWARE_REV_MULTISENSE_KS21_SILVER
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3266
crl::multisense::details::wire::SysDeviceInfo::HARDWARE_REV_MULTISENSE_MONOCAM
static CRL_CONSTEXPR uint32_t HARDWARE_REV_MULTISENSE_MONOCAM
Definition: SysDeviceInfoMessage.hh:100
crl::multisense::details::impl::MAX_BUFFER_ALLOCATION_RETRIES
static CRL_CONSTEXPR uint32_t MAX_BUFFER_ALLOCATION_RETRIES
Definition: Legacy/include/MultiSense/details/channel.hh:302
crl::multisense::details::impl::m_timeOffsetInit
bool m_timeOffsetInit
Definition: Legacy/include/MultiSense/details/channel.hh:521
crl::multisense::details::impl::statusThread
static void * statusThread(void *userDataP)
Definition: Legacy/details/channel.cc:691
crl::multisense::Status_Unsupported
static CRL_CONSTEXPR Status Status_Unsupported
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:103
crl::multisense::Source_Disparity_Right
static CRL_CONSTEXPR DataSource Source_Disparity_Right
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:130
crl::multisense::Source_Chroma_Left
static CRL_CONSTEXPR DataSource Source_Chroma_Left
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:125
crl::multisense::details::wire::SysDeviceInfo::HARDWARE_REV_MULTISENSE_C6S2_S27
static CRL_CONSTEXPR uint32_t HARDWARE_REV_MULTISENSE_C6S2_S27
Definition: SysDeviceInfoMessage.hh:96
crl::multisense::details::impl::hardwareApiToWire
static uint32_t hardwareApiToWire(uint32_t h)
Definition: Legacy/details/channel.cc:543
crl::multisense::details::wire::DisparityHeader::ID
static CRL_CONSTEXPR IdType ID
Definition: DisparityMessage.hh:54
CRL_EXCEPTION
#define CRL_EXCEPTION(fmt,...)
Definition: Exception.hh:85
crl::multisense::details::wire::StatusResponse
Definition: StatusResponseMessage.hh:50
crl::multisense::details::wire::SOURCE_LUMA_RECT_AUX
static CRL_CONSTEXPR SourceType SOURCE_LUMA_RECT_AUX
Definition: Protocol.hh:277
query.hh
crl::multisense::details::wire::SysMtu::mtu
uint32_t mtu
Definition: SysMtuMessage.hh:56
crl::multisense::Source_Compressed_Right
static CRL_CONSTEXPR DataSource Source_Compressed_Right
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:146
crl::multisense::Source_Compressed_Rectified_Left
static CRL_CONSTEXPR DataSource Source_Compressed_Rectified_Left
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:148
crl
Definition: Legacy/details/channel.cc:61
crl::multisense::Status_Unknown
static CRL_CONSTEXPR Status Status_Unknown
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:104
crl::multisense::details::wire::SOURCE_DISPARITY
static CRL_CONSTEXPR SourceType SOURCE_DISPARITY
Definition: Protocol.hh:262
crl::multisense::details::wire::SysDeviceInfo::HARDWARE_REV_MULTISENSE_KS21_SILVER
static CRL_CONSTEXPR uint32_t HARDWARE_REV_MULTISENSE_KS21_SILVER
Definition: SysDeviceInfoMessage.hh:104
crl::multisense::details::wire::SOURCE_RAW_LEFT
static CRL_CONSTEXPR SourceType SOURCE_RAW_LEFT
Definition: Protocol.hh:253
crl::multisense::details::wire::SOURCE_SECONDARY_APP_DATA_1
static CRL_CONSTEXPR SourceType SOURCE_SECONDARY_APP_DATA_1
Definition: Protocol.hh:287
crl::multisense::details::wire::SourceType
uint64_t SourceType
Definition: Protocol.hh:250
crl::multisense::system::DeviceInfo::HARDWARE_REV_MULTISENSE_REMOTE_HEAD_MONOCAM
static CRL_CONSTEXPR uint32_t HARDWARE_REV_MULTISENSE_REMOTE_HEAD_MONOCAM
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3265
crl::multisense::details::wire::PtpStatusRequest
Definition: PtpStatusRequestMessage.hh:49
crl::multisense::system::DeviceInfo::IMAGER_TYPE_AR0234_GREY
static CRL_CONSTEXPR uint32_t IMAGER_TYPE_AR0234_GREY
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3279
crl::multisense::Source_Pps
static CRL_CONSTEXPR DataSource Source_Pps
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:139
crl::multisense::details::wire::SysDeviceInfo::HARDWARE_REV_MULTISENSE_S30
static CRL_CONSTEXPR uint32_t HARDWARE_REV_MULTISENSE_S30
Definition: SysDeviceInfoMessage.hh:97
crl::multisense::system::DeviceInfo::HARDWARE_REV_MULTISENSE_S7
static CRL_CONSTEXPR uint32_t HARDWARE_REV_MULTISENSE_S7
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3252
crl::multisense::details::utility::BufferStreamWriter
Definition: BufferStream.hh:259
crl::multisense::details::impl::m_txSeqId
uint16_t m_txSeqId
Definition: Legacy/include/MultiSense/details/channel.hh:425
Functional.hh
crl::multisense::details::impl::m_statusResponseMessage
wire::StatusResponse m_statusResponseMessage
Definition: Legacy/include/MultiSense/details/channel.hh:534
crl::multisense::DataSource
uint64_t DataSource
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:115
crl::multisense::details::wire::SysMtu
Definition: SysMtuMessage.hh:48
crl::multisense::system::DeviceInfo::HARDWARE_REV_MULTISENSE_S7S
static CRL_CONSTEXPR uint32_t HARDWARE_REV_MULTISENSE_S7S
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3255
crl::multisense::Channel::statusString
static const char * statusString(Status status)
Definition: Legacy/details/channel.cc:876
crl::multisense::details::wire::SysDeviceInfo::HARDWARE_REV_MULTISENSE_SL
static CRL_CONSTEXPR uint32_t HARDWARE_REV_MULTISENSE_SL
Definition: SysDeviceInfoMessage.hh:90
crl::multisense::details::wire::SOURCE_LUMA_RECT_LEFT
static CRL_CONSTEXPR SourceType SOURCE_LUMA_RECT_LEFT
Definition: Protocol.hh:257
crl::multisense::system::DeviceInfo::IMAGER_TYPE_IMX104_COLOR
static CRL_CONSTEXPR uint32_t IMAGER_TYPE_IMX104_COLOR
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3278
crl::multisense::details::wire::SysDeviceInfo::HARDWARE_REV_MULTISENSE_S21
static CRL_CONSTEXPR uint32_t HARDWARE_REV_MULTISENSE_S21
Definition: SysDeviceInfoMessage.hh:94
crl::multisense::Source_Secondary_App_Data_5
static CRL_CONSTEXPR DataSource Source_Secondary_App_Data_5
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:156
crl::multisense::details::wire::SysDeviceInfo::HARDWARE_REV_MULTISENSE_M
static CRL_CONSTEXPR uint32_t HARDWARE_REV_MULTISENSE_M
Definition: SysDeviceInfoMessage.hh:92
crl::multisense::Source_Raw_Right
static CRL_CONSTEXPR DataSource Source_Raw_Right
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:120
crl::multisense::details::wire::SOURCE_LIDAR_SCAN
static CRL_CONSTEXPR SourceType SOURCE_LIDAR_SCAN
Definition: Protocol.hh:272
crl::multisense::details::utility::TimeStamp
Definition: TimeStamp.hh:69
closesocket
#define closesocket
Definition: Legacy/include/MultiSense/details/utility/Portability.hh:103
crl::multisense::system::DeviceInfo::HARDWARE_REV_MULTISENSE_MONOCAM
static CRL_CONSTEXPR uint32_t HARDWARE_REV_MULTISENSE_MONOCAM
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3262
crl::multisense::details::wire::StatusResponse::uptime
utility::TimeStamp uptime
Definition: StatusResponseMessage.hh:71
crl::multisense::details::wire::SOURCE_DISPARITY_RIGHT
static CRL_CONSTEXPR SourceType SOURCE_DISPARITY_RIGHT
Definition: Protocol.hh:264
crl::multisense::Source_Ground_Surface_Class_Image
static CRL_CONSTEXPR DataSource Source_Ground_Surface_Class_Image
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:135
crl::multisense::details::wire::SOURCE_SECONDARY_APP_DATA_0
static CRL_CONSTEXPR SourceType SOURCE_SECONDARY_APP_DATA_0
Definition: Protocol.hh:286
crl::multisense::details::wire::SysDeviceInfo::IMAGER_TYPE_FLIR_TAU2
static CRL_CONSTEXPR uint32_t IMAGER_TYPE_FLIR_TAU2
Definition: SysDeviceInfoMessage.hh:114
crl::multisense::Source_Lidar_Scan
static CRL_CONSTEXPR DataSource Source_Lidar_Scan
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:137
crl::multisense::details::wire::SysDeviceInfo::HARDWARE_REV_MULTISENSE_REMOTE_HEAD_STEREO
static CRL_CONSTEXPR uint32_t HARDWARE_REV_MULTISENSE_REMOTE_HEAD_STEREO
Definition: SysDeviceInfoMessage.hh:102
crl::multisense::details::wire::SysDeviceInfo::IMAGER_TYPE_AR0234_GREY
static CRL_CONSTEXPR uint32_t IMAGER_TYPE_AR0234_GREY
Definition: SysDeviceInfoMessage.hh:116
MSG_ID
#define MSG_ID(x)
Definition: Protocol.hh:344
crl::multisense::Source_Luma_Right
static CRL_CONSTEXPR DataSource Source_Luma_Right
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:122
crl::multisense::details::impl::m_statusThreadP
utility::Thread * m_statusThreadP
Definition: Legacy/include/MultiSense/details/channel.hh:488
crl::multisense::details::impl::RX_POOL_SMALL_BUFFER_SIZE
static CRL_CONSTEXPR uint32_t RX_POOL_SMALL_BUFFER_SIZE
Definition: Legacy/include/MultiSense/details/channel.hh:300
crl::multisense::Source_Secondary_App_Data_2
static CRL_CONSTEXPR DataSource Source_Secondary_App_Data_2
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:153
crl::multisense::Source_Luma_Aux
static CRL_CONSTEXPR DataSource Source_Luma_Aux
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:141
crl::multisense::Source_Raw_Left
static CRL_CONSTEXPR DataSource Source_Raw_Left
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:119
crl::multisense::details::wire::SOURCE_RAW_RIGHT
static CRL_CONSTEXPR SourceType SOURCE_RAW_RIGHT
Definition: Protocol.hh:254
crl::multisense::details::wire::SOURCE_SECONDARY_APP_DATA_4
static CRL_CONSTEXPR SourceType SOURCE_SECONDARY_APP_DATA_4
Definition: Protocol.hh:290
crl::multisense::system::DeviceInfo::IMAGER_TYPE_CMV4000_GREY
static CRL_CONSTEXPR uint32_t IMAGER_TYPE_CMV4000_GREY
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3275
crl::multisense::details::wire::SysDeviceInfo::HARDWARE_REV_MULTISENSE_S7S
static CRL_CONSTEXPR uint32_t HARDWARE_REV_MULTISENSE_S7S
Definition: SysDeviceInfoMessage.hh:93
crl::multisense::Channel::Create
static Channel * Create(const std::string &sensorAddress)
Definition: Legacy/details/channel.cc:817
crl::multisense::system::DeviceInfo::IMAGER_TYPE_FLIR_TAU2
static CRL_CONSTEXPR uint32_t IMAGER_TYPE_FLIR_TAU2
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3277
crl::multisense::details::wire::SOURCE_COMPRESSED_LEFT
static CRL_CONSTEXPR SourceType SOURCE_COMPRESSED_LEFT
Definition: Protocol.hh:280
crl::multisense::details::impl::~impl
~impl()
Definition: Legacy/details/channel.cc:302
crl::multisense::details::wire::HEADER_GROUP
static CRL_CONSTEXPR uint16_t HEADER_GROUP
Definition: Protocol.hh:82
crl::multisense::Source_Secondary_App_Data_4
static CRL_CONSTEXPR DataSource Source_Secondary_App_Data_4
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:155
crl::multisense::Source_Disparity_Cost
static CRL_CONSTEXPR DataSource Source_Disparity_Cost
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:131
crl::multisense::details::impl::DEFAULT_SENSOR_TX_PORT
static CRL_CONSTEXPR uint16_t DEFAULT_SENSOR_TX_PORT
Definition: Legacy/include/MultiSense/details/channel.hh:293
crl::multisense::details::wire::SOURCE_LUMA_RIGHT
static CRL_CONSTEXPR SourceType SOURCE_LUMA_RIGHT
Definition: Protocol.hh:256
crl::multisense::details::wire::SysDeviceInfo::HARDWARE_REV_MONO
static CRL_CONSTEXPR uint32_t HARDWARE_REV_MONO
Definition: SysDeviceInfoMessage.hh:108
crl::multisense::details::wire::SOURCE_LUMA_RECT_RIGHT
static CRL_CONSTEXPR SourceType SOURCE_LUMA_RECT_RIGHT
Definition: Protocol.hh:258
crl::multisense::details::impl::waitData
Status waitData(const T &command, U &data, const double &timeout=DEFAULT_ACK_TIMEOUT(), int32_t attempts=DEFAULT_ACK_ATTEMPTS)
Definition: query.hh:120
crl::multisense::details::impl::m_serverSocketPort
uint16_t m_serverSocketPort
Definition: Legacy/include/MultiSense/details/channel.hh:405
crl::multisense::details::impl::m_lidarListeners
std::list< LidarListener * > m_lidarListeners
Definition: Legacy/include/MultiSense/details/channel.hh:494
crl::multisense::details::MessageMap::extract
Status extract(T &msg)
Definition: Legacy/include/MultiSense/details/storage.hh:69
crl::multisense::system::DeviceInfo::HARDWARE_REV_MONO
static CRL_CONSTEXPR uint32_t HARDWARE_REV_MONO
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3270
crl::multisense::details::impl::bind
void bind(const std::string &ifName)
Definition: Legacy/details/channel.cc:311
crl::multisense::system::DeviceInfo::HARDWARE_REV_MULTISENSE_C6S2_S27
static CRL_CONSTEXPR uint32_t HARDWARE_REV_MULTISENSE_C6S2_S27
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3258
crl::multisense::details::impl::applySensorTimeOffset
void applySensorTimeOffset(const utility::TimeStamp &offset)
Definition: Legacy/details/channel.cc:633
crl::multisense::details::impl::m_sensorMtu
int32_t m_sensorMtu
Definition: Legacy/include/MultiSense/details/channel.hh:415
crl::multisense::Status
int32_t Status
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:94
crl::multisense::details::impl::RX_POOL_LARGE_BUFFER_SIZE
static CRL_CONSTEXPR uint32_t RX_POOL_LARGE_BUFFER_SIZE
Definition: Legacy/include/MultiSense/details/channel.hh:298
channel.hh
crl::multisense::details::impl::rxThread
static void * rxThread(void *userDataP)
Definition: dispatch.cc:981
crl::multisense::system::DeviceInfo::HARDWARE_REV_MULTISENSE_KS21i
static CRL_CONSTEXPR uint32_t HARDWARE_REV_MULTISENSE_KS21i
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3268
crl::multisense::details::wire::SysDeviceInfo::IMAGER_TYPE_CMV4000_GREY
static CRL_CONSTEXPR uint32_t IMAGER_TYPE_CMV4000_GREY
Definition: SysDeviceInfoMessage.hh:112
crl::multisense::details::impl::m_imuListeners
std::list< ImuListener * > m_imuListeners
Definition: Legacy/include/MultiSense/details/channel.hh:496
header
std_msgs::Header const * header(const M &m)
crl::multisense::system::DeviceInfo::HARDWARE_REV_MULTISENSE_ST21
static CRL_CONSTEXPR uint32_t HARDWARE_REV_MULTISENSE_ST21
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3257
crl::multisense::details::utility::TimeStamp::getMicroSeconds
int32_t getMicroSeconds() const
Definition: TimeStamp.cc:198
StatusRequestMessage.hh
crl::multisense::Status_Exception
static CRL_CONSTEXPR Status Status_Exception
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:105
crl::multisense::Source_Jpeg_Left
static CRL_CONSTEXPR DataSource Source_Jpeg_Left
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:132
crl::multisense::details::wire::SysDeviceInfo::HARDWARE_REV_MULTISENSE_S7AR
static CRL_CONSTEXPR uint32_t HARDWARE_REV_MULTISENSE_S7AR
Definition: SysDeviceInfoMessage.hh:98
PtpStatusResponseMessage.hh
crl::multisense::Channel
Definition: Legacy/include/MultiSense/MultiSenseChannel.hh:69
crl::multisense::details::wire::SOURCE_COMPRESSED_AUX
static CRL_CONSTEXPR SourceType SOURCE_COMPRESSED_AUX
Definition: Protocol.hh:282
multisense
Definition: factory.cc:39
VersionRequestMessage.hh
crl::multisense::details::impl::m_getStatusReturnStatus
Status m_getStatusReturnStatus
Definition: Legacy/include/MultiSense/details/channel.hh:543
crl::multisense::system::DeviceInfo::HARDWARE_REV_BCAM
static CRL_CONSTEXPR uint32_t HARDWARE_REV_BCAM
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3269
crl::multisense::details::wire::SOURCE_IMU
static CRL_CONSTEXPR SourceType SOURCE_IMU
Definition: Protocol.hh:273
crl::multisense::details::wire::SysDeviceInfo::HARDWARE_REV_MULTISENSE_ST25
static CRL_CONSTEXPR uint32_t HARDWARE_REV_MULTISENSE_ST25
Definition: SysDeviceInfoMessage.hh:105
crl::multisense::Source_Chroma_Right
static CRL_CONSTEXPR DataSource Source_Chroma_Right
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:126
crl::multisense::details::impl::hardwareWireToApi
static uint32_t hardwareWireToApi(uint32_t h)
Definition: Legacy/details/channel.cc:570
crl::multisense::details::wire::SOURCE_APRILTAG_DETECTIONS
static CRL_CONSTEXPR SourceType SOURCE_APRILTAG_DETECTIONS
Definition: Protocol.hh:270
crl::multisense::details::wire::SOURCE_LUMA_LEFT
static CRL_CONSTEXPR SourceType SOURCE_LUMA_LEFT
Definition: Protocol.hh:255
crl::multisense::system::DeviceInfo::IMAGER_TYPE_AR0239_COLOR
static CRL_CONSTEXPR uint32_t IMAGER_TYPE_AR0239_COLOR
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3280
crl::multisense::details::ScopedWatch::wait
bool wait(Status &status, const double &timeout)
Definition: signal.hh:125
crl::multisense::details::wire::SOURCE_CHROMA_RIGHT
static CRL_CONSTEXPR SourceType SOURCE_CHROMA_RIGHT
Definition: Protocol.hh:260
crl::multisense::Source_Rgb_Left
static CRL_CONSTEXPR DataSource Source_Rgb_Left
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:133
crl::multisense::details::impl::RX_POOL_LARGE_BUFFER_COUNT
static CRL_CONSTEXPR uint32_t RX_POOL_LARGE_BUFFER_COUNT
Definition: Legacy/include/MultiSense/details/channel.hh:299
crl::multisense::details::impl::m_imageListeners
std::list< ImageListener * > m_imageListeners
Definition: Legacy/include/MultiSense/details/channel.hh:493
crl::multisense::details::wire::SysDeviceInfo::IMAGER_TYPE_AR0239_COLOR
static CRL_CONSTEXPR uint32_t IMAGER_TYPE_AR0239_COLOR
Definition: SysDeviceInfoMessage.hh:117
crl::multisense::details::wire::SOURCE_COMPRESSED_RECTIFIED_LEFT
static CRL_CONSTEXPR SourceType SOURCE_COMPRESSED_RECTIFIED_LEFT
Definition: Protocol.hh:283
crl::multisense::Status_TimedOut
static CRL_CONSTEXPR Status Status_TimedOut
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:100
crl::multisense::details::wire::Header
Header
Definition: Protocol.hh:128
crl::multisense::details::impl::m_ptpStatusResponseMessage
wire::PtpStatusResponse m_ptpStatusResponseMessage
Definition: Legacy/include/MultiSense/details/channel.hh:539
crl::multisense::details::utility::BufferStream::data
void * data() const
Definition: BufferStream.hh:72
crl::multisense::details::wire::SysDeviceInfo::IMAGER_TYPE_CMV4000_COLOR
static CRL_CONSTEXPR uint32_t IMAGER_TYPE_CMV4000_COLOR
Definition: SysDeviceInfoMessage.hh:113
crl::multisense::details::impl::TIME_SYNC_OFFSET_DECAY
static CRL_CONSTEXPR uint32_t TIME_SYNC_OFFSET_DECAY
Definition: Legacy/include/MultiSense/details/channel.hh:309
crl::multisense::system::DeviceInfo::HARDWARE_REV_MULTISENSE_REMOTE_HEAD_VPB
static CRL_CONSTEXPR uint32_t HARDWARE_REV_MULTISENSE_REMOTE_HEAD_VPB
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3263
crl::multisense::system::DeviceInfo::HARDWARE_REV_MULTISENSE_S30
static CRL_CONSTEXPR uint32_t HARDWARE_REV_MULTISENSE_S30
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3259
crl::multisense::details::wire::SOURCE_SECONDARY_APP_DATA_5
static CRL_CONSTEXPR SourceType SOURCE_SECONDARY_APP_DATA_5
Definition: Protocol.hh:291
crl::multisense::system::DeviceInfo::IMAGER_TYPE_CMV2000_COLOR
static CRL_CONSTEXPR uint32_t IMAGER_TYPE_CMV2000_COLOR
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3274
crl::multisense::details::utility::ScopedLock
Definition: linux/Thread.hh:165
INVALID_SOCKET
#define INVALID_SOCKET
Definition: Legacy/include/MultiSense/details/channel.hh:69
crl::multisense::details::impl::m_timeOffset
utility::TimeStamp m_timeOffset
Definition: Legacy/include/MultiSense/details/channel.hh:522
crl::multisense::details::utility::Thread
Definition: linux/Thread.hh:73
crl::multisense::details::impl::imagerApiToWire
static uint32_t imagerApiToWire(uint32_t h)
Definition: Legacy/details/channel.cc:597
crl::multisense::details::wire::SOURCE_DISPARITY_AUX
static CRL_CONSTEXPR SourceType SOURCE_DISPARITY_AUX
Definition: Protocol.hh:279
crl::multisense::details::wire::SOURCE_DISPARITY_COST
static CRL_CONSTEXPR SourceType SOURCE_DISPARITY_COST
Definition: Protocol.hh:265
crl::multisense::details::ScopedWatch
Definition: signal.hh:113
crl::multisense::system::DeviceInfo::HARDWARE_REV_MULTISENSE_S7AR
static CRL_CONSTEXPR uint32_t HARDWARE_REV_MULTISENSE_S7AR
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3260
crl::multisense::details::impl::m_timeLock
utility::Mutex m_timeLock
Definition: Legacy/include/MultiSense/details/channel.hh:520
crl::multisense::details::wire::SOURCE_PPS
static CRL_CONSTEXPR SourceType SOURCE_PPS
Definition: Protocol.hh:274
crl::multisense::Source_Chroma_Rectified_Aux
static CRL_CONSTEXPR DataSource Source_Chroma_Rectified_Aux
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:127
crl::multisense::system::DeviceInfo::HARDWARE_REV_MULTISENSE_M
static CRL_CONSTEXPR uint32_t HARDWARE_REV_MULTISENSE_M
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3254
crl::multisense::details::utility::TimeStamp::getNanoSeconds
int64_t getNanoSeconds() const
Definition: TimeStamp.cc:206
crl::multisense::details::impl::m_threadsRunning
bool m_threadsRunning
Definition: Legacy/include/MultiSense/details/channel.hh:477
crl::multisense::details::impl::sensorToLocalTime
utility::TimeStamp sensorToLocalTime(const utility::TimeStamp &sensorTime)
Definition: Legacy/details/channel.cc:667
crl::multisense::details::wire::SysDeviceInfo::IMAGER_TYPE_CMV2000_GREY
static CRL_CONSTEXPR uint32_t IMAGER_TYPE_CMV2000_GREY
Definition: SysDeviceInfoMessage.hh:110
crl::multisense::details::wire::StatusResponse::ID
static CRL_CONSTEXPR IdType ID
Definition: StatusResponseMessage.hh:52
crl::multisense::details::wire::SOURCE_RAW_AUX
static CRL_CONSTEXPR SourceType SOURCE_RAW_AUX
Definition: Protocol.hh:275
SysDeviceInfoMessage.hh
crl::multisense::details::impl::m_rxSmallBufferPool
BufferPool m_rxSmallBufferPool
Definition: Legacy/include/MultiSense/details/channel.hh:445
crl::multisense::details::wire::StatusRequest
Definition: StatusRequestMessage.hh:50
crl::multisense::details::wire::SOURCE_COMPRESSED_RECTIFIED_RIGHT
static CRL_CONSTEXPR SourceType SOURCE_COMPRESSED_RECTIFIED_RIGHT
Definition: Protocol.hh:284
crl::multisense::RemoteHeadChannel
int16_t RemoteHeadChannel
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:210
crl::multisense::details::impl::m_getPtpStatusReturnStatus
Status m_getPtpStatusReturnStatus
Definition: Legacy/include/MultiSense/details/channel.hh:547
crl::multisense::details::wire::SOURCE_GROUND_SURFACE_SPLINE_DATA
static CRL_CONSTEXPR SourceType SOURCE_GROUND_SURFACE_SPLINE_DATA
Definition: Protocol.hh:268
crl::multisense::details::wire::SysDeviceInfo::IMAGER_TYPE_CMV2000_COLOR
static CRL_CONSTEXPR uint32_t IMAGER_TYPE_CMV2000_COLOR
Definition: SysDeviceInfoMessage.hh:111
crl::multisense::Source_Secondary_App_Data_1
static CRL_CONSTEXPR DataSource Source_Secondary_App_Data_1
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:152
crl::multisense::details::wire::SysDeviceInfo::HARDWARE_REV_MULTISENSE_KS21
static CRL_CONSTEXPR uint32_t HARDWARE_REV_MULTISENSE_KS21
Definition: SysDeviceInfoMessage.hh:99
crl::multisense::details::impl::imagerWireToApi
static uint32_t imagerWireToApi(uint32_t h)
Definition: Legacy/details/channel.cc:613
crl::multisense::details::wire::SysGetMtu
Definition: SysGetMtuMessage.hh:47
crl::multisense::system::DeviceInfo::IMAGER_TYPE_CMV4000_COLOR
static CRL_CONSTEXPR uint32_t IMAGER_TYPE_CMV4000_COLOR
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3276
crl::multisense::details::wire::SysDeviceInfo::HARDWARE_REV_MULTISENSE_REMOTE_HEAD_VPB
static CRL_CONSTEXPR uint32_t HARDWARE_REV_MULTISENSE_REMOTE_HEAD_VPB
Definition: SysDeviceInfoMessage.hh:101
crl::multisense::details::wire::SysDeviceInfo::IMAGER_TYPE_IMX104_COLOR
static CRL_CONSTEXPR uint32_t IMAGER_TYPE_IMX104_COLOR
Definition: SysDeviceInfoMessage.hh:115
crl::multisense::Source_Luma_Rectified_Left
static CRL_CONSTEXPR DataSource Source_Luma_Rectified_Left
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:123
crl::multisense::details::impl::m_udpAssemblerMap
UdpAssemblerMap m_udpAssemblerMap
Definition: Legacy/include/MultiSense/details/channel.hh:462
crl::multisense::details::wire::SOURCE_CHROMA_RECT_AUX
static CRL_CONSTEXPR SourceType SOURCE_CHROMA_RECT_AUX
Definition: Protocol.hh:261
crl::multisense::Source_Luma_Rectified_Aux
static CRL_CONSTEXPR DataSource Source_Luma_Rectified_Aux
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:142


multisense_lib
Author(s):
autogenerated on Thu Apr 17 2025 02:49:08