diff --git a/ArduCopter/defines.h b/ArduCopter/defines.h index 7079285db4..5283abe708 100644 --- a/ArduCopter/defines.h +++ b/ArduCopter/defines.h @@ -78,6 +78,8 @@ enum aux_sw_func { AUXSW_USER_FUNC1 = 47, // user function #1 AUXSW_USER_FUNC2 = 48, // user function #2 AUXSW_USER_FUNC3 = 49, // user function #3 + AUXSW_GPS1_DISABLE = 90, // kill GPS1 + AUXSW_GPS2_DISABLE = 91, // kill GPS2 AUXSW_SWITCH_MAX, }; diff --git a/ArduCopter/switches.cpp b/ArduCopter/switches.cpp index ec8e81d9d3..ca4c918116 100644 --- a/ArduCopter/switches.cpp +++ b/ArduCopter/switches.cpp @@ -235,6 +235,8 @@ void Copter::init_aux_switch_function(int8_t ch_option, uint8_t ch_flag) case AUXSW_INVERTED: case AUXSW_WINCH_ENABLE: case AUXSW_RC_OVERRIDE_ENABLE: + case AUXSW_GPS1_DISABLE: + case AUXSW_GPS2_DISABLE: do_aux_switch_function(ch_option, ch_flag); break; } @@ -775,6 +777,14 @@ void Copter::do_aux_switch_function(int8_t ch_function, uint8_t ch_flag) userhook_auxSwitch3(ch_flag); break; #endif + + case AUXSW_GPS1_DISABLE: + gps.force_disable(0, ch_flag==AUX_SWITCH_HIGH); + break; + + case AUXSW_GPS2_DISABLE: + gps.force_disable(1, ch_flag==AUX_SWITCH_HIGH); + break; } } diff --git a/libraries/AP_GPS/AP_GPS.h b/libraries/AP_GPS/AP_GPS.h index 9609190611..a3fed22b9a 100644 --- a/libraries/AP_GPS/AP_GPS.h +++ b/libraries/AP_GPS/AP_GPS.h @@ -188,6 +188,9 @@ class AP_GPS /// Query GPS status GPS_Status status(uint8_t instance) const { + if ((1U<