ChangeResolution.cc
Go to the documentation of this file.
1 
36 #ifdef WIN32
37 #ifndef WIN32_LEAN_AND_MEAN
38 #define WIN32_LEAN_AND_MEAN 1
39 #endif
40 
41 #include <windows.h>
42 #include <winsock2.h>
43 #else
44 #include <unistd.h>
45 #include <netdb.h>
46 #include <sys/socket.h>
47 #include <netinet/in.h>
48 #include <arpa/inet.h>
49 #endif
50 
51 #include <stdio.h>
52 #include <stdlib.h>
53 #include <string>
54 #include <fstream>
55 #include <iostream>
56 #include <iomanip>
57 
58 #include <errno.h>
59 #include <string.h>
60 
62 #include <MultiSense/MultiSenseChannel.hh>
63 
64 #include <utility/BufferStream.hh>
65 #include <wire/Protocol.hh>
67 
68 #include <getopt/getopt.h>
69 
70 namespace { // anonymous
71 
72 void usage(const char *programNameP)
73 {
74  fprintf(stderr, "USAGE: %s [<options>]\n", programNameP);
75  fprintf(stderr, "Where <options> are:\n");
76  fprintf(stderr, "\t-a address : MultiSense IP Address (default=10.66.171.21)\n");
77  fprintf(stderr, "\t-h height : Imager width, in px (default=544)\n");
78  fprintf(stderr, "\t-w width : Imager height, in px (default=1024)\n");
79 
80  exit(-1);
81 }
82 
83 } // anonymous
84 
85 using namespace crl::multisense;
86 
87 int main(int argc,
88  char **argvPP)
89 {
90  std::string currentAddress = "10.66.171.21";
91  int32_t height = 544;
92  uint32_t width = 1024;
93 
94  //
95  // Parse args
96 
97  int c;
98 
99  while(-1 != (c = getopt(argc, argvPP, "a:h:w:")))
100  switch(c) {
101  case 'a': currentAddress = std::string(optarg); break;
102  case 'h': height = atoi(optarg); break;
103  case 'w': width = atoi(optarg); break;
104  default: usage(*argvPP); break;
105  }
106 
107  //
108  // Initialize communications.
109 
110  Channel *channelP = Channel::Create(currentAddress);
111  if (NULL == channelP) {
112  std::cerr << "Failed to establish communications with \"" << currentAddress << "\"" << std::endl;
113  return -1;
114  }
115 
116  //
117  // Query version
118 
119  Status status;
121 
122  status = channelP->getVersionInfo(v);
123  if (Status_Ok != status) {
124  std::cerr << "Failed to query sensor version: " << Channel::statusString(status) << std::endl;
125  goto clean_out;
126  }
127 
128  std::cout << "API build date : " << v.apiBuildDate << "\n";
129  std::cout << "API version : 0x" << std::hex << std::setw(4) << std::setfill('0') << v.apiVersion << "\n";
130  std::cout << "Firmware build date : " << v.sensorFirmwareBuildDate << "\n";
131  std::cout << "Firmware version : 0x" << std::hex << std::setw(4) << std::setfill('0') << v.sensorFirmwareVersion << "\n";
132  std::cout << "Hardware version : 0x" << std::hex << v.sensorHardwareVersion << "\n";
133  std::cout << "Hardware magic : 0x" << std::hex << v.sensorHardwareMagic << "\n";
134  std::cout << "FPGA DNA : 0x" << std::hex << v.sensorFpgaDna << "\n";
135  std::cout << std::dec;
136 
137 
138  //
139  // Change operating parameters
140 
141  {
142  image::Config cfg;
143 
144  status = channelP->getImageConfig(cfg);
145  if (Status_Ok != status) {
146  std::cerr << "Failed to get image config: " << Channel::statusString(status) << std::endl;
147  goto clean_out;
148  } else {
149 
150  cfg.setResolution(width, height);
151 
152  status = channelP->setImageConfig(cfg);
153  if (Status_Ok != status) {
154  std::cerr << "Failed to configure sensor: " << Channel::statusString(status) << std::endl;
155  goto clean_out;
156  }
157  }
158  }
159 
160 clean_out:
161 
162  Channel::Destroy(channelP);
163  return 0;
164 }
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::system::VersionInfo::sensorHardwareVersion
uint64_t sensorHardwareVersion
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3173
main
int main(int argc, char **argvPP)
Definition: ChangeResolution.cc:87
SysNetworkMessage.hh
getopt.h
getopt
int getopt(int argc, char **argv, char *opts)
Definition: getopt.c:31
crl::multisense::Channel::Destroy
static void Destroy(Channel *instanceP)
Definition: Legacy/details/channel.cc:863
BufferStream.hh
Portability.hh
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
crl::multisense::system::VersionInfo::apiBuildDate
std::string apiBuildDate
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3163
crl::multisense::Channel::statusString
static const char * statusString(Status status)
Definition: Legacy/details/channel.cc:876
crl::multisense::system::VersionInfo::apiVersion
VersionType apiVersion
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:3165
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
Protocol.hh
crl::multisense::Status
int32_t Status
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:94
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
crl::multisense
Definition: Legacy/details/channel.cc:62
optarg
char * optarg
Definition: getopt.c:29
crl::multisense::image::Config::setResolution
void setResolution(uint32_t w, uint32_t h)
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:811
crl::multisense::Channel::setImageConfig
virtual Status setImageConfig(const image::Config &c)=0


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