AP_Networking: add timeout to swap the UDP Server client target
[ardupilot.git] / ArduPlane / mode_qhover.cpp
blobe9e4ede8e62c0fd6675d1ed23ca1b1084d54204f
1 #include "mode.h"
2 #include "Plane.h"
4 #if HAL_QUADPLANE_ENABLED
6 bool ModeQHover::_enter()
8 // set vertical speed and acceleration limits
9 pos_control->set_max_speed_accel_z(-quadplane.get_pilot_velocity_z_max_dn(), quadplane.pilot_speed_z_max_up*100, quadplane.pilot_accel_z*100);
10 pos_control->set_correction_speed_accel_z(-quadplane.get_pilot_velocity_z_max_dn(), quadplane.pilot_speed_z_max_up*100, quadplane.pilot_accel_z*100);
11 quadplane.set_climb_rate_cms(0);
13 quadplane.init_throttle_wait();
14 return true;
17 void ModeQHover::update()
19 plane.mode_qstabilize.update();
23 control QHOVER mode
25 void ModeQHover::run()
27 const uint32_t now = AP_HAL::millis();
28 if (quadplane.tailsitter.in_vtol_transition(now)) {
29 // Tailsitters in FW pull up phase of VTOL transition run FW controllers
30 Mode::run();
31 return;
34 if (quadplane.throttle_wait) {
35 quadplane.set_desired_spool_state(AP_Motors::DesiredSpoolState::GROUND_IDLE);
36 attitude_control->set_throttle_out(0, true, 0);
37 quadplane.relax_attitude_control();
38 pos_control->relax_z_controller(0);
39 } else {
40 plane.quadplane.assign_tilt_to_fwd_thr();
41 quadplane.hold_hover(quadplane.get_pilot_desired_climb_rate_cms());
44 // Stabilize with fixed wing surfaces
45 plane.stabilize_roll();
46 plane.stabilize_pitch();
49 #endif