diff --git a/libraries/AP_Arming/AP_Arming.cpp b/libraries/AP_Arming/AP_Arming.cpp index fef0bff6ab..630340038c 100644 --- a/libraries/AP_Arming/AP_Arming.cpp +++ b/libraries/AP_Arming/AP_Arming.cpp @@ -1681,7 +1681,9 @@ bool AP_Arming::arm(AP_Arming::Method method, const bool do_arming_checks) } } #endif - +#if defined(HAL_ARM_GPIO_PIN) + update_arm_gpio(); +#endif return armed; } @@ -1721,10 +1723,21 @@ bool AP_Arming::disarm(const AP_Arming::Method method, bool do_disarm_checks) } } #endif - +#if defined(HAL_ARM_GPIO_PIN) + update_arm_gpio(); +#endif return true; } +#if defined(HAL_ARM_GPIO_PIN) +void AP_Arming::update_arm_gpio() +{ + if (!AP_BoardConfig::arming_gpio_disabled()) { + hal.gpio->write(HAL_ARM_GPIO_PIN, HAL_ARM_GPIO_POL_INVERT ? !armed : armed); + } +} +#endif + void AP_Arming::send_arm_disarm_statustext(const char *str) const { if (option_enabled(AP_Arming::Option::DISABLE_STATUSTEXT_ON_STATE_CHANGE)) { diff --git a/libraries/AP_Arming/AP_Arming.h b/libraries/AP_Arming/AP_Arming.h index a755bc0bd0..a67a74bcd0 100644 --- a/libraries/AP_Arming/AP_Arming.h +++ b/libraries/AP_Arming/AP_Arming.h @@ -303,6 +303,8 @@ private: uint32_t last_prearm_display_ms; // last time we send statustexts for prearm failures bool running_arming_checks; // true if the arming checks currently being performed are being done because the vehicle is trying to arm the vehicle + + void update_arm_gpio(); }; namespace AP {