mavlink-mission: Add support for opaque ids and replace update counter with it

This commit is contained in:
Konrad
2023-11-29 11:10:40 -05:00
committed by Daniel Agar
parent 120e7fea8b
commit 36f0c0f0bf
17 changed files with 194 additions and 101 deletions
+8 -8
View File
@@ -114,7 +114,7 @@ void MissionBase::updateMavlinkMission()
if (isMissionValid(new_mission)) {
/* Relevant mission items updated externally*/
if (checkMissionDataChanged(new_mission)) {
bool mission_items_changed = (new_mission.mission_update_counter != _mission.mission_update_counter);
bool mission_items_changed = (new_mission.mission_id != _mission.mission_id);
if (new_mission.current_seq < 0) {
new_mission.current_seq = math::max(math::min(_mission.current_seq, static_cast<int32_t>(new_mission.count) - 1),
@@ -689,12 +689,12 @@ MissionBase::checkMissionRestart()
void
MissionBase::check_mission_valid()
{
if ((_navigator->get_mission_result()->mission_update_counter != _mission.mission_update_counter)
|| (_navigator->get_mission_result()->geofence_update_counter != _mission.geofence_update_counter)
if ((_navigator->get_mission_result()->mission_id != _mission.mission_id)
|| (_navigator->get_mission_result()->geofence_id != _mission.geofence_id)
|| (_navigator->get_mission_result()->home_position_counter != _navigator->get_home_position()->update_count)) {
_navigator->get_mission_result()->mission_update_counter = _mission.mission_update_counter;
_navigator->get_mission_result()->geofence_update_counter = _mission.geofence_update_counter;
_navigator->get_mission_result()->mission_id = _mission.mission_id;
_navigator->get_mission_result()->geofence_id = _mission.geofence_id;
_navigator->get_mission_result()->home_position_counter = _navigator->get_home_position()->update_count;
MissionFeasibilityChecker missionFeasibilityChecker(_navigator, _dataman_client);
@@ -1153,7 +1153,7 @@ void MissionBase::resetMission()
new_mission.land_start_index = -1;
new_mission.land_index = -1;
new_mission.count = 0u;
new_mission.mission_update_counter = _mission.mission_update_counter + 1;
new_mission.mission_id = 0u;
new_mission.dataman_id = _mission.dataman_id == DM_KEY_WAYPOINTS_OFFBOARD_0 ? DM_KEY_WAYPOINTS_OFFBOARD_1 :
DM_KEY_WAYPOINTS_OFFBOARD_0;
@@ -1355,8 +1355,8 @@ void MissionBase::checkClimbRequired(int32_t mission_item_index)
bool MissionBase::checkMissionDataChanged(mission_s new_mission)
{
/* count and land_index are the same if the mission_counter did not change. We do not care about changes in geofence or rally counters.*/
/* count and land_index are the same if the mission_id did not change. We do not care about changes in geofence or rally counters.*/
return ((new_mission.dataman_id != _mission.dataman_id) ||
(new_mission.mission_update_counter != _mission.mission_update_counter) ||
(new_mission.mission_id != _mission.mission_id) ||
(new_mission.current_seq != _mission.current_seq));
}