commander: define user-selectable flight modes separately from valid flight modes

This commit is contained in:
Daniel Mesham
2023-06-23 23:41:50 +02:00
committed by Matthias Grob
parent b2edd25968
commit 5bb811f8f9
3 changed files with 17 additions and 2 deletions
+3 -1
View File
@@ -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) {
+3 -1
View File
@@ -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) { }
+11
View File
@@ -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",