mirror of https://github.com/ArduPilot/ardupilot
Plane: use is_armed_and_safety_off()
this no longer sets soft_armed false when safety is on, and instead uses is_armed_and_safety_off() when appropriate
This commit is contained in:
parent
bddd716cf9
commit
a57e6455ab
|
@ -271,7 +271,7 @@ void AP_Arming_Plane::change_arm_state(void)
|
||||||
{
|
{
|
||||||
update_soft_armed();
|
update_soft_armed();
|
||||||
#if HAL_QUADPLANE_ENABLED
|
#if HAL_QUADPLANE_ENABLED
|
||||||
plane.quadplane.set_armed(hal.util->get_soft_armed());
|
plane.quadplane.set_armed(is_armed_and_safety_off());
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -372,7 +372,6 @@ void AP_Arming_Plane::update_soft_armed()
|
||||||
_armed = true;
|
_armed = true;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
_armed = _armed && hal.util->safety_switch_state() != AP_HAL::Util::SAFETY_DISARMED;
|
|
||||||
|
|
||||||
hal.util->set_soft_armed(_armed);
|
hal.util->set_soft_armed(_armed);
|
||||||
AP::logger().set_vehicle_armed(hal.util->get_soft_armed());
|
AP::logger().set_vehicle_armed(hal.util->get_soft_armed());
|
||||||
|
|
|
@ -9,7 +9,7 @@ float Plane::calc_speed_scaler(void)
|
||||||
{
|
{
|
||||||
float aspeed, speed_scaler;
|
float aspeed, speed_scaler;
|
||||||
if (ahrs.airspeed_estimate(aspeed)) {
|
if (ahrs.airspeed_estimate(aspeed)) {
|
||||||
if (aspeed > auto_state.highest_airspeed && hal.util->get_soft_armed()) {
|
if (aspeed > auto_state.highest_airspeed && arming.is_armed_and_safety_off()) {
|
||||||
auto_state.highest_airspeed = aspeed;
|
auto_state.highest_airspeed = aspeed;
|
||||||
}
|
}
|
||||||
// ensure we have scaling over the full configured airspeed
|
// ensure we have scaling over the full configured airspeed
|
||||||
|
@ -24,7 +24,7 @@ float Plane::calc_speed_scaler(void)
|
||||||
speed_scaler = constrain_float(speed_scaler, scale_min, scale_max);
|
speed_scaler = constrain_float(speed_scaler, scale_min, scale_max);
|
||||||
|
|
||||||
#if HAL_QUADPLANE_ENABLED
|
#if HAL_QUADPLANE_ENABLED
|
||||||
if (quadplane.in_vtol_mode() && hal.util->get_soft_armed()) {
|
if (quadplane.in_vtol_mode() && arming.is_armed_and_safety_off()) {
|
||||||
// when in VTOL modes limit surface movement at low speed to prevent instability
|
// when in VTOL modes limit surface movement at low speed to prevent instability
|
||||||
float threshold = airspeed_min * 0.5;
|
float threshold = airspeed_min * 0.5;
|
||||||
if (aspeed < threshold) {
|
if (aspeed < threshold) {
|
||||||
|
@ -39,7 +39,7 @@ float Plane::calc_speed_scaler(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
} else if (hal.util->get_soft_armed()) {
|
} else if (arming.is_armed_and_safety_off()) {
|
||||||
// scale assumed surface movement using throttle output
|
// scale assumed surface movement using throttle output
|
||||||
float throttle_out = MAX(SRV_Channels::get_output_scaled(SRV_Channel::k_throttle), 1);
|
float throttle_out = MAX(SRV_Channels::get_output_scaled(SRV_Channel::k_throttle), 1);
|
||||||
speed_scaler = sqrtf(THROTTLE_CRUISE / throttle_out);
|
speed_scaler = sqrtf(THROTTLE_CRUISE / throttle_out);
|
||||||
|
|
|
@ -579,7 +579,7 @@ bool Plane::verify_takeoff()
|
||||||
if (takeoff_state.start_time_ms != 0 && g2.takeoff_timeout > 0) {
|
if (takeoff_state.start_time_ms != 0 && g2.takeoff_timeout > 0) {
|
||||||
const float ground_speed = gps.ground_speed();
|
const float ground_speed = gps.ground_speed();
|
||||||
const float takeoff_min_ground_speed = 4;
|
const float takeoff_min_ground_speed = 4;
|
||||||
if (!hal.util->get_soft_armed()) {
|
if (!arming.is_armed_and_safety_off()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (ground_speed >= takeoff_min_ground_speed) {
|
if (ground_speed >= takeoff_min_ground_speed) {
|
||||||
|
@ -872,7 +872,7 @@ bool Plane::verify_altitude_wait(const AP_Mission::Mission_Command &cmd)
|
||||||
// verify_nav_delay - check if we have waited long enough
|
// verify_nav_delay - check if we have waited long enough
|
||||||
bool Plane::verify_nav_delay(const AP_Mission::Mission_Command& cmd)
|
bool Plane::verify_nav_delay(const AP_Mission::Mission_Command& cmd)
|
||||||
{
|
{
|
||||||
if (hal.util->get_soft_armed()) {
|
if (arming.is_armed_and_safety_off()) {
|
||||||
// don't delay while armed, we need a nav controller running
|
// don't delay while armed, we need a nav controller running
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,7 +68,7 @@ void Plane::failsafe_check(void)
|
||||||
float throttle = get_throttle_input(true);
|
float throttle = get_throttle_input(true);
|
||||||
float rudder = rudder_in_expo(false);
|
float rudder = rudder_in_expo(false);
|
||||||
|
|
||||||
if (!hal.util->get_soft_armed()) {
|
if (!arming.is_armed_and_safety_off()) {
|
||||||
throttle = 0;
|
throttle = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -176,7 +176,7 @@ void Plane::update_is_flying_5Hz(void)
|
||||||
set_likely_flying(new_is_flying);
|
set_likely_flying(new_is_flying);
|
||||||
|
|
||||||
// conservative ground mode value for rate D suppression
|
// conservative ground mode value for rate D suppression
|
||||||
ground_mode = !is_flying() && !hal.util->get_soft_armed();
|
ground_mode = !is_flying() && !arming.is_armed_and_safety_off();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -186,7 +186,7 @@ void Plane::update_is_flying_5Hz(void)
|
||||||
*/
|
*/
|
||||||
bool Plane::is_flying(void)
|
bool Plane::is_flying(void)
|
||||||
{
|
{
|
||||||
if (hal.util->get_soft_armed()) {
|
if (arming.is_armed_and_safety_off()) {
|
||||||
#if HAL_QUADPLANE_ENABLED
|
#if HAL_QUADPLANE_ENABLED
|
||||||
if (quadplane.is_flying_vtol()) {
|
if (quadplane.is_flying_vtol()) {
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -1410,7 +1410,7 @@ float QuadPlane::desired_auto_yaw_rate_cds(void) const
|
||||||
*/
|
*/
|
||||||
bool QuadPlane::should_assist(float aspeed, bool have_airspeed)
|
bool QuadPlane::should_assist(float aspeed, bool have_airspeed)
|
||||||
{
|
{
|
||||||
if (!hal.util->get_soft_armed() || (q_assist_state == Q_ASSIST_STATE_ENUM::Q_ASSIST_DISABLED) || tailsitter.is_control_surface_tailsitter()) {
|
if (!plane.arming.is_armed_and_safety_off() || (q_assist_state == Q_ASSIST_STATE_ENUM::Q_ASSIST_DISABLED) || tailsitter.is_control_surface_tailsitter()) {
|
||||||
// disarmed or disabled by aux switch or because a control surface tailsitter
|
// disarmed or disabled by aux switch or because a control surface tailsitter
|
||||||
in_angle_assist = false;
|
in_angle_assist = false;
|
||||||
angle_error_start_ms = 0;
|
angle_error_start_ms = 0;
|
||||||
|
@ -1524,7 +1524,7 @@ void SLT_Transition::update()
|
||||||
{
|
{
|
||||||
const uint32_t now = millis();
|
const uint32_t now = millis();
|
||||||
|
|
||||||
if (!hal.util->get_soft_armed()) {
|
if (!plane.arming.is_armed_and_safety_off()) {
|
||||||
// reset the failure timer if we are disarmed
|
// reset the failure timer if we are disarmed
|
||||||
transition_start_ms = now;
|
transition_start_ms = now;
|
||||||
}
|
}
|
||||||
|
@ -1780,7 +1780,7 @@ void QuadPlane::update(void)
|
||||||
attitude_control->reset_rate_controller_I_terms();
|
attitude_control->reset_rate_controller_I_terms();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!hal.util->get_soft_armed()) {
|
if (!plane.arming.is_armed_and_safety_off()) {
|
||||||
/*
|
/*
|
||||||
make sure we don't have any residual control from previous flight stages
|
make sure we don't have any residual control from previous flight stages
|
||||||
*/
|
*/
|
||||||
|
@ -1991,11 +1991,11 @@ void QuadPlane::motors_output(bool run_rate_controller)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if AP_ADVANCEDFAILSAFE_ENABLED
|
#if AP_ADVANCEDFAILSAFE_ENABLED
|
||||||
if (!hal.util->get_soft_armed() ||
|
if (!plane.arming.is_armed_and_safety_off() ||
|
||||||
(plane.afs.should_crash_vehicle() && !plane.afs.terminating_vehicle_via_landing()) ||
|
(plane.afs.should_crash_vehicle() && !plane.afs.terminating_vehicle_via_landing()) ||
|
||||||
SRV_Channels::get_emergency_stop()) {
|
SRV_Channels::get_emergency_stop()) {
|
||||||
#else
|
#else
|
||||||
if (!hal.util->get_soft_armed() || SRV_Channels::get_emergency_stop()) {
|
if (!plane.arming.is_armed_and_safety_off() || SRV_Channels::get_emergency_stop()) {
|
||||||
#endif
|
#endif
|
||||||
set_desired_spool_state(AP_Motors::DesiredSpoolState::SHUT_DOWN);
|
set_desired_spool_state(AP_Motors::DesiredSpoolState::SHUT_DOWN);
|
||||||
motors->output();
|
motors->output();
|
||||||
|
@ -2337,7 +2337,7 @@ void QuadPlane::vtol_position_controller(void)
|
||||||
// target speed when we reach position2 threshold
|
// target speed when we reach position2 threshold
|
||||||
const float position2_target_speed = 3.0;
|
const float position2_target_speed = 3.0;
|
||||||
|
|
||||||
if (hal.util->get_soft_armed()) {
|
if (plane.arming.is_armed_and_safety_off()) {
|
||||||
poscontrol.last_run_ms = now_ms;
|
poscontrol.last_run_ms = now_ms;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2926,7 +2926,7 @@ void QuadPlane::setup_target_position(void)
|
||||||
*/
|
*/
|
||||||
void QuadPlane::takeoff_controller(void)
|
void QuadPlane::takeoff_controller(void)
|
||||||
{
|
{
|
||||||
if (!hal.util->get_soft_armed()) {
|
if (!plane.arming.is_armed_and_safety_off()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3239,7 +3239,7 @@ bool QuadPlane::verify_vtol_takeoff(const AP_Mission::Mission_Command &cmd)
|
||||||
const uint32_t now = millis();
|
const uint32_t now = millis();
|
||||||
|
|
||||||
// reset takeoff if we aren't armed
|
// reset takeoff if we aren't armed
|
||||||
if (!hal.util->get_soft_armed()) {
|
if (!plane.arming.is_armed_and_safety_off()) {
|
||||||
do_vtol_takeoff(cmd);
|
do_vtol_takeoff(cmd);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -3748,7 +3748,7 @@ bool QuadPlane::do_user_takeoff(float takeoff_altitude)
|
||||||
gcs().send_text(MAV_SEVERITY_INFO, "User Takeoff only in GUIDED mode");
|
gcs().send_text(MAV_SEVERITY_INFO, "User Takeoff only in GUIDED mode");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!hal.util->get_soft_armed()) {
|
if (!plane.arming.is_armed_and_safety_off()) {
|
||||||
gcs().send_text(MAV_SEVERITY_INFO, "Must be armed for takeoff");
|
gcs().send_text(MAV_SEVERITY_INFO, "Must be armed for takeoff");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -541,7 +541,7 @@ void Plane::set_servos_controlled(void)
|
||||||
SRV_Channels::set_output_scaled(SRV_Channel::k_throttle,
|
SRV_Channels::set_output_scaled(SRV_Channel::k_throttle,
|
||||||
constrain_float(SRV_Channels::get_output_scaled(SRV_Channel::k_throttle), min_throttle, max_throttle));
|
constrain_float(SRV_Channels::get_output_scaled(SRV_Channel::k_throttle), min_throttle, max_throttle));
|
||||||
|
|
||||||
if (!hal.util->get_soft_armed()) {
|
if (!arming.is_armed_and_safety_off()) {
|
||||||
if (arming.arming_required() == AP_Arming::Required::YES_ZERO_PWM) {
|
if (arming.arming_required() == AP_Arming::Required::YES_ZERO_PWM) {
|
||||||
SRV_Channels::set_output_limit(SRV_Channel::k_throttle, SRV_Channel::Limit::ZERO_PWM);
|
SRV_Channels::set_output_limit(SRV_Channel::k_throttle, SRV_Channel::Limit::ZERO_PWM);
|
||||||
SRV_Channels::set_output_limit(SRV_Channel::k_throttleLeft, SRV_Channel::Limit::ZERO_PWM);
|
SRV_Channels::set_output_limit(SRV_Channel::k_throttleLeft, SRV_Channel::Limit::ZERO_PWM);
|
||||||
|
@ -697,7 +697,7 @@ void Plane::set_servos_flaps(void)
|
||||||
*/
|
*/
|
||||||
void Plane::set_landing_gear(void)
|
void Plane::set_landing_gear(void)
|
||||||
{
|
{
|
||||||
if (control_mode == &mode_auto && hal.util->get_soft_armed() && is_flying() && gear.last_flight_stage != flight_stage) {
|
if (control_mode == &mode_auto && arming.is_armed_and_safety_off() && is_flying() && gear.last_flight_stage != flight_stage) {
|
||||||
switch (flight_stage) {
|
switch (flight_stage) {
|
||||||
case AP_FixedWing::FlightStage::LAND:
|
case AP_FixedWing::FlightStage::LAND:
|
||||||
g2.landing_gear.deploy_for_landing();
|
g2.landing_gear.deploy_for_landing();
|
||||||
|
@ -743,7 +743,7 @@ void Plane::servos_twin_engine_mix(void)
|
||||||
throttle_left = constrain_float(throttle + 50 * rudder_dt, 0, 100);
|
throttle_left = constrain_float(throttle + 50 * rudder_dt, 0, 100);
|
||||||
throttle_right = constrain_float(throttle - 50 * rudder_dt, 0, 100);
|
throttle_right = constrain_float(throttle - 50 * rudder_dt, 0, 100);
|
||||||
}
|
}
|
||||||
if (!hal.util->get_soft_armed()) {
|
if (!arming.is_armed_and_safety_off()) {
|
||||||
if (arming.arming_required() == AP_Arming::Required::YES_ZERO_PWM) {
|
if (arming.arming_required() == AP_Arming::Required::YES_ZERO_PWM) {
|
||||||
SRV_Channels::set_output_limit(SRV_Channel::k_throttleLeft, SRV_Channel::Limit::ZERO_PWM);
|
SRV_Channels::set_output_limit(SRV_Channel::k_throttleLeft, SRV_Channel::Limit::ZERO_PWM);
|
||||||
SRV_Channels::set_output_limit(SRV_Channel::k_throttleRight, SRV_Channel::Limit::ZERO_PWM);
|
SRV_Channels::set_output_limit(SRV_Channel::k_throttleRight, SRV_Channel::Limit::ZERO_PWM);
|
||||||
|
@ -1033,7 +1033,7 @@ void Plane::servos_auto_trim(void)
|
||||||
if (!control_mode->does_auto_throttle() && control_mode != &mode_fbwa) {
|
if (!control_mode->does_auto_throttle() && control_mode != &mode_fbwa) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!hal.util->get_soft_armed()) {
|
if (!arming.is_armed_and_safety_off()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!is_flying()) {
|
if (!is_flying()) {
|
||||||
|
|
|
@ -296,7 +296,7 @@ void Tailsitter::output(void)
|
||||||
// handle forward flight modes and transition to VTOL modes
|
// handle forward flight modes and transition to VTOL modes
|
||||||
if (!active() || in_vtol_transition()) {
|
if (!active() || in_vtol_transition()) {
|
||||||
// get FW controller throttle demand and mask of motors enabled during forward flight
|
// get FW controller throttle demand and mask of motors enabled during forward flight
|
||||||
if (hal.util->get_soft_armed() && in_vtol_transition() && !quadplane.throttle_wait) {
|
if (plane.arming.is_armed_and_safety_off() && in_vtol_transition() && !quadplane.throttle_wait) {
|
||||||
/*
|
/*
|
||||||
during transitions to vtol mode set the throttle to hover thrust, center the rudder
|
during transitions to vtol mode set the throttle to hover thrust, center the rudder
|
||||||
*/
|
*/
|
||||||
|
@ -417,7 +417,7 @@ void Tailsitter::output(void)
|
||||||
SRV_Channels::set_output_scaled(SRV_Channel::k_elevator, (motors->get_pitch()+motors->get_pitch_ff())*SERVO_MAX*VTOL_pitch_scale);
|
SRV_Channels::set_output_scaled(SRV_Channel::k_elevator, (motors->get_pitch()+motors->get_pitch_ff())*SERVO_MAX*VTOL_pitch_scale);
|
||||||
SRV_Channels::set_output_scaled(SRV_Channel::k_rudder, (motors->get_roll()+motors->get_roll_ff())*SERVO_MAX*VTOL_roll_scale);
|
SRV_Channels::set_output_scaled(SRV_Channel::k_rudder, (motors->get_roll()+motors->get_roll_ff())*SERVO_MAX*VTOL_roll_scale);
|
||||||
|
|
||||||
if (hal.util->get_soft_armed()) {
|
if (plane.arming.is_armed_and_safety_off()) {
|
||||||
// scale surfaces for throttle
|
// scale surfaces for throttle
|
||||||
speed_scaling();
|
speed_scaling();
|
||||||
} else if (tailsitter_motors != nullptr) {
|
} else if (tailsitter_motors != nullptr) {
|
||||||
|
@ -500,7 +500,7 @@ void Tailsitter::output(void)
|
||||||
*/
|
*/
|
||||||
bool Tailsitter::transition_fw_complete(void)
|
bool Tailsitter::transition_fw_complete(void)
|
||||||
{
|
{
|
||||||
if (!hal.util->get_soft_armed()) {
|
if (!plane.arming.is_armed_and_safety_off()) {
|
||||||
// instant trainsition when disarmed, no message
|
// instant trainsition when disarmed, no message
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -526,7 +526,7 @@ bool Tailsitter::transition_fw_complete(void)
|
||||||
*/
|
*/
|
||||||
bool Tailsitter::transition_vtol_complete(void) const
|
bool Tailsitter::transition_vtol_complete(void) const
|
||||||
{
|
{
|
||||||
if (!hal.util->get_soft_armed()) {
|
if (!plane.arming.is_armed_and_safety_off()) {
|
||||||
// instant trainsition when disarmed, no message
|
// instant trainsition when disarmed, no message
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -799,7 +799,7 @@ void Tailsitter_Transition::update()
|
||||||
case TRANSITION_ANGLE_WAIT_FW: {
|
case TRANSITION_ANGLE_WAIT_FW: {
|
||||||
if (tailsitter.transition_fw_complete()) {
|
if (tailsitter.transition_fw_complete()) {
|
||||||
transition_state = TRANSITION_DONE;
|
transition_state = TRANSITION_DONE;
|
||||||
if (hal.util->get_soft_armed()) {
|
if (plane.arming.is_armed_and_safety_off()) {
|
||||||
fw_limit_start_ms = now;
|
fw_limit_start_ms = now;
|
||||||
fw_limit_initial_pitch = constrain_float(quadplane.ahrs.pitch_sensor,-8500,8500);
|
fw_limit_initial_pitch = constrain_float(quadplane.ahrs.pitch_sensor,-8500,8500);
|
||||||
plane.nav_pitch_cd = fw_limit_initial_pitch;
|
plane.nav_pitch_cd = fw_limit_initial_pitch;
|
||||||
|
@ -856,7 +856,7 @@ void Tailsitter_Transition::VTOL_update()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// transition to VTOL complete, if armed set vtol rate limit starting point
|
// transition to VTOL complete, if armed set vtol rate limit starting point
|
||||||
if (hal.util->get_soft_armed()) {
|
if (plane.arming.is_armed_and_safety_off()) {
|
||||||
vtol_limit_start_ms = now;
|
vtol_limit_start_ms = now;
|
||||||
vtol_limit_initial_pitch = quadplane.ahrs_view->pitch_sensor;
|
vtol_limit_initial_pitch = quadplane.ahrs_view->pitch_sensor;
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@ bool Plane::auto_takeoff_check(void)
|
||||||
uint16_t wait_time_ms = MIN(uint16_t(g.takeoff_throttle_delay)*100,12700);
|
uint16_t wait_time_ms = MIN(uint16_t(g.takeoff_throttle_delay)*100,12700);
|
||||||
|
|
||||||
// reset all takeoff state if disarmed
|
// reset all takeoff state if disarmed
|
||||||
if (!hal.util->get_soft_armed()) {
|
if (!arming.is_armed_and_safety_off()) {
|
||||||
memset(&takeoff_state, 0, sizeof(takeoff_state));
|
memset(&takeoff_state, 0, sizeof(takeoff_state));
|
||||||
auto_state.baro_takeoff_alt = barometer.get_altitude();
|
auto_state.baro_takeoff_alt = barometer.get_altitude();
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -167,7 +167,7 @@ float Tiltrotor::tilt_max_change(bool up, bool in_flap_range) const
|
||||||
if (plane.control_mode == &plane.mode_manual) {
|
if (plane.control_mode == &plane.mode_manual) {
|
||||||
fast_tilt = true;
|
fast_tilt = true;
|
||||||
}
|
}
|
||||||
if (hal.util->get_soft_armed() && !quadplane.in_vtol_mode() && !quadplane.assisted_flight) {
|
if (plane.arming.is_armed_and_safety_off() && !quadplane.in_vtol_mode() && !quadplane.assisted_flight) {
|
||||||
fast_tilt = true;
|
fast_tilt = true;
|
||||||
}
|
}
|
||||||
if (fast_tilt) {
|
if (fast_tilt) {
|
||||||
|
@ -217,12 +217,12 @@ void Tiltrotor::continuous_update(void)
|
||||||
// the maximum rate of throttle change
|
// the maximum rate of throttle change
|
||||||
float max_change;
|
float max_change;
|
||||||
|
|
||||||
if (!quadplane.in_vtol_mode() && (!hal.util->get_soft_armed() || !quadplane.assisted_flight)) {
|
if (!quadplane.in_vtol_mode() && (!plane.arming.is_armed_and_safety_off() || !quadplane.assisted_flight)) {
|
||||||
// we are in pure fixed wing mode. Move the tiltable motors all the way forward and run them as
|
// we are in pure fixed wing mode. Move the tiltable motors all the way forward and run them as
|
||||||
// a forward motor
|
// a forward motor
|
||||||
|
|
||||||
// option set then if disarmed move to VTOL position to prevent ground strikes, allow tilt forward in manual mode for testing
|
// option set then if disarmed move to VTOL position to prevent ground strikes, allow tilt forward in manual mode for testing
|
||||||
const bool disarmed_tilt_up = !hal.util->get_soft_armed() && (plane.control_mode != &plane.mode_manual) && quadplane.option_is_set(QuadPlane::OPTION::DISARMED_TILT_UP);
|
const bool disarmed_tilt_up = !plane.arming.is_armed_and_safety_off() && (plane.control_mode != &plane.mode_manual) && quadplane.option_is_set(QuadPlane::OPTION::DISARMED_TILT_UP);
|
||||||
slew(disarmed_tilt_up ? 0.0 : get_forward_flight_tilt());
|
slew(disarmed_tilt_up ? 0.0 : get_forward_flight_tilt());
|
||||||
|
|
||||||
max_change = tilt_max_change(false);
|
max_change = tilt_max_change(false);
|
||||||
|
@ -235,7 +235,7 @@ void Tiltrotor::continuous_update(void)
|
||||||
} else {
|
} else {
|
||||||
current_throttle = new_throttle;
|
current_throttle = new_throttle;
|
||||||
}
|
}
|
||||||
if (!hal.util->get_soft_armed()) {
|
if (!plane.arming.is_armed_and_safety_off()) {
|
||||||
current_throttle = 0;
|
current_throttle = 0;
|
||||||
} else {
|
} else {
|
||||||
// prevent motor shutdown
|
// prevent motor shutdown
|
||||||
|
@ -512,7 +512,7 @@ void Tiltrotor::vectoring(void)
|
||||||
// Wait TILT_DELAY_MS after disarming to allow props to spin down first.
|
// Wait TILT_DELAY_MS after disarming to allow props to spin down first.
|
||||||
constexpr uint32_t TILT_DELAY_MS = 3000;
|
constexpr uint32_t TILT_DELAY_MS = 3000;
|
||||||
uint32_t now = AP_HAL::millis();
|
uint32_t now = AP_HAL::millis();
|
||||||
if (!hal.util->get_soft_armed() && plane.quadplane.option_is_set(QuadPlane::OPTION::DISARMED_TILT)) {
|
if (!plane.arming.is_armed_and_safety_off() && plane.quadplane.option_is_set(QuadPlane::OPTION::DISARMED_TILT)) {
|
||||||
// this test is subject to wrapping at ~49 days, but the consequences are insignificant
|
// this test is subject to wrapping at ~49 days, but the consequences are insignificant
|
||||||
if ((now - hal.util->get_last_armed_change()) > TILT_DELAY_MS) {
|
if ((now - hal.util->get_last_armed_change()) > TILT_DELAY_MS) {
|
||||||
if (quadplane.in_vtol_mode()) {
|
if (quadplane.in_vtol_mode()) {
|
||||||
|
|
Loading…
Reference in New Issue