setParam.cpp
Go to the documentation of this file.
1 #include <iostream>
2 
3 #include <boost/program_options.hpp>
4 #include <crazyflie_cpp/Crazyflie.h>
5 
6 int main(int argc, char **argv)
7 {
8 
9  std::string uri;
10  std::string defaultUri("radio://0/80/2M/E7E7E7E7E7");
11  std::string parameter;
12 
13  namespace po = boost::program_options;
14 
15  po::options_description desc("Allowed options");
16  desc.add_options()
17  ("help", "produce help message")
18  ("parameter", po::value<std::string>(&parameter)->required(), "parameter name")
19  ("valUint8", po::value<int>(), "value (uint8)")
20  ("valInt8", po::value<int>(), "value (int8)")
21  ("valUint16", po::value<uint16_t>(), "value (uint16)")
22  ("valInt16", po::value<int16_t>(), "value (int16)")
23  ("valUint32", po::value<uint32_t>(), "value (uint32)")
24  ("valInt32", po::value<int32_t>(), "value (int32)")
25  ("valFloat", po::value<float>(), "value (float)")
26  ("uri", po::value<std::string>(&uri)->default_value(defaultUri), "unique ressource identifier")
27  ;
28 
29  po::variables_map vm;
30  try
31  {
32  po::store(po::parse_command_line(argc, argv, desc), vm);
33  po::notify(vm);
34 
35  if (vm.count("help")) {
36  std::cout << desc << "\n";
37  return 0;
38  }
39  }
40  catch(po::error& e)
41  {
42  std::cerr << e.what() << std::endl << std::endl;
43  std::cerr << desc << std::endl;
44  return 1;
45  }
46 
47  try
48  {
49  Crazyflie cf(uri);
50 
51  auto pos = parameter.find(".");
52  const char* group = parameter.substr(0, pos).c_str();
53  const char* name = parameter.substr(pos+1).c_str();
54 
55  if (vm.count("valUint8")) {
56  cf.setParamByName<uint8_t>(group, name, (uint8_t)vm["valUint8"].as<int>());
57  } else if (vm.count("valInt8")) {
58  cf.setParamByName<int8_t>(group, name, (int8_t)vm["valInt8"].as<int>());
59  } else if (vm.count("valUint16")) {
60  cf.setParamByName<uint16_t>(group, name, vm["valUint16"].as<uint16_t>());
61  } else if (vm.count("valInt16")) {
62  cf.setParamByName<int16_t>(group, name, vm["valInt16"].as<int16_t>());
63  } else if (vm.count("valUint32")) {
64  cf.setParamByName<uint32_t>(group, name, vm["valUint32"].as<uint32_t>());
65  } else if (vm.count("valInt32")) {
66  cf.setParamByName<int32_t>(group, name, vm["valInt32"].as<int32_t>());
67  } else if (vm.count("valFloat")) {
68  cf.setParamByName<float>(group, name, vm["valFloat"].as<float>());
69  } else {
70  std::cerr << "Required to use one of the --val* arguments!" << std::endl << std::endl;
71  std::cerr << desc << std::endl;
72  return 1;
73  }
74 
75  return 0;
76  }
77  catch(std::exception& e)
78  {
79  std::cerr << e.what() << std::endl;
80  return 1;
81  }
82 }
uint8_t error
int main(int argc, char **argv)
Definition: setParam.cpp:6
void setParamByName(const char *group, const char *name, const T &value)
uint8_t group
Definition: crtp.h:27
char name[30]
Definition: crtp.h:1093


crazyflie_tools
Author(s): Wolfgang Hoenig
autogenerated on Mon Sep 28 2020 03:40:15