From dd7b72dfb01b6c04c1a66753bdbb6c5698563be0 Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Sat, 7 Oct 2017 13:02:28 +0200 Subject: [PATCH] MAVLink app: Fix boot-time race between receive thread and instantiation. --- src/modules/mavlink/mavlink_main.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/modules/mavlink/mavlink_main.cpp b/src/modules/mavlink/mavlink_main.cpp index aa441951a9..0b90d4583f 100644 --- a/src/modules/mavlink/mavlink_main.cpp +++ b/src/modules/mavlink/mavlink_main.cpp @@ -1988,9 +1988,6 @@ Mavlink::task_main(int argc, char *argv[]) /* Initialize system properties */ mavlink_update_system(); - /* start the MAVLink receiver */ - MavlinkReceiver::receive_start(&_receive_thread, this); - MavlinkOrbSubscription *param_sub = add_orb_subscription(ORB_ID(parameter_update)); uint64_t param_time = 0; MavlinkOrbSubscription *status_sub = add_orb_subscription(ORB_ID(vehicle_status)); @@ -2180,6 +2177,9 @@ Mavlink::task_main(int argc, char *argv[]) send_autopilot_capabilites(); } + /* start the MAVLink receiver last to avoid a race */ + MavlinkReceiver::receive_start(&_receive_thread, this); + while (!_task_should_exit) { /* main loop */ usleep(_main_loop_delay);