Skip to content

Commit

Permalink
Reenable the MissionManager for the Iridium mavlink instance
Browse files Browse the repository at this point in the history
The MissionManager handles the MAVLINK_MSG_ID_MISSION_SET_CURRENT command which should also be supported for SatCom.
  • Loading branch information
acfloria authored and LorenzMeier committed Jun 29, 2018
1 parent 8825bbe commit ca1f7a4
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 17 deletions.
10 changes: 10 additions & 0 deletions src/modules/mavlink/mavlink_mission.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -480,6 +480,11 @@ MavlinkMissionManager::send_mission_item_reached(uint16_t seq)
void
MavlinkMissionManager::send(const hrt_abstime now)
{
// do not send anything over high latency communication
if (_mavlink->get_mode() == Mavlink::MAVLINK_MODE_IRIDIUM) {
return;
}

bool updated = false;
orb_check(_mission_result_sub, &updated);

Expand Down Expand Up @@ -1651,6 +1656,11 @@ MavlinkMissionManager::format_mavlink_mission_item(const struct mission_item_s *

void MavlinkMissionManager::check_active_mission()
{
// do not send anything over high latency communication
if (_mavlink->get_mode() == Mavlink::MAVLINK_MODE_IRIDIUM) {
return;
}

if (!(_my_dataman_id == _dataman_id)) {
PX4_DEBUG("WPM: New mission detected (possibly over different Mavlink instance) Updating");

Expand Down
21 changes: 5 additions & 16 deletions src/modules/mavlink/mavlink_receiver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ using matrix::wrap_2pi;

MavlinkReceiver::MavlinkReceiver(Mavlink *parent) :
_mavlink(parent),
_mission_manager(nullptr),
_mission_manager(parent),
_parameters_manager(parent),
_mavlink_ftp(parent),
_mavlink_log_handler(parent),
Expand Down Expand Up @@ -163,20 +163,12 @@ MavlinkReceiver::MavlinkReceiver(Mavlink *parent) :
_p_bat_crit_thr(param_find("BAT_CRIT_THR")),
_p_bat_low_thr(param_find("BAT_LOW_THR"))
{
if (_mavlink->get_mode() != Mavlink::MAVLINK_MODE_IRIDIUM) {
_mission_manager = new MavlinkMissionManager(parent);
}
}

MavlinkReceiver::~MavlinkReceiver()
{
orb_unsubscribe(_control_mode_sub);
orb_unsubscribe(_actuator_armed_sub);

if (_mission_manager != nullptr) {
delete _mission_manager;
_mission_manager = nullptr;
}
}

void MavlinkReceiver::acknowledge(uint8_t sysid, uint8_t compid, uint16_t command, uint8_t result)
Expand Down Expand Up @@ -2582,9 +2574,8 @@ MavlinkReceiver::receive_thread(void *arg)
handle_message(&msg);

/* handle packet with mission manager */
if (_mission_manager != nullptr) {
_mission_manager->handle_message(&msg);
}
_mission_manager.handle_message(&msg);


/* handle packet with parameter component */
_parameters_manager.handle_message(&msg);
Expand Down Expand Up @@ -2615,10 +2606,8 @@ MavlinkReceiver::receive_thread(void *arg)
hrt_abstime t = hrt_absolute_time();

if (t - last_send_update > timeout * 1000) {
if (_mission_manager != nullptr) {
_mission_manager->check_active_mission();
_mission_manager->send(t);
}
_mission_manager.check_active_mission();
_mission_manager.send(t);

_parameters_manager.send(t);

Expand Down
2 changes: 1 addition & 1 deletion src/modules/mavlink/mavlink_receiver.h
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ class MavlinkReceiver

Mavlink *_mavlink;

MavlinkMissionManager *_mission_manager;
MavlinkMissionManager _mission_manager;
MavlinkParametersManager _parameters_manager;
MavlinkFTP _mavlink_ftp;
MavlinkLogHandler _mavlink_log_handler;
Expand Down

0 comments on commit ca1f7a4

Please sign in to comment.