aboutsummaryrefslogtreecommitdiff
path: root/src/modules/navigator/datalinkloss.cpp
diff options
context:
space:
mode:
authorThomas Gubler <thomasgubler@gmail.com>2014-08-24 17:45:15 +0200
committerThomas Gubler <thomasgubler@gmail.com>2014-08-24 17:45:15 +0200
commit06317046f2da215db328be660f900d265cdf9102 (patch)
treefa4c78a02537d80ea338cddbefa7c8a3d94d8fa3 /src/modules/navigator/datalinkloss.cpp
parenta432d0493c0761da075c7734c0f54f44d6121e78 (diff)
downloadpx4-firmware-06317046f2da215db328be660f900d265cdf9102.tar.gz
px4-firmware-06317046f2da215db328be660f900d265cdf9102.tar.bz2
px4-firmware-06317046f2da215db328be660f900d265cdf9102.zip
move flight termination and geofence flags from setpoint triplet to mission result
Diffstat (limited to 'src/modules/navigator/datalinkloss.cpp')
-rw-r--r--src/modules/navigator/datalinkloss.cpp31
1 files changed, 17 insertions, 14 deletions
diff --git a/src/modules/navigator/datalinkloss.cpp b/src/modules/navigator/datalinkloss.cpp
index 4e3d25840..66f1c8c73 100644
--- a/src/modules/navigator/datalinkloss.cpp
+++ b/src/modules/navigator/datalinkloss.cpp
@@ -154,7 +154,8 @@ DataLinkLoss::set_dll_item()
}
case DLL_STATE_TERMINATE: {
/* Request flight termination from the commander */
- pos_sp_triplet->flight_termination = true;
+ _navigator->get_mission_result()->flight_termination = true;
+ _navigator->publish_mission_result();
warnx("not switched to manual: request flight termination");
pos_sp_triplet->previous.valid = false;
pos_sp_triplet->current.valid = false;
@@ -180,23 +181,25 @@ DataLinkLoss::advance_dll()
switch (_dll_state) {
case DLL_STATE_NONE:
/* Check the number of data link losses. If above home fly home directly */
- if (!_param_skipcommshold.get()) {
- /* if number of data link losses limit is not reached fly to comms hold wp */
- if (_navigator->get_vstatus()->data_link_lost_counter > _param_numberdatalinklosses.get()) {
- warnx("%d data link losses, limit is %d, fly to airfield home",
- _navigator->get_vstatus()->data_link_lost_counter, _param_numberdatalinklosses.get());
- mavlink_log_info(_navigator->get_mavlink_fd(), "#audio: too many DL losses, fly to home");
- _dll_state = DLL_STATE_FLYTOAIRFIELDHOMEWP;
- } else {
+ /* if number of data link losses limit is not reached fly to comms hold wp */
+ if (_navigator->get_vstatus()->data_link_lost_counter > _param_numberdatalinklosses.get()) {
+ warnx("%d data link losses, limit is %d, fly to airfield home",
+ _navigator->get_vstatus()->data_link_lost_counter, _param_numberdatalinklosses.get());
+ mavlink_log_info(_navigator->get_mavlink_fd(), "#audio: too many DL losses, fly to airfield home");
+ _navigator->get_mission_result()->stay_in_failsafe = true;
+ _navigator->publish_mission_result();
+ _dll_state = DLL_STATE_FLYTOAIRFIELDHOMEWP;
+ } else {
+ if (!_param_skipcommshold.get()) {
warnx("fly to comms hold, datalink loss counter: %d", _navigator->get_vstatus()->data_link_lost_counter);
mavlink_log_info(_navigator->get_mavlink_fd(), "#audio: fly to comms hold");
_dll_state = DLL_STATE_FLYTOCOMMSHOLDWP;
+ } else {
+ /* comms hold wp not active, fly to airfield home directly */
+ warnx("Skipping comms hold wp. Flying directly to airfield home");
+ mavlink_log_info(_navigator->get_mavlink_fd(), "#audio: fly to airfield home, comms hold skipped");
+ _dll_state = DLL_STATE_FLYTOAIRFIELDHOMEWP;
}
- } else {
- /* comms hold wp not active, fly to airfield home directly */
- warnx("Skipping comms hold wp. Flying directly to airfield home");
- mavlink_log_info(_navigator->get_mavlink_fd(), "#audio: fly to airfield home, comms hold skipped");
- _dll_state = DLL_STATE_FLYTOAIRFIELDHOMEWP;
}
break;
case DLL_STATE_FLYTOCOMMSHOLDWP: