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);