mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-11-08 13:21:36 +08:00
commander: define user-selectable flight modes separately from valid flight modes
This commit is contained in:
committed by
Matthias Grob
parent
b2edd25968
commit
5bb811f8f9
@@ -519,7 +519,9 @@ void ModeManagement::checkConfigOverrides()
|
||||
void ModeManagement::getModeStatus(uint32_t &valid_nav_state_mask, uint32_t &can_set_nav_state_mask) const
|
||||
{
|
||||
valid_nav_state_mask = mode_util::getValidNavStates();
|
||||
can_set_nav_state_mask = valid_nav_state_mask & ~(1u << vehicle_status_s::NAVIGATION_STATE_TERMINATION);
|
||||
const uint32_t selectable_nav_state_mask = mode_util::getSelectableNavStates();
|
||||
can_set_nav_state_mask = valid_nav_state_mask & selectable_nav_state_mask & ~(1u <<
|
||||
vehicle_status_s::NAVIGATION_STATE_TERMINATION);
|
||||
|
||||
// Add external modes
|
||||
for (int i = Modes::FIRST_EXTERNAL_NAV_STATE; i <= Modes::LAST_EXTERNAL_NAV_STATE; ++i) {
|
||||
|
||||
@@ -213,7 +213,9 @@ public:
|
||||
void getModeStatus(uint32_t &valid_nav_state_mask, uint32_t &can_set_nav_state_mask) const
|
||||
{
|
||||
valid_nav_state_mask = mode_util::getValidNavStates();
|
||||
can_set_nav_state_mask = valid_nav_state_mask & ~(1u << vehicle_status_s::NAVIGATION_STATE_TERMINATION);
|
||||
const uint32_t selectable_nav_state_mask = mode_util::getSelectableNavStates();
|
||||
can_set_nav_state_mask = valid_nav_state_mask & selectable_nav_state_mask & ~(1u <<
|
||||
vehicle_status_s::NAVIGATION_STATE_TERMINATION);
|
||||
}
|
||||
|
||||
void updateActiveConfigOverrides(uint8_t nav_state, config_overrides_s &overrides_in_out) { }
|
||||
|
||||
@@ -65,6 +65,17 @@ static inline uint32_t getValidNavStates()
|
||||
static_assert(vehicle_status_s::NAVIGATION_STATE_MAX == 31, "code requires update");
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Bitmask with all selectable modes
|
||||
*/
|
||||
static inline uint32_t getSelectableNavStates()
|
||||
{
|
||||
return (1u << vehicle_status_s::NAVIGATION_STATE_ALTCTL) |
|
||||
(1u << vehicle_status_s::NAVIGATION_STATE_POSCTL);
|
||||
|
||||
static_assert(vehicle_status_s::NAVIGATION_STATE_MAX == 31, "code requires update");
|
||||
}
|
||||
|
||||
const char *const nav_state_names[vehicle_status_s::NAVIGATION_STATE_MAX] = {
|
||||
"Manual",
|
||||
"Altitude",
|
||||
|
||||
Reference in New Issue
Block a user