diff options
author | Julian Oes <julian@oes.ch> | 2013-11-27 09:27:08 +0100 |
---|---|---|
committer | Julian Oes <julian@oes.ch> | 2013-11-27 09:27:08 +0100 |
commit | 3f252987988738d9246eec9716b780d23cb8b0f7 (patch) | |
tree | 9d4ecb7f169b696fd28af22ea496f7c28fb42712 /src/modules/mavlink/mavlink.c | |
parent | 9c1a5be8e16d18612c8e318355fef15e53961da7 (diff) | |
download | px4-firmware-3f252987988738d9246eec9716b780d23cb8b0f7.tar.gz px4-firmware-3f252987988738d9246eec9716b780d23cb8b0f7.tar.bz2 px4-firmware-3f252987988738d9246eec9716b780d23cb8b0f7.zip |
Mavlink and navigator: Disable some functions in mavlink that are taken over by navigator, introduce topic to report mission status from commander back to mavlink
Diffstat (limited to 'src/modules/mavlink/mavlink.c')
-rw-r--r-- | src/modules/mavlink/mavlink.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/modules/mavlink/mavlink.c b/src/modules/mavlink/mavlink.c index 7c10e297b..2ec00a9bc 100644 --- a/src/modules/mavlink/mavlink.c +++ b/src/modules/mavlink/mavlink.c @@ -74,6 +74,8 @@ #include "waypoints.h" #include "mavlink_parameters.h" +#include <uORB/topics/mission_result.h> + /* define MAVLink specific parameters */ PARAM_DEFINE_INT32(MAV_SYS_ID, 1); PARAM_DEFINE_INT32(MAV_COMP_ID, 50); @@ -644,6 +646,10 @@ int mavlink_thread_main(int argc, char *argv[]) set_mavlink_interval_limit(&mavlink_subs, MAVLINK_MSG_ID_MANUAL_CONTROL, 10000); } + int mission_result_sub = orb_subscribe(ORB_ID(mission_result)); + struct mission_result_s mission_result; + memset(&mission_result, 0, sizeof(mission_result)); + thread_running = true; /* arm counter to go off immediately */ @@ -690,6 +696,17 @@ int mavlink_thread_main(int argc, char *argv[]) lowspeed_counter++; + bool updated; + orb_check(mission_result_sub, &updated); + + if (updated) { + orb_copy(ORB_ID(mission_result), mission_result_sub, &mission_result); + + if (mission_result.mission_reached) { + mavlink_wpm_send_waypoint_reached((uint16_t)mission_result.mission_index); + } + } + mavlink_waypoint_eventloop(mavlink_missionlib_get_system_timestamp(), &global_pos, &local_pos, &nav_cap); /* sleep quarter the time */ |