mavsdk::Modes Class Reference ​
#include: modes.hpp
Discover and set flight modes at runtime.
The modes are queried from the vehicle using the MAVLink standard modes protocol (AVAILABLE_MODES, CURRENT_MODE). For autopilots that don't implement it, a list of known modes is used as a fallback.
Modes are identified by name. Standard modes have a fixed name, e.g. "Position" or "Mission", other modes use the name reported by the vehicle. Setting a mode works the same way for both.
Data Structures ​
struct Mode
Public Types ​
| Type | Description |
|---|---|
| enum Result | Possible results returned for mode requests. |
| std::function< void(Result)> ResultCallback | Callback type for asynchronous Modes calls. |
| std::function< void(std::vector< Mode >)> AvailableModesCallback | Callback type for subscribe_available_modes. |
| Handle< std::vector< Mode > > AvailableModesHandle | Handle type for subscribe_available_modes. |
| std::function< void(Mode)> CurrentModeCallback | Callback type for subscribe_current_mode. |
| Handle< Mode > CurrentModeHandle | Handle type for subscribe_current_mode. |
Public Member Functions ​
| Type | Name | Description |
|---|---|---|
| Â | Modes (System & system) | Constructor. Creates the plugin for a specific System. |
| Â | Modes (std::shared_ptr< System > system) | Constructor. Creates the plugin for a specific System. |
| Â | ~Modes () override | Destructor (internal use only). |
| Â | Modes (const Modes & other) | Copy constructor. |
| AvailableModesHandle | subscribe_available_modes (const AvailableModesCallback & callback) | Subscribe to the list of available modes. |
| void | unsubscribe_available_modes (AvailableModesHandle handle) | Unsubscribe from subscribe_available_modes. |
| std::vector< Mode > | available_modes () const | Poll for the list of 'Mode' (blocking). |
| CurrentModeHandle | subscribe_current_mode (const CurrentModeCallback & callback) | Subscribe to the current mode. |
| void | unsubscribe_current_mode (CurrentModeHandle handle) | Unsubscribe from subscribe_current_mode. |
| Mode | current_mode () const | Poll for 'Mode' (blocking). |
| void | set_mode_async (std::string name, const ResultCallback callback) | Set mode by name. |
| Result | set_mode (std::string name)const | Set mode by name. |
| const Modes & | operator= (const Modes &)=delete | Equality operator (object is not copyable). |
Constructor & Destructor Documentation ​
Modes() ​
mavsdk::Modes::Modes(System &system)Constructor. Creates the plugin for a specific System.
The plugin is typically created as shown below:
auto modes = Modes(system);Parameters
- System& system - The specific system associated with this plugin.
Modes() ​
mavsdk::Modes::Modes(std::shared_ptr< System > system)Constructor. Creates the plugin for a specific System.
The plugin is typically created as shown below:
auto modes = Modes(system);Parameters
- std::shared_ptr< System > system - The specific system associated with this plugin.
~Modes() ​
mavsdk::Modes::~Modes() overrideDestructor (internal use only).
Modes() ​
mavsdk::Modes::Modes(const Modes &other)Copy constructor.
Parameters
- const Modes& other -
Member Typdef Documentation ​
typedef ResultCallback ​
using mavsdk::Modes::ResultCallback = std::function<void(Result)>Callback type for asynchronous Modes calls.
typedef AvailableModesCallback ​
using mavsdk::Modes::AvailableModesCallback = std::function<void(std::vector<Mode>)>Callback type for subscribe_available_modes.
typedef AvailableModesHandle ​
using mavsdk::Modes::AvailableModesHandle = Handle<std::vector<Mode>>Handle type for subscribe_available_modes.
typedef CurrentModeCallback ​
using mavsdk::Modes::CurrentModeCallback = std::function<void(Mode)>Callback type for subscribe_current_mode.
typedef CurrentModeHandle ​
using mavsdk::Modes::CurrentModeHandle = Handle<Mode>Handle type for subscribe_current_mode.
Member Enumeration Documentation ​
enum Result ​
Possible results returned for mode requests.
| Value | Description |
|---|---|
Unknown | Unknown result. |
Success | Request was successful. |
NoSystem | No system is connected. |
ConnectionError | Connection error. |
Busy | Vehicle is busy. |
Denied | Request was denied, e.g. because the mode can't be entered right now. |
Unsupported | Mode or command is not supported. |
Timeout | Request timed out. |
Failed | Request failed. |
ModeNotFound | No available mode with this name. |
ModesNotKnownYet | The available modes have not been received yet. |
Member Function Documentation ​
subscribe_available_modes() ​
AvailableModesHandle mavsdk::Modes::subscribe_available_modes(const AvailableModesCallback &callback)Subscribe to the list of available modes.
The list is updated whenever the vehicle reports that its modes have changed.
Parameters
- const AvailableModesCallback& callback -
Returns
 AvailableModesHandle -
unsubscribe_available_modes() ​
void mavsdk::Modes::unsubscribe_available_modes(AvailableModesHandle handle)Unsubscribe from subscribe_available_modes.
Parameters
- AvailableModesHandle handle -
available_modes() ​
std::vector< Mode > mavsdk::Modes::available_modes() constPoll for the list of 'Mode' (blocking).
Returns
 std::vector< Mode > - The current list of Mode.
subscribe_current_mode() ​
CurrentModeHandle mavsdk::Modes::subscribe_current_mode(const CurrentModeCallback &callback)Subscribe to the current mode.
Parameters
- const CurrentModeCallback& callback -
Returns
 CurrentModeHandle -
unsubscribe_current_mode() ​
void mavsdk::Modes::unsubscribe_current_mode(CurrentModeHandle handle)Unsubscribe from subscribe_current_mode.
Parameters
- CurrentModeHandle handle -
current_mode() ​
Mode mavsdk::Modes::current_mode() constPoll for 'Mode' (blocking).
Returns
set_mode_async() ​
void mavsdk::Modes::set_mode_async(std::string name, const ResultCallback callback)Set mode by name.
The name needs to match exactly (case-sensitive) the name of one of the available modes.
This function is non-blocking. See 'set_mode' for the blocking counterpart.
Parameters
- std::string name -
- const ResultCallback callback -
set_mode() ​
Result mavsdk::Modes::set_mode(std::string name) constSet mode by name.
The name needs to match exactly (case-sensitive) the name of one of the available modes.
This function is blocking. See 'set_mode_async' for the non-blocking counterpart.
Parameters
- std::string name -
Returns
 Result - Result of request.
operator=() ​
const Modes & mavsdk::Modes::operator=(const Modes &)=deleteEquality operator (object is not copyable).
Parameters
- const Modes& -
Returns
 const Modes & -

