From d3ba9c59e0fad71361ee2e58857774750887587a Mon Sep 17 00:00:00 2001 From: garfieldG Date: Tue, 6 Aug 2019 17:53:07 +0300 Subject: [PATCH] mavlink: added check if instance mode is serial when trying to find if instance exists (#12642) --- src/modules/mavlink/mavlink_main.cpp | 8 ++++---- src/modules/mavlink/mavlink_main.h | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/modules/mavlink/mavlink_main.cpp b/src/modules/mavlink/mavlink_main.cpp index 54bb2b9db9..5f4ca41b8a 100644 --- a/src/modules/mavlink/mavlink_main.cpp +++ b/src/modules/mavlink/mavlink_main.cpp @@ -419,14 +419,14 @@ Mavlink::get_status_all_instances(bool show_streams_status) } bool -Mavlink::instance_exists(const char *device_name, Mavlink *self) +Mavlink::serial_instance_exists(const char *device_name, Mavlink *self) { Mavlink *inst = ::_mavlink_instances; while (inst != nullptr) { - /* don't compare with itself */ - if (inst != self && !strcmp(device_name, inst->_device_name)) { + /* don't compare with itself and with non serial instances*/ + if ((inst != self) && (inst->get_protocol() == SERIAL) && !strcmp(device_name, inst->_device_name)) { return true; } @@ -2074,7 +2074,7 @@ Mavlink::task_main(int argc, char *argv[]) } if (get_protocol() == SERIAL) { - if (Mavlink::instance_exists(_device_name, this)) { + if (Mavlink::serial_instance_exists(_device_name, this)) { PX4_ERR("%s already running", _device_name); return PX4_ERROR; } diff --git a/src/modules/mavlink/mavlink_main.h b/src/modules/mavlink/mavlink_main.h index 1910283a96..e222846ff3 100644 --- a/src/modules/mavlink/mavlink_main.h +++ b/src/modules/mavlink/mavlink_main.h @@ -156,7 +156,7 @@ public: static int get_status_all_instances(bool show_streams_status); - static bool instance_exists(const char *device_name, Mavlink *self); + static bool serial_instance_exists(const char *device_name, Mavlink *self); static void forward_message(const mavlink_message_t *msg, Mavlink *self);