From 6deff406e0fce001be61d9634765a2e0af751237 Mon Sep 17 00:00:00 2001 From: Andy Piper Date: Tue, 3 Oct 2023 20:25:00 +0100 Subject: [PATCH] AP_ESC_Telem: don't set up parameters on iofirmware add direct accessor for telemetry data to be used by iomcu don't update telemetry data if no data --- libraries/AP_ESC_Telem/AP_ESC_Telem.cpp | 4 +++- libraries/AP_ESC_Telem/AP_ESC_Telem.h | 5 +++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/libraries/AP_ESC_Telem/AP_ESC_Telem.cpp b/libraries/AP_ESC_Telem/AP_ESC_Telem.cpp index 0ebc163c2d..d2b7e31b14 100644 --- a/libraries/AP_ESC_Telem/AP_ESC_Telem.cpp +++ b/libraries/AP_ESC_Telem/AP_ESC_Telem.cpp @@ -49,7 +49,9 @@ AP_ESC_Telem::AP_ESC_Telem() AP_HAL::panic("Too many AP_ESC_Telem instances"); } _singleton = this; +#if !defined(IOMCU_FW) AP_Param::setup_object_defaults(this, var_info); +#endif } // return the average motor RPM @@ -416,7 +418,7 @@ void AP_ESC_Telem::update_telem_data(const uint8_t esc_index, const AP_ESC_Telem // can only get slightly more up-to-date information that perhaps they were expecting or might // read data that has just gone stale - both of these are safe and avoid the overhead of locking - if (esc_index >= ESC_TELEM_MAX_ESCS) { + if (esc_index >= ESC_TELEM_MAX_ESCS || data_mask == 0) { return; } diff --git a/libraries/AP_ESC_Telem/AP_ESC_Telem.h b/libraries/AP_ESC_Telem/AP_ESC_Telem.h index 503ef43299..ae40ede597 100644 --- a/libraries/AP_ESC_Telem/AP_ESC_Telem.h +++ b/libraries/AP_ESC_Telem/AP_ESC_Telem.h @@ -32,6 +32,11 @@ public: // get an individual ESC's raw rpm if available bool get_raw_rpm(uint8_t esc_index, float& rpm) const; + // get raw telemetry data, used by IOMCU + const volatile AP_ESC_Telem_Backend::TelemetryData& get_telem_data(uint8_t esc_index) const { + return _telem_data[esc_index]; + } + // return the average motor RPM float get_average_motor_rpm(uint32_t servo_channel_mask) const;