classConfiguration{public:enumclassUsageType{
Autopilot,/**< @brief SDK is used as an autopilot. */
GroundStation,/**< @brief SDK is used as a ground station. */
CompanionComputer,/**< @brief SDK is used as a companion computer on board the MAV. */
Camera,/** < @brief SDK is used as a camera. */
Custom /**< @brief the SDK is used in a custom configuration, no automatic ID will be
provided */};explicitConfiguration(uint8_t system_id,uint8_t component_id,bool always_send_heartbeats);explicitConfiguration(UsageType usage_type);Configuration()=delete;~Configuration()=default;uint8_tget_system_id()const;voidset_system_id(uint8_t system_id);uint8_tget_component_id()const;voidset_component_id(uint8_t component_id);boolget_always_send_heartbeats()const;voidset_always_send_heartbeats(bool always_send_heartbeats);
UsageType get_usage_type()const;voidset_usage_type(UsageType usage_type);private:uint8_t _system_id;uint8_t _component_id;bool _always_send_heartbeats;
UsageType _usage_type;static Mavsdk::Configuration::UsageType usage_type_for_component(uint8_t component_id);};
std::vector<std::shared_ptr<System>>MavsdkImpl::systems()const{
std::vector<std::shared_ptr<System>> systems_result{};
std::lock_guard<std::recursive_mutex>lock(_systems_mutex);for(auto& system : _systems){// We ignore the 0 entry because it's just a null system.// It's only created because the older, deprecated API needs a// reference.if(system.first ==0){continue;}
systems_result.push_back(system.second);}return systems_result;}