reboot.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 enum Mode
7 {
13 };
14 
15 std::istream& operator>>(std::istream& in, Mode& mode)
16 {
17  std::string token;
18  in >> token;
19  if (token == "firmware")
20  mode = RebootToFirmware;
21  else if (token == "bootloader")
22  mode = RebootToBootloader;
23  else if (token == "sysoff")
24  mode = SysOff;
25  else if (token == "syson")
26  mode = SysOn;
27  else if (token == "alloff")
28  mode = AllOff;
29  else throw boost::program_options::validation_error(boost::program_options::validation_error::invalid_option_value);
30  return in;
31 }
32 
33 int main(int argc, char **argv)
34 {
35 
36  std::string uri;
37  std::string defaultUri("radio://0/80/2M/E7E7E7E7E7");
38  Mode mode = RebootToFirmware;
39 
40  namespace po = boost::program_options;
41 
42  po::options_description desc("Allowed options");
43  desc.add_options()
44  ("help", "produce help message")
45  ("uri", po::value<std::string>(&uri)->default_value(defaultUri), "unique ressource identifier")
46  ("mode", po::value<Mode>(&mode)->default_value(mode), "reboot mode {firmware,bootloader,sysoff,syson,alloff}")
47  ;
48 
49  try
50  {
51  po::variables_map vm;
52  po::store(po::parse_command_line(argc, argv, desc), vm);
53  po::notify(vm);
54 
55  if (vm.count("help")) {
56  std::cout << desc << "\n";
57  return 0;
58  }
59  }
60  catch(po::error& e)
61  {
62  std::cerr << e.what() << std::endl << std::endl;
63  std::cerr << desc << std::endl;
64  return 1;
65  }
66 
67  try
68  {
69  Crazyflie cf(uri);
70  switch (mode)
71  {
72  case RebootToFirmware:
73  cf.reboot();
74  break;
75  case RebootToBootloader:
76  cf.rebootToBootloader();
77  break;
78  case SysOff:
79  cf.sysoff();
80  break;
81  case SysOn:
82  cf.syson();
83  break;
84  case AllOff:
85  cf.alloff();
86  break;
87  }
88 
89  return 0;
90  }
91  catch(std::exception& e)
92  {
93  std::cerr << e.what() << std::endl;
94  return 1;
95  }
96 }
uint8_t error
Definition: reboot.cpp:11
Mode
Definition: flash.cpp:20
int main(int argc, char **argv)
Definition: reboot.cpp:33
void reboot()
Definition: Crazyflie.cpp:287
void syson()
Definition: Crazyflie.cpp:353
void sysoff()
Definition: Crazyflie.cpp:337
std::istream & operator>>(std::istream &in, Mode &mode)
Definition: reboot.cpp:15
void alloff()
Definition: Crazyflie.cpp:345
uint64_t rebootToBootloader()
Definition: Crazyflie.cpp:298


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