From 72440e2af3c31e0c701bd299d3428b41ade9f4e5 Mon Sep 17 00:00:00 2001 From: Peter Barker Date: Tue, 6 Nov 2018 12:04:00 +1100 Subject: [PATCH] Copter: allow VFR_HUD.alt to be relative-alt if DEV_OPTIONS has bit 2 set --- ArduCopter/GCS_Mavlink.cpp | 10 ++++++++++ ArduCopter/GCS_Mavlink.h | 2 ++ ArduCopter/Parameters.cpp | 2 +- ArduCopter/defines.h | 1 + 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/ArduCopter/GCS_Mavlink.cpp b/ArduCopter/GCS_Mavlink.cpp index 52e1e257a9..e5e8a6d173 100644 --- a/ArduCopter/GCS_Mavlink.cpp +++ b/ArduCopter/GCS_Mavlink.cpp @@ -1553,3 +1553,13 @@ bool GCS_MAVLINK_Copter::set_mode(const uint8_t mode) #endif return copter.set_mode((control_mode_t)mode, MODE_REASON_GCS_COMMAND); } + +float GCS_MAVLINK_Copter::vfr_hud_alt() const +{ + if (copter.g2.dev_options.get() & DevOptionVFR_HUDRelativeAlt) { + // compatability option for older mavlink-aware devices that + // assume Copter returns a relative altitude in VFR_HUD.alt + return copter.current_loc.alt / 100.0f; + } + return GCS_MAVLINK::vfr_hud_alt(); +} diff --git a/ArduCopter/GCS_Mavlink.h b/ArduCopter/GCS_Mavlink.h index 0133637386..eeee96f84e 100644 --- a/ArduCopter/GCS_Mavlink.h +++ b/ArduCopter/GCS_Mavlink.h @@ -58,6 +58,8 @@ private: MAV_STATE system_status() const override; int16_t vfr_hud_throttle() const override; + float vfr_hud_alt() const override; void send_pid_tuning(); + }; diff --git a/ArduCopter/Parameters.cpp b/ArduCopter/Parameters.cpp index 7a0b383412..b57ccda04f 100644 --- a/ArduCopter/Parameters.cpp +++ b/ArduCopter/Parameters.cpp @@ -814,7 +814,7 @@ const AP_Param::GroupInfo ParametersG2::var_info[] = { // @Param: DEV_OPTIONS // @DisplayName: Development options // @Description: Bitmask of developer options. The meanings of the bit fields in this parameter may vary at any time. Developers should check the source code for current meaning - // @Bitmask: 0:ADSBMavlinkProcessing + // @Bitmask: 0:ADSBMavlinkProcessing,1:DevOptionVFR_HUDRelativeAlt // @User: Advanced AP_GROUPINFO("DEV_OPTIONS", 7, ParametersG2, dev_options, 0), diff --git a/ArduCopter/defines.h b/ArduCopter/defines.h index 82b1a39ca3..61563e5dce 100644 --- a/ArduCopter/defines.h +++ b/ArduCopter/defines.h @@ -232,6 +232,7 @@ enum PayloadPlaceStateType { // bit options for DEV_OPTIONS parameter enum DevOptions { DevOptionADSBMAVLink = 1, + DevOptionVFR_HUDRelativeAlt = 2, }; // Logging parameters