forked from Archive/PX4-Autopilot
navigator: report using mission result if a DO_JUMP waypoint has been changed
This commit is contained in:
parent
7cb4786e79
commit
180e17de33
|
@ -309,6 +309,12 @@ MavlinkMissionManager::send(const hrt_abstime now)
|
||||||
|
|
||||||
send_mission_current(_current_seq);
|
send_mission_current(_current_seq);
|
||||||
|
|
||||||
|
if (mission_result.item_do_jump_changed) {
|
||||||
|
/* send a mission item again if the remaining DO_JUMPs has changed */
|
||||||
|
send_mission_item(_transfer_partner_sysid, _transfer_partner_compid,
|
||||||
|
(uint16_t)mission_result.item_changed_index);
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if (_slow_rate_limiter.check(now)) {
|
if (_slow_rate_limiter.check(now)) {
|
||||||
send_mission_current(_current_seq);
|
send_mission_current(_current_seq);
|
||||||
|
@ -808,7 +814,7 @@ MavlinkMissionManager::format_mavlink_mission_item(const struct mission_item_s *
|
||||||
|
|
||||||
case NAV_CMD_DO_JUMP:
|
case NAV_CMD_DO_JUMP:
|
||||||
mavlink_mission_item->param1 = mission_item->do_jump_mission_index;
|
mavlink_mission_item->param1 = mission_item->do_jump_mission_index;
|
||||||
mavlink_mission_item->param2 = mission_item->do_jump_repeat_count;
|
mavlink_mission_item->param2 = mission_item->do_jump_repeat_count - mission_item->do_jump_current_count;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -630,6 +630,8 @@ Mission::read_mission_item(bool onboard, bool is_current, struct mission_item_s
|
||||||
"ERROR DO JUMP waypoint could not be written");
|
"ERROR DO JUMP waypoint could not be written");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
report_do_jump_mission_changed(*mission_index_ptr,
|
||||||
|
mission_item_tmp.do_jump_repeat_count);
|
||||||
}
|
}
|
||||||
/* set new mission item index and repeat
|
/* set new mission item index and repeat
|
||||||
* we don't have to validate here, if it's invalid, we should realize this later .*/
|
* we don't have to validate here, if it's invalid, we should realize this later .*/
|
||||||
|
@ -700,6 +702,16 @@ Mission::save_offboard_mission_state()
|
||||||
dm_unlock(DM_KEY_MISSION_STATE);
|
dm_unlock(DM_KEY_MISSION_STATE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Mission::report_do_jump_mission_changed(int index, int do_jumps_remaining)
|
||||||
|
{
|
||||||
|
/* inform about the change */
|
||||||
|
_navigator->get_mission_result()->item_do_jump_changed = true;
|
||||||
|
_navigator->get_mission_result()->item_changed_index = index;
|
||||||
|
_navigator->get_mission_result()->item_do_jump_remaining = do_jumps_remaining;
|
||||||
|
_navigator->set_mission_result_updated();
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Mission::set_mission_item_reached()
|
Mission::set_mission_item_reached()
|
||||||
{
|
{
|
||||||
|
|
|
@ -38,6 +38,7 @@
|
||||||
* @author Julian Oes <julian@oes.ch>
|
* @author Julian Oes <julian@oes.ch>
|
||||||
* @author Thomas Gubler <thomasgubler@gmail.com>
|
* @author Thomas Gubler <thomasgubler@gmail.com>
|
||||||
* @author Anton Babushkin <anton.babushkin@me.com>
|
* @author Anton Babushkin <anton.babushkin@me.com>
|
||||||
|
* @author Ban Siesta <bansiesta@gmail.com>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef NAVIGATOR_MISSION_H
|
#ifndef NAVIGATOR_MISSION_H
|
||||||
|
@ -130,6 +131,11 @@ private:
|
||||||
*/
|
*/
|
||||||
void save_offboard_mission_state();
|
void save_offboard_mission_state();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Inform about a changed mission item after a DO_JUMP
|
||||||
|
*/
|
||||||
|
void report_do_jump_mission_changed(int index, int do_jumps_remaining);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set a mission item as reached
|
* Set a mission item as reached
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -61,6 +61,9 @@ struct mission_result_s
|
||||||
bool finished; /**< true if mission has been completed */
|
bool finished; /**< true if mission has been completed */
|
||||||
bool stay_in_failsafe; /**< true if the commander should not switch out of the failsafe mode*/
|
bool stay_in_failsafe; /**< true if the commander should not switch out of the failsafe mode*/
|
||||||
bool flight_termination; /**< true if the navigator demands a flight termination from the commander app */
|
bool flight_termination; /**< true if the navigator demands a flight termination from the commander app */
|
||||||
|
bool item_do_jump_changed; /**< true if the number of do jumps remaining has changed */
|
||||||
|
unsigned item_changed_index; /**< indicate which item has changed */
|
||||||
|
unsigned item_do_jump_remaining;/**< set to the number of do jumps remaining for that item */
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue