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 < 3020000
  #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 3020001 < 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_bases.h>
  #include <google/protobuf/generated_message_util.h>
  #include <google/protobuf/metadata_lite.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 uint32_t offsets[];
  };
  extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_gimbal_2fgimbal_2eproto;
  namespace mavsdk {
  namespace rpc {
  namespace gimbal {
  class ControlResponse;
  struct ControlResponseDefaultTypeInternal;
  extern ControlResponseDefaultTypeInternal _ControlResponse_default_instance_;
  class ControlStatus;
  struct ControlStatusDefaultTypeInternal;
  extern ControlStatusDefaultTypeInternal _ControlStatus_default_instance_;
  class GimbalResult;
  struct GimbalResultDefaultTypeInternal;
  extern GimbalResultDefaultTypeInternal _GimbalResult_default_instance_;
  class ReleaseControlRequest;
  struct ReleaseControlRequestDefaultTypeInternal;
  extern ReleaseControlRequestDefaultTypeInternal _ReleaseControlRequest_default_instance_;
  class ReleaseControlResponse;
  struct ReleaseControlResponseDefaultTypeInternal;
  extern ReleaseControlResponseDefaultTypeInternal _ReleaseControlResponse_default_instance_;
  class SetModeRequest;
  struct SetModeRequestDefaultTypeInternal;
  extern SetModeRequestDefaultTypeInternal _SetModeRequest_default_instance_;
  class SetModeResponse;
  struct SetModeResponseDefaultTypeInternal;
  extern SetModeResponseDefaultTypeInternal _SetModeResponse_default_instance_;
  class SetPitchAndYawRequest;
  struct SetPitchAndYawRequestDefaultTypeInternal;
  extern SetPitchAndYawRequestDefaultTypeInternal _SetPitchAndYawRequest_default_instance_;
  class SetPitchAndYawResponse;
  struct SetPitchAndYawResponseDefaultTypeInternal;
  extern SetPitchAndYawResponseDefaultTypeInternal _SetPitchAndYawResponse_default_instance_;
  class SetPitchRateAndYawRateRequest;
  struct SetPitchRateAndYawRateRequestDefaultTypeInternal;
  extern SetPitchRateAndYawRateRequestDefaultTypeInternal _SetPitchRateAndYawRateRequest_default_instance_;
  class SetPitchRateAndYawRateResponse;
  struct SetPitchRateAndYawRateResponseDefaultTypeInternal;
  extern SetPitchRateAndYawRateResponseDefaultTypeInternal _SetPitchRateAndYawRateResponse_default_instance_;
  class SetRoiLocationRequest;
  struct SetRoiLocationRequestDefaultTypeInternal;
  extern SetRoiLocationRequestDefaultTypeInternal _SetRoiLocationRequest_default_instance_;
  class SetRoiLocationResponse;
  struct SetRoiLocationResponseDefaultTypeInternal;
  extern SetRoiLocationResponseDefaultTypeInternal _SetRoiLocationResponse_default_instance_;
  class SubscribeControlRequest;
  struct SubscribeControlRequestDefaultTypeInternal;
  extern SubscribeControlRequestDefaultTypeInternal _SubscribeControlRequest_default_instance_;
  class TakeControlRequest;
  struct TakeControlRequestDefaultTypeInternal;
  extern TakeControlRequestDefaultTypeInternal _TakeControlRequest_default_instance_;
  class TakeControlResponse;
  struct TakeControlResponseDefaultTypeInternal;
  extern TakeControlResponseDefaultTypeInternal _TakeControlResponse_default_instance_;
  }  // namespace gimbal
  }  // namespace rpc
  }  // namespace mavsdk
  PROTOBUF_NAMESPACE_OPEN
  template<> ::mavsdk::rpc::gimbal::ControlResponse* Arena::CreateMaybeMessage<::mavsdk::rpc::gimbal::ControlResponse>(Arena*);
  template<> ::mavsdk::rpc::gimbal::ControlStatus* Arena::CreateMaybeMessage<::mavsdk::rpc::gimbal::ControlStatus>(Arena*);
  template<> ::mavsdk::rpc::gimbal::GimbalResult* Arena::CreateMaybeMessage<::mavsdk::rpc::gimbal::GimbalResult>(Arena*);
  template<> ::mavsdk::rpc::gimbal::ReleaseControlRequest* Arena::CreateMaybeMessage<::mavsdk::rpc::gimbal::ReleaseControlRequest>(Arena*);
  template<> ::mavsdk::rpc::gimbal::ReleaseControlResponse* Arena::CreateMaybeMessage<::mavsdk::rpc::gimbal::ReleaseControlResponse>(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::SetPitchRateAndYawRateRequest* Arena::CreateMaybeMessage<::mavsdk::rpc::gimbal::SetPitchRateAndYawRateRequest>(Arena*);
  template<> ::mavsdk::rpc::gimbal::SetPitchRateAndYawRateResponse* Arena::CreateMaybeMessage<::mavsdk::rpc::gimbal::SetPitchRateAndYawRateResponse>(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*);
  template<> ::mavsdk::rpc::gimbal::SubscribeControlRequest* Arena::CreateMaybeMessage<::mavsdk::rpc::gimbal::SubscribeControlRequest>(Arena*);
  template<> ::mavsdk::rpc::gimbal::TakeControlRequest* Arena::CreateMaybeMessage<::mavsdk::rpc::gimbal::TakeControlRequest>(Arena*);
  template<> ::mavsdk::rpc::gimbal::TakeControlResponse* Arena::CreateMaybeMessage<::mavsdk::rpc::gimbal::TakeControlResponse>(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_RESULT_NO_SYSTEM = 5,
    GimbalResult_Result_GimbalResult_Result_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<int32_t>::min(),
    GimbalResult_Result_GimbalResult_Result_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<int32_t>::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_NO_SYSTEM;
  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(
      ::PROTOBUF_NAMESPACE_ID::ConstStringParam 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<int32_t>::min(),
    GimbalMode_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<int32_t>::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(
      ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, GimbalMode* value) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<GimbalMode>(
      GimbalMode_descriptor(), name, value);
  }
  enum ControlMode : int {
    CONTROL_MODE_NONE = 0,
    CONTROL_MODE_PRIMARY = 1,
    CONTROL_MODE_SECONDARY = 2,
    ControlMode_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<int32_t>::min(),
    ControlMode_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<int32_t>::max()
  };
  bool ControlMode_IsValid(int value);
  constexpr ControlMode ControlMode_MIN = CONTROL_MODE_NONE;
  constexpr ControlMode ControlMode_MAX = CONTROL_MODE_SECONDARY;
  constexpr int ControlMode_ARRAYSIZE = ControlMode_MAX + 1;
  
  const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ControlMode_descriptor();
  template<typename T>
  inline const std::string& ControlMode_Name(T enum_t_value) {
    static_assert(::std::is_same<T, ControlMode>::value ||
      ::std::is_integral<T>::value,
      "Incorrect type passed to function ControlMode_Name.");
    return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
      ControlMode_descriptor(), enum_t_value);
  }
  inline bool ControlMode_Parse(
      ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, ControlMode* value) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<ControlMode>(
      ControlMode_descriptor(), name, value);
  }
  // ===================================================================
  
  class SetPitchAndYawRequest final :
      public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:mavsdk.rpc.gimbal.SetPitchAndYawRequest) */ {
   public:
    inline SetPitchAndYawRequest() : SetPitchAndYawRequest(nullptr) {}
    ~SetPitchAndYawRequest() override;
    explicit PROTOBUF_CONSTEXPR SetPitchAndYawRequest(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
  
    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 (this == &from) return *this;
      if (GetOwningArena() == from.GetOwningArena()
    #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
          && GetOwningArena() != nullptr
    #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
      ) {
        InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
  
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
      return GetDescriptor();
    }
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
      return default_instance().GetMetadata().descriptor;
    }
    static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
      return default_instance().GetMetadata().reflection;
    }
    static const SetPitchAndYawRequest& default_instance() {
      return *internal_default_instance();
    }
    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;
    #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
      if (GetOwningArena() != nullptr &&
          GetOwningArena() == other->GetOwningArena()) {
     #else  // PROTOBUF_FORCE_COPY_IN_SWAP
      if (GetOwningArena() == other->GetOwningArena()) {
    #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
        InternalSwap(other);
      } else {
        ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
      }
    }
    void UnsafeArenaSwap(SetPitchAndYawRequest* other) {
      if (other == this) return;
      GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
      InternalSwap(other);
    }
  
    // implements Message ----------------------------------------------
  
    SetPitchAndYawRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
      return CreateMaybeMessage<SetPitchAndYawRequest>(arena);
    }
    using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
    void CopyFrom(const SetPitchAndYawRequest& from);
    using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
    void MergeFrom(const SetPitchAndYawRequest& from);
    private:
    static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
    public:
    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;
    uint8_t* _InternalSerialize(
        uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
    int GetCachedSize() const final { return _cached_size_.Get(); }
  
    private:
    void SharedCtor();
    void SharedDtor();
    void SetCachedSize(int size) const final;
    void InternalSwap(SetPitchAndYawRequest* other);
  
    private:
    friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
    static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
      return "mavsdk.rpc.gimbal.SetPitchAndYawRequest";
    }
    protected:
    explicit SetPitchAndYawRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned = false);
    public:
  
    static const ClassData _class_data_;
    const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
  
    ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  
    // 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;
  
    template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
    typedef void InternalArenaConstructable_;
    typedef void DestructorSkippable_;
    float pitch_deg_;
    float yaw_deg_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    friend struct ::TableStruct_gimbal_2fgimbal_2eproto;
  };
  // -------------------------------------------------------------------
  
  class SetPitchAndYawResponse final :
      public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:mavsdk.rpc.gimbal.SetPitchAndYawResponse) */ {
   public:
    inline SetPitchAndYawResponse() : SetPitchAndYawResponse(nullptr) {}
    ~SetPitchAndYawResponse() override;
    explicit PROTOBUF_CONSTEXPR SetPitchAndYawResponse(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
  
    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 (this == &from) return *this;
      if (GetOwningArena() == from.GetOwningArena()
    #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
          && GetOwningArena() != nullptr
    #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
      ) {
        InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
  
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
      return GetDescriptor();
    }
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
      return default_instance().GetMetadata().descriptor;
    }
    static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
      return default_instance().GetMetadata().reflection;
    }
    static const SetPitchAndYawResponse& default_instance() {
      return *internal_default_instance();
    }
    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;
    #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
      if (GetOwningArena() != nullptr &&
          GetOwningArena() == other->GetOwningArena()) {
     #else  // PROTOBUF_FORCE_COPY_IN_SWAP
      if (GetOwningArena() == other->GetOwningArena()) {
    #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
        InternalSwap(other);
      } else {
        ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
      }
    }
    void UnsafeArenaSwap(SetPitchAndYawResponse* other) {
      if (other == this) return;
      GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
      InternalSwap(other);
    }
  
    // implements Message ----------------------------------------------
  
    SetPitchAndYawResponse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
      return CreateMaybeMessage<SetPitchAndYawResponse>(arena);
    }
    using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
    void CopyFrom(const SetPitchAndYawResponse& from);
    using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
    void MergeFrom(const SetPitchAndYawResponse& from);
    private:
    static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
    public:
    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;
    uint8_t* _InternalSerialize(
        uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
    int GetCachedSize() const final { return _cached_size_.Get(); }
  
    private:
    void SharedCtor();
    void SharedDtor();
    void SetCachedSize(int size) const final;
    void InternalSwap(SetPitchAndYawResponse* other);
  
    private:
    friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
    static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
      return "mavsdk.rpc.gimbal.SetPitchAndYawResponse";
    }
    protected:
    explicit SetPitchAndYawResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned = false);
    public:
  
    static const ClassData _class_data_;
    const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
  
    ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  
    // 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;
    PROTOBUF_NODISCARD ::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:
    void unsafe_arena_set_allocated_gimbal_result(
        ::mavsdk::rpc::gimbal::GimbalResult* gimbal_result);
    ::mavsdk::rpc::gimbal::GimbalResult* unsafe_arena_release_gimbal_result();
  
    // @@protoc_insertion_point(class_scope:mavsdk.rpc.gimbal.SetPitchAndYawResponse)
   private:
    class _Internal;
  
    template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
    typedef void InternalArenaConstructable_;
    typedef void DestructorSkippable_;
    ::mavsdk::rpc::gimbal::GimbalResult* gimbal_result_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    friend struct ::TableStruct_gimbal_2fgimbal_2eproto;
  };
  // -------------------------------------------------------------------
  
  class SetPitchRateAndYawRateRequest final :
      public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:mavsdk.rpc.gimbal.SetPitchRateAndYawRateRequest) */ {
   public:
    inline SetPitchRateAndYawRateRequest() : SetPitchRateAndYawRateRequest(nullptr) {}
    ~SetPitchRateAndYawRateRequest() override;
    explicit PROTOBUF_CONSTEXPR SetPitchRateAndYawRateRequest(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
  
    SetPitchRateAndYawRateRequest(const SetPitchRateAndYawRateRequest& from);
    SetPitchRateAndYawRateRequest(SetPitchRateAndYawRateRequest&& from) noexcept
      : SetPitchRateAndYawRateRequest() {
      *this = ::std::move(from);
    }
  
    inline SetPitchRateAndYawRateRequest& operator=(const SetPitchRateAndYawRateRequest& from) {
      CopyFrom(from);
      return *this;
    }
    inline SetPitchRateAndYawRateRequest& operator=(SetPitchRateAndYawRateRequest&& from) noexcept {
      if (this == &from) return *this;
      if (GetOwningArena() == from.GetOwningArena()
    #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
          && GetOwningArena() != nullptr
    #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
      ) {
        InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
  
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
      return GetDescriptor();
    }
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
      return default_instance().GetMetadata().descriptor;
    }
    static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
      return default_instance().GetMetadata().reflection;
    }
    static const SetPitchRateAndYawRateRequest& default_instance() {
      return *internal_default_instance();
    }
    static inline const SetPitchRateAndYawRateRequest* internal_default_instance() {
      return reinterpret_cast<const SetPitchRateAndYawRateRequest*>(
                 &_SetPitchRateAndYawRateRequest_default_instance_);
    }
    static constexpr int kIndexInFileMessages =
      2;
  
    friend void swap(SetPitchRateAndYawRateRequest& a, SetPitchRateAndYawRateRequest& b) {
      a.Swap(&b);
    }
    inline void Swap(SetPitchRateAndYawRateRequest* other) {
      if (other == this) return;
    #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
      if (GetOwningArena() != nullptr &&
          GetOwningArena() == other->GetOwningArena()) {
     #else  // PROTOBUF_FORCE_COPY_IN_SWAP
      if (GetOwningArena() == other->GetOwningArena()) {
    #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
        InternalSwap(other);
      } else {
        ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
      }
    }
    void UnsafeArenaSwap(SetPitchRateAndYawRateRequest* other) {
      if (other == this) return;
      GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
      InternalSwap(other);
    }
  
    // implements Message ----------------------------------------------
  
    SetPitchRateAndYawRateRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
      return CreateMaybeMessage<SetPitchRateAndYawRateRequest>(arena);
    }
    using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
    void CopyFrom(const SetPitchRateAndYawRateRequest& from);
    using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
    void MergeFrom(const SetPitchRateAndYawRateRequest& from);
    private:
    static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
    public:
    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;
    uint8_t* _InternalSerialize(
        uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
    int GetCachedSize() const final { return _cached_size_.Get(); }
  
    private:
    void SharedCtor();
    void SharedDtor();
    void SetCachedSize(int size) const final;
    void InternalSwap(SetPitchRateAndYawRateRequest* other);
  
    private:
    friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
    static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
      return "mavsdk.rpc.gimbal.SetPitchRateAndYawRateRequest";
    }
    protected:
    explicit SetPitchRateAndYawRateRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned = false);
    public:
  
    static const ClassData _class_data_;
    const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
  
    ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  
    // nested types ----------------------------------------------------
  
    // accessors -------------------------------------------------------
  
    enum : int {
      kPitchRateDegSFieldNumber = 1,
      kYawRateDegSFieldNumber = 2,
    };
    // float pitch_rate_deg_s = 1;
    void clear_pitch_rate_deg_s();
    float pitch_rate_deg_s() const;
    void set_pitch_rate_deg_s(float value);
    private:
    float _internal_pitch_rate_deg_s() const;
    void _internal_set_pitch_rate_deg_s(float value);
    public:
  
    // float yaw_rate_deg_s = 2;
    void clear_yaw_rate_deg_s();
    float yaw_rate_deg_s() const;
    void set_yaw_rate_deg_s(float value);
    private:
    float _internal_yaw_rate_deg_s() const;
    void _internal_set_yaw_rate_deg_s(float value);
    public:
  
    // @@protoc_insertion_point(class_scope:mavsdk.rpc.gimbal.SetPitchRateAndYawRateRequest)
   private:
    class _Internal;
  
    template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
    typedef void InternalArenaConstructable_;
    typedef void DestructorSkippable_;
    float pitch_rate_deg_s_;
    float yaw_rate_deg_s_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    friend struct ::TableStruct_gimbal_2fgimbal_2eproto;
  };
  // -------------------------------------------------------------------
  
  class SetPitchRateAndYawRateResponse final :
      public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:mavsdk.rpc.gimbal.SetPitchRateAndYawRateResponse) */ {
   public:
    inline SetPitchRateAndYawRateResponse() : SetPitchRateAndYawRateResponse(nullptr) {}
    ~SetPitchRateAndYawRateResponse() override;
    explicit PROTOBUF_CONSTEXPR SetPitchRateAndYawRateResponse(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
  
    SetPitchRateAndYawRateResponse(const SetPitchRateAndYawRateResponse& from);
    SetPitchRateAndYawRateResponse(SetPitchRateAndYawRateResponse&& from) noexcept
      : SetPitchRateAndYawRateResponse() {
      *this = ::std::move(from);
    }
  
    inline SetPitchRateAndYawRateResponse& operator=(const SetPitchRateAndYawRateResponse& from) {
      CopyFrom(from);
      return *this;
    }
    inline SetPitchRateAndYawRateResponse& operator=(SetPitchRateAndYawRateResponse&& from) noexcept {
      if (this == &from) return *this;
      if (GetOwningArena() == from.GetOwningArena()
    #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
          && GetOwningArena() != nullptr
    #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
      ) {
        InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
  
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
      return GetDescriptor();
    }
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
      return default_instance().GetMetadata().descriptor;
    }
    static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
      return default_instance().GetMetadata().reflection;
    }
    static const SetPitchRateAndYawRateResponse& default_instance() {
      return *internal_default_instance();
    }
    static inline const SetPitchRateAndYawRateResponse* internal_default_instance() {
      return reinterpret_cast<const SetPitchRateAndYawRateResponse*>(
                 &_SetPitchRateAndYawRateResponse_default_instance_);
    }
    static constexpr int kIndexInFileMessages =
      3;
  
    friend void swap(SetPitchRateAndYawRateResponse& a, SetPitchRateAndYawRateResponse& b) {
      a.Swap(&b);
    }
    inline void Swap(SetPitchRateAndYawRateResponse* other) {
      if (other == this) return;
    #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
      if (GetOwningArena() != nullptr &&
          GetOwningArena() == other->GetOwningArena()) {
     #else  // PROTOBUF_FORCE_COPY_IN_SWAP
      if (GetOwningArena() == other->GetOwningArena()) {
    #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
        InternalSwap(other);
      } else {
        ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
      }
    }
    void UnsafeArenaSwap(SetPitchRateAndYawRateResponse* other) {
      if (other == this) return;
      GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
      InternalSwap(other);
    }
  
    // implements Message ----------------------------------------------
  
    SetPitchRateAndYawRateResponse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
      return CreateMaybeMessage<SetPitchRateAndYawRateResponse>(arena);
    }
    using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
    void CopyFrom(const SetPitchRateAndYawRateResponse& from);
    using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
    void MergeFrom(const SetPitchRateAndYawRateResponse& from);
    private:
    static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
    public:
    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;
    uint8_t* _InternalSerialize(
        uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
    int GetCachedSize() const final { return _cached_size_.Get(); }
  
    private:
    void SharedCtor();
    void SharedDtor();
    void SetCachedSize(int size) const final;
    void InternalSwap(SetPitchRateAndYawRateResponse* other);
  
    private:
    friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
    static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
      return "mavsdk.rpc.gimbal.SetPitchRateAndYawRateResponse";
    }
    protected:
    explicit SetPitchRateAndYawRateResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned = false);
    public:
  
    static const ClassData _class_data_;
    const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
  
    ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  
    // 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;
    PROTOBUF_NODISCARD ::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:
    void unsafe_arena_set_allocated_gimbal_result(
        ::mavsdk::rpc::gimbal::GimbalResult* gimbal_result);
    ::mavsdk::rpc::gimbal::GimbalResult* unsafe_arena_release_gimbal_result();
  
    // @@protoc_insertion_point(class_scope:mavsdk.rpc.gimbal.SetPitchRateAndYawRateResponse)
   private:
    class _Internal;
  
    template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
    typedef void InternalArenaConstructable_;
    typedef void DestructorSkippable_;
    ::mavsdk::rpc::gimbal::GimbalResult* gimbal_result_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    friend struct ::TableStruct_gimbal_2fgimbal_2eproto;
  };
  // -------------------------------------------------------------------
  
  class SetModeRequest final :
      public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:mavsdk.rpc.gimbal.SetModeRequest) */ {
   public:
    inline SetModeRequest() : SetModeRequest(nullptr) {}
    ~SetModeRequest() override;
    explicit PROTOBUF_CONSTEXPR SetModeRequest(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
  
    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 (this == &from) return *this;
      if (GetOwningArena() == from.GetOwningArena()
    #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
          && GetOwningArena() != nullptr
    #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
      ) {
        InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
  
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
      return GetDescriptor();
    }
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
      return default_instance().GetMetadata().descriptor;
    }
    static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
      return default_instance().GetMetadata().reflection;
    }
    static const SetModeRequest& default_instance() {
      return *internal_default_instance();
    }
    static inline const SetModeRequest* internal_default_instance() {
      return reinterpret_cast<const SetModeRequest*>(
                 &_SetModeRequest_default_instance_);
    }
    static constexpr int kIndexInFileMessages =
      4;
  
    friend void swap(SetModeRequest& a, SetModeRequest& b) {
      a.Swap(&b);
    }
    inline void Swap(SetModeRequest* other) {
      if (other == this) return;
    #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
      if (GetOwningArena() != nullptr &&
          GetOwningArena() == other->GetOwningArena()) {
     #else  // PROTOBUF_FORCE_COPY_IN_SWAP
      if (GetOwningArena() == other->GetOwningArena()) {
    #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
        InternalSwap(other);
      } else {
        ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
      }
    }
    void UnsafeArenaSwap(SetModeRequest* other) {
      if (other == this) return;
      GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
      InternalSwap(other);
    }
  
    // implements Message ----------------------------------------------
  
    SetModeRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
      return CreateMaybeMessage<SetModeRequest>(arena);
    }
    using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
    void CopyFrom(const SetModeRequest& from);
    using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
    void MergeFrom(const SetModeRequest& from);
    private:
    static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
    public:
    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;
    uint8_t* _InternalSerialize(
        uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
    int GetCachedSize() const final { return _cached_size_.Get(); }
  
    private:
    void SharedCtor();
    void SharedDtor();
    void SetCachedSize(int size) const final;
    void InternalSwap(SetModeRequest* other);
  
    private:
    friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
    static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
      return "mavsdk.rpc.gimbal.SetModeRequest";
    }
    protected:
    explicit SetModeRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned = false);
    public:
  
    static const ClassData _class_data_;
    const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
  
    ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  
    // 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;
  
    template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
    typedef void InternalArenaConstructable_;
    typedef void DestructorSkippable_;
    int gimbal_mode_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    friend struct ::TableStruct_gimbal_2fgimbal_2eproto;
  };
  // -------------------------------------------------------------------
  
  class SetModeResponse final :
      public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:mavsdk.rpc.gimbal.SetModeResponse) */ {
   public:
    inline SetModeResponse() : SetModeResponse(nullptr) {}
    ~SetModeResponse() override;
    explicit PROTOBUF_CONSTEXPR SetModeResponse(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
  
    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 (this == &from) return *this;
      if (GetOwningArena() == from.GetOwningArena()
    #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
          && GetOwningArena() != nullptr
    #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
      ) {
        InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
  
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
      return GetDescriptor();
    }
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
      return default_instance().GetMetadata().descriptor;
    }
    static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
      return default_instance().GetMetadata().reflection;
    }
    static const SetModeResponse& default_instance() {
      return *internal_default_instance();
    }
    static inline const SetModeResponse* internal_default_instance() {
      return reinterpret_cast<const SetModeResponse*>(
                 &_SetModeResponse_default_instance_);
    }
    static constexpr int kIndexInFileMessages =
      5;
  
    friend void swap(SetModeResponse& a, SetModeResponse& b) {
      a.Swap(&b);
    }
    inline void Swap(SetModeResponse* other) {
      if (other == this) return;
    #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
      if (GetOwningArena() != nullptr &&
          GetOwningArena() == other->GetOwningArena()) {
     #else  // PROTOBUF_FORCE_COPY_IN_SWAP
      if (GetOwningArena() == other->GetOwningArena()) {
    #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
        InternalSwap(other);
      } else {
        ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
      }
    }
    void UnsafeArenaSwap(SetModeResponse* other) {
      if (other == this) return;
      GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
      InternalSwap(other);
    }
  
    // implements Message ----------------------------------------------
  
    SetModeResponse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
      return CreateMaybeMessage<SetModeResponse>(arena);
    }
    using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
    void CopyFrom(const SetModeResponse& from);
    using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
    void MergeFrom(const SetModeResponse& from);
    private:
    static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
    public:
    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;
    uint8_t* _InternalSerialize(
        uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
    int GetCachedSize() const final { return _cached_size_.Get(); }
  
    private:
    void SharedCtor();
    void SharedDtor();
    void SetCachedSize(int size) const final;
    void InternalSwap(SetModeResponse* other);
  
    private:
    friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
    static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
      return "mavsdk.rpc.gimbal.SetModeResponse";
    }
    protected:
    explicit SetModeResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned = false);
    public:
  
    static const ClassData _class_data_;
    const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
  
    ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  
    // 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;
    PROTOBUF_NODISCARD ::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:
    void unsafe_arena_set_allocated_gimbal_result(
        ::mavsdk::rpc::gimbal::GimbalResult* gimbal_result);
    ::mavsdk::rpc::gimbal::GimbalResult* unsafe_arena_release_gimbal_result();
  
    // @@protoc_insertion_point(class_scope:mavsdk.rpc.gimbal.SetModeResponse)
   private:
    class _Internal;
  
    template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
    typedef void InternalArenaConstructable_;
    typedef void DestructorSkippable_;
    ::mavsdk::rpc::gimbal::GimbalResult* gimbal_result_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    friend struct ::TableStruct_gimbal_2fgimbal_2eproto;
  };
  // -------------------------------------------------------------------
  
  class SetRoiLocationRequest final :
      public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:mavsdk.rpc.gimbal.SetRoiLocationRequest) */ {
   public:
    inline SetRoiLocationRequest() : SetRoiLocationRequest(nullptr) {}
    ~SetRoiLocationRequest() override;
    explicit PROTOBUF_CONSTEXPR SetRoiLocationRequest(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
  
    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 (this == &from) return *this;
      if (GetOwningArena() == from.GetOwningArena()
    #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
          && GetOwningArena() != nullptr
    #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
      ) {
        InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
  
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
      return GetDescriptor();
    }
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
      return default_instance().GetMetadata().descriptor;
    }
    static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
      return default_instance().GetMetadata().reflection;
    }
    static const SetRoiLocationRequest& default_instance() {
      return *internal_default_instance();
    }
    static inline const SetRoiLocationRequest* internal_default_instance() {
      return reinterpret_cast<const SetRoiLocationRequest*>(
                 &_SetRoiLocationRequest_default_instance_);
    }
    static constexpr int kIndexInFileMessages =
      6;
  
    friend void swap(SetRoiLocationRequest& a, SetRoiLocationRequest& b) {
      a.Swap(&b);
    }
    inline void Swap(SetRoiLocationRequest* other) {
      if (other == this) return;
    #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
      if (GetOwningArena() != nullptr &&
          GetOwningArena() == other->GetOwningArena()) {
     #else  // PROTOBUF_FORCE_COPY_IN_SWAP
      if (GetOwningArena() == other->GetOwningArena()) {
    #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
        InternalSwap(other);
      } else {
        ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
      }
    }
    void UnsafeArenaSwap(SetRoiLocationRequest* other) {
      if (other == this) return;
      GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
      InternalSwap(other);
    }
  
    // implements Message ----------------------------------------------
  
    SetRoiLocationRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
      return CreateMaybeMessage<SetRoiLocationRequest>(arena);
    }
    using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
    void CopyFrom(const SetRoiLocationRequest& from);
    using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
    void MergeFrom(const SetRoiLocationRequest& from);
    private:
    static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
    public:
    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;
    uint8_t* _InternalSerialize(
        uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
    int GetCachedSize() const final { return _cached_size_.Get(); }
  
    private:
    void SharedCtor();
    void SharedDtor();
    void SetCachedSize(int size) const final;
    void InternalSwap(SetRoiLocationRequest* other);
  
    private:
    friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
    static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
      return "mavsdk.rpc.gimbal.SetRoiLocationRequest";
    }
    protected:
    explicit SetRoiLocationRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned = false);
    public:
  
    static const ClassData _class_data_;
    const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
  
    ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  
    // 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;
  
    template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
    typedef void InternalArenaConstructable_;
    typedef void DestructorSkippable_;
    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 final :
      public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:mavsdk.rpc.gimbal.SetRoiLocationResponse) */ {
   public:
    inline SetRoiLocationResponse() : SetRoiLocationResponse(nullptr) {}
    ~SetRoiLocationResponse() override;
    explicit PROTOBUF_CONSTEXPR SetRoiLocationResponse(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
  
    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 (this == &from) return *this;
      if (GetOwningArena() == from.GetOwningArena()
    #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
          && GetOwningArena() != nullptr
    #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
      ) {
        InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
  
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
      return GetDescriptor();
    }
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
      return default_instance().GetMetadata().descriptor;
    }
    static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
      return default_instance().GetMetadata().reflection;
    }
    static const SetRoiLocationResponse& default_instance() {
      return *internal_default_instance();
    }
    static inline const SetRoiLocationResponse* internal_default_instance() {
      return reinterpret_cast<const SetRoiLocationResponse*>(
                 &_SetRoiLocationResponse_default_instance_);
    }
    static constexpr int kIndexInFileMessages =
      7;
  
    friend void swap(SetRoiLocationResponse& a, SetRoiLocationResponse& b) {
      a.Swap(&b);
    }
    inline void Swap(SetRoiLocationResponse* other) {
      if (other == this) return;
    #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
      if (GetOwningArena() != nullptr &&
          GetOwningArena() == other->GetOwningArena()) {
     #else  // PROTOBUF_FORCE_COPY_IN_SWAP
      if (GetOwningArena() == other->GetOwningArena()) {
    #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
        InternalSwap(other);
      } else {
        ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
      }
    }
    void UnsafeArenaSwap(SetRoiLocationResponse* other) {
      if (other == this) return;
      GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
      InternalSwap(other);
    }
  
    // implements Message ----------------------------------------------
  
    SetRoiLocationResponse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
      return CreateMaybeMessage<SetRoiLocationResponse>(arena);
    }
    using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
    void CopyFrom(const SetRoiLocationResponse& from);
    using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
    void MergeFrom(const SetRoiLocationResponse& from);
    private:
    static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
    public:
    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;
    uint8_t* _InternalSerialize(
        uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
    int GetCachedSize() const final { return _cached_size_.Get(); }
  
    private:
    void SharedCtor();
    void SharedDtor();
    void SetCachedSize(int size) const final;
    void InternalSwap(SetRoiLocationResponse* other);
  
    private:
    friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
    static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
      return "mavsdk.rpc.gimbal.SetRoiLocationResponse";
    }
    protected:
    explicit SetRoiLocationResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned = false);
    public:
  
    static const ClassData _class_data_;
    const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
  
    ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  
    // 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;
    PROTOBUF_NODISCARD ::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:
    void unsafe_arena_set_allocated_gimbal_result(
        ::mavsdk::rpc::gimbal::GimbalResult* gimbal_result);
    ::mavsdk::rpc::gimbal::GimbalResult* unsafe_arena_release_gimbal_result();
  
    // @@protoc_insertion_point(class_scope:mavsdk.rpc.gimbal.SetRoiLocationResponse)
   private:
    class _Internal;
  
    template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
    typedef void InternalArenaConstructable_;
    typedef void DestructorSkippable_;
    ::mavsdk::rpc::gimbal::GimbalResult* gimbal_result_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    friend struct ::TableStruct_gimbal_2fgimbal_2eproto;
  };
  // -------------------------------------------------------------------
  
  class TakeControlRequest final :
      public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:mavsdk.rpc.gimbal.TakeControlRequest) */ {
   public:
    inline TakeControlRequest() : TakeControlRequest(nullptr) {}
    ~TakeControlRequest() override;
    explicit PROTOBUF_CONSTEXPR TakeControlRequest(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
  
    TakeControlRequest(const TakeControlRequest& from);
    TakeControlRequest(TakeControlRequest&& from) noexcept
      : TakeControlRequest() {
      *this = ::std::move(from);
    }
  
    inline TakeControlRequest& operator=(const TakeControlRequest& from) {
      CopyFrom(from);
      return *this;
    }
    inline TakeControlRequest& operator=(TakeControlRequest&& from) noexcept {
      if (this == &from) return *this;
      if (GetOwningArena() == from.GetOwningArena()
    #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
          && GetOwningArena() != nullptr
    #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
      ) {
        InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
  
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
      return GetDescriptor();
    }
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
      return default_instance().GetMetadata().descriptor;
    }
    static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
      return default_instance().GetMetadata().reflection;
    }
    static const TakeControlRequest& default_instance() {
      return *internal_default_instance();
    }
    static inline const TakeControlRequest* internal_default_instance() {
      return reinterpret_cast<const TakeControlRequest*>(
                 &_TakeControlRequest_default_instance_);
    }
    static constexpr int kIndexInFileMessages =
      8;
  
    friend void swap(TakeControlRequest& a, TakeControlRequest& b) {
      a.Swap(&b);
    }
    inline void Swap(TakeControlRequest* other) {
      if (other == this) return;
    #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
      if (GetOwningArena() != nullptr &&
          GetOwningArena() == other->GetOwningArena()) {
     #else  // PROTOBUF_FORCE_COPY_IN_SWAP
      if (GetOwningArena() == other->GetOwningArena()) {
    #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
        InternalSwap(other);
      } else {
        ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
      }
    }
    void UnsafeArenaSwap(TakeControlRequest* other) {
      if (other == this) return;
      GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
      InternalSwap(other);
    }
  
    // implements Message ----------------------------------------------
  
    TakeControlRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
      return CreateMaybeMessage<TakeControlRequest>(arena);
    }
    using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
    void CopyFrom(const TakeControlRequest& from);
    using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
    void MergeFrom(const TakeControlRequest& from);
    private:
    static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
    public:
    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;
    uint8_t* _InternalSerialize(
        uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
    int GetCachedSize() const final { return _cached_size_.Get(); }
  
    private:
    void SharedCtor();
    void SharedDtor();
    void SetCachedSize(int size) const final;
    void InternalSwap(TakeControlRequest* other);
  
    private:
    friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
    static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
      return "mavsdk.rpc.gimbal.TakeControlRequest";
    }
    protected:
    explicit TakeControlRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned = false);
    public:
  
    static const ClassData _class_data_;
    const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
  
    ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  
    // nested types ----------------------------------------------------
  
    // accessors -------------------------------------------------------
  
    enum : int {
      kControlModeFieldNumber = 1,
    };
    // .mavsdk.rpc.gimbal.ControlMode control_mode = 1;
    void clear_control_mode();
    ::mavsdk::rpc::gimbal::ControlMode control_mode() const;
    void set_control_mode(::mavsdk::rpc::gimbal::ControlMode value);
    private:
    ::mavsdk::rpc::gimbal::ControlMode _internal_control_mode() const;
    void _internal_set_control_mode(::mavsdk::rpc::gimbal::ControlMode value);
    public:
  
    // @@protoc_insertion_point(class_scope:mavsdk.rpc.gimbal.TakeControlRequest)
   private:
    class _Internal;
  
    template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
    typedef void InternalArenaConstructable_;
    typedef void DestructorSkippable_;
    int control_mode_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    friend struct ::TableStruct_gimbal_2fgimbal_2eproto;
  };
  // -------------------------------------------------------------------
  
  class TakeControlResponse final :
      public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:mavsdk.rpc.gimbal.TakeControlResponse) */ {
   public:
    inline TakeControlResponse() : TakeControlResponse(nullptr) {}
    ~TakeControlResponse() override;
    explicit PROTOBUF_CONSTEXPR TakeControlResponse(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
  
    TakeControlResponse(const TakeControlResponse& from);
    TakeControlResponse(TakeControlResponse&& from) noexcept
      : TakeControlResponse() {
      *this = ::std::move(from);
    }
  
    inline TakeControlResponse& operator=(const TakeControlResponse& from) {
      CopyFrom(from);
      return *this;
    }
    inline TakeControlResponse& operator=(TakeControlResponse&& from) noexcept {
      if (this == &from) return *this;
      if (GetOwningArena() == from.GetOwningArena()
    #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
          && GetOwningArena() != nullptr
    #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
      ) {
        InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
  
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
      return GetDescriptor();
    }
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
      return default_instance().GetMetadata().descriptor;
    }
    static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
      return default_instance().GetMetadata().reflection;
    }
    static const TakeControlResponse& default_instance() {
      return *internal_default_instance();
    }
    static inline const TakeControlResponse* internal_default_instance() {
      return reinterpret_cast<const TakeControlResponse*>(
                 &_TakeControlResponse_default_instance_);
    }
    static constexpr int kIndexInFileMessages =
      9;
  
    friend void swap(TakeControlResponse& a, TakeControlResponse& b) {
      a.Swap(&b);
    }
    inline void Swap(TakeControlResponse* other) {
      if (other == this) return;
    #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
      if (GetOwningArena() != nullptr &&
          GetOwningArena() == other->GetOwningArena()) {
     #else  // PROTOBUF_FORCE_COPY_IN_SWAP
      if (GetOwningArena() == other->GetOwningArena()) {
    #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
        InternalSwap(other);
      } else {
        ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
      }
    }
    void UnsafeArenaSwap(TakeControlResponse* other) {
      if (other == this) return;
      GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
      InternalSwap(other);
    }
  
    // implements Message ----------------------------------------------
  
    TakeControlResponse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
      return CreateMaybeMessage<TakeControlResponse>(arena);
    }
    using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
    void CopyFrom(const TakeControlResponse& from);
    using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
    void MergeFrom(const TakeControlResponse& from);
    private:
    static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
    public:
    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;
    uint8_t* _InternalSerialize(
        uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
    int GetCachedSize() const final { return _cached_size_.Get(); }
  
    private:
    void SharedCtor();
    void SharedDtor();
    void SetCachedSize(int size) const final;
    void InternalSwap(TakeControlResponse* other);
  
    private:
    friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
    static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
      return "mavsdk.rpc.gimbal.TakeControlResponse";
    }
    protected:
    explicit TakeControlResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned = false);
    public:
  
    static const ClassData _class_data_;
    const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
  
    ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  
    // 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;
    PROTOBUF_NODISCARD ::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:
    void unsafe_arena_set_allocated_gimbal_result(
        ::mavsdk::rpc::gimbal::GimbalResult* gimbal_result);
    ::mavsdk::rpc::gimbal::GimbalResult* unsafe_arena_release_gimbal_result();
  
    // @@protoc_insertion_point(class_scope:mavsdk.rpc.gimbal.TakeControlResponse)
   private:
    class _Internal;
  
    template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
    typedef void InternalArenaConstructable_;
    typedef void DestructorSkippable_;
    ::mavsdk::rpc::gimbal::GimbalResult* gimbal_result_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    friend struct ::TableStruct_gimbal_2fgimbal_2eproto;
  };
  // -------------------------------------------------------------------
  
  class ReleaseControlRequest final :
      public ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase /* @@protoc_insertion_point(class_definition:mavsdk.rpc.gimbal.ReleaseControlRequest) */ {
   public:
    inline ReleaseControlRequest() : ReleaseControlRequest(nullptr) {}
    explicit PROTOBUF_CONSTEXPR ReleaseControlRequest(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
  
    ReleaseControlRequest(const ReleaseControlRequest& from);
    ReleaseControlRequest(ReleaseControlRequest&& from) noexcept
      : ReleaseControlRequest() {
      *this = ::std::move(from);
    }
  
    inline ReleaseControlRequest& operator=(const ReleaseControlRequest& from) {
      CopyFrom(from);
      return *this;
    }
    inline ReleaseControlRequest& operator=(ReleaseControlRequest&& from) noexcept {
      if (this == &from) return *this;
      if (GetOwningArena() == from.GetOwningArena()
    #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
          && GetOwningArena() != nullptr
    #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
      ) {
        InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
  
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
      return GetDescriptor();
    }
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
      return default_instance().GetMetadata().descriptor;
    }
    static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
      return default_instance().GetMetadata().reflection;
    }
    static const ReleaseControlRequest& default_instance() {
      return *internal_default_instance();
    }
    static inline const ReleaseControlRequest* internal_default_instance() {
      return reinterpret_cast<const ReleaseControlRequest*>(
                 &_ReleaseControlRequest_default_instance_);
    }
    static constexpr int kIndexInFileMessages =
      10;
  
    friend void swap(ReleaseControlRequest& a, ReleaseControlRequest& b) {
      a.Swap(&b);
    }
    inline void Swap(ReleaseControlRequest* other) {
      if (other == this) return;
    #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
      if (GetOwningArena() != nullptr &&
          GetOwningArena() == other->GetOwningArena()) {
     #else  // PROTOBUF_FORCE_COPY_IN_SWAP
      if (GetOwningArena() == other->GetOwningArena()) {
    #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
        InternalSwap(other);
      } else {
        ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
      }
    }
    void UnsafeArenaSwap(ReleaseControlRequest* other) {
      if (other == this) return;
      GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
      InternalSwap(other);
    }
  
    // implements Message ----------------------------------------------
  
    ReleaseControlRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
      return CreateMaybeMessage<ReleaseControlRequest>(arena);
    }
    using ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::CopyFrom;
    inline void CopyFrom(const ReleaseControlRequest& from) {
      ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::CopyImpl(this, from);
    }
    using ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::MergeFrom;
    void MergeFrom(const ReleaseControlRequest& from) {
      ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::MergeImpl(this, from);
    }
    public:
  
    private:
    friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
    static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
      return "mavsdk.rpc.gimbal.ReleaseControlRequest";
    }
    protected:
    explicit ReleaseControlRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned = false);
    public:
  
    static const ClassData _class_data_;
    const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
  
    ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  
    // nested types ----------------------------------------------------
  
    // accessors -------------------------------------------------------
  
    // @@protoc_insertion_point(class_scope:mavsdk.rpc.gimbal.ReleaseControlRequest)
   private:
    class _Internal;
  
    template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
    typedef void InternalArenaConstructable_;
    typedef void DestructorSkippable_;
    friend struct ::TableStruct_gimbal_2fgimbal_2eproto;
  };
  // -------------------------------------------------------------------
  
  class ReleaseControlResponse final :
      public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:mavsdk.rpc.gimbal.ReleaseControlResponse) */ {
   public:
    inline ReleaseControlResponse() : ReleaseControlResponse(nullptr) {}
    ~ReleaseControlResponse() override;
    explicit PROTOBUF_CONSTEXPR ReleaseControlResponse(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
  
    ReleaseControlResponse(const ReleaseControlResponse& from);
    ReleaseControlResponse(ReleaseControlResponse&& from) noexcept
      : ReleaseControlResponse() {
      *this = ::std::move(from);
    }
  
    inline ReleaseControlResponse& operator=(const ReleaseControlResponse& from) {
      CopyFrom(from);
      return *this;
    }
    inline ReleaseControlResponse& operator=(ReleaseControlResponse&& from) noexcept {
      if (this == &from) return *this;
      if (GetOwningArena() == from.GetOwningArena()
    #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
          && GetOwningArena() != nullptr
    #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
      ) {
        InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
  
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
      return GetDescriptor();
    }
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
      return default_instance().GetMetadata().descriptor;
    }
    static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
      return default_instance().GetMetadata().reflection;
    }
    static const ReleaseControlResponse& default_instance() {
      return *internal_default_instance();
    }
    static inline const ReleaseControlResponse* internal_default_instance() {
      return reinterpret_cast<const ReleaseControlResponse*>(
                 &_ReleaseControlResponse_default_instance_);
    }
    static constexpr int kIndexInFileMessages =
      11;
  
    friend void swap(ReleaseControlResponse& a, ReleaseControlResponse& b) {
      a.Swap(&b);
    }
    inline void Swap(ReleaseControlResponse* other) {
      if (other == this) return;
    #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
      if (GetOwningArena() != nullptr &&
          GetOwningArena() == other->GetOwningArena()) {
     #else  // PROTOBUF_FORCE_COPY_IN_SWAP
      if (GetOwningArena() == other->GetOwningArena()) {
    #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
        InternalSwap(other);
      } else {
        ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
      }
    }
    void UnsafeArenaSwap(ReleaseControlResponse* other) {
      if (other == this) return;
      GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
      InternalSwap(other);
    }
  
    // implements Message ----------------------------------------------
  
    ReleaseControlResponse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
      return CreateMaybeMessage<ReleaseControlResponse>(arena);
    }
    using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
    void CopyFrom(const ReleaseControlResponse& from);
    using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
    void MergeFrom(const ReleaseControlResponse& from);
    private:
    static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
    public:
    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;
    uint8_t* _InternalSerialize(
        uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
    int GetCachedSize() const final { return _cached_size_.Get(); }
  
    private:
    void SharedCtor();
    void SharedDtor();
    void SetCachedSize(int size) const final;
    void InternalSwap(ReleaseControlResponse* other);
  
    private:
    friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
    static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
      return "mavsdk.rpc.gimbal.ReleaseControlResponse";
    }
    protected:
    explicit ReleaseControlResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned = false);
    public:
  
    static const ClassData _class_data_;
    const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
  
    ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  
    // 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;
    PROTOBUF_NODISCARD ::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:
    void unsafe_arena_set_allocated_gimbal_result(
        ::mavsdk::rpc::gimbal::GimbalResult* gimbal_result);
    ::mavsdk::rpc::gimbal::GimbalResult* unsafe_arena_release_gimbal_result();
  
    // @@protoc_insertion_point(class_scope:mavsdk.rpc.gimbal.ReleaseControlResponse)
   private:
    class _Internal;
  
    template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
    typedef void InternalArenaConstructable_;
    typedef void DestructorSkippable_;
    ::mavsdk::rpc::gimbal::GimbalResult* gimbal_result_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    friend struct ::TableStruct_gimbal_2fgimbal_2eproto;
  };
  // -------------------------------------------------------------------
  
  class SubscribeControlRequest final :
      public ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase /* @@protoc_insertion_point(class_definition:mavsdk.rpc.gimbal.SubscribeControlRequest) */ {
   public:
    inline SubscribeControlRequest() : SubscribeControlRequest(nullptr) {}
    explicit PROTOBUF_CONSTEXPR SubscribeControlRequest(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
  
    SubscribeControlRequest(const SubscribeControlRequest& from);
    SubscribeControlRequest(SubscribeControlRequest&& from) noexcept
      : SubscribeControlRequest() {
      *this = ::std::move(from);
    }
  
    inline SubscribeControlRequest& operator=(const SubscribeControlRequest& from) {
      CopyFrom(from);
      return *this;
    }
    inline SubscribeControlRequest& operator=(SubscribeControlRequest&& from) noexcept {
      if (this == &from) return *this;
      if (GetOwningArena() == from.GetOwningArena()
    #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
          && GetOwningArena() != nullptr
    #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
      ) {
        InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
  
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
      return GetDescriptor();
    }
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
      return default_instance().GetMetadata().descriptor;
    }
    static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
      return default_instance().GetMetadata().reflection;
    }
    static const SubscribeControlRequest& default_instance() {
      return *internal_default_instance();
    }
    static inline const SubscribeControlRequest* internal_default_instance() {
      return reinterpret_cast<const SubscribeControlRequest*>(
                 &_SubscribeControlRequest_default_instance_);
    }
    static constexpr int kIndexInFileMessages =
      12;
  
    friend void swap(SubscribeControlRequest& a, SubscribeControlRequest& b) {
      a.Swap(&b);
    }
    inline void Swap(SubscribeControlRequest* other) {
      if (other == this) return;
    #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
      if (GetOwningArena() != nullptr &&
          GetOwningArena() == other->GetOwningArena()) {
     #else  // PROTOBUF_FORCE_COPY_IN_SWAP
      if (GetOwningArena() == other->GetOwningArena()) {
    #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
        InternalSwap(other);
      } else {
        ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
      }
    }
    void UnsafeArenaSwap(SubscribeControlRequest* other) {
      if (other == this) return;
      GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
      InternalSwap(other);
    }
  
    // implements Message ----------------------------------------------
  
    SubscribeControlRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
      return CreateMaybeMessage<SubscribeControlRequest>(arena);
    }
    using ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::CopyFrom;
    inline void CopyFrom(const SubscribeControlRequest& from) {
      ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::CopyImpl(this, from);
    }
    using ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::MergeFrom;
    void MergeFrom(const SubscribeControlRequest& from) {
      ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::MergeImpl(this, from);
    }
    public:
  
    private:
    friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
    static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
      return "mavsdk.rpc.gimbal.SubscribeControlRequest";
    }
    protected:
    explicit SubscribeControlRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned = false);
    public:
  
    static const ClassData _class_data_;
    const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
  
    ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  
    // nested types ----------------------------------------------------
  
    // accessors -------------------------------------------------------
  
    // @@protoc_insertion_point(class_scope:mavsdk.rpc.gimbal.SubscribeControlRequest)
   private:
    class _Internal;
  
    template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
    typedef void InternalArenaConstructable_;
    typedef void DestructorSkippable_;
    friend struct ::TableStruct_gimbal_2fgimbal_2eproto;
  };
  // -------------------------------------------------------------------
  
  class ControlResponse final :
      public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:mavsdk.rpc.gimbal.ControlResponse) */ {
   public:
    inline ControlResponse() : ControlResponse(nullptr) {}
    ~ControlResponse() override;
    explicit PROTOBUF_CONSTEXPR ControlResponse(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
  
    ControlResponse(const ControlResponse& from);
    ControlResponse(ControlResponse&& from) noexcept
      : ControlResponse() {
      *this = ::std::move(from);
    }
  
    inline ControlResponse& operator=(const ControlResponse& from) {
      CopyFrom(from);
      return *this;
    }
    inline ControlResponse& operator=(ControlResponse&& from) noexcept {
      if (this == &from) return *this;
      if (GetOwningArena() == from.GetOwningArena()
    #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
          && GetOwningArena() != nullptr
    #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
      ) {
        InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
  
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
      return GetDescriptor();
    }
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
      return default_instance().GetMetadata().descriptor;
    }
    static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
      return default_instance().GetMetadata().reflection;
    }
    static const ControlResponse& default_instance() {
      return *internal_default_instance();
    }
    static inline const ControlResponse* internal_default_instance() {
      return reinterpret_cast<const ControlResponse*>(
                 &_ControlResponse_default_instance_);
    }
    static constexpr int kIndexInFileMessages =
      13;
  
    friend void swap(ControlResponse& a, ControlResponse& b) {
      a.Swap(&b);
    }
    inline void Swap(ControlResponse* other) {
      if (other == this) return;
    #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
      if (GetOwningArena() != nullptr &&
          GetOwningArena() == other->GetOwningArena()) {
     #else  // PROTOBUF_FORCE_COPY_IN_SWAP
      if (GetOwningArena() == other->GetOwningArena()) {
    #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
        InternalSwap(other);
      } else {
        ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
      }
    }
    void UnsafeArenaSwap(ControlResponse* other) {
      if (other == this) return;
      GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
      InternalSwap(other);
    }
  
    // implements Message ----------------------------------------------
  
    ControlResponse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
      return CreateMaybeMessage<ControlResponse>(arena);
    }
    using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
    void CopyFrom(const ControlResponse& from);
    using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
    void MergeFrom(const ControlResponse& from);
    private:
    static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
    public:
    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;
    uint8_t* _InternalSerialize(
        uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
    int GetCachedSize() const final { return _cached_size_.Get(); }
  
    private:
    void SharedCtor();
    void SharedDtor();
    void SetCachedSize(int size) const final;
    void InternalSwap(ControlResponse* other);
  
    private:
    friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
    static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
      return "mavsdk.rpc.gimbal.ControlResponse";
    }
    protected:
    explicit ControlResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned = false);
    public:
  
    static const ClassData _class_data_;
    const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
  
    ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  
    // nested types ----------------------------------------------------
  
    // accessors -------------------------------------------------------
  
    enum : int {
      kControlStatusFieldNumber = 1,
    };
    // .mavsdk.rpc.gimbal.ControlStatus control_status = 1;
    bool has_control_status() const;
    private:
    bool _internal_has_control_status() const;
    public:
    void clear_control_status();
    const ::mavsdk::rpc::gimbal::ControlStatus& control_status() const;
    PROTOBUF_NODISCARD ::mavsdk::rpc::gimbal::ControlStatus* release_control_status();
    ::mavsdk::rpc::gimbal::ControlStatus* mutable_control_status();
    void set_allocated_control_status(::mavsdk::rpc::gimbal::ControlStatus* control_status);
    private:
    const ::mavsdk::rpc::gimbal::ControlStatus& _internal_control_status() const;
    ::mavsdk::rpc::gimbal::ControlStatus* _internal_mutable_control_status();
    public:
    void unsafe_arena_set_allocated_control_status(
        ::mavsdk::rpc::gimbal::ControlStatus* control_status);
    ::mavsdk::rpc::gimbal::ControlStatus* unsafe_arena_release_control_status();
  
    // @@protoc_insertion_point(class_scope:mavsdk.rpc.gimbal.ControlResponse)
   private:
    class _Internal;
  
    template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
    typedef void InternalArenaConstructable_;
    typedef void DestructorSkippable_;
    ::mavsdk::rpc::gimbal::ControlStatus* control_status_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    friend struct ::TableStruct_gimbal_2fgimbal_2eproto;
  };
  // -------------------------------------------------------------------
  
  class ControlStatus final :
      public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:mavsdk.rpc.gimbal.ControlStatus) */ {
   public:
    inline ControlStatus() : ControlStatus(nullptr) {}
    ~ControlStatus() override;
    explicit PROTOBUF_CONSTEXPR ControlStatus(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
  
    ControlStatus(const ControlStatus& from);
    ControlStatus(ControlStatus&& from) noexcept
      : ControlStatus() {
      *this = ::std::move(from);
    }
  
    inline ControlStatus& operator=(const ControlStatus& from) {
      CopyFrom(from);
      return *this;
    }
    inline ControlStatus& operator=(ControlStatus&& from) noexcept {
      if (this == &from) return *this;
      if (GetOwningArena() == from.GetOwningArena()
    #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
          && GetOwningArena() != nullptr
    #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
      ) {
        InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
  
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
      return GetDescriptor();
    }
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
      return default_instance().GetMetadata().descriptor;
    }
    static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
      return default_instance().GetMetadata().reflection;
    }
    static const ControlStatus& default_instance() {
      return *internal_default_instance();
    }
    static inline const ControlStatus* internal_default_instance() {
      return reinterpret_cast<const ControlStatus*>(
                 &_ControlStatus_default_instance_);
    }
    static constexpr int kIndexInFileMessages =
      14;
  
    friend void swap(ControlStatus& a, ControlStatus& b) {
      a.Swap(&b);
    }
    inline void Swap(ControlStatus* other) {
      if (other == this) return;
    #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
      if (GetOwningArena() != nullptr &&
          GetOwningArena() == other->GetOwningArena()) {
     #else  // PROTOBUF_FORCE_COPY_IN_SWAP
      if (GetOwningArena() == other->GetOwningArena()) {
    #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
        InternalSwap(other);
      } else {
        ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
      }
    }
    void UnsafeArenaSwap(ControlStatus* other) {
      if (other == this) return;
      GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
      InternalSwap(other);
    }
  
    // implements Message ----------------------------------------------
  
    ControlStatus* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
      return CreateMaybeMessage<ControlStatus>(arena);
    }
    using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
    void CopyFrom(const ControlStatus& from);
    using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
    void MergeFrom(const ControlStatus& from);
    private:
    static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
    public:
    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;
    uint8_t* _InternalSerialize(
        uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
    int GetCachedSize() const final { return _cached_size_.Get(); }
  
    private:
    void SharedCtor();
    void SharedDtor();
    void SetCachedSize(int size) const final;
    void InternalSwap(ControlStatus* other);
  
    private:
    friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
    static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
      return "mavsdk.rpc.gimbal.ControlStatus";
    }
    protected:
    explicit ControlStatus(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned = false);
    public:
  
    static const ClassData _class_data_;
    const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
  
    ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  
    // nested types ----------------------------------------------------
  
    // accessors -------------------------------------------------------
  
    enum : int {
      kControlModeFieldNumber = 1,
      kSysidPrimaryControlFieldNumber = 2,
      kCompidPrimaryControlFieldNumber = 3,
      kSysidSecondaryControlFieldNumber = 4,
      kCompidSecondaryControlFieldNumber = 5,
    };
    // .mavsdk.rpc.gimbal.ControlMode control_mode = 1;
    void clear_control_mode();
    ::mavsdk::rpc::gimbal::ControlMode control_mode() const;
    void set_control_mode(::mavsdk::rpc::gimbal::ControlMode value);
    private:
    ::mavsdk::rpc::gimbal::ControlMode _internal_control_mode() const;
    void _internal_set_control_mode(::mavsdk::rpc::gimbal::ControlMode value);
    public:
  
    // int32 sysid_primary_control = 2;
    void clear_sysid_primary_control();
    int32_t sysid_primary_control() const;
    void set_sysid_primary_control(int32_t value);
    private:
    int32_t _internal_sysid_primary_control() const;
    void _internal_set_sysid_primary_control(int32_t value);
    public:
  
    // int32 compid_primary_control = 3;
    void clear_compid_primary_control();
    int32_t compid_primary_control() const;
    void set_compid_primary_control(int32_t value);
    private:
    int32_t _internal_compid_primary_control() const;
    void _internal_set_compid_primary_control(int32_t value);
    public:
  
    // int32 sysid_secondary_control = 4;
    void clear_sysid_secondary_control();
    int32_t sysid_secondary_control() const;
    void set_sysid_secondary_control(int32_t value);
    private:
    int32_t _internal_sysid_secondary_control() const;
    void _internal_set_sysid_secondary_control(int32_t value);
    public:
  
    // int32 compid_secondary_control = 5;
    void clear_compid_secondary_control();
    int32_t compid_secondary_control() const;
    void set_compid_secondary_control(int32_t value);
    private:
    int32_t _internal_compid_secondary_control() const;
    void _internal_set_compid_secondary_control(int32_t value);
    public:
  
    // @@protoc_insertion_point(class_scope:mavsdk.rpc.gimbal.ControlStatus)
   private:
    class _Internal;
  
    template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
    typedef void InternalArenaConstructable_;
    typedef void DestructorSkippable_;
    int control_mode_;
    int32_t sysid_primary_control_;
    int32_t compid_primary_control_;
    int32_t sysid_secondary_control_;
    int32_t compid_secondary_control_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    friend struct ::TableStruct_gimbal_2fgimbal_2eproto;
  };
  // -------------------------------------------------------------------
  
  class GimbalResult final :
      public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:mavsdk.rpc.gimbal.GimbalResult) */ {
   public:
    inline GimbalResult() : GimbalResult(nullptr) {}
    ~GimbalResult() override;
    explicit PROTOBUF_CONSTEXPR GimbalResult(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
  
    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 (this == &from) return *this;
      if (GetOwningArena() == from.GetOwningArena()
    #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
          && GetOwningArena() != nullptr
    #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
      ) {
        InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
  
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
      return GetDescriptor();
    }
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
      return default_instance().GetMetadata().descriptor;
    }
    static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
      return default_instance().GetMetadata().reflection;
    }
    static const GimbalResult& default_instance() {
      return *internal_default_instance();
    }
    static inline const GimbalResult* internal_default_instance() {
      return reinterpret_cast<const GimbalResult*>(
                 &_GimbalResult_default_instance_);
    }
    static constexpr int kIndexInFileMessages =
      15;
  
    friend void swap(GimbalResult& a, GimbalResult& b) {
      a.Swap(&b);
    }
    inline void Swap(GimbalResult* other) {
      if (other == this) return;
    #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
      if (GetOwningArena() != nullptr &&
          GetOwningArena() == other->GetOwningArena()) {
     #else  // PROTOBUF_FORCE_COPY_IN_SWAP
      if (GetOwningArena() == other->GetOwningArena()) {
    #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
        InternalSwap(other);
      } else {
        ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
      }
    }
    void UnsafeArenaSwap(GimbalResult* other) {
      if (other == this) return;
      GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
      InternalSwap(other);
    }
  
    // implements Message ----------------------------------------------
  
    GimbalResult* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
      return CreateMaybeMessage<GimbalResult>(arena);
    }
    using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
    void CopyFrom(const GimbalResult& from);
    using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
    void MergeFrom(const GimbalResult& from);
    private:
    static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
    public:
    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;
    uint8_t* _InternalSerialize(
        uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
    int GetCachedSize() const final { return _cached_size_.Get(); }
  
    private:
    void SharedCtor();
    void SharedDtor();
    void SetCachedSize(int size) const final;
    void InternalSwap(GimbalResult* other);
  
    private:
    friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
    static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
      return "mavsdk.rpc.gimbal.GimbalResult";
    }
    protected:
    explicit GimbalResult(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned = false);
    public:
  
    static const ClassData _class_data_;
    const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
  
    ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  
    // 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 constexpr Result RESULT_NO_SYSTEM =
      GimbalResult_Result_RESULT_NO_SYSTEM;
    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(::PROTOBUF_NAMESPACE_ID::ConstStringParam 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;
    template <typename ArgT0 = const std::string&, typename... ArgT>
    void set_result_str(ArgT0&& arg0, ArgT... args);
    std::string* mutable_result_str();
    PROTOBUF_NODISCARD std::string* release_result_str();
    void set_allocated_result_str(std::string* result_str);
    private:
    const std::string& _internal_result_str() const;
    inline PROTOBUF_ALWAYS_INLINE 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;
  
    template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
    typedef void InternalArenaConstructable_;
    typedef void DestructorSkippable_;
    ::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 (GetArenaForAllocation() == 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 void SetPitchAndYawResponse::unsafe_arena_set_allocated_gimbal_result(
      ::mavsdk::rpc::gimbal::GimbalResult* gimbal_result) {
    if (GetArenaForAllocation() == nullptr) {
      delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(gimbal_result_);
    }
    gimbal_result_ = gimbal_result;
    if (gimbal_result) {
      
    } else {
      
    }
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mavsdk.rpc.gimbal.SetPitchAndYawResponse.gimbal_result)
  }
  inline ::mavsdk::rpc::gimbal::GimbalResult* SetPitchAndYawResponse::release_gimbal_result() {
    
    ::mavsdk::rpc::gimbal::GimbalResult* temp = gimbal_result_;
    gimbal_result_ = nullptr;
  #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
    auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    if (GetArenaForAllocation() == nullptr) { delete old; }
  #else  // PROTOBUF_FORCE_COPY_IN_RELEASE
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
  #endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
    return temp;
  }
  inline ::mavsdk::rpc::gimbal::GimbalResult* SetPitchAndYawResponse::unsafe_arena_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>(GetArenaForAllocation());
      gimbal_result_ = p;
    }
    return gimbal_result_;
  }
  inline ::mavsdk::rpc::gimbal::GimbalResult* SetPitchAndYawResponse::mutable_gimbal_result() {
    ::mavsdk::rpc::gimbal::GimbalResult* _msg = _internal_mutable_gimbal_result();
    // @@protoc_insertion_point(field_mutable:mavsdk.rpc.gimbal.SetPitchAndYawResponse.gimbal_result)
    return _msg;
  }
  inline void SetPitchAndYawResponse::set_allocated_gimbal_result(::mavsdk::rpc::gimbal::GimbalResult* gimbal_result) {
    ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
    if (message_arena == nullptr) {
      delete gimbal_result_;
    }
    if (gimbal_result) {
      ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
          ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(gimbal_result);
      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)
  }
  
  // -------------------------------------------------------------------
  
  // SetPitchRateAndYawRateRequest
  
  // float pitch_rate_deg_s = 1;
  inline void SetPitchRateAndYawRateRequest::clear_pitch_rate_deg_s() {
    pitch_rate_deg_s_ = 0;
  }
  inline float SetPitchRateAndYawRateRequest::_internal_pitch_rate_deg_s() const {
    return pitch_rate_deg_s_;
  }
  inline float SetPitchRateAndYawRateRequest::pitch_rate_deg_s() const {
    // @@protoc_insertion_point(field_get:mavsdk.rpc.gimbal.SetPitchRateAndYawRateRequest.pitch_rate_deg_s)
    return _internal_pitch_rate_deg_s();
  }
  inline void SetPitchRateAndYawRateRequest::_internal_set_pitch_rate_deg_s(float value) {
    
    pitch_rate_deg_s_ = value;
  }
  inline void SetPitchRateAndYawRateRequest::set_pitch_rate_deg_s(float value) {
    _internal_set_pitch_rate_deg_s(value);
    // @@protoc_insertion_point(field_set:mavsdk.rpc.gimbal.SetPitchRateAndYawRateRequest.pitch_rate_deg_s)
  }
  
  // float yaw_rate_deg_s = 2;
  inline void SetPitchRateAndYawRateRequest::clear_yaw_rate_deg_s() {
    yaw_rate_deg_s_ = 0;
  }
  inline float SetPitchRateAndYawRateRequest::_internal_yaw_rate_deg_s() const {
    return yaw_rate_deg_s_;
  }
  inline float SetPitchRateAndYawRateRequest::yaw_rate_deg_s() const {
    // @@protoc_insertion_point(field_get:mavsdk.rpc.gimbal.SetPitchRateAndYawRateRequest.yaw_rate_deg_s)
    return _internal_yaw_rate_deg_s();
  }
  inline void SetPitchRateAndYawRateRequest::_internal_set_yaw_rate_deg_s(float value) {
    
    yaw_rate_deg_s_ = value;
  }
  inline void SetPitchRateAndYawRateRequest::set_yaw_rate_deg_s(float value) {
    _internal_set_yaw_rate_deg_s(value);
    // @@protoc_insertion_point(field_set:mavsdk.rpc.gimbal.SetPitchRateAndYawRateRequest.yaw_rate_deg_s)
  }
  
  // -------------------------------------------------------------------
  
  // SetPitchRateAndYawRateResponse
  
  // .mavsdk.rpc.gimbal.GimbalResult gimbal_result = 1;
  inline bool SetPitchRateAndYawRateResponse::_internal_has_gimbal_result() const {
    return this != internal_default_instance() && gimbal_result_ != nullptr;
  }
  inline bool SetPitchRateAndYawRateResponse::has_gimbal_result() const {
    return _internal_has_gimbal_result();
  }
  inline void SetPitchRateAndYawRateResponse::clear_gimbal_result() {
    if (GetArenaForAllocation() == nullptr && gimbal_result_ != nullptr) {
      delete gimbal_result_;
    }
    gimbal_result_ = nullptr;
  }
  inline const ::mavsdk::rpc::gimbal::GimbalResult& SetPitchRateAndYawRateResponse::_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& SetPitchRateAndYawRateResponse::gimbal_result() const {
    // @@protoc_insertion_point(field_get:mavsdk.rpc.gimbal.SetPitchRateAndYawRateResponse.gimbal_result)
    return _internal_gimbal_result();
  }
  inline void SetPitchRateAndYawRateResponse::unsafe_arena_set_allocated_gimbal_result(
      ::mavsdk::rpc::gimbal::GimbalResult* gimbal_result) {
    if (GetArenaForAllocation() == nullptr) {
      delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(gimbal_result_);
    }
    gimbal_result_ = gimbal_result;
    if (gimbal_result) {
      
    } else {
      
    }
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mavsdk.rpc.gimbal.SetPitchRateAndYawRateResponse.gimbal_result)
  }
  inline ::mavsdk::rpc::gimbal::GimbalResult* SetPitchRateAndYawRateResponse::release_gimbal_result() {
    
    ::mavsdk::rpc::gimbal::GimbalResult* temp = gimbal_result_;
    gimbal_result_ = nullptr;
  #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
    auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    if (GetArenaForAllocation() == nullptr) { delete old; }
  #else  // PROTOBUF_FORCE_COPY_IN_RELEASE
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
  #endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
    return temp;
  }
  inline ::mavsdk::rpc::gimbal::GimbalResult* SetPitchRateAndYawRateResponse::unsafe_arena_release_gimbal_result() {
    // @@protoc_insertion_point(field_release:mavsdk.rpc.gimbal.SetPitchRateAndYawRateResponse.gimbal_result)
    
    ::mavsdk::rpc::gimbal::GimbalResult* temp = gimbal_result_;
    gimbal_result_ = nullptr;
    return temp;
  }
  inline ::mavsdk::rpc::gimbal::GimbalResult* SetPitchRateAndYawRateResponse::_internal_mutable_gimbal_result() {
    
    if (gimbal_result_ == nullptr) {
      auto* p = CreateMaybeMessage<::mavsdk::rpc::gimbal::GimbalResult>(GetArenaForAllocation());
      gimbal_result_ = p;
    }
    return gimbal_result_;
  }
  inline ::mavsdk::rpc::gimbal::GimbalResult* SetPitchRateAndYawRateResponse::mutable_gimbal_result() {
    ::mavsdk::rpc::gimbal::GimbalResult* _msg = _internal_mutable_gimbal_result();
    // @@protoc_insertion_point(field_mutable:mavsdk.rpc.gimbal.SetPitchRateAndYawRateResponse.gimbal_result)
    return _msg;
  }
  inline void SetPitchRateAndYawRateResponse::set_allocated_gimbal_result(::mavsdk::rpc::gimbal::GimbalResult* gimbal_result) {
    ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
    if (message_arena == nullptr) {
      delete gimbal_result_;
    }
    if (gimbal_result) {
      ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
          ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(gimbal_result);
      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.SetPitchRateAndYawRateResponse.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 (GetArenaForAllocation() == 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 void SetModeResponse::unsafe_arena_set_allocated_gimbal_result(
      ::mavsdk::rpc::gimbal::GimbalResult* gimbal_result) {
    if (GetArenaForAllocation() == nullptr) {
      delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(gimbal_result_);
    }
    gimbal_result_ = gimbal_result;
    if (gimbal_result) {
      
    } else {
      
    }
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mavsdk.rpc.gimbal.SetModeResponse.gimbal_result)
  }
  inline ::mavsdk::rpc::gimbal::GimbalResult* SetModeResponse::release_gimbal_result() {
    
    ::mavsdk::rpc::gimbal::GimbalResult* temp = gimbal_result_;
    gimbal_result_ = nullptr;
  #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
    auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    if (GetArenaForAllocation() == nullptr) { delete old; }
  #else  // PROTOBUF_FORCE_COPY_IN_RELEASE
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
  #endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
    return temp;
  }
  inline ::mavsdk::rpc::gimbal::GimbalResult* SetModeResponse::unsafe_arena_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>(GetArenaForAllocation());
      gimbal_result_ = p;
    }
    return gimbal_result_;
  }
  inline ::mavsdk::rpc::gimbal::GimbalResult* SetModeResponse::mutable_gimbal_result() {
    ::mavsdk::rpc::gimbal::GimbalResult* _msg = _internal_mutable_gimbal_result();
    // @@protoc_insertion_point(field_mutable:mavsdk.rpc.gimbal.SetModeResponse.gimbal_result)
    return _msg;
  }
  inline void SetModeResponse::set_allocated_gimbal_result(::mavsdk::rpc::gimbal::GimbalResult* gimbal_result) {
    ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
    if (message_arena == nullptr) {
      delete gimbal_result_;
    }
    if (gimbal_result) {
      ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
          ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(gimbal_result);
      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 (GetArenaForAllocation() == 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 void SetRoiLocationResponse::unsafe_arena_set_allocated_gimbal_result(
      ::mavsdk::rpc::gimbal::GimbalResult* gimbal_result) {
    if (GetArenaForAllocation() == nullptr) {
      delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(gimbal_result_);
    }
    gimbal_result_ = gimbal_result;
    if (gimbal_result) {
      
    } else {
      
    }
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mavsdk.rpc.gimbal.SetRoiLocationResponse.gimbal_result)
  }
  inline ::mavsdk::rpc::gimbal::GimbalResult* SetRoiLocationResponse::release_gimbal_result() {
    
    ::mavsdk::rpc::gimbal::GimbalResult* temp = gimbal_result_;
    gimbal_result_ = nullptr;
  #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
    auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    if (GetArenaForAllocation() == nullptr) { delete old; }
  #else  // PROTOBUF_FORCE_COPY_IN_RELEASE
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
  #endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
    return temp;
  }
  inline ::mavsdk::rpc::gimbal::GimbalResult* SetRoiLocationResponse::unsafe_arena_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>(GetArenaForAllocation());
      gimbal_result_ = p;
    }
    return gimbal_result_;
  }
  inline ::mavsdk::rpc::gimbal::GimbalResult* SetRoiLocationResponse::mutable_gimbal_result() {
    ::mavsdk::rpc::gimbal::GimbalResult* _msg = _internal_mutable_gimbal_result();
    // @@protoc_insertion_point(field_mutable:mavsdk.rpc.gimbal.SetRoiLocationResponse.gimbal_result)
    return _msg;
  }
  inline void SetRoiLocationResponse::set_allocated_gimbal_result(::mavsdk::rpc::gimbal::GimbalResult* gimbal_result) {
    ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
    if (message_arena == nullptr) {
      delete gimbal_result_;
    }
    if (gimbal_result) {
      ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
          ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(gimbal_result);
      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)
  }
  
  // -------------------------------------------------------------------
  
  // TakeControlRequest
  
  // .mavsdk.rpc.gimbal.ControlMode control_mode = 1;
  inline void TakeControlRequest::clear_control_mode() {
    control_mode_ = 0;
  }
  inline ::mavsdk::rpc::gimbal::ControlMode TakeControlRequest::_internal_control_mode() const {
    return static_cast< ::mavsdk::rpc::gimbal::ControlMode >(control_mode_);
  }
  inline ::mavsdk::rpc::gimbal::ControlMode TakeControlRequest::control_mode() const {
    // @@protoc_insertion_point(field_get:mavsdk.rpc.gimbal.TakeControlRequest.control_mode)
    return _internal_control_mode();
  }
  inline void TakeControlRequest::_internal_set_control_mode(::mavsdk::rpc::gimbal::ControlMode value) {
    
    control_mode_ = value;
  }
  inline void TakeControlRequest::set_control_mode(::mavsdk::rpc::gimbal::ControlMode value) {
    _internal_set_control_mode(value);
    // @@protoc_insertion_point(field_set:mavsdk.rpc.gimbal.TakeControlRequest.control_mode)
  }
  
  // -------------------------------------------------------------------
  
  // TakeControlResponse
  
  // .mavsdk.rpc.gimbal.GimbalResult gimbal_result = 1;
  inline bool TakeControlResponse::_internal_has_gimbal_result() const {
    return this != internal_default_instance() && gimbal_result_ != nullptr;
  }
  inline bool TakeControlResponse::has_gimbal_result() const {
    return _internal_has_gimbal_result();
  }
  inline void TakeControlResponse::clear_gimbal_result() {
    if (GetArenaForAllocation() == nullptr && gimbal_result_ != nullptr) {
      delete gimbal_result_;
    }
    gimbal_result_ = nullptr;
  }
  inline const ::mavsdk::rpc::gimbal::GimbalResult& TakeControlResponse::_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& TakeControlResponse::gimbal_result() const {
    // @@protoc_insertion_point(field_get:mavsdk.rpc.gimbal.TakeControlResponse.gimbal_result)
    return _internal_gimbal_result();
  }
  inline void TakeControlResponse::unsafe_arena_set_allocated_gimbal_result(
      ::mavsdk::rpc::gimbal::GimbalResult* gimbal_result) {
    if (GetArenaForAllocation() == nullptr) {
      delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(gimbal_result_);
    }
    gimbal_result_ = gimbal_result;
    if (gimbal_result) {
      
    } else {
      
    }
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mavsdk.rpc.gimbal.TakeControlResponse.gimbal_result)
  }
  inline ::mavsdk::rpc::gimbal::GimbalResult* TakeControlResponse::release_gimbal_result() {
    
    ::mavsdk::rpc::gimbal::GimbalResult* temp = gimbal_result_;
    gimbal_result_ = nullptr;
  #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
    auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    if (GetArenaForAllocation() == nullptr) { delete old; }
  #else  // PROTOBUF_FORCE_COPY_IN_RELEASE
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
  #endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
    return temp;
  }
  inline ::mavsdk::rpc::gimbal::GimbalResult* TakeControlResponse::unsafe_arena_release_gimbal_result() {
    // @@protoc_insertion_point(field_release:mavsdk.rpc.gimbal.TakeControlResponse.gimbal_result)
    
    ::mavsdk::rpc::gimbal::GimbalResult* temp = gimbal_result_;
    gimbal_result_ = nullptr;
    return temp;
  }
  inline ::mavsdk::rpc::gimbal::GimbalResult* TakeControlResponse::_internal_mutable_gimbal_result() {
    
    if (gimbal_result_ == nullptr) {
      auto* p = CreateMaybeMessage<::mavsdk::rpc::gimbal::GimbalResult>(GetArenaForAllocation());
      gimbal_result_ = p;
    }
    return gimbal_result_;
  }
  inline ::mavsdk::rpc::gimbal::GimbalResult* TakeControlResponse::mutable_gimbal_result() {
    ::mavsdk::rpc::gimbal::GimbalResult* _msg = _internal_mutable_gimbal_result();
    // @@protoc_insertion_point(field_mutable:mavsdk.rpc.gimbal.TakeControlResponse.gimbal_result)
    return _msg;
  }
  inline void TakeControlResponse::set_allocated_gimbal_result(::mavsdk::rpc::gimbal::GimbalResult* gimbal_result) {
    ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
    if (message_arena == nullptr) {
      delete gimbal_result_;
    }
    if (gimbal_result) {
      ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
          ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(gimbal_result);
      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.TakeControlResponse.gimbal_result)
  }
  
  // -------------------------------------------------------------------
  
  // ReleaseControlRequest
  
  // -------------------------------------------------------------------
  
  // ReleaseControlResponse
  
  // .mavsdk.rpc.gimbal.GimbalResult gimbal_result = 1;
  inline bool ReleaseControlResponse::_internal_has_gimbal_result() const {
    return this != internal_default_instance() && gimbal_result_ != nullptr;
  }
  inline bool ReleaseControlResponse::has_gimbal_result() const {
    return _internal_has_gimbal_result();
  }
  inline void ReleaseControlResponse::clear_gimbal_result() {
    if (GetArenaForAllocation() == nullptr && gimbal_result_ != nullptr) {
      delete gimbal_result_;
    }
    gimbal_result_ = nullptr;
  }
  inline const ::mavsdk::rpc::gimbal::GimbalResult& ReleaseControlResponse::_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& ReleaseControlResponse::gimbal_result() const {
    // @@protoc_insertion_point(field_get:mavsdk.rpc.gimbal.ReleaseControlResponse.gimbal_result)
    return _internal_gimbal_result();
  }
  inline void ReleaseControlResponse::unsafe_arena_set_allocated_gimbal_result(
      ::mavsdk::rpc::gimbal::GimbalResult* gimbal_result) {
    if (GetArenaForAllocation() == nullptr) {
      delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(gimbal_result_);
    }
    gimbal_result_ = gimbal_result;
    if (gimbal_result) {
      
    } else {
      
    }
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mavsdk.rpc.gimbal.ReleaseControlResponse.gimbal_result)
  }
  inline ::mavsdk::rpc::gimbal::GimbalResult* ReleaseControlResponse::release_gimbal_result() {
    
    ::mavsdk::rpc::gimbal::GimbalResult* temp = gimbal_result_;
    gimbal_result_ = nullptr;
  #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
    auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    if (GetArenaForAllocation() == nullptr) { delete old; }
  #else  // PROTOBUF_FORCE_COPY_IN_RELEASE
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
  #endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
    return temp;
  }
  inline ::mavsdk::rpc::gimbal::GimbalResult* ReleaseControlResponse::unsafe_arena_release_gimbal_result() {
    // @@protoc_insertion_point(field_release:mavsdk.rpc.gimbal.ReleaseControlResponse.gimbal_result)
    
    ::mavsdk::rpc::gimbal::GimbalResult* temp = gimbal_result_;
    gimbal_result_ = nullptr;
    return temp;
  }
  inline ::mavsdk::rpc::gimbal::GimbalResult* ReleaseControlResponse::_internal_mutable_gimbal_result() {
    
    if (gimbal_result_ == nullptr) {
      auto* p = CreateMaybeMessage<::mavsdk::rpc::gimbal::GimbalResult>(GetArenaForAllocation());
      gimbal_result_ = p;
    }
    return gimbal_result_;
  }
  inline ::mavsdk::rpc::gimbal::GimbalResult* ReleaseControlResponse::mutable_gimbal_result() {
    ::mavsdk::rpc::gimbal::GimbalResult* _msg = _internal_mutable_gimbal_result();
    // @@protoc_insertion_point(field_mutable:mavsdk.rpc.gimbal.ReleaseControlResponse.gimbal_result)
    return _msg;
  }
  inline void ReleaseControlResponse::set_allocated_gimbal_result(::mavsdk::rpc::gimbal::GimbalResult* gimbal_result) {
    ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
    if (message_arena == nullptr) {
      delete gimbal_result_;
    }
    if (gimbal_result) {
      ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
          ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(gimbal_result);
      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.ReleaseControlResponse.gimbal_result)
  }
  
  // -------------------------------------------------------------------
  
  // SubscribeControlRequest
  
  // -------------------------------------------------------------------
  
  // ControlResponse
  
  // .mavsdk.rpc.gimbal.ControlStatus control_status = 1;
  inline bool ControlResponse::_internal_has_control_status() const {
    return this != internal_default_instance() && control_status_ != nullptr;
  }
  inline bool ControlResponse::has_control_status() const {
    return _internal_has_control_status();
  }
  inline void ControlResponse::clear_control_status() {
    if (GetArenaForAllocation() == nullptr && control_status_ != nullptr) {
      delete control_status_;
    }
    control_status_ = nullptr;
  }
  inline const ::mavsdk::rpc::gimbal::ControlStatus& ControlResponse::_internal_control_status() const {
    const ::mavsdk::rpc::gimbal::ControlStatus* p = control_status_;
    return p != nullptr ? *p : reinterpret_cast<const ::mavsdk::rpc::gimbal::ControlStatus&>(
        ::mavsdk::rpc::gimbal::_ControlStatus_default_instance_);
  }
  inline const ::mavsdk::rpc::gimbal::ControlStatus& ControlResponse::control_status() const {
    // @@protoc_insertion_point(field_get:mavsdk.rpc.gimbal.ControlResponse.control_status)
    return _internal_control_status();
  }
  inline void ControlResponse::unsafe_arena_set_allocated_control_status(
      ::mavsdk::rpc::gimbal::ControlStatus* control_status) {
    if (GetArenaForAllocation() == nullptr) {
      delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(control_status_);
    }
    control_status_ = control_status;
    if (control_status) {
      
    } else {
      
    }
    // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mavsdk.rpc.gimbal.ControlResponse.control_status)
  }
  inline ::mavsdk::rpc::gimbal::ControlStatus* ControlResponse::release_control_status() {
    
    ::mavsdk::rpc::gimbal::ControlStatus* temp = control_status_;
    control_status_ = nullptr;
  #ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
    auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    if (GetArenaForAllocation() == nullptr) { delete old; }
  #else  // PROTOBUF_FORCE_COPY_IN_RELEASE
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
  #endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
    return temp;
  }
  inline ::mavsdk::rpc::gimbal::ControlStatus* ControlResponse::unsafe_arena_release_control_status() {
    // @@protoc_insertion_point(field_release:mavsdk.rpc.gimbal.ControlResponse.control_status)
    
    ::mavsdk::rpc::gimbal::ControlStatus* temp = control_status_;
    control_status_ = nullptr;
    return temp;
  }
  inline ::mavsdk::rpc::gimbal::ControlStatus* ControlResponse::_internal_mutable_control_status() {
    
    if (control_status_ == nullptr) {
      auto* p = CreateMaybeMessage<::mavsdk::rpc::gimbal::ControlStatus>(GetArenaForAllocation());
      control_status_ = p;
    }
    return control_status_;
  }
  inline ::mavsdk::rpc::gimbal::ControlStatus* ControlResponse::mutable_control_status() {
    ::mavsdk::rpc::gimbal::ControlStatus* _msg = _internal_mutable_control_status();
    // @@protoc_insertion_point(field_mutable:mavsdk.rpc.gimbal.ControlResponse.control_status)
    return _msg;
  }
  inline void ControlResponse::set_allocated_control_status(::mavsdk::rpc::gimbal::ControlStatus* control_status) {
    ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
    if (message_arena == nullptr) {
      delete control_status_;
    }
    if (control_status) {
      ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
          ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(control_status);
      if (message_arena != submessage_arena) {
        control_status = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
            message_arena, control_status, submessage_arena);
      }
      
    } else {
      
    }
    control_status_ = control_status;
    // @@protoc_insertion_point(field_set_allocated:mavsdk.rpc.gimbal.ControlResponse.control_status)
  }
  
  // -------------------------------------------------------------------
  
  // ControlStatus
  
  // .mavsdk.rpc.gimbal.ControlMode control_mode = 1;
  inline void ControlStatus::clear_control_mode() {
    control_mode_ = 0;
  }
  inline ::mavsdk::rpc::gimbal::ControlMode ControlStatus::_internal_control_mode() const {
    return static_cast< ::mavsdk::rpc::gimbal::ControlMode >(control_mode_);
  }
  inline ::mavsdk::rpc::gimbal::ControlMode ControlStatus::control_mode() const {
    // @@protoc_insertion_point(field_get:mavsdk.rpc.gimbal.ControlStatus.control_mode)
    return _internal_control_mode();
  }
  inline void ControlStatus::_internal_set_control_mode(::mavsdk::rpc::gimbal::ControlMode value) {
    
    control_mode_ = value;
  }
  inline void ControlStatus::set_control_mode(::mavsdk::rpc::gimbal::ControlMode value) {
    _internal_set_control_mode(value);
    // @@protoc_insertion_point(field_set:mavsdk.rpc.gimbal.ControlStatus.control_mode)
  }
  
  // int32 sysid_primary_control = 2;
  inline void ControlStatus::clear_sysid_primary_control() {
    sysid_primary_control_ = 0;
  }
  inline int32_t ControlStatus::_internal_sysid_primary_control() const {
    return sysid_primary_control_;
  }
  inline int32_t ControlStatus::sysid_primary_control() const {
    // @@protoc_insertion_point(field_get:mavsdk.rpc.gimbal.ControlStatus.sysid_primary_control)
    return _internal_sysid_primary_control();
  }
  inline void ControlStatus::_internal_set_sysid_primary_control(int32_t value) {
    
    sysid_primary_control_ = value;
  }
  inline void ControlStatus::set_sysid_primary_control(int32_t value) {
    _internal_set_sysid_primary_control(value);
    // @@protoc_insertion_point(field_set:mavsdk.rpc.gimbal.ControlStatus.sysid_primary_control)
  }
  
  // int32 compid_primary_control = 3;
  inline void ControlStatus::clear_compid_primary_control() {
    compid_primary_control_ = 0;
  }
  inline int32_t ControlStatus::_internal_compid_primary_control() const {
    return compid_primary_control_;
  }
  inline int32_t ControlStatus::compid_primary_control() const {
    // @@protoc_insertion_point(field_get:mavsdk.rpc.gimbal.ControlStatus.compid_primary_control)
    return _internal_compid_primary_control();
  }
  inline void ControlStatus::_internal_set_compid_primary_control(int32_t value) {
    
    compid_primary_control_ = value;
  }
  inline void ControlStatus::set_compid_primary_control(int32_t value) {
    _internal_set_compid_primary_control(value);
    // @@protoc_insertion_point(field_set:mavsdk.rpc.gimbal.ControlStatus.compid_primary_control)
  }
  
  // int32 sysid_secondary_control = 4;
  inline void ControlStatus::clear_sysid_secondary_control() {
    sysid_secondary_control_ = 0;
  }
  inline int32_t ControlStatus::_internal_sysid_secondary_control() const {
    return sysid_secondary_control_;
  }
  inline int32_t ControlStatus::sysid_secondary_control() const {
    // @@protoc_insertion_point(field_get:mavsdk.rpc.gimbal.ControlStatus.sysid_secondary_control)
    return _internal_sysid_secondary_control();
  }
  inline void ControlStatus::_internal_set_sysid_secondary_control(int32_t value) {
    
    sysid_secondary_control_ = value;
  }
  inline void ControlStatus::set_sysid_secondary_control(int32_t value) {
    _internal_set_sysid_secondary_control(value);
    // @@protoc_insertion_point(field_set:mavsdk.rpc.gimbal.ControlStatus.sysid_secondary_control)
  }
  
  // int32 compid_secondary_control = 5;
  inline void ControlStatus::clear_compid_secondary_control() {
    compid_secondary_control_ = 0;
  }
  inline int32_t ControlStatus::_internal_compid_secondary_control() const {
    return compid_secondary_control_;
  }
  inline int32_t ControlStatus::compid_secondary_control() const {
    // @@protoc_insertion_point(field_get:mavsdk.rpc.gimbal.ControlStatus.compid_secondary_control)
    return _internal_compid_secondary_control();
  }
  inline void ControlStatus::_internal_set_compid_secondary_control(int32_t value) {
    
    compid_secondary_control_ = value;
  }
  inline void ControlStatus::set_compid_secondary_control(int32_t value) {
    _internal_set_compid_secondary_control(value);
    // @@protoc_insertion_point(field_set:mavsdk.rpc.gimbal.ControlStatus.compid_secondary_control)
  }
  
  // -------------------------------------------------------------------
  
  // 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_.ClearToEmpty();
  }
  inline const std::string& GimbalResult::result_str() const {
    // @@protoc_insertion_point(field_get:mavsdk.rpc.gimbal.GimbalResult.result_str)
    return _internal_result_str();
  }
  template <typename ArgT0, typename... ArgT>
  inline PROTOBUF_ALWAYS_INLINE
  void GimbalResult::set_result_str(ArgT0&& arg0, ArgT... args) {
   
   result_str_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
    // @@protoc_insertion_point(field_set:mavsdk.rpc.gimbal.GimbalResult.result_str)
  }
  inline std::string* GimbalResult::mutable_result_str() {
    std::string* _s = _internal_mutable_result_str();
    // @@protoc_insertion_point(field_mutable:mavsdk.rpc.gimbal.GimbalResult.result_str)
    return _s;
  }
  inline const std::string& GimbalResult::_internal_result_str() const {
    return result_str_.Get();
  }
  inline void GimbalResult::_internal_set_result_str(const std::string& value) {
    
    result_str_.Set(value, GetArenaForAllocation());
  }
  inline std::string* GimbalResult::_internal_mutable_result_str() {
    
    return result_str_.Mutable(GetArenaForAllocation());
  }
  inline std::string* GimbalResult::release_result_str() {
    // @@protoc_insertion_point(field_release:mavsdk.rpc.gimbal.GimbalResult.result_str)
    return result_str_.Release();
  }
  inline void GimbalResult::set_allocated_result_str(std::string* result_str) {
    if (result_str != nullptr) {
      
    } else {
      
    }
    result_str_.SetAllocated(result_str, GetArenaForAllocation());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    if (result_str_.IsDefault()) {
      result_str_.Set("", GetArenaForAllocation());
    }
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
    // @@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();
  }
  template <> struct is_proto_enum< ::mavsdk::rpc::gimbal::ControlMode> : ::std::true_type {};
  template <>
  inline const EnumDescriptor* GetEnumDescriptor< ::mavsdk::rpc::gimbal::ControlMode>() {
    return ::mavsdk::rpc::gimbal::ControlMode_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
  