aboutsummaryrefslogtreecommitdiff
path: root/src/modules/navigator/datalinkloss.cpp
diff options
context:
space:
mode:
authorThomas Gubler <thomasgubler@gmail.com>2014-08-16 13:17:26 +0200
committerThomas Gubler <thomasgubler@gmail.com>2014-08-16 13:17:26 +0200
commit94765f1fe01a3ae1ba72a330f77cfb4cacbd8c0e (patch)
treeeb070b91f7b77036b741f84b78ad38805e9bd2cd /src/modules/navigator/datalinkloss.cpp
parent72beef90c9a9bb901355483e275a47f166f654a8 (diff)
downloadpx4-firmware-94765f1fe01a3ae1ba72a330f77cfb4cacbd8c0e.tar.gz
px4-firmware-94765f1fe01a3ae1ba72a330f77cfb4cacbd8c0e.tar.bz2
px4-firmware-94765f1fe01a3ae1ba72a330f77cfb4cacbd8c0e.zip
datalinkloss: use vstatus from navigator
For some reason the own subscription did not work (the task launch pattern used for the navigator may be the reason again)
Diffstat (limited to 'src/modules/navigator/datalinkloss.cpp')
-rw-r--r--src/modules/navigator/datalinkloss.cpp14
1 files changed, 5 insertions, 9 deletions
diff --git a/src/modules/navigator/datalinkloss.cpp b/src/modules/navigator/datalinkloss.cpp
index 7b9a7b151..ab9e67a33 100644
--- a/src/modules/navigator/datalinkloss.cpp
+++ b/src/modules/navigator/datalinkloss.cpp
@@ -57,7 +57,6 @@
DataLinkLoss::DataLinkLoss(Navigator *navigator, const char *name) :
MissionBlock(navigator, name),
- _vehicleStatus(&getSubscriptions(), ORB_ID(vehicle_status), 100),
_param_commsholdwaittime(this, "CH_T"),
_param_commsholdlat(this, "CH_LAT"),
_param_commsholdlon(this, "CH_LON"),
@@ -91,6 +90,7 @@ void
DataLinkLoss::on_activation()
{
_dll_state = DLL_STATE_NONE;
+ updateParams();
advance_dll();
set_dll_item();
}
@@ -99,6 +99,7 @@ void
DataLinkLoss::on_active()
{
if (is_mission_item_reached()) {
+ updateParams();
advance_dll();
set_dll_item();
}
@@ -109,9 +110,6 @@ DataLinkLoss::set_dll_item()
{
struct position_setpoint_triplet_s *pos_sp_triplet = _navigator->get_position_setpoint_triplet();
- /* make sure we have the latest params */
- updateParams();
-
set_previous_pos_setpoint();
_navigator->set_can_loiter_at_sp(false);
@@ -167,17 +165,15 @@ DataLinkLoss::set_dll_item()
void
DataLinkLoss::advance_dll()
{
- warnx("dll_state %u", _dll_state);
switch (_dll_state) {
case DLL_STATE_NONE:
/* Check the number of data link losses. If above home fly home directly */
- updateSubscriptions();
- if (_vehicleStatus.data_link_lost_counter > _param_numberdatalinklosses.get()) {
- warnx("too many data link losses, fly to airfield home");
+ 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 {
- warnx("fly to comms hold");
+ 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;
}