mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-05-27 10:17:45 +08:00
fixed-wing landing: dont allow land abort while flaring
This commit is contained in:
committed by
Daniel Agar
parent
a8c2eaf3e0
commit
4b036e6723
@@ -617,42 +617,45 @@ FixedwingPositionControl::landing_status_publish()
|
|||||||
void
|
void
|
||||||
FixedwingPositionControl::updateLandingAbortStatus(const uint8_t new_abort_status)
|
FixedwingPositionControl::updateLandingAbortStatus(const uint8_t new_abort_status)
|
||||||
{
|
{
|
||||||
// only announce changes
|
if (!_flare_states.flaring) {
|
||||||
if (new_abort_status > 0 && _landing_abort_status != new_abort_status) {
|
|
||||||
|
|
||||||
switch (new_abort_status) {
|
// only announce changes
|
||||||
case (position_controller_landing_status_s::ABORTED_BY_OPERATOR): {
|
if (new_abort_status > 0 && _landing_abort_status != new_abort_status) {
|
||||||
mavlink_log_critical(&_mavlink_log_pub, "Landing aborted by operator\t");
|
|
||||||
events::send(events::ID("fixedwing_position_control_landing_abort_status_operator_abort"), events::Log::Critical,
|
|
||||||
"Landing aborted by operator");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case (position_controller_landing_status_s::TERRAIN_NOT_FOUND): {
|
switch (new_abort_status) {
|
||||||
mavlink_log_critical(&_mavlink_log_pub, "Landing aborted: terrain estimate not found\t");
|
case (position_controller_landing_status_s::ABORTED_BY_OPERATOR): {
|
||||||
events::send(events::ID("fixedwing_position_control_landing_abort_status_terrain_not_found"), events::Log::Critical,
|
mavlink_log_critical(&_mavlink_log_pub, "Landing aborted by operator\t");
|
||||||
"Landing aborted: terrain measurement not found");
|
events::send(events::ID("fixedwing_position_control_landing_abort_status_operator_abort"), events::Log::Critical,
|
||||||
break;
|
"Landing aborted by operator");
|
||||||
}
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case (position_controller_landing_status_s::TERRAIN_TIMEOUT): {
|
case (position_controller_landing_status_s::TERRAIN_NOT_FOUND): {
|
||||||
mavlink_log_critical(&_mavlink_log_pub, "Landing aborted: terrain estimate timed out\t");
|
mavlink_log_critical(&_mavlink_log_pub, "Landing aborted: terrain estimate not found\t");
|
||||||
events::send(events::ID("fixedwing_position_control_landing_abort_status_terrain_timeout"), events::Log::Critical,
|
events::send(events::ID("fixedwing_position_control_landing_abort_status_terrain_not_found"), events::Log::Critical,
|
||||||
"Landing aborted: terrain estimate timed out");
|
"Landing aborted: terrain measurement not found");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
default: {
|
case (position_controller_landing_status_s::TERRAIN_TIMEOUT): {
|
||||||
mavlink_log_critical(&_mavlink_log_pub, "Landing aborted: unknown criterion\t");
|
mavlink_log_critical(&_mavlink_log_pub, "Landing aborted: terrain estimate timed out\t");
|
||||||
events::send(events::ID("fixedwing_position_control_landing_abort_status_unknown_criterion"), events::Log::Critical,
|
events::send(events::ID("fixedwing_position_control_landing_abort_status_terrain_timeout"), events::Log::Critical,
|
||||||
"Landing aborted: unknown criterion");
|
"Landing aborted: terrain estimate timed out");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
default: {
|
||||||
|
mavlink_log_critical(&_mavlink_log_pub, "Landing aborted: unknown criterion\t");
|
||||||
|
events::send(events::ID("fixedwing_position_control_landing_abort_status_unknown_criterion"), events::Log::Critical,
|
||||||
|
"Landing aborted: unknown criterion");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
_landing_abort_status = (new_abort_status >= position_controller_landing_status_s::UNKNOWN_ABORT_CRITERION) ?
|
_landing_abort_status = (new_abort_status >= position_controller_landing_status_s::UNKNOWN_ABORT_CRITERION) ?
|
||||||
position_controller_landing_status_s::UNKNOWN_ABORT_CRITERION : new_abort_status;
|
position_controller_landing_status_s::UNKNOWN_ABORT_CRITERION : new_abort_status;
|
||||||
landing_status_publish();
|
landing_status_publish();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
Reference in New Issue
Block a user