forked from Archive/PX4-Autopilot
mavlink_mission: add check for fence & safe point on regular mission upload
This commit is contained in:
parent
b1730b67e4
commit
25cc64947a
|
@ -1048,15 +1048,26 @@ MavlinkMissionManager::handle_mission_item_both(const mavlink_message_t *msg)
|
||||||
switch (_mission_type) {
|
switch (_mission_type) {
|
||||||
|
|
||||||
case MAV_MISSION_TYPE_MISSION: {
|
case MAV_MISSION_TYPE_MISSION: {
|
||||||
dm_item_t dm_item = DM_KEY_WAYPOINTS_OFFBOARD(_transfer_dataman_id);
|
// check that we don't get a wrong item (hardening against wrong client implementations, the list here
|
||||||
|
// does not need to be complete)
|
||||||
|
if (mission_item.nav_cmd == MAV_CMD_NAV_FENCE_POLYGON_VERTEX_INCLUSION ||
|
||||||
|
mission_item.nav_cmd == MAV_CMD_NAV_FENCE_POLYGON_VERTEX_EXCLUSION ||
|
||||||
|
mission_item.nav_cmd == MAV_CMD_NAV_FENCE_CIRCLE_INCLUSION ||
|
||||||
|
mission_item.nav_cmd == MAV_CMD_NAV_FENCE_CIRCLE_EXCLUSION ||
|
||||||
|
mission_item.nav_cmd == MAV_CMD_NAV_RALLY_POINT) {
|
||||||
|
check_failed = true;
|
||||||
|
|
||||||
write_failed = dm_write(dm_item, wp.seq, DM_PERSIST_POWER_ON_RESET, &mission_item,
|
} else {
|
||||||
sizeof(struct mission_item_s)) != sizeof(struct mission_item_s);
|
dm_item_t dm_item = DM_KEY_WAYPOINTS_OFFBOARD(_transfer_dataman_id);
|
||||||
|
|
||||||
if (!write_failed) {
|
write_failed = dm_write(dm_item, wp.seq, DM_PERSIST_POWER_ON_RESET, &mission_item,
|
||||||
/* waypoint marked as current */
|
sizeof(struct mission_item_s)) != sizeof(struct mission_item_s);
|
||||||
if (wp.current) {
|
|
||||||
_transfer_current_seq = wp.seq;
|
if (!write_failed) {
|
||||||
|
/* waypoint marked as current */
|
||||||
|
if (wp.current) {
|
||||||
|
_transfer_current_seq = wp.seq;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue