text: // Generated by the protocol buffer compiler.  DO NOT EDIT!
  // source: gimbal/gimbal.proto
  
  #ifndef GOOGLE_PROTOBUF_INCLUDED_gimbal_2fgimbal_2eproto
  #define GOOGLE_PROTOBUF_INCLUDED_gimbal_2fgimbal_2eproto
  
  #include <limits>
  #include <string>
  
  #include <google/protobuf/port_def.inc>
  #if PROTOBUF_VERSION < 3011000
  #error This file was generated by a newer version of protoc which is
  #error incompatible with your Protocol Buffer headers. Please update
  #error your headers.
  #endif
  #if 3011002 < PROTOBUF_MIN_PROTOC_VERSION
  #error This file was generated by an older version of protoc which is
  #error incompatible with your Protocol Buffer headers. Please
  #error regenerate this file with a newer version of protoc.
  #endif
  
  #include <google/protobuf/port_undef.inc>
  #include <google/protobuf/io/coded_stream.h>
  #include <google/protobuf/arena.h>
  #include <google/protobuf/arenastring.h>
  #include <google/protobuf/generated_message_table_driven.h>
  #include <google/protobuf/generated_message_util.h>
  #include <google/protobuf/inlined_string_field.h>
  #include <google/protobuf/metadata.h>
  #include <google/protobuf/generated_message_reflection.h>
  #include <google/protobuf/message.h>
  #include <google/protobuf/repeated_field.h>  // IWYU pragma: export
  #include <google/protobuf/extension_set.h>  // IWYU pragma: export
  #include <google/protobuf/generated_enum_reflection.h>
  #include <google/protobuf/unknown_field_set.h>
  // @@protoc_insertion_point(includes)
  #include <google/protobuf/port_def.inc>
  #define PROTOBUF_INTERNAL_EXPORT_gimbal_2fgimbal_2eproto
  PROTOBUF_NAMESPACE_OPEN
  namespace internal {
  class AnyMetadata;
  }  // namespace internal
  PROTOBUF_NAMESPACE_CLOSE
  
  // Internal implementation detail -- do not use these members.
  struct TableStruct_gimbal_2fgimbal_2eproto {
    static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTableField entries[]
      PROTOBUF_SECTION_VARIABLE(protodesc_cold);
    static const ::PROTOBUF_NAMESPACE_ID::internal::AuxillaryParseTableField aux[]
      PROTOBUF_SECTION_VARIABLE(protodesc_cold);
    static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTable schema[7]
      PROTOBUF_SECTION_VARIABLE(protodesc_cold);
    static const ::PROTOBUF_NAMESPACE_ID::internal::FieldMetadata field_metadata[];
    static const ::PROTOBUF_NAMESPACE_ID::internal::SerializationTable serialization_table[];
    static const ::PROTOBUF_NAMESPACE_ID::uint32 offsets[];
  };
  extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_gimbal_2fgimbal_2eproto;
  namespace mavsdk {
  namespace rpc {
  namespace gimbal {
  class GimbalResult;
  class GimbalResultDefaultTypeInternal;
  extern GimbalResultDefaultTypeInternal _GimbalResult_default_instance_;
  class SetModeRequest;
  class SetModeRequestDefaultTypeInternal;
  extern SetModeRequestDefaultTypeInternal _SetModeRequest_default_instance_;
  class SetModeResponse;
  class SetModeResponseDefaultTypeInternal;
  extern SetModeResponseDefaultTypeInternal _SetModeResponse_default_instance_;
  class SetPitchAndYawRequest;
  class SetPitchAndYawRequestDefaultTypeInternal;
  extern SetPitchAndYawRequestDefaultTypeInternal _SetPitchAndYawRequest_default_instance_;
  class SetPitchAndYawResponse;
  class SetPitchAndYawResponseDefaultTypeInternal;
  extern SetPitchAndYawResponseDefaultTypeInternal _SetPitchAndYawResponse_default_instance_;
  class SetRoiLocationRequest;
  class SetRoiLocationRequestDefaultTypeInternal;
  extern SetRoiLocationRequestDefaultTypeInternal _SetRoiLocationRequest_default_instance_;
  class SetRoiLocationResponse;
  class SetRoiLocationResponseDefaultTypeInternal;
  extern SetRoiLocationResponseDefaultTypeInternal _SetRoiLocationResponse_default_instance_;
  }  // namespace gimbal
  }  // namespace rpc
  }  // namespace mavsdk
  PROTOBUF_NAMESPACE_OPEN
  template<> ::mavsdk::rpc::gimbal::GimbalResult* Arena::CreateMaybeMessage<::mavsdk::rpc::gimbal::GimbalResult>(Arena*);
  template<> ::mavsdk::rpc::gimbal::SetModeRequest* Arena::CreateMaybeMessage<::mavsdk::rpc::gimbal::SetModeRequest>(Arena*);
  template<> ::mavsdk::rpc::gimbal::SetModeResponse* Arena::CreateMaybeMessage<::mavsdk::rpc::gimbal::SetModeResponse>(Arena*);
  template<> ::mavsdk::rpc::gimbal::SetPitchAndYawRequest* Arena::CreateMaybeMessage<::mavsdk::rpc::gimbal::SetPitchAndYawRequest>(Arena*);
  template<> ::mavsdk::rpc::gimbal::SetPitchAndYawResponse* Arena::CreateMaybeMessage<::mavsdk::rpc::gimbal::SetPitchAndYawResponse>(Arena*);
  template<> ::mavsdk::rpc::gimbal::SetRoiLocationRequest* Arena::CreateMaybeMessage<::mavsdk::rpc::gimbal::SetRoiLocationRequest>(Arena*);
  template<> ::mavsdk::rpc::gimbal::SetRoiLocationResponse* Arena::CreateMaybeMessage<::mavsdk::rpc::gimbal::SetRoiLocationResponse>(Arena*);
  PROTOBUF_NAMESPACE_CLOSE
  namespace mavsdk {
  namespace rpc {
  namespace gimbal {
  
  enum GimbalResult_Result : int {
    GimbalResult_Result_RESULT_UNKNOWN = 0,
    GimbalResult_Result_RESULT_SUCCESS = 1,
    GimbalResult_Result_RESULT_ERROR = 2,
    GimbalResult_Result_RESULT_TIMEOUT = 3,
    GimbalResult_Result_RESULT_UNSUPPORTED = 4,
    GimbalResult_Result_GimbalResult_Result_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
    GimbalResult_Result_GimbalResult_Result_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
  };
  bool GimbalResult_Result_IsValid(int value);
  constexpr GimbalResult_Result GimbalResult_Result_Result_MIN = GimbalResult_Result_RESULT_UNKNOWN;
  constexpr GimbalResult_Result GimbalResult_Result_Result_MAX = GimbalResult_Result_RESULT_UNSUPPORTED;
  constexpr int GimbalResult_Result_Result_ARRAYSIZE = GimbalResult_Result_Result_MAX + 1;
  
  const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* GimbalResult_Result_descriptor();
  template<typename T>
  inline const std::string& GimbalResult_Result_Name(T enum_t_value) {
    static_assert(::std::is_same<T, GimbalResult_Result>::value ||
      ::std::is_integral<T>::value,
      "Incorrect type passed to function GimbalResult_Result_Name.");
    return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
      GimbalResult_Result_descriptor(), enum_t_value);
  }
  inline bool GimbalResult_Result_Parse(
      const std::string& name, GimbalResult_Result* value) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<GimbalResult_Result>(
      GimbalResult_Result_descriptor(), name, value);
  }
  enum GimbalMode : int {
    GIMBAL_MODE_YAW_FOLLOW = 0,
    GIMBAL_MODE_YAW_LOCK = 1,
    GimbalMode_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
    GimbalMode_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
  };
  bool GimbalMode_IsValid(int value);
  constexpr GimbalMode GimbalMode_MIN = GIMBAL_MODE_YAW_FOLLOW;
  constexpr GimbalMode GimbalMode_MAX = GIMBAL_MODE_YAW_LOCK;
  constexpr int GimbalMode_ARRAYSIZE = GimbalMode_MAX + 1;
  
  const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* GimbalMode_descriptor();
  template<typename T>
  inline const std::string& GimbalMode_Name(T enum_t_value) {
    static_assert(::std::is_same<T, GimbalMode>::value ||
      ::std::is_integral<T>::value,
      "Incorrect type passed to function GimbalMode_Name.");
    return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
      GimbalMode_descriptor(), enum_t_value);
  }
  inline bool GimbalMode_Parse(
      const std::string& name, GimbalMode* value) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<GimbalMode>(
      GimbalMode_descriptor(), name, value);
  }
  // ===================================================================
  
  class SetPitchAndYawRequest :
      public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:mavsdk.rpc.gimbal.SetPitchAndYawRequest) */ {
   public:
    SetPitchAndYawRequest();
    virtual ~SetPitchAndYawRequest();
  
    SetPitchAndYawRequest(const SetPitchAndYawRequest& from);
    SetPitchAndYawRequest(SetPitchAndYawRequest&& from) noexcept
      : SetPitchAndYawRequest() {
      *this = ::std::move(from);
    }
  
    inline SetPitchAndYawRequest& operator=(const SetPitchAndYawRequest& from) {
      CopyFrom(from);
      return *this;
    }
    inline SetPitchAndYawRequest& operator=(SetPitchAndYawRequest&& from) noexcept {
      if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
        if (this != &from) InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
  
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
      return GetDescriptor();
    }
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
      return GetMetadataStatic().descriptor;
    }
    static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
      return GetMetadataStatic().reflection;
    }
    static const SetPitchAndYawRequest& default_instance();
  
    static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
    static inline const SetPitchAndYawRequest* internal_default_instance() {
      return reinterpret_cast<const SetPitchAndYawRequest*>(
                 &_SetPitchAndYawRequest_default_instance_);
    }
    static constexpr int kIndexInFileMessages =
      0;
  
    friend void swap(SetPitchAndYawRequest& a, SetPitchAndYawRequest& b) {
      a.Swap(&b);
    }
    inline void Swap(SetPitchAndYawRequest* other) {
      if (other == this) return;
      InternalSwap(other);
    }
  
    // implements Message ----------------------------------------------
  
    inline SetPitchAndYawRequest* New() const final {
      return CreateMaybeMessage<SetPitchAndYawRequest>(nullptr);
    }
  
    SetPitchAndYawRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
      return CreateMaybeMessage<SetPitchAndYawRequest>(arena);
    }
    void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
    void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
    void CopyFrom(const SetPitchAndYawRequest& from);
    void MergeFrom(const SetPitchAndYawRequest& from);
    PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
    bool IsInitialized() const final;
  
    size_t ByteSizeLong() const final;
    const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
    ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
        ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
    int GetCachedSize() const final { return _cached_size_.Get(); }
  
    private:
    inline void SharedCtor();
    inline void SharedDtor();
    void SetCachedSize(int size) const final;
    void InternalSwap(SetPitchAndYawRequest* other);
    friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
    static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
      return "mavsdk.rpc.gimbal.SetPitchAndYawRequest";
    }
    private:
    inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
      return nullptr;
    }
    inline void* MaybeArenaPtr() const {
      return nullptr;
    }
    public:
  
    ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
    private:
    static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
      ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_gimbal_2fgimbal_2eproto);
      return ::descriptor_table_gimbal_2fgimbal_2eproto.file_level_metadata[kIndexInFileMessages];
    }
  
    public:
  
    // nested types ----------------------------------------------------
  
    // accessors -------------------------------------------------------
  
    enum : int {
      kPitchDegFieldNumber = 1,
      kYawDegFieldNumber = 2,
    };
    // float pitch_deg = 1;
    void clear_pitch_deg();
    float pitch_deg() const;
    void set_pitch_deg(float value);
    private:
    float _internal_pitch_deg() const;
    void _internal_set_pitch_deg(float value);
    public:
  
    // float yaw_deg = 2;
    void clear_yaw_deg();
    float yaw_deg() const;
    void set_yaw_deg(float value);
    private:
    float _internal_yaw_deg() const;
    void _internal_set_yaw_deg(float value);
    public:
  
    // @@protoc_insertion_point(class_scope:mavsdk.rpc.gimbal.SetPitchAndYawRequest)
   private:
    class _Internal;
  
    ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
    float pitch_deg_;
    float yaw_deg_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    friend struct ::TableStruct_gimbal_2fgimbal_2eproto;
  };
  // -------------------------------------------------------------------
  
  class SetPitchAndYawResponse :
      public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:mavsdk.rpc.gimbal.SetPitchAndYawResponse) */ {
   public:
    SetPitchAndYawResponse();
    virtual ~SetPitchAndYawResponse();
  
    SetPitchAndYawResponse(const SetPitchAndYawResponse& from);
    SetPitchAndYawResponse(SetPitchAndYawResponse&& from) noexcept
      : SetPitchAndYawResponse() {
      *this = ::std::move(from);
    }
  
    inline SetPitchAndYawResponse& operator=(const SetPitchAndYawResponse& from) {
      CopyFrom(from);
      return *this;
    }
    inline SetPitchAndYawResponse& operator=(SetPitchAndYawResponse&& from) noexcept {
      if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
        if (this != &from) InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
  
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
      return GetDescriptor();
    }
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
      return GetMetadataStatic().descriptor;
    }
    static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
      return GetMetadataStatic().reflection;
    }
    static const SetPitchAndYawResponse& default_instance();
  
    static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
    static inline const SetPitchAndYawResponse* internal_default_instance() {
      return reinterpret_cast<const SetPitchAndYawResponse*>(
                 &_SetPitchAndYawResponse_default_instance_);
    }
    static constexpr int kIndexInFileMessages =
      1;
  
    friend void swap(SetPitchAndYawResponse& a, SetPitchAndYawResponse& b) {
      a.Swap(&b);
    }
    inline void Swap(SetPitchAndYawResponse* other) {
      if (other == this) return;
      InternalSwap(other);
    }
  
    // implements Message ----------------------------------------------
  
    inline SetPitchAndYawResponse* New() const final {
      return CreateMaybeMessage<SetPitchAndYawResponse>(nullptr);
    }
  
    SetPitchAndYawResponse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
      return CreateMaybeMessage<SetPitchAndYawResponse>(arena);
    }
    void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
    void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
    void CopyFrom(const SetPitchAndYawResponse& from);
    void MergeFrom(const SetPitchAndYawResponse& from);
    PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
    bool IsInitialized() const final;
  
    size_t ByteSizeLong() const final;
    const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
    ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
        ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
    int GetCachedSize() const final { return _cached_size_.Get(); }
  
    private:
    inline void SharedCtor();
    inline void SharedDtor();
    void SetCachedSize(int size) const final;
    void InternalSwap(SetPitchAndYawResponse* other);
    friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
    static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
      return "mavsdk.rpc.gimbal.SetPitchAndYawResponse";
    }
    private:
    inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
      return nullptr;
    }
    inline void* MaybeArenaPtr() const {
      return nullptr;
    }
    public:
  
    ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
    private:
    static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
      ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_gimbal_2fgimbal_2eproto);
      return ::descriptor_table_gimbal_2fgimbal_2eproto.file_level_metadata[kIndexInFileMessages];
    }
  
    public:
  
    // nested types ----------------------------------------------------
  
    // accessors -------------------------------------------------------
  
    enum : int {
      kGimbalResultFieldNumber = 1,
    };
    // .mavsdk.rpc.gimbal.GimbalResult gimbal_result = 1;
    bool has_gimbal_result() const;
    private:
    bool _internal_has_gimbal_result() const;
    public:
    void clear_gimbal_result();
    const ::mavsdk::rpc::gimbal::GimbalResult& gimbal_result() const;
    ::mavsdk::rpc::gimbal::GimbalResult* release_gimbal_result();
    ::mavsdk::rpc::gimbal::GimbalResult* mutable_gimbal_result();
    void set_allocated_gimbal_result(::mavsdk::rpc::gimbal::GimbalResult* gimbal_result);
    private:
    const ::mavsdk::rpc::gimbal::GimbalResult& _internal_gimbal_result() const;
    ::mavsdk::rpc::gimbal::GimbalResult* _internal_mutable_gimbal_result();
    public:
  
    // @@protoc_insertion_point(class_scope:mavsdk.rpc.gimbal.SetPitchAndYawResponse)
   private:
    class _Internal;
  
    ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
    ::mavsdk::rpc::gimbal::GimbalResult* gimbal_result_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    friend struct ::TableStruct_gimbal_2fgimbal_2eproto;
  };
  // -------------------------------------------------------------------
  
  class SetModeRequest :
      public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:mavsdk.rpc.gimbal.SetModeRequest) */ {
   public:
    SetModeRequest();
    virtual ~SetModeRequest();
  
    SetModeRequest(const SetModeRequest& from);
    SetModeRequest(SetModeRequest&& from) noexcept
      : SetModeRequest() {
      *this = ::std::move(from);
    }
  
    inline SetModeRequest& operator=(const SetModeRequest& from) {
      CopyFrom(from);
      return *this;
    }
    inline SetModeRequest& operator=(SetModeRequest&& from) noexcept {
      if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
        if (this != &from) InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
  
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
      return GetDescriptor();
    }
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
      return GetMetadataStatic().descriptor;
    }
    static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
      return GetMetadataStatic().reflection;
    }
    static const SetModeRequest& default_instance();
  
    static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
    static inline const SetModeRequest* internal_default_instance() {
      return reinterpret_cast<const SetModeRequest*>(
                 &_SetModeRequest_default_instance_);
    }
    static constexpr int kIndexInFileMessages =
      2;
  
    friend void swap(SetModeRequest& a, SetModeRequest& b) {
      a.Swap(&b);
    }
    inline void Swap(SetModeRequest* other) {
      if (other == this) return;
      InternalSwap(other);
    }
  
    // implements Message ----------------------------------------------
  
    inline SetModeRequest* New() const final {
      return CreateMaybeMessage<SetModeRequest>(nullptr);
    }
  
    SetModeRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
      return CreateMaybeMessage<SetModeRequest>(arena);
    }
    void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
    void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
    void CopyFrom(const SetModeRequest& from);
    void MergeFrom(const SetModeRequest& from);
    PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
    bool IsInitialized() const final;
  
    size_t ByteSizeLong() const final;
    const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
    ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
        ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
    int GetCachedSize() const final { return _cached_size_.Get(); }
  
    private:
    inline void SharedCtor();
    inline void SharedDtor();
    void SetCachedSize(int size) const final;
    void InternalSwap(SetModeRequest* other);
    friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
    static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
      return "mavsdk.rpc.gimbal.SetModeRequest";
    }
    private:
    inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
      return nullptr;
    }
    inline void* MaybeArenaPtr() const {
      return nullptr;
    }
    public:
  
    ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
    private:
    static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
      ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_gimbal_2fgimbal_2eproto);
      return ::descriptor_table_gimbal_2fgimbal_2eproto.file_level_metadata[kIndexInFileMessages];
    }
  
    public:
  
    // nested types ----------------------------------------------------
  
    // accessors -------------------------------------------------------
  
    enum : int {
      kGimbalModeFieldNumber = 1,
    };
    // .mavsdk.rpc.gimbal.GimbalMode gimbal_mode = 1;
    void clear_gimbal_mode();
    ::mavsdk::rpc::gimbal::GimbalMode gimbal_mode() const;
    void set_gimbal_mode(::mavsdk::rpc::gimbal::GimbalMode value);
    private:
    ::mavsdk::rpc::gimbal::GimbalMode _internal_gimbal_mode() const;
    void _internal_set_gimbal_mode(::mavsdk::rpc::gimbal::GimbalMode value);
    public:
  
    // @@protoc_insertion_point(class_scope:mavsdk.rpc.gimbal.SetModeRequest)
   private:
    class _Internal;
  
    ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
    int gimbal_mode_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    friend struct ::TableStruct_gimbal_2fgimbal_2eproto;
  };
  // -------------------------------------------------------------------
  
  class SetModeResponse :
      public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:mavsdk.rpc.gimbal.SetModeResponse) */ {
   public:
    SetModeResponse();
    virtual ~SetModeResponse();
  
    SetModeResponse(const SetModeResponse& from);
    SetModeResponse(SetModeResponse&& from) noexcept
      : SetModeResponse() {
      *this = ::std::move(from);
    }
  
    inline SetModeResponse& operator=(const SetModeResponse& from) {
      CopyFrom(from);
      return *this;
    }
    inline SetModeResponse& operator=(SetModeResponse&& from) noexcept {
      if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
        if (this != &from) InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
  
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
      return GetDescriptor();
    }
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
      return GetMetadataStatic().descriptor;
    }
    static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
      return GetMetadataStatic().reflection;
    }
    static const SetModeResponse& default_instance();
  
    static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
    static inline const SetModeResponse* internal_default_instance() {
      return reinterpret_cast<const SetModeResponse*>(
                 &_SetModeResponse_default_instance_);
    }
    static constexpr int kIndexInFileMessages =
      3;
  
    friend void swap(SetModeResponse& a, SetModeResponse& b) {
      a.Swap(&b);
    }
    inline void Swap(SetModeResponse* other) {
      if (other == this) return;
      InternalSwap(other);
    }
  
    // implements Message ----------------------------------------------
  
    inline SetModeResponse* New() const final {
      return CreateMaybeMessage<SetModeResponse>(nullptr);
    }
  
    SetModeResponse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
      return CreateMaybeMessage<SetModeResponse>(arena);
    }
    void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
    void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
    void CopyFrom(const SetModeResponse& from);
    void MergeFrom(const SetModeResponse& from);
    PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
    bool IsInitialized() const final;
  
    size_t ByteSizeLong() const final;
    const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
    ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
        ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
    int GetCachedSize() const final { return _cached_size_.Get(); }
  
    private:
    inline void SharedCtor();
    inline void SharedDtor();
    void SetCachedSize(int size) const final;
    void InternalSwap(SetModeResponse* other);
    friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
    static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
      return "mavsdk.rpc.gimbal.SetModeResponse";
    }
    private:
    inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
      return nullptr;
    }
    inline void* MaybeArenaPtr() const {
      return nullptr;
    }
    public:
  
    ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
    private:
    static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
      ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_gimbal_2fgimbal_2eproto);
      return ::descriptor_table_gimbal_2fgimbal_2eproto.file_level_metadata[kIndexInFileMessages];
    }
  
    public:
  
    // nested types ----------------------------------------------------
  
    // accessors -------------------------------------------------------
  
    enum : int {
      kGimbalResultFieldNumber = 1,
    };
    // .mavsdk.rpc.gimbal.GimbalResult gimbal_result = 1;
    bool has_gimbal_result() const;
    private:
    bool _internal_has_gimbal_result() const;
    public:
    void clear_gimbal_result();
    const ::mavsdk::rpc::gimbal::GimbalResult& gimbal_result() const;
    ::mavsdk::rpc::gimbal::GimbalResult* release_gimbal_result();
    ::mavsdk::rpc::gimbal::GimbalResult* mutable_gimbal_result();
    void set_allocated_gimbal_result(::mavsdk::rpc::gimbal::GimbalResult* gimbal_result);
    private:
    const ::mavsdk::rpc::gimbal::GimbalResult& _internal_gimbal_result() const;
    ::mavsdk::rpc::gimbal::GimbalResult* _internal_mutable_gimbal_result();
    public:
  
    // @@protoc_insertion_point(class_scope:mavsdk.rpc.gimbal.SetModeResponse)
   private:
    class _Internal;
  
    ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
    ::mavsdk::rpc::gimbal::GimbalResult* gimbal_result_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    friend struct ::TableStruct_gimbal_2fgimbal_2eproto;
  };
  // -------------------------------------------------------------------
  
  class SetRoiLocationRequest :
      public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:mavsdk.rpc.gimbal.SetRoiLocationRequest) */ {
   public:
    SetRoiLocationRequest();
    virtual ~SetRoiLocationRequest();
  
    SetRoiLocationRequest(const SetRoiLocationRequest& from);
    SetRoiLocationRequest(SetRoiLocationRequest&& from) noexcept
      : SetRoiLocationRequest() {
      *this = ::std::move(from);
    }
  
    inline SetRoiLocationRequest& operator=(const SetRoiLocationRequest& from) {
      CopyFrom(from);
      return *this;
    }
    inline SetRoiLocationRequest& operator=(SetRoiLocationRequest&& from) noexcept {
      if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
        if (this != &from) InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
  
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
      return GetDescriptor();
    }
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
      return GetMetadataStatic().descriptor;
    }
    static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
      return GetMetadataStatic().reflection;
    }
    static const SetRoiLocationRequest& default_instance();
  
    static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
    static inline const SetRoiLocationRequest* internal_default_instance() {
      return reinterpret_cast<const SetRoiLocationRequest*>(
                 &_SetRoiLocationRequest_default_instance_);
    }
    static constexpr int kIndexInFileMessages =
      4;
  
    friend void swap(SetRoiLocationRequest& a, SetRoiLocationRequest& b) {
      a.Swap(&b);
    }
    inline void Swap(SetRoiLocationRequest* other) {
      if (other == this) return;
      InternalSwap(other);
    }
  
    // implements Message ----------------------------------------------
  
    inline SetRoiLocationRequest* New() const final {
      return CreateMaybeMessage<SetRoiLocationRequest>(nullptr);
    }
  
    SetRoiLocationRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
      return CreateMaybeMessage<SetRoiLocationRequest>(arena);
    }
    void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
    void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
    void CopyFrom(const SetRoiLocationRequest& from);
    void MergeFrom(const SetRoiLocationRequest& from);
    PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
    bool IsInitialized() const final;
  
    size_t ByteSizeLong() const final;
    const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
    ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
        ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
    int GetCachedSize() const final { return _cached_size_.Get(); }
  
    private:
    inline void SharedCtor();
    inline void SharedDtor();
    void SetCachedSize(int size) const final;
    void InternalSwap(SetRoiLocationRequest* other);
    friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
    static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
      return "mavsdk.rpc.gimbal.SetRoiLocationRequest";
    }
    private:
    inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
      return nullptr;
    }
    inline void* MaybeArenaPtr() const {
      return nullptr;
    }
    public:
  
    ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
    private:
    static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
      ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_gimbal_2fgimbal_2eproto);
      return ::descriptor_table_gimbal_2fgimbal_2eproto.file_level_metadata[kIndexInFileMessages];
    }
  
    public:
  
    // nested types ----------------------------------------------------
  
    // accessors -------------------------------------------------------
  
    enum : int {
      kLatitudeDegFieldNumber = 1,
      kLongitudeDegFieldNumber = 2,
      kAltitudeMFieldNumber = 3,
    };
    // double latitude_deg = 1;
    void clear_latitude_deg();
    double latitude_deg() const;
    void set_latitude_deg(double value);
    private:
    double _internal_latitude_deg() const;
    void _internal_set_latitude_deg(double value);
    public:
  
    // double longitude_deg = 2;
    void clear_longitude_deg();
    double longitude_deg() const;
    void set_longitude_deg(double value);
    private:
    double _internal_longitude_deg() const;
    void _internal_set_longitude_deg(double value);
    public:
  
    // float altitude_m = 3;
    void clear_altitude_m();
    float altitude_m() const;
    void set_altitude_m(float value);
    private:
    float _internal_altitude_m() const;
    void _internal_set_altitude_m(float value);
    public:
  
    // @@protoc_insertion_point(class_scope:mavsdk.rpc.gimbal.SetRoiLocationRequest)
   private:
    class _Internal;
  
    ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
    double latitude_deg_;
    double longitude_deg_;
    float altitude_m_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    friend struct ::TableStruct_gimbal_2fgimbal_2eproto;
  };
  // -------------------------------------------------------------------
  
  class SetRoiLocationResponse :
      public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:mavsdk.rpc.gimbal.SetRoiLocationResponse) */ {
   public:
    SetRoiLocationResponse();
    virtual ~SetRoiLocationResponse();
  
    SetRoiLocationResponse(const SetRoiLocationResponse& from);
    SetRoiLocationResponse(SetRoiLocationResponse&& from) noexcept
      : SetRoiLocationResponse() {
      *this = ::std::move(from);
    }
  
    inline SetRoiLocationResponse& operator=(const SetRoiLocationResponse& from) {
      CopyFrom(from);
      return *this;
    }
    inline SetRoiLocationResponse& operator=(SetRoiLocationResponse&& from) noexcept {
      if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
        if (this != &from) InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
  
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
      return GetDescriptor();
    }
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
      return GetMetadataStatic().descriptor;
    }
    static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
      return GetMetadataStatic().reflection;
    }
    static const SetRoiLocationResponse& default_instance();
  
    static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
    static inline const SetRoiLocationResponse* internal_default_instance() {
      return reinterpret_cast<const SetRoiLocationResponse*>(
                 &_SetRoiLocationResponse_default_instance_);
    }
    static constexpr int kIndexInFileMessages =
      5;
  
    friend void swap(SetRoiLocationResponse& a, SetRoiLocationResponse& b) {
      a.Swap(&b);
    }
    inline void Swap(SetRoiLocationResponse* other) {
      if (other == this) return;
      InternalSwap(other);
    }
  
    // implements Message ----------------------------------------------
  
    inline SetRoiLocationResponse* New() const final {
      return CreateMaybeMessage<SetRoiLocationResponse>(nullptr);
    }
  
    SetRoiLocationResponse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
      return CreateMaybeMessage<SetRoiLocationResponse>(arena);
    }
    void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
    void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
    void CopyFrom(const SetRoiLocationResponse& from);
    void MergeFrom(const SetRoiLocationResponse& from);
    PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
    bool IsInitialized() const final;
  
    size_t ByteSizeLong() const final;
    const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
    ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
        ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
    int GetCachedSize() const final { return _cached_size_.Get(); }
  
    private:
    inline void SharedCtor();
    inline void SharedDtor();
    void SetCachedSize(int size) const final;
    void InternalSwap(SetRoiLocationResponse* other);
    friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
    static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
      return "mavsdk.rpc.gimbal.SetRoiLocationResponse";
    }
    private:
    inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
      return nullptr;
    }
    inline void* MaybeArenaPtr() const {
      return nullptr;
    }
    public:
  
    ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
    private:
    static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
      ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_gimbal_2fgimbal_2eproto);
      return ::descriptor_table_gimbal_2fgimbal_2eproto.file_level_metadata[kIndexInFileMessages];
    }
  
    public:
  
    // nested types ----------------------------------------------------
  
    // accessors -------------------------------------------------------
  
    enum : int {
      kGimbalResultFieldNumber = 1,
    };
    // .mavsdk.rpc.gimbal.GimbalResult gimbal_result = 1;
    bool has_gimbal_result() const;
    private:
    bool _internal_has_gimbal_result() const;
    public:
    void clear_gimbal_result();
    const ::mavsdk::rpc::gimbal::GimbalResult& gimbal_result() const;
    ::mavsdk::rpc::gimbal::GimbalResult* release_gimbal_result();
    ::mavsdk::rpc::gimbal::GimbalResult* mutable_gimbal_result();
    void set_allocated_gimbal_result(::mavsdk::rpc::gimbal::GimbalResult* gimbal_result);
    private:
    const ::mavsdk::rpc::gimbal::GimbalResult& _internal_gimbal_result() const;
    ::mavsdk::rpc::gimbal::GimbalResult* _internal_mutable_gimbal_result();
    public:
  
    // @@protoc_insertion_point(class_scope:mavsdk.rpc.gimbal.SetRoiLocationResponse)
   private:
    class _Internal;
  
    ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
    ::mavsdk::rpc::gimbal::GimbalResult* gimbal_result_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    friend struct ::TableStruct_gimbal_2fgimbal_2eproto;
  };
  // -------------------------------------------------------------------
  
  class GimbalResult :
      public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:mavsdk.rpc.gimbal.GimbalResult) */ {
   public:
    GimbalResult();
    virtual ~GimbalResult();
  
    GimbalResult(const GimbalResult& from);
    GimbalResult(GimbalResult&& from) noexcept
      : GimbalResult() {
      *this = ::std::move(from);
    }
  
    inline GimbalResult& operator=(const GimbalResult& from) {
      CopyFrom(from);
      return *this;
    }
    inline GimbalResult& operator=(GimbalResult&& from) noexcept {
      if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
        if (this != &from) InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
  
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
      return GetDescriptor();
    }
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
      return GetMetadataStatic().descriptor;
    }
    static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
      return GetMetadataStatic().reflection;
    }
    static const GimbalResult& default_instance();
  
    static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
    static inline const GimbalResult* internal_default_instance() {
      return reinterpret_cast<const GimbalResult*>(
                 &_GimbalResult_default_instance_);
    }
    static constexpr int kIndexInFileMessages =
      6;
  
    friend void swap(GimbalResult& a, GimbalResult& b) {
      a.Swap(&b);
    }
    inline void Swap(GimbalResult* other) {
      if (other == this) return;
      InternalSwap(other);
    }
  
    // implements Message ----------------------------------------------
  
    inline GimbalResult* New() const final {
      return CreateMaybeMessage<GimbalResult>(nullptr);
    }
  
    GimbalResult* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
      return CreateMaybeMessage<GimbalResult>(arena);
    }
    void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
    void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
    void CopyFrom(const GimbalResult& from);
    void MergeFrom(const GimbalResult& from);
    PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
    bool IsInitialized() const final;
  
    size_t ByteSizeLong() const final;
    const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
    ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
        ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
    int GetCachedSize() const final { return _cached_size_.Get(); }
  
    private:
    inline void SharedCtor();
    inline void SharedDtor();
    void SetCachedSize(int size) const final;
    void InternalSwap(GimbalResult* other);
    friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
    static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
      return "mavsdk.rpc.gimbal.GimbalResult";
    }
    private:
    inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
      return nullptr;
    }
    inline void* MaybeArenaPtr() const {
      return nullptr;
    }
    public:
  
    ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
    private:
    static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
      ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_gimbal_2fgimbal_2eproto);
      return ::descriptor_table_gimbal_2fgimbal_2eproto.file_level_metadata[kIndexInFileMessages];
    }
  
    public:
  
    // nested types ----------------------------------------------------
  
    typedef GimbalResult_Result Result;
    static constexpr Result RESULT_UNKNOWN =
      GimbalResult_Result_RESULT_UNKNOWN;
    static constexpr Result RESULT_SUCCESS =
      GimbalResult_Result_RESULT_SUCCESS;
    static constexpr Result RESULT_ERROR =
      GimbalResult_Result_RESULT_ERROR;
    static constexpr Result RESULT_TIMEOUT =
      GimbalResult_Result_RESULT_TIMEOUT;
    static constexpr Result RESULT_UNSUPPORTED =
      GimbalResult_Result_RESULT_UNSUPPORTED;
    static inline bool Result_IsValid(int value) {
      return GimbalResult_Result_IsValid(value);
    }
    static constexpr Result Result_MIN =
      GimbalResult_Result_Result_MIN;
    static constexpr Result Result_MAX =
      GimbalResult_Result_Result_MAX;
    static constexpr int Result_ARRAYSIZE =
      GimbalResult_Result_Result_ARRAYSIZE;
    static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
    Result_descriptor() {
      return GimbalResult_Result_descriptor();
    }
    template<typename T>
    static inline const std::string& Result_Name(T enum_t_value) {
      static_assert(::std::is_same<T, Result>::value ||
        ::std::is_integral<T>::value,
        "Incorrect type passed to function Result_Name.");
      return GimbalResult_Result_Name(enum_t_value);
    }
    static inline bool Result_Parse(const std::string& name,
        Result* value) {
      return GimbalResult_Result_Parse(name, value);
    }
  
    // accessors -------------------------------------------------------
  
    enum : int {
      kResultStrFieldNumber = 2,
      kResultFieldNumber = 1,
    };
    // string result_str = 2;
    void clear_result_str();
    const std::string& result_str() const;
    void set_result_str(const std::string& value);
    void set_result_str(std::string&& value);
    void set_result_str(const char* value);
    void set_result_str(const char* value, size_t size);
    std::string* mutable_result_str();
    std::string* release_result_str();
    void set_allocated_result_str(std::string* result_str);
    private:
    const std::string& _internal_result_str() const;
    void _internal_set_result_str(const std::string& value);
    std::string* _internal_mutable_result_str();
    public:
  
    // .mavsdk.rpc.gimbal.GimbalResult.Result result = 1;
    void clear_result();
    ::mavsdk::rpc::gimbal::GimbalResult_Result result() const;
    void set_result(::mavsdk::rpc::gimbal::GimbalResult_Result value);
    private:
    ::mavsdk::rpc::gimbal::GimbalResult_Result _internal_result() const;
    void _internal_set_result(::mavsdk::rpc::gimbal::GimbalResult_Result value);
    public:
  
    // @@protoc_insertion_point(class_scope:mavsdk.rpc.gimbal.GimbalResult)
   private:
    class _Internal;
  
    ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr result_str_;
    int result_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    friend struct ::TableStruct_gimbal_2fgimbal_2eproto;
  };
  // ===================================================================
  
  
  // ===================================================================
  
  #ifdef __GNUC__
    #pragma GCC diagnostic push
    #pragma GCC diagnostic ignored "-Wstrict-aliasing"
  #endif  // __GNUC__
  // SetPitchAndYawRequest
  
  // float pitch_deg = 1;
  inline void SetPitchAndYawRequest::clear_pitch_deg() {
    pitch_deg_ = 0;
  }
  inline float SetPitchAndYawRequest::_internal_pitch_deg() const {
    return pitch_deg_;
  }
  inline float SetPitchAndYawRequest::pitch_deg() const {
    // @@protoc_insertion_point(field_get:mavsdk.rpc.gimbal.SetPitchAndYawRequest.pitch_deg)
    return _internal_pitch_deg();
  }
  inline void SetPitchAndYawRequest::_internal_set_pitch_deg(float value) {
    
    pitch_deg_ = value;
  }
  inline void SetPitchAndYawRequest::set_pitch_deg(float value) {
    _internal_set_pitch_deg(value);
    // @@protoc_insertion_point(field_set:mavsdk.rpc.gimbal.SetPitchAndYawRequest.pitch_deg)
  }
  
  // float yaw_deg = 2;
  inline void SetPitchAndYawRequest::clear_yaw_deg() {
    yaw_deg_ = 0;
  }
  inline float SetPitchAndYawRequest::_internal_yaw_deg() const {
    return yaw_deg_;
  }
  inline float SetPitchAndYawRequest::yaw_deg() const {
    // @@protoc_insertion_point(field_get:mavsdk.rpc.gimbal.SetPitchAndYawRequest.yaw_deg)
    return _internal_yaw_deg();
  }
  inline void SetPitchAndYawRequest::_internal_set_yaw_deg(float value) {
    
    yaw_deg_ = value;
  }
  inline void SetPitchAndYawRequest::set_yaw_deg(float value) {
    _internal_set_yaw_deg(value);
    // @@protoc_insertion_point(field_set:mavsdk.rpc.gimbal.SetPitchAndYawRequest.yaw_deg)
  }
  
  // -------------------------------------------------------------------
  
  // SetPitchAndYawResponse
  
  // .mavsdk.rpc.gimbal.GimbalResult gimbal_result = 1;
  inline bool SetPitchAndYawResponse::_internal_has_gimbal_result() const {
    return this != internal_default_instance() && gimbal_result_ != nullptr;
  }
  inline bool SetPitchAndYawResponse::has_gimbal_result() const {
    return _internal_has_gimbal_result();
  }
  inline void SetPitchAndYawResponse::clear_gimbal_result() {
    if (GetArenaNoVirtual() == nullptr && gimbal_result_ != nullptr) {
      delete gimbal_result_;
    }
    gimbal_result_ = nullptr;
  }
  inline const ::mavsdk::rpc::gimbal::GimbalResult& SetPitchAndYawResponse::_internal_gimbal_result() const {
    const ::mavsdk::rpc::gimbal::GimbalResult* p = gimbal_result_;
    return p != nullptr ? *p : *reinterpret_cast<const ::mavsdk::rpc::gimbal::GimbalResult*>(
        &::mavsdk::rpc::gimbal::_GimbalResult_default_instance_);
  }
  inline const ::mavsdk::rpc::gimbal::GimbalResult& SetPitchAndYawResponse::gimbal_result() const {
    // @@protoc_insertion_point(field_get:mavsdk.rpc.gimbal.SetPitchAndYawResponse.gimbal_result)
    return _internal_gimbal_result();
  }
  inline ::mavsdk::rpc::gimbal::GimbalResult* SetPitchAndYawResponse::release_gimbal_result() {
    // @@protoc_insertion_point(field_release:mavsdk.rpc.gimbal.SetPitchAndYawResponse.gimbal_result)
    
    ::mavsdk::rpc::gimbal::GimbalResult* temp = gimbal_result_;
    gimbal_result_ = nullptr;
    return temp;
  }
  inline ::mavsdk::rpc::gimbal::GimbalResult* SetPitchAndYawResponse::_internal_mutable_gimbal_result() {
    
    if (gimbal_result_ == nullptr) {
      auto* p = CreateMaybeMessage<::mavsdk::rpc::gimbal::GimbalResult>(GetArenaNoVirtual());
      gimbal_result_ = p;
    }
    return gimbal_result_;
  }
  inline ::mavsdk::rpc::gimbal::GimbalResult* SetPitchAndYawResponse::mutable_gimbal_result() {
    // @@protoc_insertion_point(field_mutable:mavsdk.rpc.gimbal.SetPitchAndYawResponse.gimbal_result)
    return _internal_mutable_gimbal_result();
  }
  inline void SetPitchAndYawResponse::set_allocated_gimbal_result(::mavsdk::rpc::gimbal::GimbalResult* gimbal_result) {
    ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
    if (message_arena == nullptr) {
      delete gimbal_result_;
    }
    if (gimbal_result) {
      ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = nullptr;
      if (message_arena != submessage_arena) {
        gimbal_result = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
            message_arena, gimbal_result, submessage_arena);
      }
      
    } else {
      
    }
    gimbal_result_ = gimbal_result;
    // @@protoc_insertion_point(field_set_allocated:mavsdk.rpc.gimbal.SetPitchAndYawResponse.gimbal_result)
  }
  
  // -------------------------------------------------------------------
  
  // SetModeRequest
  
  // .mavsdk.rpc.gimbal.GimbalMode gimbal_mode = 1;
  inline void SetModeRequest::clear_gimbal_mode() {
    gimbal_mode_ = 0;
  }
  inline ::mavsdk::rpc::gimbal::GimbalMode SetModeRequest::_internal_gimbal_mode() const {
    return static_cast< ::mavsdk::rpc::gimbal::GimbalMode >(gimbal_mode_);
  }
  inline ::mavsdk::rpc::gimbal::GimbalMode SetModeRequest::gimbal_mode() const {
    // @@protoc_insertion_point(field_get:mavsdk.rpc.gimbal.SetModeRequest.gimbal_mode)
    return _internal_gimbal_mode();
  }
  inline void SetModeRequest::_internal_set_gimbal_mode(::mavsdk::rpc::gimbal::GimbalMode value) {
    
    gimbal_mode_ = value;
  }
  inline void SetModeRequest::set_gimbal_mode(::mavsdk::rpc::gimbal::GimbalMode value) {
    _internal_set_gimbal_mode(value);
    // @@protoc_insertion_point(field_set:mavsdk.rpc.gimbal.SetModeRequest.gimbal_mode)
  }
  
  // -------------------------------------------------------------------
  
  // SetModeResponse
  
  // .mavsdk.rpc.gimbal.GimbalResult gimbal_result = 1;
  inline bool SetModeResponse::_internal_has_gimbal_result() const {
    return this != internal_default_instance() && gimbal_result_ != nullptr;
  }
  inline bool SetModeResponse::has_gimbal_result() const {
    return _internal_has_gimbal_result();
  }
  inline void SetModeResponse::clear_gimbal_result() {
    if (GetArenaNoVirtual() == nullptr && gimbal_result_ != nullptr) {
      delete gimbal_result_;
    }
    gimbal_result_ = nullptr;
  }
  inline const ::mavsdk::rpc::gimbal::GimbalResult& SetModeResponse::_internal_gimbal_result() const {
    const ::mavsdk::rpc::gimbal::GimbalResult* p = gimbal_result_;
    return p != nullptr ? *p : *reinterpret_cast<const ::mavsdk::rpc::gimbal::GimbalResult*>(
        &::mavsdk::rpc::gimbal::_GimbalResult_default_instance_);
  }
  inline const ::mavsdk::rpc::gimbal::GimbalResult& SetModeResponse::gimbal_result() const {
    // @@protoc_insertion_point(field_get:mavsdk.rpc.gimbal.SetModeResponse.gimbal_result)
    return _internal_gimbal_result();
  }
  inline ::mavsdk::rpc::gimbal::GimbalResult* SetModeResponse::release_gimbal_result() {
    // @@protoc_insertion_point(field_release:mavsdk.rpc.gimbal.SetModeResponse.gimbal_result)
    
    ::mavsdk::rpc::gimbal::GimbalResult* temp = gimbal_result_;
    gimbal_result_ = nullptr;
    return temp;
  }
  inline ::mavsdk::rpc::gimbal::GimbalResult* SetModeResponse::_internal_mutable_gimbal_result() {
    
    if (gimbal_result_ == nullptr) {
      auto* p = CreateMaybeMessage<::mavsdk::rpc::gimbal::GimbalResult>(GetArenaNoVirtual());
      gimbal_result_ = p;
    }
    return gimbal_result_;
  }
  inline ::mavsdk::rpc::gimbal::GimbalResult* SetModeResponse::mutable_gimbal_result() {
    // @@protoc_insertion_point(field_mutable:mavsdk.rpc.gimbal.SetModeResponse.gimbal_result)
    return _internal_mutable_gimbal_result();
  }
  inline void SetModeResponse::set_allocated_gimbal_result(::mavsdk::rpc::gimbal::GimbalResult* gimbal_result) {
    ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
    if (message_arena == nullptr) {
      delete gimbal_result_;
    }
    if (gimbal_result) {
      ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = nullptr;
      if (message_arena != submessage_arena) {
        gimbal_result = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
            message_arena, gimbal_result, submessage_arena);
      }
      
    } else {
      
    }
    gimbal_result_ = gimbal_result;
    // @@protoc_insertion_point(field_set_allocated:mavsdk.rpc.gimbal.SetModeResponse.gimbal_result)
  }
  
  // -------------------------------------------------------------------
  
  // SetRoiLocationRequest
  
  // double latitude_deg = 1;
  inline void SetRoiLocationRequest::clear_latitude_deg() {
    latitude_deg_ = 0;
  }
  inline double SetRoiLocationRequest::_internal_latitude_deg() const {
    return latitude_deg_;
  }
  inline double SetRoiLocationRequest::latitude_deg() const {
    // @@protoc_insertion_point(field_get:mavsdk.rpc.gimbal.SetRoiLocationRequest.latitude_deg)
    return _internal_latitude_deg();
  }
  inline void SetRoiLocationRequest::_internal_set_latitude_deg(double value) {
    
    latitude_deg_ = value;
  }
  inline void SetRoiLocationRequest::set_latitude_deg(double value) {
    _internal_set_latitude_deg(value);
    // @@protoc_insertion_point(field_set:mavsdk.rpc.gimbal.SetRoiLocationRequest.latitude_deg)
  }
  
  // double longitude_deg = 2;
  inline void SetRoiLocationRequest::clear_longitude_deg() {
    longitude_deg_ = 0;
  }
  inline double SetRoiLocationRequest::_internal_longitude_deg() const {
    return longitude_deg_;
  }
  inline double SetRoiLocationRequest::longitude_deg() const {
    // @@protoc_insertion_point(field_get:mavsdk.rpc.gimbal.SetRoiLocationRequest.longitude_deg)
    return _internal_longitude_deg();
  }
  inline void SetRoiLocationRequest::_internal_set_longitude_deg(double value) {
    
    longitude_deg_ = value;
  }
  inline void SetRoiLocationRequest::set_longitude_deg(double value) {
    _internal_set_longitude_deg(value);
    // @@protoc_insertion_point(field_set:mavsdk.rpc.gimbal.SetRoiLocationRequest.longitude_deg)
  }
  
  // float altitude_m = 3;
  inline void SetRoiLocationRequest::clear_altitude_m() {
    altitude_m_ = 0;
  }
  inline float SetRoiLocationRequest::_internal_altitude_m() const {
    return altitude_m_;
  }
  inline float SetRoiLocationRequest::altitude_m() const {
    // @@protoc_insertion_point(field_get:mavsdk.rpc.gimbal.SetRoiLocationRequest.altitude_m)
    return _internal_altitude_m();
  }
  inline void SetRoiLocationRequest::_internal_set_altitude_m(float value) {
    
    altitude_m_ = value;
  }
  inline void SetRoiLocationRequest::set_altitude_m(float value) {
    _internal_set_altitude_m(value);
    // @@protoc_insertion_point(field_set:mavsdk.rpc.gimbal.SetRoiLocationRequest.altitude_m)
  }
  
  // -------------------------------------------------------------------
  
  // SetRoiLocationResponse
  
  // .mavsdk.rpc.gimbal.GimbalResult gimbal_result = 1;
  inline bool SetRoiLocationResponse::_internal_has_gimbal_result() const {
    return this != internal_default_instance() && gimbal_result_ != nullptr;
  }
  inline bool SetRoiLocationResponse::has_gimbal_result() const {
    return _internal_has_gimbal_result();
  }
  inline void SetRoiLocationResponse::clear_gimbal_result() {
    if (GetArenaNoVirtual() == nullptr && gimbal_result_ != nullptr) {
      delete gimbal_result_;
    }
    gimbal_result_ = nullptr;
  }
  inline const ::mavsdk::rpc::gimbal::GimbalResult& SetRoiLocationResponse::_internal_gimbal_result() const {
    const ::mavsdk::rpc::gimbal::GimbalResult* p = gimbal_result_;
    return p != nullptr ? *p : *reinterpret_cast<const ::mavsdk::rpc::gimbal::GimbalResult*>(
        &::mavsdk::rpc::gimbal::_GimbalResult_default_instance_);
  }
  inline const ::mavsdk::rpc::gimbal::GimbalResult& SetRoiLocationResponse::gimbal_result() const {
    // @@protoc_insertion_point(field_get:mavsdk.rpc.gimbal.SetRoiLocationResponse.gimbal_result)
    return _internal_gimbal_result();
  }
  inline ::mavsdk::rpc::gimbal::GimbalResult* SetRoiLocationResponse::release_gimbal_result() {
    // @@protoc_insertion_point(field_release:mavsdk.rpc.gimbal.SetRoiLocationResponse.gimbal_result)
    
    ::mavsdk::rpc::gimbal::GimbalResult* temp = gimbal_result_;
    gimbal_result_ = nullptr;
    return temp;
  }
  inline ::mavsdk::rpc::gimbal::GimbalResult* SetRoiLocationResponse::_internal_mutable_gimbal_result() {
    
    if (gimbal_result_ == nullptr) {
      auto* p = CreateMaybeMessage<::mavsdk::rpc::gimbal::GimbalResult>(GetArenaNoVirtual());
      gimbal_result_ = p;
    }
    return gimbal_result_;
  }
  inline ::mavsdk::rpc::gimbal::GimbalResult* SetRoiLocationResponse::mutable_gimbal_result() {
    // @@protoc_insertion_point(field_mutable:mavsdk.rpc.gimbal.SetRoiLocationResponse.gimbal_result)
    return _internal_mutable_gimbal_result();
  }
  inline void SetRoiLocationResponse::set_allocated_gimbal_result(::mavsdk::rpc::gimbal::GimbalResult* gimbal_result) {
    ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
    if (message_arena == nullptr) {
      delete gimbal_result_;
    }
    if (gimbal_result) {
      ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = nullptr;
      if (message_arena != submessage_arena) {
        gimbal_result = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
            message_arena, gimbal_result, submessage_arena);
      }
      
    } else {
      
    }
    gimbal_result_ = gimbal_result;
    // @@protoc_insertion_point(field_set_allocated:mavsdk.rpc.gimbal.SetRoiLocationResponse.gimbal_result)
  }
  
  // -------------------------------------------------------------------
  
  // GimbalResult
  
  // .mavsdk.rpc.gimbal.GimbalResult.Result result = 1;
  inline void GimbalResult::clear_result() {
    result_ = 0;
  }
  inline ::mavsdk::rpc::gimbal::GimbalResult_Result GimbalResult::_internal_result() const {
    return static_cast< ::mavsdk::rpc::gimbal::GimbalResult_Result >(result_);
  }
  inline ::mavsdk::rpc::gimbal::GimbalResult_Result GimbalResult::result() const {
    // @@protoc_insertion_point(field_get:mavsdk.rpc.gimbal.GimbalResult.result)
    return _internal_result();
  }
  inline void GimbalResult::_internal_set_result(::mavsdk::rpc::gimbal::GimbalResult_Result value) {
    
    result_ = value;
  }
  inline void GimbalResult::set_result(::mavsdk::rpc::gimbal::GimbalResult_Result value) {
    _internal_set_result(value);
    // @@protoc_insertion_point(field_set:mavsdk.rpc.gimbal.GimbalResult.result)
  }
  
  // string result_str = 2;
  inline void GimbalResult::clear_result_str() {
    result_str_.ClearToEmptyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  }
  inline const std::string& GimbalResult::result_str() const {
    // @@protoc_insertion_point(field_get:mavsdk.rpc.gimbal.GimbalResult.result_str)
    return _internal_result_str();
  }
  inline void GimbalResult::set_result_str(const std::string& value) {
    _internal_set_result_str(value);
    // @@protoc_insertion_point(field_set:mavsdk.rpc.gimbal.GimbalResult.result_str)
  }
  inline std::string* GimbalResult::mutable_result_str() {
    // @@protoc_insertion_point(field_mutable:mavsdk.rpc.gimbal.GimbalResult.result_str)
    return _internal_mutable_result_str();
  }
  inline const std::string& GimbalResult::_internal_result_str() const {
    return result_str_.GetNoArena();
  }
  inline void GimbalResult::_internal_set_result_str(const std::string& value) {
    
    result_str_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), value);
  }
  inline void GimbalResult::set_result_str(std::string&& value) {
    
    result_str_.SetNoArena(
      &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
    // @@protoc_insertion_point(field_set_rvalue:mavsdk.rpc.gimbal.GimbalResult.result_str)
  }
  inline void GimbalResult::set_result_str(const char* value) {
    GOOGLE_DCHECK(value != nullptr);
    
    result_str_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
    // @@protoc_insertion_point(field_set_char:mavsdk.rpc.gimbal.GimbalResult.result_str)
  }
  inline void GimbalResult::set_result_str(const char* value, size_t size) {
    
    result_str_.SetNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
        ::std::string(reinterpret_cast<const char*>(value), size));
    // @@protoc_insertion_point(field_set_pointer:mavsdk.rpc.gimbal.GimbalResult.result_str)
  }
  inline std::string* GimbalResult::_internal_mutable_result_str() {
    
    return result_str_.MutableNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  }
  inline std::string* GimbalResult::release_result_str() {
    // @@protoc_insertion_point(field_release:mavsdk.rpc.gimbal.GimbalResult.result_str)
    
    return result_str_.ReleaseNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  }
  inline void GimbalResult::set_allocated_result_str(std::string* result_str) {
    if (result_str != nullptr) {
      
    } else {
      
    }
    result_str_.SetAllocatedNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), result_str);
    // @@protoc_insertion_point(field_set_allocated:mavsdk.rpc.gimbal.GimbalResult.result_str)
  }
  
  #ifdef __GNUC__
    #pragma GCC diagnostic pop
  #endif  // __GNUC__
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  
  // @@protoc_insertion_point(namespace_scope)
  
  }  // namespace gimbal
  }  // namespace rpc
  }  // namespace mavsdk
  
  PROTOBUF_NAMESPACE_OPEN
  
  template <> struct is_proto_enum< ::mavsdk::rpc::gimbal::GimbalResult_Result> : ::std::true_type {};
  template <>
  inline const EnumDescriptor* GetEnumDescriptor< ::mavsdk::rpc::gimbal::GimbalResult_Result>() {
    return ::mavsdk::rpc::gimbal::GimbalResult_Result_descriptor();
  }
  template <> struct is_proto_enum< ::mavsdk::rpc::gimbal::GimbalMode> : ::std::true_type {};
  template <>
  inline const EnumDescriptor* GetEnumDescriptor< ::mavsdk::rpc::gimbal::GimbalMode>() {
    return ::mavsdk::rpc::gimbal::GimbalMode_descriptor();
  }
  
  PROTOBUF_NAMESPACE_CLOSE
  
  // @@protoc_insertion_point(global_scope)
  
  #include <google/protobuf/port_undef.inc>
  #endif  // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_gimbal_2fgimbal_2eproto
  