LibMultiSense
LibMultiSense Documentation
crl::multisense::Channel Class Referenceabstract

Class which manages all communications with a MultiSense device. More...

#include <MultiSenseChannel.hh>

Public Member Functions

virtual ~Channel ()
 Destructor. More...
 
virtual Status addIsolatedCallback (image::Callback callback, DataSource imageSourceMask, void *userDataP=NULL)=0
 Add a user defined callback attached to the image streams specified by imageSourceMask. More...
 
virtual Status addIsolatedCallback (lidar::Callback callback, void *userDataP=NULL)=0
 Add a user defined callback attached to a lidar stream. More...
 
virtual Status addIsolatedCallback (pps::Callback callback, void *userDataP=NULL)=0
 Add a user defined callback attached to a pulse per-second (PPS) stream. More...
 
virtual Status addIsolatedCallback (imu::Callback callback, void *userDataP=NULL)=0
 Add a user defined callback attached to the IMU stream. More...
 
virtual Status removeIsolatedCallback (image::Callback callback)=0
 Unregister a user defined image::Callback. More...
 
virtual Status removeIsolatedCallback (lidar::Callback callback)=0
 Unregister a user defined lidar::Callback. More...
 
virtual Status removeIsolatedCallback (pps::Callback callback)=0
 Unregister a user defined pps::Callback. More...
 
virtual Status removeIsolatedCallback (imu::Callback callback)=0
 Unregister a user defined imu::Callback. More...
 
virtual void * reserveCallbackBuffer ()=0
 Reserve image or lidar data within a isolated callback so it is available after the callback returns. More...
 
virtual Status releaseCallbackBuffer (void *referenceP)=0
 Release image or lidar data reserved within a isolated callback. More...
 
virtual Status networkTimeSynchronization (bool enabled)=0
 Enable or disable local network-based time synchronization. More...
 
virtual Status startStreams (DataSource mask)=0
 Start streaming various DataSources from the sensor. More...
 
virtual Status stopStreams (DataSource mask)=0
 Stop specific data streams from the sensor. More...
 
virtual Status getEnabledStreams (DataSource &mask)=0
 Get the current data streams which are enabled on the sensor. More...
 
virtual Status startDirectedStream (const DirectedStream &stream)=0
 Start a directed stream used to stream data to multiple 3rd parties. More...
 
virtual Status startDirectedStreams (const std::vector< DirectedStream > &streams)=0
 Start several directed streams used to stream data to multiple 3rd parties. More...
 
virtual Status stopDirectedStream (const DirectedStream &stream)=0
 Stop a specific directed stream. More...
 
virtual Status getDirectedStreams (std::vector< DirectedStream > &streams)=0
 Get the current list of active streams. More...
 
virtual Status maxDirectedStreams (uint32_t &maximum)=0
 Query the number of simultaneous parties which can be supported. More...
 
virtual Status setTriggerSource (TriggerSource s)=0
 Set a new image trigger source. More...
 
virtual Status setMotorSpeed (float rpm)=0
 Set the laser spindle rotation speed. More...
 
virtual Status getLightingConfig (lighting::Config &c)=0
 Query the on-board lighting configuration. More...
 
virtual Status setLightingConfig (const lighting::Config &c)=0
 Set the on-board lighting configuration. More...
 
virtual Status getLightingSensorStatus (lighting::SensorStatus &status)=0
 Get the status of the sensors attached to the external lighting platform. More...
 
virtual Status getSensorVersion (VersionType &version)=0
 Get the API version of the sensor firmware. More...
 
virtual Status getApiVersion (VersionType &version)=0
 Get the API version of LibMultiSense. More...
 
virtual Status getVersionInfo (system::VersionInfo &v)=0
 Get the version info for the sensor and LibMultiSense. More...
 
virtual Status getImageConfig (image::Config &c)=0
 Query the image configuration. More...
 
virtual Status setImageConfig (const image::Config &c)=0
 Set the image configuration. More...
 
virtual Status getImageCalibration (image::Calibration &c)=0
 Query the current camera calibration. More...
 
virtual Status setImageCalibration (const image::Calibration &c)=0
 Set the current camera calibration. More...
 
virtual Status getSensorCalibration (image::SensorCalibration &c)=0
 Query the current device imager calibration. More...
 
virtual Status setSensorCalibration (const image::SensorCalibration &c)=0
 Set the devices imager calibration. More...
 
virtual Status getLidarCalibration (lidar::Calibration &c)=0
 Query the current laser calibration. More...
 
virtual Status setLidarCalibration (const lidar::Calibration &c)=0
 Set the current laser calibration. More...
 
virtual Status getImageHistogram (int64_t frameId, image::Histogram &histogram)=0
 Get the image histogram for the image corresponding to a specified frameId. More...
 
virtual Status getDeviceModes (std::vector< system::DeviceMode > &m)=0
 Query the available sensor device modes. More...
 
virtual Status getMtu (int32_t &mtu)=0
 Query the current sensor's MTU configuration. More...
 
virtual Status setMtu (int32_t mtu)=0
 Set the current sensor's MTU. More...
 
virtual Status getNetworkConfig (system::NetworkConfig &c)=0
 Query the current sensor's network configuration. More...
 
virtual Status setNetworkConfig (const system::NetworkConfig &c)=0
 Set the current sensor's network configuration. More...
 
virtual Status getDeviceInfo (system::DeviceInfo &info)=0
 Query the current sensor's device information. More...
 
virtual Status setDeviceInfo (const std::string &key, const system::DeviceInfo &i)=0
 Set the current sensor's device information. More...
 
virtual Status getDeviceStatus (system::StatusMessage &status)=0
 Get the current status of the device. More...
 
virtual Status getExternalCalibration (system::ExternalCalibration &calibration)=0
 Get the external calibration associated with the MultiSense device. More...
 
virtual Status setExternalCalibration (const system::ExternalCalibration &calibration)=0
 Set the external calibration associated with the MultiSense device. More...
 
virtual Status flashBitstream (const std::string &file)=0
 Flash a new FPGA bitstream file to the sensor. More...
 
virtual Status flashFirmware (const std::string &file)=0
 Flash a new firmware file to the sensor. More...
 
virtual Status verifyBitstream (const std::string &file)=0
 Verify that the current bitstream in the sensor's flash is the same as the bitstream specified by file. More...
 
virtual Status verifyFirmware (const std::string &file)=0
 Verify the current firmware in the sensor's flash is the same as the firmware specified by file. More...
 
virtual Status getImuInfo (uint32_t &maxSamplesPerMesage, std::vector< imu::Info > &info)=0
 Query detailed information about the current sensor's IMU. More...
 
virtual Status getImuConfig (uint32_t &samplesPerMessage, std::vector< imu::Config > &c)=0
 Query the current IMU configuration. More...
 
virtual Status setImuConfig (bool storeSettingsInFlash, uint32_t samplesPerMessage, const std::vector< imu::Config > &c)=0
 Set a new IMU configuration. More...
 
virtual Status getLargeBufferDetails (uint32_t &bufferCount, uint32_t &bufferSize)=0
 Query the suggested number and size of the image buffers. More...
 
virtual Status setLargeBuffers (const std::vector< uint8_t * > &buffers, uint32_t bufferSize)=0
 Set user allocated large buffer. More...
 
virtual Status getLocalUdpPort (uint16_t &port)=0
 Query the system-assigned local UDP port. More...
 

Static Public Member Functions

static ChannelCreate (const std::string &sensorAddress)
 Create a Channel instance, used to manage all communications with a sensor. More...
 
static void Destroy (Channel *instanceP)
 Destroy a channel instance that was created using the static member function Channel::Create(). More...
 
static const char * statusString (Status status)
 Helper method used to get a string describing a specific status code. More...
 

Detailed Description

Class which manages all communications with a MultiSense device.

Example code to instantiate and destroy a Channel

//
// Instantiate a channel connecting to a sensor at the factory default
// IP address
channel = crl::multisense::Channel::Create("10.66.171.21");
//
// Query and send data to the sensor...
//
// Destroy the channel instance

Definition at line 69 of file MultiSenseChannel.hh.

Constructor & Destructor Documentation

virtual crl::multisense::Channel::~Channel ( )
inlinevirtual

Destructor.

Definition at line 98 of file MultiSenseChannel.hh.

Member Function Documentation

virtual Status crl::multisense::Channel::addIsolatedCallback ( image::Callback  callback,
DataSource  imageSourceMask,
void *  userDataP = NULL 
)
pure virtual

Add a user defined callback attached to the image streams specified by imageSourceMask.

Each callback will create a unique internal thread dedicated to servicing the callback.

The image data passed to the callback are valid only until the callback returns. To reserve image data so that it persists longer than that, see member function reserveCallbackBuffer() below.

Image data is queued per-callback. For each image callback the internal queue depth is 5 images, but see member functions getLargeBufferDetails() and setLargeBuffers().

Adding multiple callbacks subscribing to the same image data is allowed. The same instance of image data will be presented to each callback with no copying done.

Multiple image types may be subscribed to simultaneously in a single callback by using an imageSourceMask argument that is the bitwise or of the appropriate DataSource values.

Multiple callbacks of differing types may be added in order to isolate image processing by thread.

Parameters
callbackA user defined image::Callback to which image data will be sent.
imageSourceMaskThe specific image types to stream to the user defined callback. Multiple image sources may be combined using the bitwise OR operator.
userDataPA pointer to arbitrary user data. This typically is a pointer to the instance of the object where the callback is defined. See image::Header for a example of this usage
Returns
A crl::multisense::Status indicating if the callback registration succeeded or failed
virtual Status crl::multisense::Channel::addIsolatedCallback ( lidar::Callback  callback,
void *  userDataP = NULL 
)
pure virtual

Add a user defined callback attached to a lidar stream.

Each callback will create a unique internal thread dedicated to servicing the callback.

The lidar data passed to the callback are valid only until the callback returns. To reserve image data so that it persists longer than that, see member function reserveCallbackBuffer() below.

Lidar data is queued per-callback. For each lidar callback the maximum queue depth is 20 lidar scans.

Adding multiple callbacks subscribing to the same lidar data is allowed. The same instance of lidar data will be presented to each callback with no copying done.

Parameters
callbackA user defined lidar::Callback to send lidar data to
userDataPA pointer to arbitrary user data.
Returns
A crl::multisense::Status indicating if the callback registration succeeded or failed
virtual Status crl::multisense::Channel::addIsolatedCallback ( pps::Callback  callback,
void *  userDataP = NULL 
)
pure virtual

Add a user defined callback attached to a pulse per-second (PPS) stream.

This PPS stream corresponds to the pulse on the OPTO-TX line.

Each callback will create a unique internal thread dedicated to servicing the callback.

PPS data is queued per-callback. For each PPS callback the maximum queue depth is 2 pps events.

Adding multiple callbacks subscribing to the same PPS data is allowed.

PPS data is stored on the heap and released after returning from the callback

Parameters
callbackA user defined pps::Callback to send PPS data to
userDataPA pointer to arbitrary user data.
Returns
A crl::multisense::Status indicating if the callback registration succeeded or failed
virtual Status crl::multisense::Channel::addIsolatedCallback ( imu::Callback  callback,
void *  userDataP = NULL 
)
pure virtual

Add a user defined callback attached to the IMU stream.

Each callback will create a unique internal thread dedicated to servicing the callback.

IMU data is queued per-callback. For each IMU callback the maximum queue depth is 50 IMU messages.

Adding multiple callbacks subscribing to the same IMU data is allowed.

IMU data is stored on the heap and released after returning from the callback

Each imu::Header contains multiple IMU samples to reduce the number of UDP packets sent from the sensor.

Parameters
callbackA user defined imu::Callback to send PPS data to
userDataPA pointer to arbitrary user data.
Returns
A crl::multisense::Status indicating if the callback registration succeeded or failed
static Channel* crl::multisense::Channel::Create ( const std::string &  sensorAddress)
static

Create a Channel instance, used to manage all communications with a sensor.

The resulting pointer must be explicitly destroyed using the static member function Channel::Destroy().

Parameters
sensorAddressThe device IPv4 address which can be a dotted-quad, or any hostname resolvable by gethostbyname().

return A pointer to a new Channel instance

static void crl::multisense::Channel::Destroy ( Channel instanceP)
static

Destroy a channel instance that was created using the static member function Channel::Create().

This operation should be done before exiting

Parameters
instancePA pointer to a Channel instance to be destroyed
virtual Status crl::multisense::Channel::flashBitstream ( const std::string &  file)
pure virtual

Flash a new FPGA bitstream file to the sensor.

WARNING: This member should not be used directly. Inproper usage can result in the sensor being inoperable. Use the MultiSenseUpdater script to update the sensor's firmware/bitstream

Parameters
fileThe path to the file containing the new sensor bitstream
Returns
A crl::multisense::Status indicating if the new bitstream was successfully flashed
virtual Status crl::multisense::Channel::flashFirmware ( const std::string &  file)
pure virtual

Flash a new firmware file to the sensor.

WARNING: This member should not be used directly. Inproper usage can result in the sensor being inoperable. Use the MultiSenseUpdater script to update the sensor's firmware/bitstream

Parameters
fileThe path to the file containing the new sensor firmware
Returns
A crl::multisense::Status indicating if the new firmware was successfully flashed
virtual Status crl::multisense::Channel::getApiVersion ( VersionType version)
pure virtual

Get the API version of LibMultiSense.

Parameters
versionThe API version of LibMultiSense, returned by reference
Returns
A crl::multisense::Status indicating if the LibMultiSense API version query succeeded
virtual Status crl::multisense::Channel::getDeviceInfo ( system::DeviceInfo info)
pure virtual

Query the current sensor's device information.

See system::DeviceInfo for a usage example

Parameters
infoA DeviceInfo returned by reference containing the device information for the current sensor
Returns
A crl::multisense::Status indicating if the device information query was successful
virtual Status crl::multisense::Channel::getDeviceModes ( std::vector< system::DeviceMode > &  m)
pure virtual

Query the available sensor device modes.

See system::DeviceMode for a usage example

Parameters
mA vector of possible device modes returned by reference from the sensor
Returns
A crl::multisense::Status indicating if the device mode query was successful
virtual Status crl::multisense::Channel::getDeviceStatus ( system::StatusMessage status)
pure virtual

Get the current status of the device.

Status is updated at 1Hz and should not be queried at a higher frequency.

Parameters
statusThe status of the attached device returned by reference
Returns
A crl::multisense::Status indicating if the status was successfully queried
virtual Status crl::multisense::Channel::getDirectedStreams ( std::vector< DirectedStream > &  streams)
pure virtual

Get the current list of active streams.

NOTE: Directed streams are currently only supported by CRL's Monocular IP Camera. MultiSense S* hardware variations are not supported (the following functions will return the 'Status_Unknown' error code.)

Parameters
streamsA vector of DirectedStreams which is populated by getDirectedStreams()
Returns
A crl::multisense::Status indicating if the DirectedStream query succeeded
virtual Status crl::multisense::Channel::getEnabledStreams ( DataSource mask)
pure virtual

Get the current data streams which are enabled on the sensor.

Parameters
maskThe current data streams which are enabled. These are returned by reference in mask
Returns
A crl::multisense::Status indicating if the getEnabledStreams query succeeded.
virtual Status crl::multisense::Channel::getExternalCalibration ( system::ExternalCalibration calibration)
pure virtual

Get the external calibration associated with the MultiSense device.

Parameters
calibrationThe external calibration object to query from non-volatile flash
Returns
A crl::multisense::Status indicating if the calibration was successfully queried
virtual Status crl::multisense::Channel::getImageCalibration ( image::Calibration c)
pure virtual

Query the current camera calibration.

See image::Calibration for a usage example

Parameters
cA image calibration returned by reference from getImageCalibration()
Returns
A crl::multisense::Status indicating if the image calibration was successfully queried
virtual Status crl::multisense::Channel::getImageConfig ( image::Config c)
pure virtual

Query the image configuration.

See image::Config for a usage example

Parameters
cThe image configuration returned by reference from the query
Returns
A crl::multisense::Status indicating if the image configuration query succeeded
virtual Status crl::multisense::Channel::getImageHistogram ( int64_t  frameId,
image::Histogram histogram 
)
pure virtual

Get the image histogram for the image corresponding to a specified frameId.

See image::Histogram for a usage example

Parameters
frameIdThe frameId of the corresponding left image to query a histogram for. Histograms can only be queried for images with frameIds fewer than 20 frameIds from the most recent image's frameId.
histogramA histogram returned by reference
Returns
A crl::multisense::Status indicating if the histogram query was successful
virtual Status crl::multisense::Channel::getImuConfig ( uint32_t &  samplesPerMessage,
std::vector< imu::Config > &  c 
)
pure virtual

Query the current IMU configuration.

See imu::Config for a usage example

Parameters
samplesPerMessageThe number of samples (aggregate from all IMU types) that the sensor will queue internally before putting on the wire. Note that low settings combined with high IMU sensor rates may interfere with the acquisition and transmission of image and lidar data.
cThe current imu configuration returned by reference
Returns
A crl::multisense::Status indicating if the IMU configuration was successfully queried
virtual Status crl::multisense::Channel::getImuInfo ( uint32_t &  maxSamplesPerMesage,
std::vector< imu::Info > &  info 
)
pure virtual

Query detailed information about the current sensor's IMU.

See imu::Info for a usage example

Parameters
maxSamplesPerMesageThe maximum number of IMU samples which can be aggregated in a single IMU message
infoA vector of imu::Info returned by reference. This contains all the possible configurations for each IMU sensor
Returns
A crl::multisense::Status indicating if the IMU info was successfully queried
virtual Status crl::multisense::Channel::getLargeBufferDetails ( uint32_t &  bufferCount,
uint32_t &  bufferSize 
)
pure virtual

Query the suggested number and size of the image buffers.

NOTe: Other number/size can be used but it is not recommended

The channel maintains and recycles a set of large buffers used for image storage and dispatching.

Parameters
bufferCountThe number of buffers returned by reference
bufferSizeThe size of a single buffer returned by reference
Returns
A crl::multisense::Status indicating if the buffer details were successfully queried
virtual Status crl::multisense::Channel::getLidarCalibration ( lidar::Calibration c)
pure virtual

Query the current laser calibration.

See lidar::Calibration for a usage example

Parameters
cA laser calibration returned by reference from getLidarCalibration()
Returns
A crl::multisense::Status indicating if the laser calibration was successfully queried
virtual Status crl::multisense::Channel::getLightingConfig ( lighting::Config c)
pure virtual

Query the on-board lighting configuration.

See lighting::Config for a usage example

Parameters
cA lighting configuration returned by reference
Returns
A crl::multisense::Status indicating if the lighting configuration query succeeded
virtual Status crl::multisense::Channel::getLightingSensorStatus ( lighting::SensorStatus status)
pure virtual

Get the status of the sensors attached to the external lighting platform.

Parameters
statusThe status of the external lighting sensors returned by reference
virtual Status crl::multisense::Channel::getLocalUdpPort ( uint16_t &  port)
pure virtual

Query the system-assigned local UDP port.

Parameters
portThe local system UDP port returned by reference
Returns
A crl::multisense::Status indicating if the local UDP port was successfully queried
virtual Status crl::multisense::Channel::getMtu ( int32_t &  mtu)
pure virtual

Query the current sensor's MTU configuration.

The MTU setting controls the maximum size of the UDP packets that will be transmitted from the sensor via Ethernet. In general, larger MTU settings are preferred, but the MTU value must not exceed the MTU setting of the network interface to which the MultiSense unit is sending data.

Parameters
mtuAn int32_t returned by reference containing the current MTU setting
Returns
A crl::multisense::Status indicating if the mtu query was successful
virtual Status crl::multisense::Channel::getNetworkConfig ( system::NetworkConfig c)
pure virtual

Query the current sensor's network configuration.

See system::NetworkConfig for a usage example

Parameters
cA NetworkConfig returned by reference containing the current sensor's network configuration
Returns
A crl::multisense::Status indicating if the network configuration query was successful
virtual Status crl::multisense::Channel::getSensorCalibration ( image::SensorCalibration c)
pure virtual

Query the current device imager calibration.

This is the DC imager gain and black level offset used to match the left and right imagers to improve stereo matching performance.

Parameters
cThe sensor calibration instance which will be returned by reference
Returns
A crl::multisense::Status indicating if the imager calibration was successfully queried
virtual Status crl::multisense::Channel::getSensorVersion ( VersionType version)
pure virtual

Get the API version of the sensor firmware.

Parameters
versionThe API version of the sensor firmware, returned by reference
Returns
A crl::multisense::Status indicating if the sensor API version query succeeded
virtual Status crl::multisense::Channel::getVersionInfo ( system::VersionInfo v)
pure virtual

Get the version info for the sensor and LibMultiSense.

See system::VersionInfo for a usage example.

Parameters
vThe version information returned by reference
Returns
A crl::multisense::Status indicating if the version information query succeeded
virtual Status crl::multisense::Channel::maxDirectedStreams ( uint32_t &  maximum)
pure virtual

Query the number of simultaneous parties which can be supported.

NOTE: Directed streams are currently only supported by CRL's Monocular IP Camera. MultiSense S* hardware variations are not supported (the following functions will return the 'Status_Unknown' error code.)

If the number of maximum directed streams has already been achieved, startDirectedStream() will return an error code.

Parameters
maximumThe maximum number of DirectedStreams returned by reference
Returns
A crl::multisense::Status indicating if the query succeeded
virtual Status crl::multisense::Channel::networkTimeSynchronization ( bool  enabled)
pure virtual

Enable or disable local network-based time synchronization.

Each Channel will keep a continuously updating and filtered offset between the sensor's internal clock and the local system clock.

If enabled, all sensor timestamps will be reported in the local system clock frame, after the offset has been applied.

If disabled, all sensor timestamps will be reported in the frame of the sensor's clock, which is free-running from 0 seconds on power up.

The network-based time synchronization is enabled by default.

Parameters
enabledA boolean flag which enables or disables network time synchronization
Returns
A crl::multisense::Status indicating if the network-based time synchronization was successfully enabled or disabled
virtual Status crl::multisense::Channel::releaseCallbackBuffer ( void *  referenceP)
pure virtual

Release image or lidar data reserved within a isolated callback.

releaseCallbackBuffer() may be called from any thread context.

Parameters
referencePA pointer to the reserved data returned by reserveCallbackBuffer()
Returns
A crl::multisense::Status indicating if the callback data buffer was successfully released
virtual Status crl::multisense::Channel::removeIsolatedCallback ( image::Callback  callback)
pure virtual

Unregister a user defined image::Callback.

This stops the callback from receiving image data.

Parameters
callbackThe user defined imu::Callback to unregister
Returns
A crl::multisense::Status indicating if the callback deregistration succeeded or failed
virtual Status crl::multisense::Channel::removeIsolatedCallback ( lidar::Callback  callback)
pure virtual

Unregister a user defined lidar::Callback.

This stops the callback from receiving lidar data

Parameters
callbackThe user defined image::Callback to unregister
Returns
A crl::multisense::Status indicating if the callback deregistration succeeded or failed
virtual Status crl::multisense::Channel::removeIsolatedCallback ( pps::Callback  callback)
pure virtual

Unregister a user defined pps::Callback.

This stops the callback from receiving pps data

Parameters
callbackThe user defined lidar::Callback to unregister
Returns
A crl::multisense::Status indicating if the callback deregistration succeeded or failed
virtual Status crl::multisense::Channel::removeIsolatedCallback ( imu::Callback  callback)
pure virtual

Unregister a user defined imu::Callback.

This stops the callback from receiving imu data

Parameters
callbackThe user defined pps::Callback to unregister
Returns
A crl::multisense::Status indicating if the callback deregistration succeeded or failed
virtual void* crl::multisense::Channel::reserveCallbackBuffer ( )
pure virtual

Reserve image or lidar data within a isolated callback so it is available after the callback returns.

The memory buffer behind an image or lidar datum within an isolated callback may be reserved by the user. This is useful for performing data processing outside of the channel callback, without having to perform a memory copy of the sensor data.

The channel is guaranteed not to reuse the memory buffer until the user releases it back. Note that there are a limited amount of memory buffers, and care should be taken not to reserve them for too long.

Returns
A valid (non NULL) reference only when called within the context of an image or lidar callback.
virtual Status crl::multisense::Channel::setDeviceInfo ( const std::string &  key,
const system::DeviceInfo i 
)
pure virtual

Set the current sensor's device information.

NOTE: This function is intended for use at the factory, and is not publicly supported.

Parameters
keyThe secret key required to write new device information
iThe new DeviceInfo to write to the sensor
Returns
A crl::multisense::Status indicating if the device information was successfully received
virtual Status crl::multisense::Channel::setExternalCalibration ( const system::ExternalCalibration calibration)
pure virtual

Set the external calibration associated with the MultiSense device.

Parameters
calibrationThe external calibration object to write to non-volatile flash
Returns
A crl::multisense::Status indicating if the calibration was successfully set
virtual Status crl::multisense::Channel::setImageCalibration ( const image::Calibration c)
pure virtual

Set the current camera calibration.

See image::Calibration for a usage example

Parameters
cA new image calibration to send to the sensor
Returns
A crl::multisense::Status indicating if the image calibration was successfully received by the sensor
virtual Status crl::multisense::Channel::setImageConfig ( const image::Config c)
pure virtual

Set the image configuration.

See image::Config for a usage example

Parameters
cThe new image configuration to send to the sensor
Returns
A crl::multisense::Status indicating if the image configuration was successfully received by the sensor
virtual Status crl::multisense::Channel::setImuConfig ( bool  storeSettingsInFlash,
uint32_t  samplesPerMessage,
const std::vector< imu::Config > &  c 
)
pure virtual

Set a new IMU configuration.

See imu::Config for a usage example

IMU streams must be restarted for any configuration changes to be reflected.

Parameters
storeSettingsInFlashA boolean flag which indicated if the configuration saved in non-volatile flash on the sensor head
samplesPerMessageThe new number of IMU samples to aggregate before sending a new IMU message. If the value is zero the sensor will keep its current samplesPerMessage setting
cThe imu configuration that will be sent to the sensor.
Returns
A crl::multisense::Status indicating if the IMU configuration was successfully received
virtual Status crl::multisense::Channel::setLargeBuffers ( const std::vector< uint8_t * > &  buffers,
uint32_t  bufferSize 
)
pure virtual

Set user allocated large buffer.

This tells the channel to use the supplied buffers in lieu of its automatically allocated internal buffers. The channel's internal buffers will be freed.

All supplied buffers must be of the same size.

Responsibility for freeing the supplied buffers after channel closure is left to the user

Parameters
buffersA vector of new buffers to use for image storage. All buffers in the vector must be of the same size
bufferSizeThe size of one buffer in the buffers vector
Returns
A crl::multisense::Status indicating if the new buffers were successfully received
virtual Status crl::multisense::Channel::setLidarCalibration ( const lidar::Calibration c)
pure virtual

Set the current laser calibration.

See lidar::Calibration for a usage example

Parameters
cA new laser calibration to send to the sensor
Returns
A crl::multisense::Status indicating if the laser calibration was successfully received by the sensor
virtual Status crl::multisense::Channel::setLightingConfig ( const lighting::Config c)
pure virtual

Set the on-board lighting configuration.

See lighting::Config for a usage example

Parameters
cA lighting configuration to send to the sensor
Returns
A crl::multisense::Status indicating if the lighting reconfiguration succeeded
virtual Status crl::multisense::Channel::setMotorSpeed ( float  rpm)
pure virtual

Set the laser spindle rotation speed.

A positive value rotates the laser in the counter-clockwise direction. A negative value rotates the laser in the clockwise direction.

NOTE: Only positive rotations are recommended. Full life-cycle testing has only been done using a positive rotation.

Parameters
rpmThe number of rotations per minute [-50.0, 50.0]
Returns
A crl::multisense::Status indicating if the motor speed change succeeded
virtual Status crl::multisense::Channel::setMtu ( int32_t  mtu)
pure virtual

Set the current sensor's MTU.

Parameters
mtuThe new MTU to configure the sensor with
Returns
A crl::multisense::Status indicating if the mtu configuration was successfully received
virtual Status crl::multisense::Channel::setNetworkConfig ( const system::NetworkConfig c)
pure virtual

Set the current sensor's network configuration.

See system::NetworkConfig for a usage example

Parameters
cA new network configuration to send to the sensor
Returns
A crl::multisense::Status indicating if the network configuration was successfully received
virtual Status crl::multisense::Channel::setSensorCalibration ( const image::SensorCalibration c)
pure virtual

Set the devices imager calibration.

This is used to adjust the DC imager gains and the black level offsets so that both imagers match one another. This calibration is stored in flash and only needs to be set once

Parameters
cThe sensor calibration instance to write to flash memory
Returns
A crl::multisense::Status indicating if the imager calibration was successfully received by the sensor
virtual Status crl::multisense::Channel::setTriggerSource ( TriggerSource  s)
pure virtual

Set a new image trigger source.

This is used to specify which source is used to trigger a image capture.

By default Trigger_Internal is used

Parameters
sThe new desired trigger source
Returns
A crl::multisense::Status indicating if the trigger source change succeeded
virtual Status crl::multisense::Channel::startDirectedStream ( const DirectedStream stream)
pure virtual

Start a directed stream used to stream data to multiple 3rd parties.

NOTE: Directed streams are currently only supported by CRL's Monocular IP Camera. MultiSense S* hardware variations are not supported (the following functions will return the 'Status_Unknown' error code.)

Secondary stream control. In addition to the primary stream control above, a set of streams may be directed to a 3rd party (or multiple 3rd parties), where a 3rd party is uniquely defined as an IP address / UDP port pair.

The number of simulataneous parties supported can be queried via maxDirectedStreams(). If the number of maximum directed streams has already been achieved, startDirectedStream() will return an error code.

If the stream address/port combination already exists as a streaming destination, then startDirectedStream() will update the data source mask and FPS decimation.

Parameters
streamA DrirectedStream to either add or update setting of
Returns
A crl::multisense::Status indicating if the DirectedStream was successfully started
virtual Status crl::multisense::Channel::startDirectedStreams ( const std::vector< DirectedStream > &  streams)
pure virtual

Start several directed streams used to stream data to multiple 3rd parties.

NOTE: Directed streams are currently only supported by CRL's Monocular IP Camera. MultiSense S* hardware variations are not supported (the following functions will return the 'Status_Unknown' error code.)

Secondary stream control. In addition to the primary stream control above, a set of streams may be directed to a 3rd party (or multiple 3rd parties), where a 3rd party is uniquely defined as an IP address / UDP port pair.

The number of simulataneous parties supported can be queried via maxDirectedStreams(). If the number of maximum directed streams has already been achieved, startDirectedStream() will return an error code.

If the stream address/port combination already exists as a streaming destination, then startDirectedStream() will update the data source mask and FPS decimation.

Parameters
streamsA vector of DrirectedStream to either add or update setting of
Returns
A crl::multisense::Status indicating if the DirectedStream was successfully started
virtual Status crl::multisense::Channel::startStreams ( DataSource  mask)
pure virtual

Start streaming various DataSources from the sensor.

This is the primary means of stream control. All streams will come to the requestor (i.e., the machine making the request with this API. The server peeks the source address and port from the request UDP packet.)

Multiple streams may be started at once by setting the individual source bits in the mask. Different streams may be started at differing times by calling startStreams() multiple times.

Parameters
maskThe DataSources to start streaming. Multiple streams can be started by performing a bitwise OR operation with various crl::multisense::DataSource definitions
Returns
A crl::multisense::Status indicating if the specified streams were successfully started
static const char* crl::multisense::Channel::statusString ( Status  status)
static

Helper method used to get a string describing a specific status code.

Parameters
statusA status code to convert to a string

return A char* corresponding to the input status code

virtual Status crl::multisense::Channel::stopDirectedStream ( const DirectedStream stream)
pure virtual

Stop a specific directed stream.

NOTE: Directed streams are currently only supported by CRL's Monocular IP Camera. MultiSense S* hardware variations are not supported (the following functions will return the 'Status_Unknown' error code.)

Parameters
streamA DirectedStream to stop
Returns
A crl::multisense::Status indicating if the DirectedStream was successfully stopped
virtual Status crl::multisense::Channel::stopStreams ( DataSource  mask)
pure virtual

Stop specific data streams from the sensor.

Stop streams may be called to selectively disable streams at any time. (use stopStreams(crl::multisense::Source_All) to disable all streaming.

Parameters
maskThe DataSources to stop streaming. Multiple streams can be stopped by performing a bitwise OR operation with various crl::multisense::DataSource definitions
Returns
A crl::multisense::Status indicating if the specified streams were successfully stopped
virtual Status crl::multisense::Channel::verifyBitstream ( const std::string &  file)
pure virtual

Verify that the current bitstream in the sensor's flash is the same as the bitstream specified by file.

Parameters
fileThe path to the file containing the bitstream to check
Returns
A crl::multisense::Status indicating if the bitstream specified by file is loaded in the sensor's non-volatile flash memory
virtual Status crl::multisense::Channel::verifyFirmware ( const std::string &  file)
pure virtual

Verify the current firmware in the sensor's flash is the same as the firmware specified by file.

Parameters
fileThe path to the file containing the firmware to check
Returns
A crl::multisense::Status indicating if the firmware specified by file is loaded in the sensor's non-volatile flash memory

The documentation for this class was generated from the following file: