LibMultiSense
LibMultiSense Documentation
MultiSenseChannel.hh
Go to the documentation of this file.
1 
37 #ifndef LibMultiSense_MultiSenseChannel_hh
38 #define LibMultiSense_MultiSenseChannel_hh
39 
40 #include <stdint.h>
41 #include <string>
42 #include <vector>
43 
44 #include "MultiSenseTypes.hh"
45 
46 namespace crl {
47 namespace multisense {
48 
70 public:
71 
83  static Channel* Create(const std::string& sensorAddress);
84 
93  static void Destroy(Channel *instanceP);
94 
98  virtual ~Channel() {};
99 
108  static const char *statusString(Status status);
109 
110 
150  virtual Status addIsolatedCallback(image::Callback callback,
151  DataSource imageSourceMask,
152  void *userDataP=NULL) = 0;
153 
178  virtual Status addIsolatedCallback(lidar::Callback callback,
179  void *userDataP=NULL) = 0;
180 
204  virtual Status addIsolatedCallback(pps::Callback callback,
205  void *userDataP=NULL) = 0;
206 
231  virtual Status addIsolatedCallback(imu::Callback callback,
232  void *userDataP=NULL) = 0;
233 
234 
253  virtual Status addIsolatedCallback(compressed_image::Callback callback,
254  DataSource imageSourceMask,
255  void *userDataP=NULL) = 0;
256 
280  virtual Status addIsolatedCallback(ground_surface::Callback callback,
281  void *userDataP=NULL) = 0;
282 
293  virtual Status removeIsolatedCallback(image::Callback callback) = 0;
294 
305  virtual Status removeIsolatedCallback(lidar::Callback callback) = 0;
306 
317  virtual Status removeIsolatedCallback(pps::Callback callback) = 0;
318 
329  virtual Status removeIsolatedCallback(imu::Callback callback) = 0;
330 
341  virtual Status removeIsolatedCallback(compressed_image::Callback callback) = 0;
342 
353  virtual Status removeIsolatedCallback(ground_surface::Callback callback) = 0;
354 
373  virtual void *reserveCallbackBuffer() = 0;
374 
387  virtual Status releaseCallbackBuffer(void *referenceP) = 0;
388 
410  virtual Status networkTimeSynchronization(bool enabled) = 0;
411 
432  virtual Status ptpTimeSynchronization(bool enabled) = 0;
433 
453  virtual Status startStreams (DataSource mask) = 0;
454 
469  virtual Status stopStreams (DataSource mask) = 0;
470 
481  virtual Status getEnabledStreams(DataSource& mask) = 0;
482 
483 
506  virtual Status startDirectedStream(const DirectedStream& stream) = 0;
507 
530  virtual Status startDirectedStreams(const std::vector<DirectedStream>& streams) = 0;
531 
541  virtual Status stopDirectedStream (const DirectedStream& stream) = 0;
542 
553  virtual Status getDirectedStreams (std::vector<DirectedStream>& streams) = 0;
554 
567  virtual Status maxDirectedStreams (uint32_t& maximum) = 0;
568 
581  virtual Status setTriggerSource (TriggerSource s) = 0;
582 
597  virtual Status setMotorSpeed (float rpm) = 0;
598 
610  virtual Status getLightingConfig (lighting::Config& c) = 0;
611 
623  virtual Status setLightingConfig (const lighting::Config& c) = 0;
624 
631  virtual Status getLightingSensorStatus (lighting::SensorStatus& status) = 0;
632 
642  virtual Status getSensorVersion (VersionType& version) = 0;
643 
653  virtual Status getApiVersion (VersionType& version) = 0;
654 
666  virtual Status getVersionInfo (system::VersionInfo& v) = 0;
667 
679  virtual Status getImageConfig (image::Config& c) = 0;
680 
692  virtual Status setImageConfig (const image::Config& c) = 0;
693 
706  virtual Status getImageCalibration (image::Calibration& c) = 0;
707 
719  virtual Status setImageCalibration (const image::Calibration& c) = 0;
720 
732  virtual Status getSensorCalibration (image::SensorCalibration& c) = 0;
733 
744  virtual Status setSensorCalibration (const image::SensorCalibration& c) = 0;
745 
755  virtual Status getTransmitDelay (image::TransmitDelay& c) = 0;
756 
767  virtual Status setTransmitDelay (const image::TransmitDelay& c) = 0;
768 
781  virtual Status getLidarCalibration (lidar::Calibration& c) = 0;
782 
794  virtual Status setLidarCalibration (const lidar::Calibration& c) = 0;
795 
812  virtual Status getImageHistogram (int64_t frameId, // from last 20 images, left only
813  image::Histogram& histogram) = 0;
814 
827  virtual Status getPtpStatus(int64_t frameId,
828  system::PtpStatus &ptpStatus) = 0;
829 
830 
843  virtual Status getDeviceModes (std::vector<system::DeviceMode>& m) = 0;
844 
860  virtual Status getMtu (int32_t& mtu) = 0;
861 
874  virtual Status getMotorPos (int32_t& mtu) = 0;
875 
885  virtual Status setMtu (int32_t mtu) = 0;
886 
899  virtual Status getNetworkConfig (system::NetworkConfig& c) = 0;
900 
911  virtual Status setNetworkConfig (const system::NetworkConfig& c) = 0;
912 
925  virtual Status getDeviceInfo (system::DeviceInfo& info) = 0;
926 
941  virtual Status setDeviceInfo (const std::string& key,
942  const system::DeviceInfo& i) = 0;
943 
953  virtual Status getDeviceStatus (system::StatusMessage& status) = 0;
954 
963  virtual Status getExternalCalibration (system::ExternalCalibration& calibration) = 0;
964 
973  virtual Status setExternalCalibration (const system::ExternalCalibration& calibration) = 0;
974 
988  virtual Status flashBitstream (const std::string& file) = 0;
989 
1003  virtual Status flashFirmware (const std::string& file) = 0;
1004 
1015  virtual Status verifyBitstream (const std::string& file) = 0;
1016 
1027  virtual Status verifyFirmware (const std::string& file) = 0;
1028 
1029  //
1030  // IMU configuration.
1031  //
1032  // Detailed info may be queried, and configuration may be queried or set.
1033  //
1034  // See imu::Details and imu::Config classes for more information.
1035  //
1036  // 'samplesPerMessage' is the number of samples (aggregate from all IMU types)
1037  // that the sensor will queue internally before putting on the wire.
1038  // Note that low settings combined with high IMU sensor rates may interfere
1039  // with the acquisition and transmission of image and lidar data.
1040  //
1041  // For setImuConfig():
1042  //
1043  // Set 'storeSettingsInFlash' to true to have the configuration saved in
1044  // non-volatile flash on the sensor head.
1045  //
1046  // Set 'samplesPerMessage' to zero for the sensor to keep its current
1047  // samplesPerMessage setting.
1048  //
1049  // IMU streams must be restarted for any configuration changes to be
1050  // reflected.
1051 
1067  virtual Status getImuInfo (uint32_t& maxSamplesPerMesage,
1068  std::vector<imu::Info>& info) = 0;
1069 
1086  virtual Status getImuConfig (uint32_t& samplesPerMessage,
1087  std::vector<imu::Config>& c) = 0;
1088 
1109  virtual Status setImuConfig (bool storeSettingsInFlash,
1110  uint32_t samplesPerMessage,
1111  const std::vector<imu::Config>& c) = 0;
1112 
1130  virtual Status getLargeBufferDetails(uint32_t& bufferCount,
1131  uint32_t& bufferSize) = 0;
1152  virtual Status setLargeBuffers (const std::vector<uint8_t*>& buffers,
1153  uint32_t bufferSize) = 0;
1154 
1164  virtual Status getLocalUdpPort(uint16_t& port) = 0;
1165 };
1166 
1167 
1168 } // namespace multisense
1169 } // namespace crl
1170 
1171 #endif // LibMultiSense_MultiSenseChannel_hh
crl::multisense::Channel
Class which manages all communications with a MultiSense device.
Definition: MultiSenseChannel.hh:69
crl::multisense::system::PtpStatus
PTP status data associated with a specific stamped MultiSense message.
Definition: MultiSenseTypes.hh:3162
crl::multisense::image::Calibration
Class used For querying/setting camera calibration.
Definition: MultiSenseTypes.hh:1543
crl::multisense::image::Callback
void(* Callback)(const Header &header, void *userDataP)
Function pointer for receiving callbacks of image data.
Definition: MultiSenseTypes.hh:495
crl::multisense::VersionType
uint32_t VersionType
Sensor version typedef used to store a given version number.
Definition: MultiSenseTypes.hh:87
crl::multisense::DataSource
uint32_t DataSource
Data sources typedef representing the various data sources available from sensors in the MultiSense-S...
Definition: MultiSenseTypes.hh:114
MULTISENSE_API
#define MULTISENSE_API
Definition: MultiSenseTypes.hh:64
crl::multisense::lidar::Callback
void(* Callback)(const Header &header, void *userDataP)
Function pointer for receiving callbacks of lidar data.
Definition: MultiSenseTypes.hh:1799
crl::multisense::system::DeviceInfo
Class used to store device information specific to a sensor.
Definition: MultiSenseTypes.hh:2726
crl::multisense::image::Histogram
Class which stores a image histogram from a camera image.
Definition: MultiSenseTypes.hh:1715
MultiSenseTypes.hh
crl::multisense::lidar::Calibration
Class used to store a laser calibration.
Definition: MultiSenseTypes.hh:1882
crl
Definition: MultiSenseChannel.hh:46
crl::multisense::imu::Callback
void(* Callback)(const Header &header, void *userDataP)
Function pointer for receiving callbacks for IMU data.
Definition: MultiSenseTypes.hh:2243
crl::multisense::system::StatusMessage
Class containing status information for a particular device.
Definition: MultiSenseTypes.hh:2965
crl::multisense::lighting::Config
Class used to store a specific lighting configuration.
Definition: MultiSenseTypes.hh:1988
crl::multisense::ground_surface::Callback
void(* Callback)(const Header &header, void *userDataP)
Function pointer for receiving callbacks for Ground Surface Spline data.
Definition: MultiSenseTypes.hh:2540
crl::multisense::system::ExternalCalibration
A external calibration associated with the MultiSense.
Definition: MultiSenseTypes.hh:3128
crl::multisense::TriggerSource
uint32_t TriggerSource
Definition: MultiSenseTypes.hh:251
crl::multisense::compressed_image::Callback
void(* Callback)(const Header &header, void *userDataP)
Function pointer for receiving callbacks for compressed image data.
Definition: MultiSenseTypes.hh:2491
crl::multisense::Status
int32_t Status
General status typdef used as a return value for get/set crl::multisense::Channel methods.
Definition: MultiSenseTypes.hh:93
crl::multisense::pps::Callback
void(* Callback)(const Header &header, void *userDataP)
Function pointer for receiving callbacks for PPS events.
Definition: MultiSenseTypes.hh:2155
crl::multisense::Channel::~Channel
virtual ~Channel()
Destructor.
Definition: MultiSenseChannel.hh:98
crl::multisense::system::NetworkConfig
Class containing the network configuration for a specific sensor.
Definition: MultiSenseTypes.hh:2894
crl::multisense::image::SensorCalibration
Class to store sensor gains used to perform a DC level adjustment to calibrate the left imager to the...
Definition: MultiSenseTypes.hh:1652
crl::multisense::image::TransmitDelay
Definition: MultiSenseTypes.hh:1669
crl::multisense::system::VersionInfo
Class containing version info for a specific sensor.
Definition: MultiSenseTypes.hh:2640
crl::multisense::lighting::SensorStatus
A external sensor status.
Definition: MultiSenseTypes.hh:2111
crl::multisense::image::Config
Class used to store a specific camera configuration.
Definition: MultiSenseTypes.hh:795
crl::multisense::DirectedStream
Class used to request that MultiSense data be sent to a 3rd-party stream destination (UDP port),...
Definition: MultiSenseTypes.hh:205