Skip to content

Commit

Permalink
mission: make mission_data lock scope smaller
Browse files Browse the repository at this point in the history
  • Loading branch information
julianoes committed May 4, 2018
1 parent f6032ce commit 7604d96
Showing 1 changed file with 20 additions and 17 deletions.
37 changes: 20 additions & 17 deletions plugins/mission/mission_impl.cpp
Expand Up @@ -139,32 +139,35 @@ void MissionImpl::process_mission_ack(const mavlink_message_t &message)
// We got some response, so it wasn't a timeout and we can remove it.
_parent->unregister_timeout_handler(_timeout_cookie);

Mission::result_callback_t result_callback;
{
std::lock_guard<std::recursive_mutex> lock(_mission_data.mutex);
Mission::result_callback_t result_callback;
result_callback = _mission_data.result_callback;
}

if (mission_ack.type == MAV_MISSION_ACCEPTED) {
// Reset current and reached; we don't want to get confused
// from earlier messages.
if (mission_ack.type == MAV_MISSION_ACCEPTED) {
// Reset current and reached; we don't want to get confused
// from earlier messages.
{
std::lock_guard<std::recursive_mutex> lock(_mission_data.mutex);
_mission_data.last_current_mavlink_mission_item = -1;
_mission_data.last_reached_mavlink_mission_item = -1;
{
std::lock_guard<std::mutex> lock(_activity.mutex);
_activity.state = Activity::State::NONE;
}
}
{
std::lock_guard<std::mutex> lock(_activity.mutex);
_activity.state = Activity::State::NONE;
}

report_mission_result(result_callback, Mission::Result::SUCCESS);
LogInfo() << "Mission accepted";
report_mission_result(result_callback, Mission::Result::SUCCESS);
LogInfo() << "Mission accepted";

} else if (mission_ack.type == MAV_MISSION_NO_SPACE) {
LogErr() << "Error: too many waypoints: " << int(mission_ack.type);
report_mission_result(result_callback, Mission::Result::TOO_MANY_MISSION_ITEMS);
} else if (mission_ack.type == MAV_MISSION_NO_SPACE) {
LogErr() << "Error: too many waypoints: " << int(mission_ack.type);
report_mission_result(result_callback, Mission::Result::TOO_MANY_MISSION_ITEMS);

} else {
LogErr() << "Error: unknown mission ack: " << int(mission_ack.type);
report_mission_result(result_callback, Mission::Result::ERROR);
}
} else {
LogErr() << "Error: unknown mission ack: " << int(mission_ack.type);
report_mission_result(result_callback, Mission::Result::ERROR);
}
}

Expand Down

0 comments on commit 7604d96

Please sign in to comment.