Plane: replace `is_guided_mode` with `is_guided_or_adsb_mode`

This commit is contained in:
Iampete1 2024-12-21 20:20:21 +00:00
parent 613b835d67
commit 8dc58b8e08
7 changed files with 14 additions and 10 deletions

View File

@ -484,7 +484,7 @@ int16_t Plane::calc_nav_yaw_coordinated()
bool using_rate_controller = false; bool using_rate_controller = false;
// Received an external msg that guides yaw in the last 3 seconds? // Received an external msg that guides yaw in the last 3 seconds?
if (control_mode->is_guided_mode() && if (control_mode->is_guided_or_adsb_mode() &&
plane.guided_state.last_forced_rpy_ms.z > 0 && plane.guided_state.last_forced_rpy_ms.z > 0 &&
millis() - plane.guided_state.last_forced_rpy_ms.z < 3000) { millis() - plane.guided_state.last_forced_rpy_ms.z < 3000) {
commanded_rudder = plane.guided_state.forced_rpy_cd.z; commanded_rudder = plane.guided_state.forced_rpy_cd.z;

View File

@ -1129,7 +1129,7 @@ MAV_RESULT GCS_MAVLINK_Plane::handle_command_DO_CHANGE_SPEED(const mavlink_comma
// controlled modes (e.g., MANUAL, TRAINING) // controlled modes (e.g., MANUAL, TRAINING)
// this command should be ignored since it comes in from GCS // this command should be ignored since it comes in from GCS
// or a companion computer: // or a companion computer:
if ((!plane.control_mode->is_guided_mode()) && if (!plane.control_mode->is_guided_or_adsb_mode() &&
(plane.control_mode != &plane.mode_auto)) { (plane.control_mode != &plane.mode_auto)) {
// failed // failed
return MAV_RESULT_FAILED; return MAV_RESULT_FAILED;

View File

@ -43,7 +43,7 @@ void Plane::fence_check()
case AC_FENCE_ACTION_GUIDED_THROTTLE_PASS: case AC_FENCE_ACTION_GUIDED_THROTTLE_PASS:
case AC_FENCE_ACTION_RTL_AND_LAND: case AC_FENCE_ACTION_RTL_AND_LAND:
if (plane.control_mode_reason == ModeReason::FENCE_BREACHED && if (plane.control_mode_reason == ModeReason::FENCE_BREACHED &&
control_mode->is_guided_mode()) { control_mode->is_guided_or_adsb_mode()) {
set_mode(*previous_mode, ModeReason::FENCE_RETURN_PREVIOUS_MODE); set_mode(*previous_mode, ModeReason::FENCE_RETURN_PREVIOUS_MODE);
} }
break; break;

View File

@ -306,7 +306,7 @@ bool Mode::use_throttle_limits() const
return !plane.g.throttle_passthru_stabilize; return !plane.g.throttle_passthru_stabilize;
} }
if (is_guided_mode() && plane.guided_throttle_passthru) { if (is_guided_or_adsb_mode() && plane.guided_throttle_passthru) {
// manual pass through of throttle while in GUIDED // manual pass through of throttle while in GUIDED
return false; return false;
} }
@ -338,7 +338,7 @@ bool Mode::use_battery_compensation() const
return false; return false;
} }
if (is_guided_mode() && plane.guided_throttle_passthru) { if (is_guided_or_adsb_mode() && plane.guided_throttle_passthru) {
// manual pass through of throttle while in GUIDED // manual pass through of throttle while in GUIDED
return false; return false;
} }

View File

@ -103,6 +103,9 @@ public:
virtual bool is_vtol_man_mode() const { return false; } virtual bool is_vtol_man_mode() const { return false; }
// guided or adsb mode // guided or adsb mode
virtual bool is_guided_or_adsb_mode() const { return is_guided_mode(); }
// guided mode
virtual bool is_guided_mode() const { return false; } virtual bool is_guided_mode() const { return false; }
// true if mode can have terrain following disabled by switch // true if mode can have terrain following disabled by switch
@ -617,7 +620,8 @@ public:
void navigate() override; void navigate() override;
virtual bool is_guided_mode() const override { return true; } // guided or adsb mode
virtual bool is_guided_or_adsb_mode() const override { return true; }
bool does_auto_throttle() const override { return true; } bool does_auto_throttle() const override { return true; }

View File

@ -359,7 +359,7 @@ void Plane::update_loiter(uint16_t radius)
auto_state.wp_proportion > 1) { auto_state.wp_proportion > 1) {
// we've reached the target, start the timer // we've reached the target, start the timer
loiter.start_time_ms = millis(); loiter.start_time_ms = millis();
if (control_mode->is_guided_mode()) { if (control_mode->is_guided_or_adsb_mode()) {
// starting a loiter in GUIDED means we just reached the target point // starting a loiter in GUIDED means we just reached the target point
gcs().send_mission_item_reached_message(0); gcs().send_mission_item_reached_message(0);
} }

View File

@ -1303,7 +1303,7 @@ float QuadPlane::get_pilot_input_yaw_rate_cds(void) const
if ((plane.g.stick_mixing == StickMixing::NONE) && if ((plane.g.stick_mixing == StickMixing::NONE) &&
(plane.control_mode == &plane.mode_qrtl || (plane.control_mode == &plane.mode_qrtl ||
plane.control_mode->is_guided_mode() || plane.control_mode->is_guided_or_adsb_mode() ||
in_vtol_auto())) { in_vtol_auto())) {
return 0; return 0;
} }
@ -2077,7 +2077,7 @@ bool QuadPlane::in_vtol_mode(void) const
if (plane.control_mode->is_vtol_mode()) { if (plane.control_mode->is_vtol_mode()) {
return true; return true;
} }
if (plane.control_mode->is_guided_mode() if (plane.control_mode->is_guided_or_adsb_mode()
&& plane.auto_state.vtol_loiter && && plane.auto_state.vtol_loiter &&
poscontrol.get_state() > QPOS_APPROACH) { poscontrol.get_state() > QPOS_APPROACH) {
return true; return true;
@ -2108,7 +2108,7 @@ bool QuadPlane::in_vtol_posvel_mode(void) const
#if QAUTOTUNE_ENABLED #if QAUTOTUNE_ENABLED
plane.control_mode == &plane.mode_qautotune || plane.control_mode == &plane.mode_qautotune ||
#endif #endif
(plane.control_mode->is_guided_mode() && (plane.control_mode->is_guided_or_adsb_mode() &&
plane.auto_state.vtol_loiter && plane.auto_state.vtol_loiter &&
poscontrol.get_state() > QPOS_APPROACH) || poscontrol.get_state() > QPOS_APPROACH) ||
in_vtol_auto()); in_vtol_auto());