ArduCopter: add do_disarm_checks boolean to disarm call

this creates symmetry between arming and disarming, at least as far as
the top-level arm() and disarm() calls are concerned.
This commit is contained in:
Peter Barker 2021-01-06 11:15:48 +11:00 committed by Randy Mackay
parent 3d577d94e8
commit 65adf5b4a9
4 changed files with 10 additions and 10 deletions

View File

@ -872,14 +872,21 @@ bool AP_Arming_Copter::arm(const AP_Arming::Method method, const bool do_arming_
} }
// arming.disarm - disarm motors // arming.disarm - disarm motors
bool AP_Arming_Copter::disarm(const AP_Arming::Method method) bool AP_Arming_Copter::disarm(const AP_Arming::Method method, bool do_disarm_checks)
{ {
// return immediately if we are already disarmed // return immediately if we are already disarmed
if (!copter.motors->armed()) { if (!copter.motors->armed()) {
return true; return true;
} }
if (!AP_Arming::disarm(method)) { // do not allow disarm via mavlink if we think we are flying:
if (do_disarm_checks &&
method == AP_Arming::Method::MAVLINK &&
!copter.ap.land_complete) {
return false;
}
if (!AP_Arming::disarm(method, do_disarm_checks)) {
return false; return false;
} }

View File

@ -23,7 +23,7 @@ public:
bool rc_calibration_checks(bool display_failure) override; bool rc_calibration_checks(bool display_failure) override;
bool disarm(AP_Arming::Method method) override; bool disarm(AP_Arming::Method method, bool do_disarm_checks=true) override;
bool arm(AP_Arming::Method method, bool do_arming_checks=true) override; bool arm(AP_Arming::Method method, bool do_arming_checks=true) override;
protected: protected:

View File

@ -689,11 +689,6 @@ MAV_RESULT GCS_MAVLINK_Copter::handle_command_mount(const mavlink_command_long_t
return GCS_MAVLINK::handle_command_mount(packet); return GCS_MAVLINK::handle_command_mount(packet);
} }
bool GCS_MAVLINK_Copter::allow_disarm() const
{
return copter.ap.land_complete;
}
MAV_RESULT GCS_MAVLINK_Copter::handle_command_long_packet(const mavlink_command_long_t &packet) MAV_RESULT GCS_MAVLINK_Copter::handle_command_long_packet(const mavlink_command_long_t &packet)
{ {
switch(packet.command) { switch(packet.command) {

View File

@ -43,8 +43,6 @@ protected:
virtual MAV_VTOL_STATE vtol_state() const override { return MAV_VTOL_STATE_MC; }; virtual MAV_VTOL_STATE vtol_state() const override { return MAV_VTOL_STATE_MC; };
virtual MAV_LANDED_STATE landed_state() const override; virtual MAV_LANDED_STATE landed_state() const override;
bool allow_disarm() const override;
private: private:
void handleMessage(const mavlink_message_t &msg) override; void handleMessage(const mavlink_message_t &msg) override;