Legacy/SaveImageUtility/SaveImageUtility.cc
Go to the documentation of this file.
1 
38 #ifdef WIN32
39 #ifndef WIN32_LEAN_AND_MEAN
40 #define WIN32_LEAN_AND_MEAN 1
41 #endif
42 
43 #include <windows.h>
44 #include <winsock2.h>
45 #else
46 #include <unistd.h>
47 #include <arpa/inet.h> // htons
48 #endif
49 
50 #include <fstream>
51 #include <iomanip>
52 #include <iostream>
53 #include <limits>
54 #include <sstream>
55 #include <stdio.h>
56 #include <stdlib.h>
57 #include <signal.h>
58 #include <string.h>
59 #include <string>
60 
61 #include <getopt/getopt.h>
62 #include <Io.hh>
63 
65 #include <MultiSense/MultiSenseChannel.hh>
66 
67 using namespace crl::multisense;
68 
69 namespace { // anonymous
70 
71 volatile bool doneG = false;
72 
73 struct UserData
74 {
75  Channel *channelP;
76  system::VersionInfo version;
77  system::DeviceInfo deviceInfo;
78  image::Calibration calibration;
79 };
80 
81 void usage(const char *programNameP)
82 {
83  std::cerr << "USAGE: " << programNameP << " [<options>]" << std::endl;
84  std::cerr << "Where <options> are:" << std::endl;
85  std::cerr << "\t-a <current_address> : CURRENT IPV4 address (default=10.66.171.21)" << std::endl;
86  std::cerr << "\t-m <mtu> : MTU to set the camera to (default=1500)" << std::endl;
87  std::cerr << "\t-r <head_id> : remote head ID (default=0)" << std::endl;
88 
89  exit(1);
90 }
91 
92 #ifdef WIN32
93 BOOL WINAPI signalHandler(DWORD dwCtrlType)
94 {
95  CRL_UNUSED (dwCtrlType);
96  doneG = true;
97  return TRUE;
98 }
99 #else
100 void signalHandler(int sig)
101 {
102  (void) sig;
103  doneG = true;
104 }
105 #endif
106 
107 RemoteHeadChannel getRemoteHeadIdFromString(const std::string &head_str)
108 {
109  if (head_str == "VPB")
110  {
111  return Remote_Head_VPB;
112  }
113  else if (head_str == "0")
114  {
115  return Remote_Head_0;
116  }
117  else if (head_str == "1")
118  {
119  return Remote_Head_1;
120  }
121  else if (head_str == "2")
122  {
123  return Remote_Head_2;
124  }
125  else if (head_str == "3")
126  {
127  return Remote_Head_3;
128  }
129 
130  fprintf(stderr, "Error: Unrecognized remote head\n");
131  fprintf(stderr, "Please use one of the following:\n");
132  fprintf(stderr, "\tVPB\n");
133  fprintf(stderr, "\t0'\n");
134  fprintf(stderr, "\t1\n");
135  fprintf(stderr, "\t2\n");
136  fprintf(stderr, "\t3\n");
137  exit(EXIT_FAILURE);
138 }
139 
140 system::DeviceMode getOperatingMode(const std::vector<system::DeviceMode> &modes)
141 {
142  //
143  // Get the full resolution image
144 
145  system::DeviceMode best_mode(0, 0, 0, -1);
146  for (size_t i = 0 ; i < modes.size() ; ++i)
147  {
148  const system::DeviceMode &mode = modes[i];
149  if (mode.width >= best_mode.width && mode.height >= best_mode.height && mode.disparities >= best_mode.disparities) {
150  best_mode = mode;
151  }
152  }
153 
154  //
155  // Target 1/4 of the full res setting. Check to see if there is a setting with a larger number of disparities
156 
157  system::DeviceMode target_mode(best_mode.width / 2, best_mode.height / 2, 0, best_mode.disparities);
158 
159  for (size_t i = 0 ; i < modes.size() ; ++i)
160  {
161  const system::DeviceMode &mode = modes[i];
162  if (mode.width == target_mode.width && mode.height == target_mode.height && mode.disparities >= target_mode.disparities) {
163  target_mode = mode;
164  }
165  }
166 
167  //
168  // The camera does not support our targeted 1/4 res setting
169 
170  if (target_mode.supportedDataSources == 0) {
171  return best_mode;
172  }
173 
174  return target_mode;
175 }
176 
177 
178 std::string writeMatrix(const float* data, size_t width, size_t height)
179 {
180  std::stringstream ss;
181  ss << std::fixed << std::setprecision(6);
182 
183  for (size_t h = 0 ; h < height ; ++h) {
184  for (size_t w = 0 ; w < width ; ++w) {
185  ss << data[w + width * h] << ",";
186  }
187  }
188 
189  return ss.str();
190 }
191 
192 std::string assembledInfoString(const image::Header& header,
193  const system::DeviceInfo& info,
194  const system::VersionInfo& version,
195  const image::Calibration& calibration)
196 {
197  std::stringstream ss;
198 
203 
204  ss << "SN," << info.serialNumber << ",";
205  ss << "HWRev," << info.hardwareRevision << ",";
206  ss << "APIVersion," << version.apiVersion << ",";
207  ss << "FirmwareVersion," << version.sensorFirmwareVersion << ",";
208  ss << "timeSec," << header.timeSeconds << ",";
209  ss << "timeMiroSec," << header.timeMicroSeconds << ",";
210  ss << "exposure," << header.exposure << ",";
211  ss << "gain," << header.gain << ",";
212  ss << "fps," << header.framesPerSecond << ",";
213  ss << "leftM," << writeMatrix(&calibration.left.M[0][0], 3, 3);
214  ss << "leftD," << writeMatrix(calibration.left.D, 8, 1);
215  ss << "leftR," << writeMatrix(&calibration.left.R[0][0], 3, 3);
216  ss << "leftP," << writeMatrix(&calibration.left.P[0][0], 4, 3);
217  ss << "rightM," << writeMatrix(&calibration.right.M[0][0], 3, 3);
218  ss << "rightD," << writeMatrix(calibration.right.D, 8, 1);
219  ss << "rightR," << writeMatrix(&calibration.right.R[0][0], 3, 3);
220  ss << "rightP," << writeMatrix(&calibration.right.P[0][0], 4, 3);
221  if (hasAuxCamera) {
222  ss << "auxM," << writeMatrix(&calibration.aux.M[0][0], 3, 3);
223  ss << "auxD," << writeMatrix(calibration.aux.D, 8, 1);
224  ss << "auxR," << writeMatrix(&calibration.aux.R[0][0], 3, 3);
225  ss << "auxP," << writeMatrix(&calibration.aux.P[0][0], 4, 3);
226  }
227 
228  return ss.str();
229 }
230 
231 bool savePgm(const std::string& fileName,
232  const image::Header& header,
233  const system::DeviceInfo& info,
234  const system::VersionInfo& version,
235  const image::Calibration& calibration)
236 {
237  const std::string comment = assembledInfoString(header, info, version, calibration);
238 
239  return io::savePgm(fileName,
240  header.width,
241  header.height,
242  header.bitsPerPixel,
243  comment,
244  header.imageDataP);
245 }
246 
247 void ppsCallback(const pps::Header& header,
248  void *userDataP)
249 {
250  (void) userDataP;
251  std::cerr << "PPS: " << header.sensorTime << " ns" << std::endl;
252 }
253 
254 void laserCallback(const lidar::Header& header,
255  void *userDataP)
256 {
257  (void) userDataP;
258  std::cerr << "lidar: " << header.pointCount << std::endl;
259 }
260 
261 void imageCallback(const image::Header& header,
262  void *userDataP)
263 {
264  UserData *userData = reinterpret_cast<UserData*>(userDataP);
265 
266  static int64_t lastFrameId = -1;
267 
268  if (-1 == lastFrameId)
269  {
270  savePgm("test.pgm",
271  header,
272  userData->deviceInfo,
273  userData->version,
274  userData->calibration);
275  }
276 
277  lastFrameId = header.frameId;
278 
279  image::Histogram histogram;
280 
281  if (Status_Ok != userData->channelP->getImageHistogram(header.frameId, histogram))
282  std::cerr << "failed to get histogram for frame " << header.frameId << std::endl;
283 }
284 
285 } // anonymous
286 
287 int main(int argc,
288  char **argvPP)
289 {
290  std::string currentAddress = "10.66.171.21";
291  int32_t mtu = 0;
293 
294 #if WIN32
295  SetConsoleCtrlHandler (signalHandler, TRUE);
296 #else
297  signal(SIGINT, signalHandler);
298 #endif
299 
300  //
301  // Parse args
302 
303  int c;
304 
305  while(-1 != (c = getopt(argc, argvPP, "a:m:r:")))
306  switch(c) {
307  case 'a': currentAddress = std::string(optarg); break;
308  case 'm': mtu = atoi(optarg); break;
309  case 'r': head_id = getRemoteHeadIdFromString(optarg); break;
310  default: usage(*argvPP); break;
311  }
312 
313  //
314  // Initialize communications.
315 
316  Channel *channelP = Channel::Create(currentAddress, head_id);
317  if (NULL == channelP) {
318  std::cerr << "Failed to establish communications with \"" << currentAddress << "\"" << std::endl;
319  return -1;
320  }
321 
322  //
323  // Query version
324 
325  Status status;
327  VersionType version;
328  std::vector<system::DeviceMode> deviceModes;
329  system::DeviceMode operatingMode;
330  image::Calibration calibration;
331  system::DeviceInfo info;
332  UserData userData;
333 
334  status = channelP->getSensorVersion(version);
335  status = channelP->getVersionInfo(v);
336 
337  if (Status_Ok != status) {
338  std::cerr << "Failed to query sensor version: " << Channel::statusString(status) << std::endl;
339  goto clean_out;
340  }
341 
342  std::cout << "API build date : " << v.apiBuildDate << "\n";
343  std::cout << "API version : 0x" << std::hex << std::setw(4) << std::setfill('0') << v.apiVersion << "\n";
344  std::cout << "Firmware build date : " << v.sensorFirmwareBuildDate << "\n";
345  std::cout << "Firmware version : 0x" << std::hex << std::setw(4) << std::setfill('0') << v.sensorFirmwareVersion << "\n";
346  std::cout << "Hardware version : 0x" << std::hex << v.sensorHardwareVersion << "\n";
347  std::cout << "Hardware magic : 0x" << std::hex << v.sensorHardwareMagic << "\n";
348  std::cout << "FPGA DNA : 0x" << std::hex << v.sensorFpgaDna << "\n";
349  std::cout << std::dec;
350  status = channelP->getDeviceModes(deviceModes);
351  if (Status_Ok != status) {
352  std::cerr << "Failed to get device modes: " << Channel::statusString(status) << std::endl;
353  goto clean_out;
354  }
355 
356  operatingMode = getOperatingMode(deviceModes);
357 
358  //
359  // Change framerate
360 
361  {
362  image::Config cfg;
363 
364  status = channelP->getImageConfig(cfg);
365  if (Status_Ok != status) {
366  std::cerr << "Failed to get image config: " << Channel::statusString(status) << std::endl;
367  goto clean_out;
368  } else {
369 
370  std::cout << "Setting resolution to: " << operatingMode.width << "x" <<
371  operatingMode.height << "x" <<
372  operatingMode.disparities << std::endl;
373 
374  cfg.setResolution(operatingMode.width, operatingMode.height);
375  cfg.setDisparities(operatingMode.disparities);
376  cfg.setFps(30.0);
377 
378  status = channelP->setImageConfig(cfg);
379  if (Status_Ok != status) {
380  std::cerr << "Failed to configure sensor: " << Channel::statusString(status) << std::endl;
381  goto clean_out;
382  }
383  }
384  }
385 
386  //
387  // Change MTU
388  if (mtu >= 1500)
389  status = channelP->setMtu(mtu);
390  else
391  status = channelP->setBestMtu();
392  if (Status_Ok != status) {
393  std::cerr << "Failed to set MTU to " << mtu << ": " << Channel::statusString(status) << std::endl;
394  goto clean_out;
395  }
396 
397  //
398  // Change trigger source
399 
400  status = channelP->setTriggerSource(Trigger_Internal);
401  if (Status_Ok != status) {
402  std::cerr << "Failed to set trigger source: " << Channel::statusString(status) << std::endl;
403  goto clean_out;
404  }
405 
406  //
407  // Get image Calibration
408 
409  status = channelP->getImageCalibration(calibration);
410  if (Status_Ok != status) {
411  std::cerr << "Failed to get image calibration: " << Channel::statusString(status) << std::endl;
412  goto clean_out;
413  }
414 
415  //
416  // Get device info
417 
418  status = channelP->getDeviceInfo(info);
419  if (Status_Ok != status) {
420  std::cerr << "Failed to get device info: " << Channel::statusString(status) << std::endl;
421  goto clean_out;
422  }
423 
424  userData.channelP = channelP;
425  userData.version = v;
426  userData.deviceInfo = info;
427  userData.calibration = calibration;
428 
429  //
430  // Add callbacks
431 
432  channelP->addIsolatedCallback(imageCallback, Source_All, &userData);
433  channelP->addIsolatedCallback(laserCallback, channelP);
434  channelP->addIsolatedCallback(ppsCallback, channelP);
435 
436  //
437  // Start streaming
438 
439  status = channelP->startStreams((operatingMode.supportedDataSources & Source_Luma_Rectified_Left) |
440  (operatingMode.supportedDataSources & Source_Lidar_Scan));
441  if (Status_Ok != status) {
442  std::cerr << "Failed to start streams: " << Channel::statusString(status) << std::endl;
443  goto clean_out;
444  }
445 
446  while(!doneG)
447  {
448  system::StatusMessage statusMessage;
449  status = channelP->getDeviceStatus(statusMessage);
450 
451  if (Status_Ok == status) {
452 
453  std::cout << "Uptime: " << statusMessage.uptime << ", " <<
454  "SystemOk: " << statusMessage.systemOk << ", " <<
455  "FPGA Temp: " << statusMessage.fpgaTemperature << ", " <<
456  "Left Imager Temp: " << statusMessage.leftImagerTemperature << ", " <<
457  "Right Imager Temp: " << statusMessage.rightImagerTemperature << ", " <<
458  "Input Voltage: " << statusMessage.inputVoltage << ", " <<
459  "Input Current: " << statusMessage.inputCurrent << ", " <<
460  "FPGA Power: " << statusMessage.fpgaPower << ", " <<
461  "Logic Power: " << statusMessage.logicPower << ", " <<
462  "Imager Power: " << statusMessage.imagerPower << std::endl;
463 
464  }
465 
466 
467  usleep(1000000);
468  }
469 
470  status = channelP->stopStreams(Source_All);
471  if (Status_Ok != status) {
472  std::cerr << "Failed to stop streams: " << Channel::statusString(status) << std::endl;
473  }
474 
475 clean_out:
476 
477  Channel::Destroy(channelP);
478  return 0;
479 }
crl::multisense::system::StatusMessage::rightImagerTemperature
float rightImagerTemperature
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3541
crl::multisense::system::StatusMessage::fpgaPower
float fpgaPower
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3551
usage
static void usage()
Definition: FirmwareUpdateUtility.cc:51
crl::multisense::system::VersionInfo::sensorFirmwareBuildDate
std::string sensorFirmwareBuildDate
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3168
crl::multisense::Status_Ok
static CRL_CONSTEXPR Status Status_Ok
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:99
crl::multisense::Channel::getDeviceInfo
virtual Status getDeviceInfo(system::DeviceInfo &info)=0
crl::multisense::system::VersionInfo::sensorHardwareVersion
uint64_t sensorHardwareVersion
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3173
crl::multisense::system::DeviceMode::supportedDataSources
DataSource supportedDataSources
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3098
crl::multisense::system::StatusMessage::inputCurrent
float inputCurrent
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3548
crl::multisense::Remote_Head_0
static CRL_CONSTEXPR RemoteHeadChannel Remote_Head_0
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:214
crl::multisense::VersionType
uint32_t VersionType
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:88
crl::multisense::system::DeviceMode::width
uint32_t width
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3094
getopt.h
getopt
int getopt(int argc, char **argv, char *opts)
Definition: getopt.c:31
crl::multisense::system::DeviceMode::disparities
int32_t disparities
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3100
crl::multisense::image::Config::setDisparities
void setDisparities(uint32_t d)
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:823
crl::multisense::Channel::Destroy
static void Destroy(Channel *instanceP)
Definition: Legacy/details/channel.cc:863
CRL_UNUSED
#define CRL_UNUSED(var)
Definition: Legacy/include/MultiSense/details/utility/Portability.hh:44
crl::multisense::system::StatusMessage::fpgaTemperature
float fpgaTemperature
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3535
crl::multisense::Remote_Head_VPB
static CRL_CONSTEXPR RemoteHeadChannel Remote_Head_VPB
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:212
crl::multisense::image::Calibration::Data::P
float P[3][4]
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:1927
crl::multisense::Channel::getImageCalibration
virtual Status getImageCalibration(image::Calibration &c)=0
crl::multisense::system::DeviceMode
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3090
crl::multisense::image::Calibration::aux
Data aux
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:1935
crl::multisense::image::Calibration::Data::M
float M[3][3]
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:1920
crl::multisense::image::Calibration::left
Data left
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:1931
crl::multisense::Channel::getSensorVersion
virtual Status getSensorVersion(VersionType &version)=0
Portability.hh
crl::multisense::Remote_Head_3
static CRL_CONSTEXPR RemoteHeadChannel Remote_Head_3
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:220
crl::multisense::Channel::startStreams
virtual Status startStreams(DataSource mask)=0
crl::multisense::Channel::setMtu
virtual Status setMtu(int32_t mtu)=0
crl::multisense::Remote_Head_1
static CRL_CONSTEXPR RemoteHeadChannel Remote_Head_1
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:216
crl::multisense::Channel::getDeviceStatus
virtual Status getDeviceStatus(system::StatusMessage &status)=0
crl::multisense::system::VersionInfo::sensorHardwareMagic
uint64_t sensorHardwareMagic
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3175
crl::multisense::image::Config
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:797
io::savePgm
bool savePgm(const std::string &fileName, uint32_t width, uint32_t height, uint32_t bitsPerPixel, const std::string &comment, const void *dataP)
Definition: Io.hh:67
crl::multisense::system::VersionInfo::apiBuildDate
std::string apiBuildDate
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3163
crl::multisense::image::Calibration::Data::D
float D[8]
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:1923
crl::multisense::image::Histogram
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:1992
crl::multisense::system::DeviceInfo::serialNumber
std::string serialNumber
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3295
writeMatrix
std::ostream & writeMatrix(std::ostream &stream, std::string const &name, uint32_t rows, uint32_t columns, T const *data)
Definition: CalibrationYaml.hh:45
crl::multisense::lidar::Header
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:2065
crl::multisense::Channel::statusString
static const char * statusString(Status status)
Definition: Legacy/details/channel.cc:876
crl::multisense::system::DeviceInfo
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3245
crl::multisense::Source_All
static CRL_CONSTEXPR DataSource Source_All
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:118
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::system::DeviceInfo::hardwareRevision
uint32_t hardwareRevision
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3297
crl::multisense::Channel::setBestMtu
virtual Status setBestMtu()=0
crl::multisense::image::Calibration
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:1910
crl::multisense::Source_Lidar_Scan
static CRL_CONSTEXPR DataSource Source_Lidar_Scan
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:137
crl::multisense::system::StatusMessage::systemOk
bool systemOk
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3505
crl::multisense::system::VersionInfo::apiVersion
VersionType apiVersion
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3165
crl::multisense::Trigger_Internal
static CRL_CONSTEXPR TriggerSource Trigger_Internal
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:275
crl::multisense::system::StatusMessage::imagerPower
float imagerPower
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3557
crl::multisense::Channel::Create
static Channel * Create(const std::string &sensorAddress)
Definition: Legacy/details/channel.cc:817
crl::multisense::system::VersionInfo::sensorFirmwareVersion
VersionType sensorFirmwareVersion
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3170
crl::multisense::Channel::getImageConfig
virtual Status getImageConfig(image::Config &c)=0
crl::multisense::Channel::getVersionInfo
virtual Status getVersionInfo(system::VersionInfo &v)=0
crl::multisense::system::DeviceMode::height
uint32_t height
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3096
crl::multisense::Remote_Head_2
static CRL_CONSTEXPR RemoteHeadChannel Remote_Head_2
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:218
crl::multisense::system::StatusMessage::leftImagerTemperature
float leftImagerTemperature
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3538
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::Status
int32_t Status
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:94
crl::multisense::system::DeviceInfo::HARDWARE_REV_MULTISENSE_KS21i
static CRL_CONSTEXPR uint32_t HARDWARE_REV_MULTISENSE_KS21i
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3268
header
std_msgs::Header const * header(const M &m)
crl::multisense::system::VersionInfo
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3159
crl::multisense::system::VersionInfo::sensorFpgaDna
uint64_t sensorFpgaDna
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3177
crl::multisense::Channel
Definition: Legacy/include/MultiSense/MultiSenseChannel.hh:69
main
int main(int argc, char **argvPP)
Definition: Legacy/SaveImageUtility/SaveImageUtility.cc:287
crl::multisense::image::Calibration::Data::R
float R[3][3]
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:1925
crl::multisense::Channel::setTriggerSource
virtual Status setTriggerSource(TriggerSource s)=0
crl::multisense
Definition: Legacy/details/channel.cc:62
crl::multisense::pps::Header
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:2560
crl::multisense::Channel::getDeviceModes
virtual Status getDeviceModes(std::vector< system::DeviceMode > &m)=0
crl::multisense::Channel::addIsolatedCallback
virtual Status addIsolatedCallback(image::Callback callback, DataSource imageSourceMask, void *userDataP=NULL)=0
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::system::StatusMessage::inputVoltage
float inputVoltage
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3544
crl::multisense::Channel::stopStreams
virtual Status stopStreams(DataSource mask)=0
crl::multisense::system::StatusMessage::uptime
double uptime
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3501
optarg
char * optarg
Definition: getopt.c:29
crl::multisense::image::Calibration::right
Data right
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:1933
Io.hh
crl::multisense::image::Config::setResolution
void setResolution(uint32_t w, uint32_t h)
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:811
crl::multisense::image::Config::setFps
void setFps(float f)
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:852
crl::multisense::RemoteHeadChannel
int16_t RemoteHeadChannel
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:210
crl::multisense::system::StatusMessage::logicPower
float logicPower
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3554
crl::multisense::system::StatusMessage
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3496
crl::multisense::image::Header
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:460
crl::multisense::Source_Luma_Rectified_Left
static CRL_CONSTEXPR DataSource Source_Luma_Rectified_Left
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:123
crl::multisense::Channel::setImageConfig
virtual Status setImageConfig(const image::Config &c)=0


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