Change RC override to affect offboard mode as well

-Defines COM_RC_OVERRIDE as a bitmask
-Changes RC override to affect auto modes, offboard mode, or both
This commit is contained in:
Tal Zaitsev
2019-11-27 18:30:09 -05:00
committed by Matthias Grob
parent fee7f69d63
commit d54ab5f6eb
3 changed files with 27 additions and 11 deletions
+12 -7
View File
@@ -1743,15 +1743,20 @@ Commander::run()
// but only if not in a low battery handling action
const bool low_battery_reaction = _battery_warning >= battery_status_s::BATTERY_WARNING_CRITICAL;
const bool is_rotary_wing = status.vehicle_type == vehicle_status_s::VEHICLE_TYPE_ROTARY_WING;
const bool in_auto_mode =
_internal_state.main_state == commander_state_s::MAIN_STATE_AUTO_LAND ||
_internal_state.main_state == commander_state_s::MAIN_STATE_AUTO_RTL ||
_internal_state.main_state == commander_state_s::MAIN_STATE_AUTO_MISSION ||
_internal_state.main_state == commander_state_s::MAIN_STATE_AUTO_LOITER;
if (_param_rc_override.get() && is_rotary_wing && !low_battery_reaction
&& !_geofence_warning_action_on && in_auto_mode) {
const bool override_auto_mode =
(_param_rc_override.get() & OVERRIDE_AUTO_MODE_BIT) &&
(_internal_state.main_state == commander_state_s::MAIN_STATE_AUTO_LAND ||
_internal_state.main_state == commander_state_s::MAIN_STATE_AUTO_RTL ||
_internal_state.main_state == commander_state_s::MAIN_STATE_AUTO_MISSION ||
_internal_state.main_state == commander_state_s::MAIN_STATE_AUTO_LOITER);
const bool override_offboard_mode =
(_param_rc_override.get() & OVERRIDE_OFFBOARD_MODE_BIT) &&
_internal_state.main_state == commander_state_s::MAIN_STATE_OFFBOARD;
if ((override_auto_mode || override_offboard_mode) && is_rotary_wing
&& !low_battery_reaction && !_geofence_warning_action_on) {
// transition to previous state if sticks are touched
if ((_last_sp_man.timestamp != _sp_man.timestamp) &&
((fabsf(_sp_man.x - _last_sp_man.x) > _min_stick_change) ||