From d4b588f84a2fccfe9d253373fe8ea1386c839c2f Mon Sep 17 00:00:00 2001
From: Lorenz Meier <lm@inf.ethz.ch>
Date: Sun, 28 Aug 2016 10:40:00 +0200
Subject: [PATCH] Fix proto version selection

---
 src/modules/mavlink/mavlink_main.cpp     | 5 +++--
 src/modules/mavlink/mavlink_receiver.cpp | 2 +-
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/modules/mavlink/mavlink_main.cpp b/src/modules/mavlink/mavlink_main.cpp
index a7ccd4d255..3d82101bff 100644
--- a/src/modules/mavlink/mavlink_main.cpp
+++ b/src/modules/mavlink/mavlink_main.cpp
@@ -216,7 +216,7 @@ Mavlink::Mavlink() :
 	_last_write_success_time(0),
 	_last_write_try_time(0),
 	_mavlink_start_time(0),
-	_protocol_version_switch(0),
+	_protocol_version_switch(-1),
 	_protocol_version(0),
 	_bytes_tx(0),
 	_bytes_txerr(0),
@@ -336,7 +336,8 @@ Mavlink::~Mavlink()
 void
 Mavlink::set_proto_version(unsigned version)
 {
-	if (version == 1 || ((version == 0) && !_received_messages)) {
+	if ((version == 1 || version == 0) &&
+		   ((_protocol_version_switch == 0) || (_protocol_version_switch == 1))) {
 		get_status()->flags |= MAVLINK_STATUS_FLAG_OUT_MAVLINK1;
 		_protocol_version = 1;
 
diff --git a/src/modules/mavlink/mavlink_receiver.cpp b/src/modules/mavlink/mavlink_receiver.cpp
index 8824b8c2d2..bed54c56da 100644
--- a/src/modules/mavlink/mavlink_receiver.cpp
+++ b/src/modules/mavlink/mavlink_receiver.cpp
@@ -2090,7 +2090,7 @@ MavlinkReceiver::receive_thread(void *arg)
 #endif
 	mavlink_message_t msg;
 
-	struct pollfd fds[1];
+	struct pollfd fds[1] = {};
 
 	if (_mavlink->get_protocol() == SERIAL) {
 		fds[0].fd = _mavlink->get_uart_fd();
-- 
GitLab