From 4168bd709c63f44dad6daca4567ffca8694f2a25 Mon Sep 17 00:00:00 2001 From: Peter Barker Date: Wed, 13 Jun 2018 21:11:52 +1000 Subject: [PATCH] AP_Frsky_Telem: use AP_FWVersion singleton --- libraries/AP_Frsky_Telem/AP_Frsky_Telem.cpp | 14 ++++++++++++-- libraries/AP_Frsky_Telem/AP_Frsky_Telem.h | 8 +++++++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/libraries/AP_Frsky_Telem/AP_Frsky_Telem.cpp b/libraries/AP_Frsky_Telem/AP_Frsky_Telem.cpp index cca3526b17..d26bd5d6d0 100644 --- a/libraries/AP_Frsky_Telem/AP_Frsky_Telem.cpp +++ b/libraries/AP_Frsky_Telem/AP_Frsky_Telem.cpp @@ -22,6 +22,8 @@ #include "AP_Frsky_Telem.h" #include +#include + extern const AP_HAL::HAL& hal; ObjectArray AP_Frsky_Telem::_statustext_queue(FRSKY_TELEM_PAYLOAD_STATUS_CAPACITY); @@ -36,7 +38,9 @@ AP_Frsky_Telem::AP_Frsky_Telem(AP_AHRS &ahrs, const AP_BattMonitor &battery, con /* * init - perform required initialisation */ -void AP_Frsky_Telem::init(const AP_SerialManager &serial_manager, const char *firmware_str, const uint8_t mav_type, const uint32_t *ap_valuep) +void AP_Frsky_Telem::init(const AP_SerialManager &serial_manager, + const uint8_t mav_type, + const uint32_t *ap_valuep) { // check for protocol configured for a serial port - only the first serial port with one of these protocols will then run (cannot have FrSky on multiple serial ports) if ((_port = serial_manager.find_serial(AP_SerialManager::SerialProtocol_FrSky_D, 0))) { @@ -48,7 +52,13 @@ void AP_Frsky_Telem::init(const AP_SerialManager &serial_manager, const char *fi // make frsky_telemetry available to GCS_MAVLINK (used to queue statustext messages from GCS_MAVLINK) gcs().register_frsky_telemetry_callback(this); // add firmware and frame info to message queue - queue_message(MAV_SEVERITY_INFO, firmware_str); + if (_frame_string == nullptr) { + queue_message(MAV_SEVERITY_INFO, AP::fwversion().fw_string); + } else { + char firmware_buf[50]; + snprintf(firmware_buf, sizeof(firmware_buf), "%s %s", AP::fwversion().fw_string, _frame_string); + queue_message(MAV_SEVERITY_INFO, firmware_buf); + } // save main parameters locally _params.mav_type = mav_type; // frame type (see MAV_TYPE in Mavlink definition file common.h) if (ap_valuep == nullptr) { // ap bit-field diff --git a/libraries/AP_Frsky_Telem/AP_Frsky_Telem.h b/libraries/AP_Frsky_Telem/AP_Frsky_Telem.h index fb9ad67ff9..238e8d54f9 100644 --- a/libraries/AP_Frsky_Telem/AP_Frsky_Telem.h +++ b/libraries/AP_Frsky_Telem/AP_Frsky_Telem.h @@ -120,7 +120,9 @@ public: AP_Frsky_Telem &operator=(const AP_Frsky_Telem&) = delete; // init - perform required initialisation - void init(const AP_SerialManager &serial_manager, const char *firmware_str, const uint8_t mav_type, const uint32_t *ap_valuep = nullptr); + void init(const AP_SerialManager &serial_manager, + const uint8_t mav_type, + const uint32_t *ap_valuep = nullptr); // add statustext message to FrSky lib message queue void queue_message(MAV_SEVERITY severity, const char *text); @@ -141,6 +143,8 @@ public: static ObjectArray _statustext_queue; + void set_frame_string(const char *string) { _frame_string = string; } + private: AP_AHRS &_ahrs; const AP_BattMonitor &_battery; @@ -150,6 +154,8 @@ private: bool _initialised_uart; uint16_t _crc; + const char *_frame_string; + struct { uint8_t mav_type; // frame type (see MAV_TYPE in Mavlink definition file common.h)