LibMultiSense
LibMultiSense Documentation
MultiSenseChannel.hh
Go to the documentation of this file.
1 
37 #pragma once
38 
39 #include <functional>
40 #include <optional>
41 
42 #include "MultiSenseTypes.hh"
43 
44 namespace multisense {
45 
47 public:
53  {
57  LEGACY
58  };
59 
66  {
70  size_t num_small_buffers = 100;
74  size_t small_buffer_size = 1500;
78  size_t num_large_buffers = 16;
82  size_t large_buffer_size = 1920*1200*3;
83  };
84 
85  struct Config
86  {
90  std::string ip_address = "10.66.171.21";
91 
97  std::optional<int16_t> mtu = static_cast<uint16_t>(1500);
98 
103  std::optional<std::chrono::milliseconds> receive_timeout = std::chrono::milliseconds(500);
104 
109  uint16_t command_port{9001};
110 
114  std::optional<std::string> interface = std::nullopt;
115 
120  ReceiveBufferConfig receive_buffer_configuration{};
121  };
122 
127  static std::unique_ptr<Channel> create(const Config &config,
128  const ChannelImplementation &impl = ChannelImplementation::LEGACY);
129 
130  Channel() = default;
131 
135  Channel(const Channel&) = delete;
136  Channel& operator=(const Channel&) = delete;
137 
141  Channel(Channel&&) noexcept = default;
142  Channel& operator=(Channel&&) noexcept = default;
143 
144  virtual ~Channel() = default;
145 
149  virtual Status start_streams(const std::vector<DataSource> &sources) = 0;
150 
155  virtual Status stop_streams(const std::vector<DataSource> &sources) = 0;
156 
160  virtual void add_image_frame_callback(std::function<void(const ImageFrame&)> callback) = 0;
161 
165  virtual void add_imu_frame_callback(std::function<void(const ImuFrame&)> callback) = 0;
166 
170  virtual Status connect(const Config &config) = 0;
171 
175  virtual void disconnect() = 0;
176 
185  virtual std::optional<ImageFrame> get_next_image_frame() = 0;
186 
195  virtual std::optional<ImuFrame> get_next_imu_frame() = 0;
196 
200  virtual MultiSenseConfig get_config() = 0;
201 
205  virtual Status set_config(const MultiSenseConfig &config) = 0;
206 
211  virtual StereoCalibration get_calibration() = 0;
212 
217  virtual Status set_calibration(const StereoCalibration &calibration) = 0;
218 
222  virtual MultiSenseInfo get_info() = 0;
223 
228  virtual Status set_device_info(const MultiSenseInfo::DeviceInfo &device_info, const std::string &key) = 0;
229 
233  virtual std::optional<MultiSenseStatus> get_system_status() = 0;
234 
239  virtual Status set_network_config(const MultiSenseInfo::NetworkInfo &config) = 0;
240 };
241 
242 }
multisense::ImuFrame
A collection of IMU samples from the camera.
Definition: MultiSenseTypes.hh:418
multisense::ImageFrame
A frame containing multiple images (indexed by DataSource).
Definition: MultiSenseTypes.hh:300
multisense::Status
Status
Definition: MultiSenseTypes.hh:67
MULTISENSE_API
#define MULTISENSE_API
Definition: MultiSenseTypes.hh:57
multisense::MultiSenseInfo
Static status info for the MultiSense.
Definition: MultiSenseTypes.hh:1262
multisense::Channel::Config
Definition: MultiSenseChannel.hh:85
multisense::Channel::ReceiveBufferConfig
Certain implementations may use a fixed set of internal buffers to manage incoming camera data.
Definition: MultiSenseChannel.hh:65
multisense::MultiSenseStatus
Consolidated status information which can be queried on demand from the MultiSense.
Definition: MultiSenseTypes.hh:1082
MultiSenseTypes.hh
multisense::Channel::ChannelImplementation
ChannelImplementation
Identifiers for the different Channel implementations.
Definition: MultiSenseChannel.hh:52
multisense::DataSource
DataSource
Identifies which camera or data source the image is from.
Definition: MultiSenseTypes.hh:83
multisense::Channel
Definition: MultiSenseChannel.hh:46
multisense::StereoCalibration
Definition: MultiSenseTypes.hh:166
multisense
Definition: MultiSenseChannel.hh:44
multisense::MultiSenseConfig
Complete configuration object for configuring the MultiSense.
Definition: MultiSenseTypes.hh:478