Browse Source

Copter: override do_aux_function_armdisarm method to set armed_with_switch

As well as removing the code duplication, this only sets the flag if
arming was actually successful.  armed-with-switch is used when setting
various state, and it isn't entirely clear that we only use it when
armed.  This would seem to be a safer option.
c415-sdk
Peter Barker 5 years ago committed by Peter Barker
parent
commit
eb452478ac
  1. 27
      ArduCopter/RC_Channel.cpp
  2. 1
      ArduCopter/RC_Channel.h

27
ArduCopter/RC_Channel.cpp

@ -142,6 +142,16 @@ void RC_Channel_Copter::do_aux_function_change_mode(const Mode::Number mode,
} }
} }
void RC_Channel_Copter::do_aux_function_armdisarm(const aux_switch_pos_t ch_flag)
{
RC_Channel::do_aux_function_armdisarm(ch_flag);
if (copter.arming.is_armed()) {
// remember that we are using an arming switch, for use by
// set_throttle_zero_flag
copter.ap.armed_with_switch = true;
}
}
// do_aux_function - implement the function invoked by auxiliary switches // do_aux_function - implement the function invoked by auxiliary switches
void RC_Channel_Copter::do_aux_function(const aux_func_t ch_option, const aux_switch_pos_t ch_flag) void RC_Channel_Copter::do_aux_function(const aux_func_t ch_option, const aux_switch_pos_t ch_flag)
{ {
@ -380,23 +390,6 @@ void RC_Channel_Copter::do_aux_function(const aux_func_t ch_option, const aux_sw
#endif #endif
break; break;
case AUX_FUNC::ARMDISARM:
// arm or disarm the vehicle
switch (ch_flag) {
case HIGH:
copter.arming.arm(AP_Arming::Method::AUXSWITCH);
// remember that we are using an arming switch, for use by set_throttle_zero_flag
copter.ap.armed_with_switch = true;
break;
case MIDDLE:
// nothing
break;
case LOW:
copter.arming.disarm();
break;
}
break;
case AUX_FUNC::SMART_RTL: case AUX_FUNC::SMART_RTL:
#if MODE_SMARTRTL_ENABLED == ENABLED #if MODE_SMARTRTL_ENABLED == ENABLED
do_aux_function_change_mode(Mode::Number::SMART_RTL, ch_flag); do_aux_function_change_mode(Mode::Number::SMART_RTL, ch_flag);

1
ArduCopter/RC_Channel.h

@ -15,6 +15,7 @@ protected:
private: private:
void do_aux_function_armdisarm(const aux_switch_pos_t ch_flag) override;
void do_aux_function_change_mode(const Mode::Number mode, void do_aux_function_change_mode(const Mode::Number mode,
const aux_switch_pos_t ch_flag); const aux_switch_pos_t ch_flag);

Loading…
Cancel
Save