void runJoystickControlled(Drone& drone, const string& joystickDevice) { Joystick js(drone.io_service(), joystickDevice); boost::asio::signal_set signals(drone.io_service()); signals.add(SIGINT); signals.add(SIGTERM); #ifdef SIGQUIT signals.add(SIGQUIT); #endif JoystickDroneHandler joyHandler(drone, js); signals.async_wait(boost::bind(&JoystickDroneHandler::stop, &joyHandler)); drone.io_service().run(); }
void runKeyboardControlled(Drone& drone) { show_control_tips(); Keyboard keyboard(drone.io_service()); boost::asio::signal_set signals(drone.io_service()); signals.add(SIGINT); signals.add(SIGTERM); #ifdef SIGQUIT signals.add(SIGQUIT); #endif KeybaordDroneHandler handler(drone, keyboard); keyboard.start(); signals.async_wait(boost::bind(&KeybaordDroneHandler::stop, &handler)); drone.io_service().run(); }
JoystickDroneHandler(Drone& drone, Joystick& joystick) : drone_(drone), joystick_(joystick), deadline_(drone.io_service()), heigthAdj_(0.0), yawAdj_(0.0) { joystick.setButtonHandler(boost::bind(&JoystickDroneHandler::handleButton, this, _1, _2)); joystick.setAxisHandler(boost::bind(&JoystickDroneHandler::handleAxis, this, _1, _2)); joystick.start(); deadline_.async_wait(boost::bind(&JoystickDroneHandler::checkDeadLine, this)); deadline_.expires_from_now(boost::posix_time::milliseconds(50)); }