text: // Generated by the gRPC C++ plugin.
  // If you make any local change, they will be lost.
  // source: action/action.proto
  #ifndef GRPC_action_2faction_2eproto__INCLUDED
  #define GRPC_action_2faction_2eproto__INCLUDED
  
  #include "action/action.pb.h"
  
  #include <functional>
  #include <grpcpp/impl/codegen/async_generic_service.h>
  #include <grpcpp/impl/codegen/async_stream.h>
  #include <grpcpp/impl/codegen/async_unary_call.h>
  #include <grpcpp/impl/codegen/client_callback.h>
  #include <grpcpp/impl/codegen/client_context.h>
  #include <grpcpp/impl/codegen/completion_queue.h>
  #include <grpcpp/impl/codegen/message_allocator.h>
  #include <grpcpp/impl/codegen/method_handler.h>
  #include <grpcpp/impl/codegen/proto_utils.h>
  #include <grpcpp/impl/codegen/rpc_method.h>
  #include <grpcpp/impl/codegen/server_callback.h>
  #include <grpcpp/impl/codegen/server_callback_handlers.h>
  #include <grpcpp/impl/codegen/server_context.h>
  #include <grpcpp/impl/codegen/service_type.h>
  #include <grpcpp/impl/codegen/status.h>
  #include <grpcpp/impl/codegen/stub_options.h>
  #include <grpcpp/impl/codegen/sync_stream.h>
  
  namespace mavsdk {
  namespace rpc {
  namespace action {
  
  // Enable simple actions such as arming, taking off, and landing.
  class ActionService final {
   public:
    static constexpr char const* service_full_name() {
      return "mavsdk.rpc.action.ActionService";
    }
    class StubInterface {
     public:
      virtual ~StubInterface() {}
      //
      // Send command to arm the drone.
      //
      // Arming a drone normally causes motors to spin at idle.
      // Before arming take all safety precautions and stand clear of the drone!
      virtual ::grpc::Status Arm(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ArmRequest& request, ::mavsdk::rpc::action::ArmResponse* response) = 0;
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::ArmResponse>> AsyncArm(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ArmRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::ArmResponse>>(AsyncArmRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::ArmResponse>> PrepareAsyncArm(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ArmRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::ArmResponse>>(PrepareAsyncArmRaw(context, request, cq));
      }
      //
      // Send command to disarm the drone.
      //
      // This will disarm a drone that considers itself landed. If flying, the drone should
      // reject the disarm command. Disarming means that all motors will stop.
      virtual ::grpc::Status Disarm(::grpc::ClientContext* context, const ::mavsdk::rpc::action::DisarmRequest& request, ::mavsdk::rpc::action::DisarmResponse* response) = 0;
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::DisarmResponse>> AsyncDisarm(::grpc::ClientContext* context, const ::mavsdk::rpc::action::DisarmRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::DisarmResponse>>(AsyncDisarmRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::DisarmResponse>> PrepareAsyncDisarm(::grpc::ClientContext* context, const ::mavsdk::rpc::action::DisarmRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::DisarmResponse>>(PrepareAsyncDisarmRaw(context, request, cq));
      }
      //
      // Send command to take off and hover.
      //
      // This switches the drone into position control mode and commands
      // it to take off and hover at the takeoff altitude.
      //
      // Note that the vehicle must be armed before it can take off.
      virtual ::grpc::Status Takeoff(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TakeoffRequest& request, ::mavsdk::rpc::action::TakeoffResponse* response) = 0;
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::TakeoffResponse>> AsyncTakeoff(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TakeoffRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::TakeoffResponse>>(AsyncTakeoffRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::TakeoffResponse>> PrepareAsyncTakeoff(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TakeoffRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::TakeoffResponse>>(PrepareAsyncTakeoffRaw(context, request, cq));
      }
      //
      // Send command to land at the current position.
      //
      // This switches the drone to 'Land' flight mode.
      virtual ::grpc::Status Land(::grpc::ClientContext* context, const ::mavsdk::rpc::action::LandRequest& request, ::mavsdk::rpc::action::LandResponse* response) = 0;
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::LandResponse>> AsyncLand(::grpc::ClientContext* context, const ::mavsdk::rpc::action::LandRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::LandResponse>>(AsyncLandRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::LandResponse>> PrepareAsyncLand(::grpc::ClientContext* context, const ::mavsdk::rpc::action::LandRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::LandResponse>>(PrepareAsyncLandRaw(context, request, cq));
      }
      //
      // Send command to reboot the drone components.
      //
      // This will reboot the autopilot, companion computer, camera and gimbal.
      virtual ::grpc::Status Reboot(::grpc::ClientContext* context, const ::mavsdk::rpc::action::RebootRequest& request, ::mavsdk::rpc::action::RebootResponse* response) = 0;
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::RebootResponse>> AsyncReboot(::grpc::ClientContext* context, const ::mavsdk::rpc::action::RebootRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::RebootResponse>>(AsyncRebootRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::RebootResponse>> PrepareAsyncReboot(::grpc::ClientContext* context, const ::mavsdk::rpc::action::RebootRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::RebootResponse>>(PrepareAsyncRebootRaw(context, request, cq));
      }
      //
      // Send command to shut down the drone components.
      //
      // This will shut down the autopilot, onboard computer, camera and gimbal.
      // This command should only be used when the autopilot is disarmed and autopilots commonly
      // reject it if they are not already ready to shut down.
      virtual ::grpc::Status Shutdown(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ShutdownRequest& request, ::mavsdk::rpc::action::ShutdownResponse* response) = 0;
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::ShutdownResponse>> AsyncShutdown(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ShutdownRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::ShutdownResponse>>(AsyncShutdownRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::ShutdownResponse>> PrepareAsyncShutdown(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ShutdownRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::ShutdownResponse>>(PrepareAsyncShutdownRaw(context, request, cq));
      }
      //
      // Send command to terminate the drone.
      //
      // This will run the terminate routine as configured on the drone (e.g. disarm and open the parachute).
      virtual ::grpc::Status Terminate(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TerminateRequest& request, ::mavsdk::rpc::action::TerminateResponse* response) = 0;
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::TerminateResponse>> AsyncTerminate(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TerminateRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::TerminateResponse>>(AsyncTerminateRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::TerminateResponse>> PrepareAsyncTerminate(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TerminateRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::TerminateResponse>>(PrepareAsyncTerminateRaw(context, request, cq));
      }
      //
      // Send command to kill the drone.
      //
      // This will disarm a drone irrespective of whether it is landed or flying.
      // Note that the drone will fall out of the sky if this command is used while flying.
      virtual ::grpc::Status Kill(::grpc::ClientContext* context, const ::mavsdk::rpc::action::KillRequest& request, ::mavsdk::rpc::action::KillResponse* response) = 0;
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::KillResponse>> AsyncKill(::grpc::ClientContext* context, const ::mavsdk::rpc::action::KillRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::KillResponse>>(AsyncKillRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::KillResponse>> PrepareAsyncKill(::grpc::ClientContext* context, const ::mavsdk::rpc::action::KillRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::KillResponse>>(PrepareAsyncKillRaw(context, request, cq));
      }
      //
      // Send command to return to the launch (takeoff) position and land.
      //
      // This switches the drone into [Return mode](https://docs.px4.io/master/en/flight_modes/return.html) which
      // generally means it will rise up to a certain altitude to clear any obstacles before heading
      // back to the launch (takeoff) position and land there.
      virtual ::grpc::Status ReturnToLaunch(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ReturnToLaunchRequest& request, ::mavsdk::rpc::action::ReturnToLaunchResponse* response) = 0;
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::ReturnToLaunchResponse>> AsyncReturnToLaunch(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ReturnToLaunchRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::ReturnToLaunchResponse>>(AsyncReturnToLaunchRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::ReturnToLaunchResponse>> PrepareAsyncReturnToLaunch(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ReturnToLaunchRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::ReturnToLaunchResponse>>(PrepareAsyncReturnToLaunchRaw(context, request, cq));
      }
      //
      // Send command to move the vehicle to a specific global position.
      //
      // The latitude and longitude are given in degrees (WGS84 frame) and the altitude
      // in meters AMSL (above mean sea level).
      //
      // The yaw angle is in degrees (frame is NED, 0 is North, positive is clockwise).
      virtual ::grpc::Status GotoLocation(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GotoLocationRequest& request, ::mavsdk::rpc::action::GotoLocationResponse* response) = 0;
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::GotoLocationResponse>> AsyncGotoLocation(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GotoLocationRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::GotoLocationResponse>>(AsyncGotoLocationRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::GotoLocationResponse>> PrepareAsyncGotoLocation(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GotoLocationRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::GotoLocationResponse>>(PrepareAsyncGotoLocationRaw(context, request, cq));
      }
      //
      // Send command do orbit to the drone.
      //
      // This will run the orbit routine with the given parameters.
      virtual ::grpc::Status DoOrbit(::grpc::ClientContext* context, const ::mavsdk::rpc::action::DoOrbitRequest& request, ::mavsdk::rpc::action::DoOrbitResponse* response) = 0;
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::DoOrbitResponse>> AsyncDoOrbit(::grpc::ClientContext* context, const ::mavsdk::rpc::action::DoOrbitRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::DoOrbitResponse>>(AsyncDoOrbitRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::DoOrbitResponse>> PrepareAsyncDoOrbit(::grpc::ClientContext* context, const ::mavsdk::rpc::action::DoOrbitRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::DoOrbitResponse>>(PrepareAsyncDoOrbitRaw(context, request, cq));
      }
      //
      // Send command to hold position (a.k.a. "Loiter").
      //
      // Sends a command to drone to change to Hold flight mode, causing the
      // vehicle to stop and maintain its current GPS position and altitude.
      //
      // Note: this command is specific to the PX4 Autopilot flight stack as
      // it implies a change to a PX4-specific mode.
      virtual ::grpc::Status Hold(::grpc::ClientContext* context, const ::mavsdk::rpc::action::HoldRequest& request, ::mavsdk::rpc::action::HoldResponse* response) = 0;
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::HoldResponse>> AsyncHold(::grpc::ClientContext* context, const ::mavsdk::rpc::action::HoldRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::HoldResponse>>(AsyncHoldRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::HoldResponse>> PrepareAsyncHold(::grpc::ClientContext* context, const ::mavsdk::rpc::action::HoldRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::HoldResponse>>(PrepareAsyncHoldRaw(context, request, cq));
      }
      //
      // Send command to set the value of an actuator.
      virtual ::grpc::Status SetActuator(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetActuatorRequest& request, ::mavsdk::rpc::action::SetActuatorResponse* response) = 0;
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::SetActuatorResponse>> AsyncSetActuator(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetActuatorRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::SetActuatorResponse>>(AsyncSetActuatorRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::SetActuatorResponse>> PrepareAsyncSetActuator(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetActuatorRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::SetActuatorResponse>>(PrepareAsyncSetActuatorRaw(context, request, cq));
      }
      //
      // Send command to transition the drone to fixedwing.
      //
      // The associated action will only be executed for VTOL vehicles (on other vehicle types the
      // command will fail). The command will succeed if called when the vehicle
      // is already in fixedwing mode.
      virtual ::grpc::Status TransitionToFixedwing(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TransitionToFixedwingRequest& request, ::mavsdk::rpc::action::TransitionToFixedwingResponse* response) = 0;
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::TransitionToFixedwingResponse>> AsyncTransitionToFixedwing(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TransitionToFixedwingRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::TransitionToFixedwingResponse>>(AsyncTransitionToFixedwingRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::TransitionToFixedwingResponse>> PrepareAsyncTransitionToFixedwing(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TransitionToFixedwingRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::TransitionToFixedwingResponse>>(PrepareAsyncTransitionToFixedwingRaw(context, request, cq));
      }
      //
      // Send command to transition the drone to multicopter.
      //
      // The associated action will only be executed for VTOL vehicles (on other vehicle types the
      // command will fail). The command will succeed if called when the vehicle
      // is already in multicopter mode.
      virtual ::grpc::Status TransitionToMulticopter(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TransitionToMulticopterRequest& request, ::mavsdk::rpc::action::TransitionToMulticopterResponse* response) = 0;
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::TransitionToMulticopterResponse>> AsyncTransitionToMulticopter(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TransitionToMulticopterRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::TransitionToMulticopterResponse>>(AsyncTransitionToMulticopterRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::TransitionToMulticopterResponse>> PrepareAsyncTransitionToMulticopter(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TransitionToMulticopterRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::TransitionToMulticopterResponse>>(PrepareAsyncTransitionToMulticopterRaw(context, request, cq));
      }
      //
      // Get the takeoff altitude (in meters above ground).
      virtual ::grpc::Status GetTakeoffAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetTakeoffAltitudeRequest& request, ::mavsdk::rpc::action::GetTakeoffAltitudeResponse* response) = 0;
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::GetTakeoffAltitudeResponse>> AsyncGetTakeoffAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetTakeoffAltitudeRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::GetTakeoffAltitudeResponse>>(AsyncGetTakeoffAltitudeRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::GetTakeoffAltitudeResponse>> PrepareAsyncGetTakeoffAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetTakeoffAltitudeRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::GetTakeoffAltitudeResponse>>(PrepareAsyncGetTakeoffAltitudeRaw(context, request, cq));
      }
      //
      // Set takeoff altitude (in meters above ground).
      virtual ::grpc::Status SetTakeoffAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetTakeoffAltitudeRequest& request, ::mavsdk::rpc::action::SetTakeoffAltitudeResponse* response) = 0;
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::SetTakeoffAltitudeResponse>> AsyncSetTakeoffAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetTakeoffAltitudeRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::SetTakeoffAltitudeResponse>>(AsyncSetTakeoffAltitudeRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::SetTakeoffAltitudeResponse>> PrepareAsyncSetTakeoffAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetTakeoffAltitudeRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::SetTakeoffAltitudeResponse>>(PrepareAsyncSetTakeoffAltitudeRaw(context, request, cq));
      }
      //
      // Get the vehicle maximum speed (in metres/second).
      virtual ::grpc::Status GetMaximumSpeed(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetMaximumSpeedRequest& request, ::mavsdk::rpc::action::GetMaximumSpeedResponse* response) = 0;
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::GetMaximumSpeedResponse>> AsyncGetMaximumSpeed(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetMaximumSpeedRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::GetMaximumSpeedResponse>>(AsyncGetMaximumSpeedRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::GetMaximumSpeedResponse>> PrepareAsyncGetMaximumSpeed(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetMaximumSpeedRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::GetMaximumSpeedResponse>>(PrepareAsyncGetMaximumSpeedRaw(context, request, cq));
      }
      //
      // Set vehicle maximum speed (in metres/second).
      virtual ::grpc::Status SetMaximumSpeed(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetMaximumSpeedRequest& request, ::mavsdk::rpc::action::SetMaximumSpeedResponse* response) = 0;
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::SetMaximumSpeedResponse>> AsyncSetMaximumSpeed(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetMaximumSpeedRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::SetMaximumSpeedResponse>>(AsyncSetMaximumSpeedRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::SetMaximumSpeedResponse>> PrepareAsyncSetMaximumSpeed(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetMaximumSpeedRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::SetMaximumSpeedResponse>>(PrepareAsyncSetMaximumSpeedRaw(context, request, cq));
      }
      //
      // Get the return to launch minimum return altitude (in meters).
      virtual ::grpc::Status GetReturnToLaunchAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetReturnToLaunchAltitudeRequest& request, ::mavsdk::rpc::action::GetReturnToLaunchAltitudeResponse* response) = 0;
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::GetReturnToLaunchAltitudeResponse>> AsyncGetReturnToLaunchAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetReturnToLaunchAltitudeRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::GetReturnToLaunchAltitudeResponse>>(AsyncGetReturnToLaunchAltitudeRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::GetReturnToLaunchAltitudeResponse>> PrepareAsyncGetReturnToLaunchAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetReturnToLaunchAltitudeRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::GetReturnToLaunchAltitudeResponse>>(PrepareAsyncGetReturnToLaunchAltitudeRaw(context, request, cq));
      }
      //
      // Set the return to launch minimum return altitude (in meters).
      virtual ::grpc::Status SetReturnToLaunchAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetReturnToLaunchAltitudeRequest& request, ::mavsdk::rpc::action::SetReturnToLaunchAltitudeResponse* response) = 0;
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::SetReturnToLaunchAltitudeResponse>> AsyncSetReturnToLaunchAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetReturnToLaunchAltitudeRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::SetReturnToLaunchAltitudeResponse>>(AsyncSetReturnToLaunchAltitudeRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::SetReturnToLaunchAltitudeResponse>> PrepareAsyncSetReturnToLaunchAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetReturnToLaunchAltitudeRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::SetReturnToLaunchAltitudeResponse>>(PrepareAsyncSetReturnToLaunchAltitudeRaw(context, request, cq));
      }
      //
      // Set current speed.
      //
      // This will set the speed during a mission, reposition, and similar.
      // It is ephemeral, so not stored on the drone and does not survive a reboot.
      virtual ::grpc::Status SetCurrentSpeed(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetCurrentSpeedRequest& request, ::mavsdk::rpc::action::SetCurrentSpeedResponse* response) = 0;
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::SetCurrentSpeedResponse>> AsyncSetCurrentSpeed(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetCurrentSpeedRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::SetCurrentSpeedResponse>>(AsyncSetCurrentSpeedRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::SetCurrentSpeedResponse>> PrepareAsyncSetCurrentSpeed(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetCurrentSpeedRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::SetCurrentSpeedResponse>>(PrepareAsyncSetCurrentSpeedRaw(context, request, cq));
      }
      class async_interface {
       public:
        virtual ~async_interface() {}
        //
        // Send command to arm the drone.
        //
        // Arming a drone normally causes motors to spin at idle.
        // Before arming take all safety precautions and stand clear of the drone!
        virtual void Arm(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ArmRequest* request, ::mavsdk::rpc::action::ArmResponse* response, std::function<void(::grpc::Status)>) = 0;
        virtual void Arm(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ArmRequest* request, ::mavsdk::rpc::action::ArmResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
        //
        // Send command to disarm the drone.
        //
        // This will disarm a drone that considers itself landed. If flying, the drone should
        // reject the disarm command. Disarming means that all motors will stop.
        virtual void Disarm(::grpc::ClientContext* context, const ::mavsdk::rpc::action::DisarmRequest* request, ::mavsdk::rpc::action::DisarmResponse* response, std::function<void(::grpc::Status)>) = 0;
        virtual void Disarm(::grpc::ClientContext* context, const ::mavsdk::rpc::action::DisarmRequest* request, ::mavsdk::rpc::action::DisarmResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
        //
        // Send command to take off and hover.
        //
        // This switches the drone into position control mode and commands
        // it to take off and hover at the takeoff altitude.
        //
        // Note that the vehicle must be armed before it can take off.
        virtual void Takeoff(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TakeoffRequest* request, ::mavsdk::rpc::action::TakeoffResponse* response, std::function<void(::grpc::Status)>) = 0;
        virtual void Takeoff(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TakeoffRequest* request, ::mavsdk::rpc::action::TakeoffResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
        //
        // Send command to land at the current position.
        //
        // This switches the drone to 'Land' flight mode.
        virtual void Land(::grpc::ClientContext* context, const ::mavsdk::rpc::action::LandRequest* request, ::mavsdk::rpc::action::LandResponse* response, std::function<void(::grpc::Status)>) = 0;
        virtual void Land(::grpc::ClientContext* context, const ::mavsdk::rpc::action::LandRequest* request, ::mavsdk::rpc::action::LandResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
        //
        // Send command to reboot the drone components.
        //
        // This will reboot the autopilot, companion computer, camera and gimbal.
        virtual void Reboot(::grpc::ClientContext* context, const ::mavsdk::rpc::action::RebootRequest* request, ::mavsdk::rpc::action::RebootResponse* response, std::function<void(::grpc::Status)>) = 0;
        virtual void Reboot(::grpc::ClientContext* context, const ::mavsdk::rpc::action::RebootRequest* request, ::mavsdk::rpc::action::RebootResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
        //
        // Send command to shut down the drone components.
        //
        // This will shut down the autopilot, onboard computer, camera and gimbal.
        // This command should only be used when the autopilot is disarmed and autopilots commonly
        // reject it if they are not already ready to shut down.
        virtual void Shutdown(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ShutdownRequest* request, ::mavsdk::rpc::action::ShutdownResponse* response, std::function<void(::grpc::Status)>) = 0;
        virtual void Shutdown(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ShutdownRequest* request, ::mavsdk::rpc::action::ShutdownResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
        //
        // Send command to terminate the drone.
        //
        // This will run the terminate routine as configured on the drone (e.g. disarm and open the parachute).
        virtual void Terminate(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TerminateRequest* request, ::mavsdk::rpc::action::TerminateResponse* response, std::function<void(::grpc::Status)>) = 0;
        virtual void Terminate(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TerminateRequest* request, ::mavsdk::rpc::action::TerminateResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
        //
        // Send command to kill the drone.
        //
        // This will disarm a drone irrespective of whether it is landed or flying.
        // Note that the drone will fall out of the sky if this command is used while flying.
        virtual void Kill(::grpc::ClientContext* context, const ::mavsdk::rpc::action::KillRequest* request, ::mavsdk::rpc::action::KillResponse* response, std::function<void(::grpc::Status)>) = 0;
        virtual void Kill(::grpc::ClientContext* context, const ::mavsdk::rpc::action::KillRequest* request, ::mavsdk::rpc::action::KillResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
        //
        // Send command to return to the launch (takeoff) position and land.
        //
        // This switches the drone into [Return mode](https://docs.px4.io/master/en/flight_modes/return.html) which
        // generally means it will rise up to a certain altitude to clear any obstacles before heading
        // back to the launch (takeoff) position and land there.
        virtual void ReturnToLaunch(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ReturnToLaunchRequest* request, ::mavsdk::rpc::action::ReturnToLaunchResponse* response, std::function<void(::grpc::Status)>) = 0;
        virtual void ReturnToLaunch(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ReturnToLaunchRequest* request, ::mavsdk::rpc::action::ReturnToLaunchResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
        //
        // Send command to move the vehicle to a specific global position.
        //
        // The latitude and longitude are given in degrees (WGS84 frame) and the altitude
        // in meters AMSL (above mean sea level).
        //
        // The yaw angle is in degrees (frame is NED, 0 is North, positive is clockwise).
        virtual void GotoLocation(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GotoLocationRequest* request, ::mavsdk::rpc::action::GotoLocationResponse* response, std::function<void(::grpc::Status)>) = 0;
        virtual void GotoLocation(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GotoLocationRequest* request, ::mavsdk::rpc::action::GotoLocationResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
        //
        // Send command do orbit to the drone.
        //
        // This will run the orbit routine with the given parameters.
        virtual void DoOrbit(::grpc::ClientContext* context, const ::mavsdk::rpc::action::DoOrbitRequest* request, ::mavsdk::rpc::action::DoOrbitResponse* response, std::function<void(::grpc::Status)>) = 0;
        virtual void DoOrbit(::grpc::ClientContext* context, const ::mavsdk::rpc::action::DoOrbitRequest* request, ::mavsdk::rpc::action::DoOrbitResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
        //
        // Send command to hold position (a.k.a. "Loiter").
        //
        // Sends a command to drone to change to Hold flight mode, causing the
        // vehicle to stop and maintain its current GPS position and altitude.
        //
        // Note: this command is specific to the PX4 Autopilot flight stack as
        // it implies a change to a PX4-specific mode.
        virtual void Hold(::grpc::ClientContext* context, const ::mavsdk::rpc::action::HoldRequest* request, ::mavsdk::rpc::action::HoldResponse* response, std::function<void(::grpc::Status)>) = 0;
        virtual void Hold(::grpc::ClientContext* context, const ::mavsdk::rpc::action::HoldRequest* request, ::mavsdk::rpc::action::HoldResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
        //
        // Send command to set the value of an actuator.
        virtual void SetActuator(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetActuatorRequest* request, ::mavsdk::rpc::action::SetActuatorResponse* response, std::function<void(::grpc::Status)>) = 0;
        virtual void SetActuator(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetActuatorRequest* request, ::mavsdk::rpc::action::SetActuatorResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
        //
        // Send command to transition the drone to fixedwing.
        //
        // The associated action will only be executed for VTOL vehicles (on other vehicle types the
        // command will fail). The command will succeed if called when the vehicle
        // is already in fixedwing mode.
        virtual void TransitionToFixedwing(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TransitionToFixedwingRequest* request, ::mavsdk::rpc::action::TransitionToFixedwingResponse* response, std::function<void(::grpc::Status)>) = 0;
        virtual void TransitionToFixedwing(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TransitionToFixedwingRequest* request, ::mavsdk::rpc::action::TransitionToFixedwingResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
        //
        // Send command to transition the drone to multicopter.
        //
        // The associated action will only be executed for VTOL vehicles (on other vehicle types the
        // command will fail). The command will succeed if called when the vehicle
        // is already in multicopter mode.
        virtual void TransitionToMulticopter(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TransitionToMulticopterRequest* request, ::mavsdk::rpc::action::TransitionToMulticopterResponse* response, std::function<void(::grpc::Status)>) = 0;
        virtual void TransitionToMulticopter(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TransitionToMulticopterRequest* request, ::mavsdk::rpc::action::TransitionToMulticopterResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
        //
        // Get the takeoff altitude (in meters above ground).
        virtual void GetTakeoffAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetTakeoffAltitudeRequest* request, ::mavsdk::rpc::action::GetTakeoffAltitudeResponse* response, std::function<void(::grpc::Status)>) = 0;
        virtual void GetTakeoffAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetTakeoffAltitudeRequest* request, ::mavsdk::rpc::action::GetTakeoffAltitudeResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
        //
        // Set takeoff altitude (in meters above ground).
        virtual void SetTakeoffAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetTakeoffAltitudeRequest* request, ::mavsdk::rpc::action::SetTakeoffAltitudeResponse* response, std::function<void(::grpc::Status)>) = 0;
        virtual void SetTakeoffAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetTakeoffAltitudeRequest* request, ::mavsdk::rpc::action::SetTakeoffAltitudeResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
        //
        // Get the vehicle maximum speed (in metres/second).
        virtual void GetMaximumSpeed(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetMaximumSpeedRequest* request, ::mavsdk::rpc::action::GetMaximumSpeedResponse* response, std::function<void(::grpc::Status)>) = 0;
        virtual void GetMaximumSpeed(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetMaximumSpeedRequest* request, ::mavsdk::rpc::action::GetMaximumSpeedResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
        //
        // Set vehicle maximum speed (in metres/second).
        virtual void SetMaximumSpeed(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetMaximumSpeedRequest* request, ::mavsdk::rpc::action::SetMaximumSpeedResponse* response, std::function<void(::grpc::Status)>) = 0;
        virtual void SetMaximumSpeed(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetMaximumSpeedRequest* request, ::mavsdk::rpc::action::SetMaximumSpeedResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
        //
        // Get the return to launch minimum return altitude (in meters).
        virtual void GetReturnToLaunchAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetReturnToLaunchAltitudeRequest* request, ::mavsdk::rpc::action::GetReturnToLaunchAltitudeResponse* response, std::function<void(::grpc::Status)>) = 0;
        virtual void GetReturnToLaunchAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetReturnToLaunchAltitudeRequest* request, ::mavsdk::rpc::action::GetReturnToLaunchAltitudeResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
        //
        // Set the return to launch minimum return altitude (in meters).
        virtual void SetReturnToLaunchAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetReturnToLaunchAltitudeRequest* request, ::mavsdk::rpc::action::SetReturnToLaunchAltitudeResponse* response, std::function<void(::grpc::Status)>) = 0;
        virtual void SetReturnToLaunchAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetReturnToLaunchAltitudeRequest* request, ::mavsdk::rpc::action::SetReturnToLaunchAltitudeResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
        //
        // Set current speed.
        //
        // This will set the speed during a mission, reposition, and similar.
        // It is ephemeral, so not stored on the drone and does not survive a reboot.
        virtual void SetCurrentSpeed(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetCurrentSpeedRequest* request, ::mavsdk::rpc::action::SetCurrentSpeedResponse* response, std::function<void(::grpc::Status)>) = 0;
        virtual void SetCurrentSpeed(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetCurrentSpeedRequest* request, ::mavsdk::rpc::action::SetCurrentSpeedResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      };
      typedef class async_interface experimental_async_interface;
      virtual class async_interface* async() { return nullptr; }
      class async_interface* experimental_async() { return async(); }
     private:
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::ArmResponse>* AsyncArmRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ArmRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::ArmResponse>* PrepareAsyncArmRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ArmRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::DisarmResponse>* AsyncDisarmRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::DisarmRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::DisarmResponse>* PrepareAsyncDisarmRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::DisarmRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::TakeoffResponse>* AsyncTakeoffRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TakeoffRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::TakeoffResponse>* PrepareAsyncTakeoffRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TakeoffRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::LandResponse>* AsyncLandRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::LandRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::LandResponse>* PrepareAsyncLandRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::LandRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::RebootResponse>* AsyncRebootRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::RebootRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::RebootResponse>* PrepareAsyncRebootRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::RebootRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::ShutdownResponse>* AsyncShutdownRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ShutdownRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::ShutdownResponse>* PrepareAsyncShutdownRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ShutdownRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::TerminateResponse>* AsyncTerminateRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TerminateRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::TerminateResponse>* PrepareAsyncTerminateRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TerminateRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::KillResponse>* AsyncKillRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::KillRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::KillResponse>* PrepareAsyncKillRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::KillRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::ReturnToLaunchResponse>* AsyncReturnToLaunchRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ReturnToLaunchRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::ReturnToLaunchResponse>* PrepareAsyncReturnToLaunchRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ReturnToLaunchRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::GotoLocationResponse>* AsyncGotoLocationRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GotoLocationRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::GotoLocationResponse>* PrepareAsyncGotoLocationRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GotoLocationRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::DoOrbitResponse>* AsyncDoOrbitRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::DoOrbitRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::DoOrbitResponse>* PrepareAsyncDoOrbitRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::DoOrbitRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::HoldResponse>* AsyncHoldRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::HoldRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::HoldResponse>* PrepareAsyncHoldRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::HoldRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::SetActuatorResponse>* AsyncSetActuatorRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetActuatorRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::SetActuatorResponse>* PrepareAsyncSetActuatorRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetActuatorRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::TransitionToFixedwingResponse>* AsyncTransitionToFixedwingRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TransitionToFixedwingRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::TransitionToFixedwingResponse>* PrepareAsyncTransitionToFixedwingRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TransitionToFixedwingRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::TransitionToMulticopterResponse>* AsyncTransitionToMulticopterRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TransitionToMulticopterRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::TransitionToMulticopterResponse>* PrepareAsyncTransitionToMulticopterRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TransitionToMulticopterRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::GetTakeoffAltitudeResponse>* AsyncGetTakeoffAltitudeRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetTakeoffAltitudeRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::GetTakeoffAltitudeResponse>* PrepareAsyncGetTakeoffAltitudeRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetTakeoffAltitudeRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::SetTakeoffAltitudeResponse>* AsyncSetTakeoffAltitudeRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetTakeoffAltitudeRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::SetTakeoffAltitudeResponse>* PrepareAsyncSetTakeoffAltitudeRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetTakeoffAltitudeRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::GetMaximumSpeedResponse>* AsyncGetMaximumSpeedRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetMaximumSpeedRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::GetMaximumSpeedResponse>* PrepareAsyncGetMaximumSpeedRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetMaximumSpeedRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::SetMaximumSpeedResponse>* AsyncSetMaximumSpeedRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetMaximumSpeedRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::SetMaximumSpeedResponse>* PrepareAsyncSetMaximumSpeedRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetMaximumSpeedRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::GetReturnToLaunchAltitudeResponse>* AsyncGetReturnToLaunchAltitudeRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetReturnToLaunchAltitudeRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::GetReturnToLaunchAltitudeResponse>* PrepareAsyncGetReturnToLaunchAltitudeRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetReturnToLaunchAltitudeRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::SetReturnToLaunchAltitudeResponse>* AsyncSetReturnToLaunchAltitudeRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetReturnToLaunchAltitudeRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::SetReturnToLaunchAltitudeResponse>* PrepareAsyncSetReturnToLaunchAltitudeRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetReturnToLaunchAltitudeRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::SetCurrentSpeedResponse>* AsyncSetCurrentSpeedRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetCurrentSpeedRequest& request, ::grpc::CompletionQueue* cq) = 0;
      virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::action::SetCurrentSpeedResponse>* PrepareAsyncSetCurrentSpeedRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetCurrentSpeedRequest& request, ::grpc::CompletionQueue* cq) = 0;
    };
    class Stub final : public StubInterface {
     public:
      Stub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options = ::grpc::StubOptions());
      ::grpc::Status Arm(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ArmRequest& request, ::mavsdk::rpc::action::ArmResponse* response) override;
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::ArmResponse>> AsyncArm(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ArmRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::ArmResponse>>(AsyncArmRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::ArmResponse>> PrepareAsyncArm(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ArmRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::ArmResponse>>(PrepareAsyncArmRaw(context, request, cq));
      }
      ::grpc::Status Disarm(::grpc::ClientContext* context, const ::mavsdk::rpc::action::DisarmRequest& request, ::mavsdk::rpc::action::DisarmResponse* response) override;
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::DisarmResponse>> AsyncDisarm(::grpc::ClientContext* context, const ::mavsdk::rpc::action::DisarmRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::DisarmResponse>>(AsyncDisarmRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::DisarmResponse>> PrepareAsyncDisarm(::grpc::ClientContext* context, const ::mavsdk::rpc::action::DisarmRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::DisarmResponse>>(PrepareAsyncDisarmRaw(context, request, cq));
      }
      ::grpc::Status Takeoff(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TakeoffRequest& request, ::mavsdk::rpc::action::TakeoffResponse* response) override;
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::TakeoffResponse>> AsyncTakeoff(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TakeoffRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::TakeoffResponse>>(AsyncTakeoffRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::TakeoffResponse>> PrepareAsyncTakeoff(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TakeoffRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::TakeoffResponse>>(PrepareAsyncTakeoffRaw(context, request, cq));
      }
      ::grpc::Status Land(::grpc::ClientContext* context, const ::mavsdk::rpc::action::LandRequest& request, ::mavsdk::rpc::action::LandResponse* response) override;
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::LandResponse>> AsyncLand(::grpc::ClientContext* context, const ::mavsdk::rpc::action::LandRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::LandResponse>>(AsyncLandRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::LandResponse>> PrepareAsyncLand(::grpc::ClientContext* context, const ::mavsdk::rpc::action::LandRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::LandResponse>>(PrepareAsyncLandRaw(context, request, cq));
      }
      ::grpc::Status Reboot(::grpc::ClientContext* context, const ::mavsdk::rpc::action::RebootRequest& request, ::mavsdk::rpc::action::RebootResponse* response) override;
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::RebootResponse>> AsyncReboot(::grpc::ClientContext* context, const ::mavsdk::rpc::action::RebootRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::RebootResponse>>(AsyncRebootRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::RebootResponse>> PrepareAsyncReboot(::grpc::ClientContext* context, const ::mavsdk::rpc::action::RebootRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::RebootResponse>>(PrepareAsyncRebootRaw(context, request, cq));
      }
      ::grpc::Status Shutdown(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ShutdownRequest& request, ::mavsdk::rpc::action::ShutdownResponse* response) override;
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::ShutdownResponse>> AsyncShutdown(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ShutdownRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::ShutdownResponse>>(AsyncShutdownRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::ShutdownResponse>> PrepareAsyncShutdown(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ShutdownRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::ShutdownResponse>>(PrepareAsyncShutdownRaw(context, request, cq));
      }
      ::grpc::Status Terminate(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TerminateRequest& request, ::mavsdk::rpc::action::TerminateResponse* response) override;
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::TerminateResponse>> AsyncTerminate(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TerminateRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::TerminateResponse>>(AsyncTerminateRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::TerminateResponse>> PrepareAsyncTerminate(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TerminateRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::TerminateResponse>>(PrepareAsyncTerminateRaw(context, request, cq));
      }
      ::grpc::Status Kill(::grpc::ClientContext* context, const ::mavsdk::rpc::action::KillRequest& request, ::mavsdk::rpc::action::KillResponse* response) override;
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::KillResponse>> AsyncKill(::grpc::ClientContext* context, const ::mavsdk::rpc::action::KillRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::KillResponse>>(AsyncKillRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::KillResponse>> PrepareAsyncKill(::grpc::ClientContext* context, const ::mavsdk::rpc::action::KillRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::KillResponse>>(PrepareAsyncKillRaw(context, request, cq));
      }
      ::grpc::Status ReturnToLaunch(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ReturnToLaunchRequest& request, ::mavsdk::rpc::action::ReturnToLaunchResponse* response) override;
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::ReturnToLaunchResponse>> AsyncReturnToLaunch(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ReturnToLaunchRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::ReturnToLaunchResponse>>(AsyncReturnToLaunchRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::ReturnToLaunchResponse>> PrepareAsyncReturnToLaunch(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ReturnToLaunchRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::ReturnToLaunchResponse>>(PrepareAsyncReturnToLaunchRaw(context, request, cq));
      }
      ::grpc::Status GotoLocation(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GotoLocationRequest& request, ::mavsdk::rpc::action::GotoLocationResponse* response) override;
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::GotoLocationResponse>> AsyncGotoLocation(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GotoLocationRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::GotoLocationResponse>>(AsyncGotoLocationRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::GotoLocationResponse>> PrepareAsyncGotoLocation(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GotoLocationRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::GotoLocationResponse>>(PrepareAsyncGotoLocationRaw(context, request, cq));
      }
      ::grpc::Status DoOrbit(::grpc::ClientContext* context, const ::mavsdk::rpc::action::DoOrbitRequest& request, ::mavsdk::rpc::action::DoOrbitResponse* response) override;
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::DoOrbitResponse>> AsyncDoOrbit(::grpc::ClientContext* context, const ::mavsdk::rpc::action::DoOrbitRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::DoOrbitResponse>>(AsyncDoOrbitRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::DoOrbitResponse>> PrepareAsyncDoOrbit(::grpc::ClientContext* context, const ::mavsdk::rpc::action::DoOrbitRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::DoOrbitResponse>>(PrepareAsyncDoOrbitRaw(context, request, cq));
      }
      ::grpc::Status Hold(::grpc::ClientContext* context, const ::mavsdk::rpc::action::HoldRequest& request, ::mavsdk::rpc::action::HoldResponse* response) override;
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::HoldResponse>> AsyncHold(::grpc::ClientContext* context, const ::mavsdk::rpc::action::HoldRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::HoldResponse>>(AsyncHoldRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::HoldResponse>> PrepareAsyncHold(::grpc::ClientContext* context, const ::mavsdk::rpc::action::HoldRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::HoldResponse>>(PrepareAsyncHoldRaw(context, request, cq));
      }
      ::grpc::Status SetActuator(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetActuatorRequest& request, ::mavsdk::rpc::action::SetActuatorResponse* response) override;
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::SetActuatorResponse>> AsyncSetActuator(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetActuatorRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::SetActuatorResponse>>(AsyncSetActuatorRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::SetActuatorResponse>> PrepareAsyncSetActuator(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetActuatorRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::SetActuatorResponse>>(PrepareAsyncSetActuatorRaw(context, request, cq));
      }
      ::grpc::Status TransitionToFixedwing(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TransitionToFixedwingRequest& request, ::mavsdk::rpc::action::TransitionToFixedwingResponse* response) override;
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::TransitionToFixedwingResponse>> AsyncTransitionToFixedwing(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TransitionToFixedwingRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::TransitionToFixedwingResponse>>(AsyncTransitionToFixedwingRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::TransitionToFixedwingResponse>> PrepareAsyncTransitionToFixedwing(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TransitionToFixedwingRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::TransitionToFixedwingResponse>>(PrepareAsyncTransitionToFixedwingRaw(context, request, cq));
      }
      ::grpc::Status TransitionToMulticopter(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TransitionToMulticopterRequest& request, ::mavsdk::rpc::action::TransitionToMulticopterResponse* response) override;
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::TransitionToMulticopterResponse>> AsyncTransitionToMulticopter(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TransitionToMulticopterRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::TransitionToMulticopterResponse>>(AsyncTransitionToMulticopterRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::TransitionToMulticopterResponse>> PrepareAsyncTransitionToMulticopter(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TransitionToMulticopterRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::TransitionToMulticopterResponse>>(PrepareAsyncTransitionToMulticopterRaw(context, request, cq));
      }
      ::grpc::Status GetTakeoffAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetTakeoffAltitudeRequest& request, ::mavsdk::rpc::action::GetTakeoffAltitudeResponse* response) override;
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::GetTakeoffAltitudeResponse>> AsyncGetTakeoffAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetTakeoffAltitudeRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::GetTakeoffAltitudeResponse>>(AsyncGetTakeoffAltitudeRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::GetTakeoffAltitudeResponse>> PrepareAsyncGetTakeoffAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetTakeoffAltitudeRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::GetTakeoffAltitudeResponse>>(PrepareAsyncGetTakeoffAltitudeRaw(context, request, cq));
      }
      ::grpc::Status SetTakeoffAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetTakeoffAltitudeRequest& request, ::mavsdk::rpc::action::SetTakeoffAltitudeResponse* response) override;
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::SetTakeoffAltitudeResponse>> AsyncSetTakeoffAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetTakeoffAltitudeRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::SetTakeoffAltitudeResponse>>(AsyncSetTakeoffAltitudeRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::SetTakeoffAltitudeResponse>> PrepareAsyncSetTakeoffAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetTakeoffAltitudeRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::SetTakeoffAltitudeResponse>>(PrepareAsyncSetTakeoffAltitudeRaw(context, request, cq));
      }
      ::grpc::Status GetMaximumSpeed(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetMaximumSpeedRequest& request, ::mavsdk::rpc::action::GetMaximumSpeedResponse* response) override;
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::GetMaximumSpeedResponse>> AsyncGetMaximumSpeed(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetMaximumSpeedRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::GetMaximumSpeedResponse>>(AsyncGetMaximumSpeedRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::GetMaximumSpeedResponse>> PrepareAsyncGetMaximumSpeed(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetMaximumSpeedRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::GetMaximumSpeedResponse>>(PrepareAsyncGetMaximumSpeedRaw(context, request, cq));
      }
      ::grpc::Status SetMaximumSpeed(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetMaximumSpeedRequest& request, ::mavsdk::rpc::action::SetMaximumSpeedResponse* response) override;
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::SetMaximumSpeedResponse>> AsyncSetMaximumSpeed(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetMaximumSpeedRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::SetMaximumSpeedResponse>>(AsyncSetMaximumSpeedRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::SetMaximumSpeedResponse>> PrepareAsyncSetMaximumSpeed(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetMaximumSpeedRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::SetMaximumSpeedResponse>>(PrepareAsyncSetMaximumSpeedRaw(context, request, cq));
      }
      ::grpc::Status GetReturnToLaunchAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetReturnToLaunchAltitudeRequest& request, ::mavsdk::rpc::action::GetReturnToLaunchAltitudeResponse* response) override;
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::GetReturnToLaunchAltitudeResponse>> AsyncGetReturnToLaunchAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetReturnToLaunchAltitudeRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::GetReturnToLaunchAltitudeResponse>>(AsyncGetReturnToLaunchAltitudeRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::GetReturnToLaunchAltitudeResponse>> PrepareAsyncGetReturnToLaunchAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetReturnToLaunchAltitudeRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::GetReturnToLaunchAltitudeResponse>>(PrepareAsyncGetReturnToLaunchAltitudeRaw(context, request, cq));
      }
      ::grpc::Status SetReturnToLaunchAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetReturnToLaunchAltitudeRequest& request, ::mavsdk::rpc::action::SetReturnToLaunchAltitudeResponse* response) override;
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::SetReturnToLaunchAltitudeResponse>> AsyncSetReturnToLaunchAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetReturnToLaunchAltitudeRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::SetReturnToLaunchAltitudeResponse>>(AsyncSetReturnToLaunchAltitudeRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::SetReturnToLaunchAltitudeResponse>> PrepareAsyncSetReturnToLaunchAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetReturnToLaunchAltitudeRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::SetReturnToLaunchAltitudeResponse>>(PrepareAsyncSetReturnToLaunchAltitudeRaw(context, request, cq));
      }
      ::grpc::Status SetCurrentSpeed(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetCurrentSpeedRequest& request, ::mavsdk::rpc::action::SetCurrentSpeedResponse* response) override;
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::SetCurrentSpeedResponse>> AsyncSetCurrentSpeed(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetCurrentSpeedRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::SetCurrentSpeedResponse>>(AsyncSetCurrentSpeedRaw(context, request, cq));
      }
      std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::SetCurrentSpeedResponse>> PrepareAsyncSetCurrentSpeed(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetCurrentSpeedRequest& request, ::grpc::CompletionQueue* cq) {
        return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::SetCurrentSpeedResponse>>(PrepareAsyncSetCurrentSpeedRaw(context, request, cq));
      }
      class async final :
        public StubInterface::async_interface {
       public:
        void Arm(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ArmRequest* request, ::mavsdk::rpc::action::ArmResponse* response, std::function<void(::grpc::Status)>) override;
        void Arm(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ArmRequest* request, ::mavsdk::rpc::action::ArmResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
        void Disarm(::grpc::ClientContext* context, const ::mavsdk::rpc::action::DisarmRequest* request, ::mavsdk::rpc::action::DisarmResponse* response, std::function<void(::grpc::Status)>) override;
        void Disarm(::grpc::ClientContext* context, const ::mavsdk::rpc::action::DisarmRequest* request, ::mavsdk::rpc::action::DisarmResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
        void Takeoff(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TakeoffRequest* request, ::mavsdk::rpc::action::TakeoffResponse* response, std::function<void(::grpc::Status)>) override;
        void Takeoff(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TakeoffRequest* request, ::mavsdk::rpc::action::TakeoffResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
        void Land(::grpc::ClientContext* context, const ::mavsdk::rpc::action::LandRequest* request, ::mavsdk::rpc::action::LandResponse* response, std::function<void(::grpc::Status)>) override;
        void Land(::grpc::ClientContext* context, const ::mavsdk::rpc::action::LandRequest* request, ::mavsdk::rpc::action::LandResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
        void Reboot(::grpc::ClientContext* context, const ::mavsdk::rpc::action::RebootRequest* request, ::mavsdk::rpc::action::RebootResponse* response, std::function<void(::grpc::Status)>) override;
        void Reboot(::grpc::ClientContext* context, const ::mavsdk::rpc::action::RebootRequest* request, ::mavsdk::rpc::action::RebootResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
        void Shutdown(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ShutdownRequest* request, ::mavsdk::rpc::action::ShutdownResponse* response, std::function<void(::grpc::Status)>) override;
        void Shutdown(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ShutdownRequest* request, ::mavsdk::rpc::action::ShutdownResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
        void Terminate(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TerminateRequest* request, ::mavsdk::rpc::action::TerminateResponse* response, std::function<void(::grpc::Status)>) override;
        void Terminate(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TerminateRequest* request, ::mavsdk::rpc::action::TerminateResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
        void Kill(::grpc::ClientContext* context, const ::mavsdk::rpc::action::KillRequest* request, ::mavsdk::rpc::action::KillResponse* response, std::function<void(::grpc::Status)>) override;
        void Kill(::grpc::ClientContext* context, const ::mavsdk::rpc::action::KillRequest* request, ::mavsdk::rpc::action::KillResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
        void ReturnToLaunch(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ReturnToLaunchRequest* request, ::mavsdk::rpc::action::ReturnToLaunchResponse* response, std::function<void(::grpc::Status)>) override;
        void ReturnToLaunch(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ReturnToLaunchRequest* request, ::mavsdk::rpc::action::ReturnToLaunchResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
        void GotoLocation(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GotoLocationRequest* request, ::mavsdk::rpc::action::GotoLocationResponse* response, std::function<void(::grpc::Status)>) override;
        void GotoLocation(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GotoLocationRequest* request, ::mavsdk::rpc::action::GotoLocationResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
        void DoOrbit(::grpc::ClientContext* context, const ::mavsdk::rpc::action::DoOrbitRequest* request, ::mavsdk::rpc::action::DoOrbitResponse* response, std::function<void(::grpc::Status)>) override;
        void DoOrbit(::grpc::ClientContext* context, const ::mavsdk::rpc::action::DoOrbitRequest* request, ::mavsdk::rpc::action::DoOrbitResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
        void Hold(::grpc::ClientContext* context, const ::mavsdk::rpc::action::HoldRequest* request, ::mavsdk::rpc::action::HoldResponse* response, std::function<void(::grpc::Status)>) override;
        void Hold(::grpc::ClientContext* context, const ::mavsdk::rpc::action::HoldRequest* request, ::mavsdk::rpc::action::HoldResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
        void SetActuator(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetActuatorRequest* request, ::mavsdk::rpc::action::SetActuatorResponse* response, std::function<void(::grpc::Status)>) override;
        void SetActuator(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetActuatorRequest* request, ::mavsdk::rpc::action::SetActuatorResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
        void TransitionToFixedwing(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TransitionToFixedwingRequest* request, ::mavsdk::rpc::action::TransitionToFixedwingResponse* response, std::function<void(::grpc::Status)>) override;
        void TransitionToFixedwing(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TransitionToFixedwingRequest* request, ::mavsdk::rpc::action::TransitionToFixedwingResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
        void TransitionToMulticopter(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TransitionToMulticopterRequest* request, ::mavsdk::rpc::action::TransitionToMulticopterResponse* response, std::function<void(::grpc::Status)>) override;
        void TransitionToMulticopter(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TransitionToMulticopterRequest* request, ::mavsdk::rpc::action::TransitionToMulticopterResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
        void GetTakeoffAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetTakeoffAltitudeRequest* request, ::mavsdk::rpc::action::GetTakeoffAltitudeResponse* response, std::function<void(::grpc::Status)>) override;
        void GetTakeoffAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetTakeoffAltitudeRequest* request, ::mavsdk::rpc::action::GetTakeoffAltitudeResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
        void SetTakeoffAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetTakeoffAltitudeRequest* request, ::mavsdk::rpc::action::SetTakeoffAltitudeResponse* response, std::function<void(::grpc::Status)>) override;
        void SetTakeoffAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetTakeoffAltitudeRequest* request, ::mavsdk::rpc::action::SetTakeoffAltitudeResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
        void GetMaximumSpeed(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetMaximumSpeedRequest* request, ::mavsdk::rpc::action::GetMaximumSpeedResponse* response, std::function<void(::grpc::Status)>) override;
        void GetMaximumSpeed(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetMaximumSpeedRequest* request, ::mavsdk::rpc::action::GetMaximumSpeedResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
        void SetMaximumSpeed(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetMaximumSpeedRequest* request, ::mavsdk::rpc::action::SetMaximumSpeedResponse* response, std::function<void(::grpc::Status)>) override;
        void SetMaximumSpeed(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetMaximumSpeedRequest* request, ::mavsdk::rpc::action::SetMaximumSpeedResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
        void GetReturnToLaunchAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetReturnToLaunchAltitudeRequest* request, ::mavsdk::rpc::action::GetReturnToLaunchAltitudeResponse* response, std::function<void(::grpc::Status)>) override;
        void GetReturnToLaunchAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetReturnToLaunchAltitudeRequest* request, ::mavsdk::rpc::action::GetReturnToLaunchAltitudeResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
        void SetReturnToLaunchAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetReturnToLaunchAltitudeRequest* request, ::mavsdk::rpc::action::SetReturnToLaunchAltitudeResponse* response, std::function<void(::grpc::Status)>) override;
        void SetReturnToLaunchAltitude(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetReturnToLaunchAltitudeRequest* request, ::mavsdk::rpc::action::SetReturnToLaunchAltitudeResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
        void SetCurrentSpeed(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetCurrentSpeedRequest* request, ::mavsdk::rpc::action::SetCurrentSpeedResponse* response, std::function<void(::grpc::Status)>) override;
        void SetCurrentSpeed(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetCurrentSpeedRequest* request, ::mavsdk::rpc::action::SetCurrentSpeedResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
       private:
        friend class Stub;
        explicit async(Stub* stub): stub_(stub) { }
        Stub* stub() { return stub_; }
        Stub* stub_;
      };
      class async* async() override { return &async_stub_; }
  
     private:
      std::shared_ptr< ::grpc::ChannelInterface> channel_;
      class async async_stub_{this};
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::ArmResponse>* AsyncArmRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ArmRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::ArmResponse>* PrepareAsyncArmRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ArmRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::DisarmResponse>* AsyncDisarmRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::DisarmRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::DisarmResponse>* PrepareAsyncDisarmRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::DisarmRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::TakeoffResponse>* AsyncTakeoffRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TakeoffRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::TakeoffResponse>* PrepareAsyncTakeoffRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TakeoffRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::LandResponse>* AsyncLandRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::LandRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::LandResponse>* PrepareAsyncLandRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::LandRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::RebootResponse>* AsyncRebootRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::RebootRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::RebootResponse>* PrepareAsyncRebootRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::RebootRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::ShutdownResponse>* AsyncShutdownRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ShutdownRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::ShutdownResponse>* PrepareAsyncShutdownRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ShutdownRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::TerminateResponse>* AsyncTerminateRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TerminateRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::TerminateResponse>* PrepareAsyncTerminateRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TerminateRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::KillResponse>* AsyncKillRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::KillRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::KillResponse>* PrepareAsyncKillRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::KillRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::ReturnToLaunchResponse>* AsyncReturnToLaunchRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ReturnToLaunchRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::ReturnToLaunchResponse>* PrepareAsyncReturnToLaunchRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::ReturnToLaunchRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::GotoLocationResponse>* AsyncGotoLocationRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GotoLocationRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::GotoLocationResponse>* PrepareAsyncGotoLocationRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GotoLocationRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::DoOrbitResponse>* AsyncDoOrbitRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::DoOrbitRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::DoOrbitResponse>* PrepareAsyncDoOrbitRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::DoOrbitRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::HoldResponse>* AsyncHoldRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::HoldRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::HoldResponse>* PrepareAsyncHoldRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::HoldRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::SetActuatorResponse>* AsyncSetActuatorRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetActuatorRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::SetActuatorResponse>* PrepareAsyncSetActuatorRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetActuatorRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::TransitionToFixedwingResponse>* AsyncTransitionToFixedwingRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TransitionToFixedwingRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::TransitionToFixedwingResponse>* PrepareAsyncTransitionToFixedwingRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TransitionToFixedwingRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::TransitionToMulticopterResponse>* AsyncTransitionToMulticopterRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TransitionToMulticopterRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::TransitionToMulticopterResponse>* PrepareAsyncTransitionToMulticopterRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::TransitionToMulticopterRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::GetTakeoffAltitudeResponse>* AsyncGetTakeoffAltitudeRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetTakeoffAltitudeRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::GetTakeoffAltitudeResponse>* PrepareAsyncGetTakeoffAltitudeRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetTakeoffAltitudeRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::SetTakeoffAltitudeResponse>* AsyncSetTakeoffAltitudeRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetTakeoffAltitudeRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::SetTakeoffAltitudeResponse>* PrepareAsyncSetTakeoffAltitudeRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetTakeoffAltitudeRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::GetMaximumSpeedResponse>* AsyncGetMaximumSpeedRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetMaximumSpeedRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::GetMaximumSpeedResponse>* PrepareAsyncGetMaximumSpeedRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetMaximumSpeedRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::SetMaximumSpeedResponse>* AsyncSetMaximumSpeedRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetMaximumSpeedRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::SetMaximumSpeedResponse>* PrepareAsyncSetMaximumSpeedRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetMaximumSpeedRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::GetReturnToLaunchAltitudeResponse>* AsyncGetReturnToLaunchAltitudeRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetReturnToLaunchAltitudeRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::GetReturnToLaunchAltitudeResponse>* PrepareAsyncGetReturnToLaunchAltitudeRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::GetReturnToLaunchAltitudeRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::SetReturnToLaunchAltitudeResponse>* AsyncSetReturnToLaunchAltitudeRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetReturnToLaunchAltitudeRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::SetReturnToLaunchAltitudeResponse>* PrepareAsyncSetReturnToLaunchAltitudeRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetReturnToLaunchAltitudeRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::SetCurrentSpeedResponse>* AsyncSetCurrentSpeedRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetCurrentSpeedRequest& request, ::grpc::CompletionQueue* cq) override;
      ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::action::SetCurrentSpeedResponse>* PrepareAsyncSetCurrentSpeedRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::action::SetCurrentSpeedRequest& request, ::grpc::CompletionQueue* cq) override;
      const ::grpc::internal::RpcMethod rpcmethod_Arm_;
      const ::grpc::internal::RpcMethod rpcmethod_Disarm_;
      const ::grpc::internal::RpcMethod rpcmethod_Takeoff_;
      const ::grpc::internal::RpcMethod rpcmethod_Land_;
      const ::grpc::internal::RpcMethod rpcmethod_Reboot_;
      const ::grpc::internal::RpcMethod rpcmethod_Shutdown_;
      const ::grpc::internal::RpcMethod rpcmethod_Terminate_;
      const ::grpc::internal::RpcMethod rpcmethod_Kill_;
      const ::grpc::internal::RpcMethod rpcmethod_ReturnToLaunch_;
      const ::grpc::internal::RpcMethod rpcmethod_GotoLocation_;
      const ::grpc::internal::RpcMethod rpcmethod_DoOrbit_;
      const ::grpc::internal::RpcMethod rpcmethod_Hold_;
      const ::grpc::internal::RpcMethod rpcmethod_SetActuator_;
      const ::grpc::internal::RpcMethod rpcmethod_TransitionToFixedwing_;
      const ::grpc::internal::RpcMethod rpcmethod_TransitionToMulticopter_;
      const ::grpc::internal::RpcMethod rpcmethod_GetTakeoffAltitude_;
      const ::grpc::internal::RpcMethod rpcmethod_SetTakeoffAltitude_;
      const ::grpc::internal::RpcMethod rpcmethod_GetMaximumSpeed_;
      const ::grpc::internal::RpcMethod rpcmethod_SetMaximumSpeed_;
      const ::grpc::internal::RpcMethod rpcmethod_GetReturnToLaunchAltitude_;
      const ::grpc::internal::RpcMethod rpcmethod_SetReturnToLaunchAltitude_;
      const ::grpc::internal::RpcMethod rpcmethod_SetCurrentSpeed_;
    };
    static std::unique_ptr<Stub> NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options = ::grpc::StubOptions());
  
    class Service : public ::grpc::Service {
     public:
      Service();
      virtual ~Service();
      //
      // Send command to arm the drone.
      //
      // Arming a drone normally causes motors to spin at idle.
      // Before arming take all safety precautions and stand clear of the drone!
      virtual ::grpc::Status Arm(::grpc::ServerContext* context, const ::mavsdk::rpc::action::ArmRequest* request, ::mavsdk::rpc::action::ArmResponse* response);
      //
      // Send command to disarm the drone.
      //
      // This will disarm a drone that considers itself landed. If flying, the drone should
      // reject the disarm command. Disarming means that all motors will stop.
      virtual ::grpc::Status Disarm(::grpc::ServerContext* context, const ::mavsdk::rpc::action::DisarmRequest* request, ::mavsdk::rpc::action::DisarmResponse* response);
      //
      // Send command to take off and hover.
      //
      // This switches the drone into position control mode and commands
      // it to take off and hover at the takeoff altitude.
      //
      // Note that the vehicle must be armed before it can take off.
      virtual ::grpc::Status Takeoff(::grpc::ServerContext* context, const ::mavsdk::rpc::action::TakeoffRequest* request, ::mavsdk::rpc::action::TakeoffResponse* response);
      //
      // Send command to land at the current position.
      //
      // This switches the drone to 'Land' flight mode.
      virtual ::grpc::Status Land(::grpc::ServerContext* context, const ::mavsdk::rpc::action::LandRequest* request, ::mavsdk::rpc::action::LandResponse* response);
      //
      // Send command to reboot the drone components.
      //
      // This will reboot the autopilot, companion computer, camera and gimbal.
      virtual ::grpc::Status Reboot(::grpc::ServerContext* context, const ::mavsdk::rpc::action::RebootRequest* request, ::mavsdk::rpc::action::RebootResponse* response);
      //
      // Send command to shut down the drone components.
      //
      // This will shut down the autopilot, onboard computer, camera and gimbal.
      // This command should only be used when the autopilot is disarmed and autopilots commonly
      // reject it if they are not already ready to shut down.
      virtual ::grpc::Status Shutdown(::grpc::ServerContext* context, const ::mavsdk::rpc::action::ShutdownRequest* request, ::mavsdk::rpc::action::ShutdownResponse* response);
      //
      // Send command to terminate the drone.
      //
      // This will run the terminate routine as configured on the drone (e.g. disarm and open the parachute).
      virtual ::grpc::Status Terminate(::grpc::ServerContext* context, const ::mavsdk::rpc::action::TerminateRequest* request, ::mavsdk::rpc::action::TerminateResponse* response);
      //
      // Send command to kill the drone.
      //
      // This will disarm a drone irrespective of whether it is landed or flying.
      // Note that the drone will fall out of the sky if this command is used while flying.
      virtual ::grpc::Status Kill(::grpc::ServerContext* context, const ::mavsdk::rpc::action::KillRequest* request, ::mavsdk::rpc::action::KillResponse* response);
      //
      // Send command to return to the launch (takeoff) position and land.
      //
      // This switches the drone into [Return mode](https://docs.px4.io/master/en/flight_modes/return.html) which
      // generally means it will rise up to a certain altitude to clear any obstacles before heading
      // back to the launch (takeoff) position and land there.
      virtual ::grpc::Status ReturnToLaunch(::grpc::ServerContext* context, const ::mavsdk::rpc::action::ReturnToLaunchRequest* request, ::mavsdk::rpc::action::ReturnToLaunchResponse* response);
      //
      // Send command to move the vehicle to a specific global position.
      //
      // The latitude and longitude are given in degrees (WGS84 frame) and the altitude
      // in meters AMSL (above mean sea level).
      //
      // The yaw angle is in degrees (frame is NED, 0 is North, positive is clockwise).
      virtual ::grpc::Status GotoLocation(::grpc::ServerContext* context, const ::mavsdk::rpc::action::GotoLocationRequest* request, ::mavsdk::rpc::action::GotoLocationResponse* response);
      //
      // Send command do orbit to the drone.
      //
      // This will run the orbit routine with the given parameters.
      virtual ::grpc::Status DoOrbit(::grpc::ServerContext* context, const ::mavsdk::rpc::action::DoOrbitRequest* request, ::mavsdk::rpc::action::DoOrbitResponse* response);
      //
      // Send command to hold position (a.k.a. "Loiter").
      //
      // Sends a command to drone to change to Hold flight mode, causing the
      // vehicle to stop and maintain its current GPS position and altitude.
      //
      // Note: this command is specific to the PX4 Autopilot flight stack as
      // it implies a change to a PX4-specific mode.
      virtual ::grpc::Status Hold(::grpc::ServerContext* context, const ::mavsdk::rpc::action::HoldRequest* request, ::mavsdk::rpc::action::HoldResponse* response);
      //
      // Send command to set the value of an actuator.
      virtual ::grpc::Status SetActuator(::grpc::ServerContext* context, const ::mavsdk::rpc::action::SetActuatorRequest* request, ::mavsdk::rpc::action::SetActuatorResponse* response);
      //
      // Send command to transition the drone to fixedwing.
      //
      // The associated action will only be executed for VTOL vehicles (on other vehicle types the
      // command will fail). The command will succeed if called when the vehicle
      // is already in fixedwing mode.
      virtual ::grpc::Status TransitionToFixedwing(::grpc::ServerContext* context, const ::mavsdk::rpc::action::TransitionToFixedwingRequest* request, ::mavsdk::rpc::action::TransitionToFixedwingResponse* response);
      //
      // Send command to transition the drone to multicopter.
      //
      // The associated action will only be executed for VTOL vehicles (on other vehicle types the
      // command will fail). The command will succeed if called when the vehicle
      // is already in multicopter mode.
      virtual ::grpc::Status TransitionToMulticopter(::grpc::ServerContext* context, const ::mavsdk::rpc::action::TransitionToMulticopterRequest* request, ::mavsdk::rpc::action::TransitionToMulticopterResponse* response);
      //
      // Get the takeoff altitude (in meters above ground).
      virtual ::grpc::Status GetTakeoffAltitude(::grpc::ServerContext* context, const ::mavsdk::rpc::action::GetTakeoffAltitudeRequest* request, ::mavsdk::rpc::action::GetTakeoffAltitudeResponse* response);
      //
      // Set takeoff altitude (in meters above ground).
      virtual ::grpc::Status SetTakeoffAltitude(::grpc::ServerContext* context, const ::mavsdk::rpc::action::SetTakeoffAltitudeRequest* request, ::mavsdk::rpc::action::SetTakeoffAltitudeResponse* response);
      //
      // Get the vehicle maximum speed (in metres/second).
      virtual ::grpc::Status GetMaximumSpeed(::grpc::ServerContext* context, const ::mavsdk::rpc::action::GetMaximumSpeedRequest* request, ::mavsdk::rpc::action::GetMaximumSpeedResponse* response);
      //
      // Set vehicle maximum speed (in metres/second).
      virtual ::grpc::Status SetMaximumSpeed(::grpc::ServerContext* context, const ::mavsdk::rpc::action::SetMaximumSpeedRequest* request, ::mavsdk::rpc::action::SetMaximumSpeedResponse* response);
      //
      // Get the return to launch minimum return altitude (in meters).
      virtual ::grpc::Status GetReturnToLaunchAltitude(::grpc::ServerContext* context, const ::mavsdk::rpc::action::GetReturnToLaunchAltitudeRequest* request, ::mavsdk::rpc::action::GetReturnToLaunchAltitudeResponse* response);
      //
      // Set the return to launch minimum return altitude (in meters).
      virtual ::grpc::Status SetReturnToLaunchAltitude(::grpc::ServerContext* context, const ::mavsdk::rpc::action::SetReturnToLaunchAltitudeRequest* request, ::mavsdk::rpc::action::SetReturnToLaunchAltitudeResponse* response);
      //
      // Set current speed.
      //
      // This will set the speed during a mission, reposition, and similar.
      // It is ephemeral, so not stored on the drone and does not survive a reboot.
      virtual ::grpc::Status SetCurrentSpeed(::grpc::ServerContext* context, const ::mavsdk::rpc::action::SetCurrentSpeedRequest* request, ::mavsdk::rpc::action::SetCurrentSpeedResponse* response);
    };
    template <class BaseClass>
    class WithAsyncMethod_Arm : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithAsyncMethod_Arm() {
        ::grpc::Service::MarkMethodAsync(0);
      }
      ~WithAsyncMethod_Arm() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Arm(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::ArmRequest* /*request*/, ::mavsdk::rpc::action::ArmResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestArm(::grpc::ServerContext* context, ::mavsdk::rpc::action::ArmRequest* request, ::grpc::ServerAsyncResponseWriter< ::mavsdk::rpc::action::ArmResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(0, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithAsyncMethod_Disarm : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithAsyncMethod_Disarm() {
        ::grpc::Service::MarkMethodAsync(1);
      }
      ~WithAsyncMethod_Disarm() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Disarm(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::DisarmRequest* /*request*/, ::mavsdk::rpc::action::DisarmResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestDisarm(::grpc::ServerContext* context, ::mavsdk::rpc::action::DisarmRequest* request, ::grpc::ServerAsyncResponseWriter< ::mavsdk::rpc::action::DisarmResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(1, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithAsyncMethod_Takeoff : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithAsyncMethod_Takeoff() {
        ::grpc::Service::MarkMethodAsync(2);
      }
      ~WithAsyncMethod_Takeoff() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Takeoff(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::TakeoffRequest* /*request*/, ::mavsdk::rpc::action::TakeoffResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestTakeoff(::grpc::ServerContext* context, ::mavsdk::rpc::action::TakeoffRequest* request, ::grpc::ServerAsyncResponseWriter< ::mavsdk::rpc::action::TakeoffResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(2, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithAsyncMethod_Land : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithAsyncMethod_Land() {
        ::grpc::Service::MarkMethodAsync(3);
      }
      ~WithAsyncMethod_Land() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Land(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::LandRequest* /*request*/, ::mavsdk::rpc::action::LandResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestLand(::grpc::ServerContext* context, ::mavsdk::rpc::action::LandRequest* request, ::grpc::ServerAsyncResponseWriter< ::mavsdk::rpc::action::LandResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(3, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithAsyncMethod_Reboot : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithAsyncMethod_Reboot() {
        ::grpc::Service::MarkMethodAsync(4);
      }
      ~WithAsyncMethod_Reboot() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Reboot(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::RebootRequest* /*request*/, ::mavsdk::rpc::action::RebootResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestReboot(::grpc::ServerContext* context, ::mavsdk::rpc::action::RebootRequest* request, ::grpc::ServerAsyncResponseWriter< ::mavsdk::rpc::action::RebootResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(4, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithAsyncMethod_Shutdown : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithAsyncMethod_Shutdown() {
        ::grpc::Service::MarkMethodAsync(5);
      }
      ~WithAsyncMethod_Shutdown() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Shutdown(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::ShutdownRequest* /*request*/, ::mavsdk::rpc::action::ShutdownResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestShutdown(::grpc::ServerContext* context, ::mavsdk::rpc::action::ShutdownRequest* request, ::grpc::ServerAsyncResponseWriter< ::mavsdk::rpc::action::ShutdownResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(5, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithAsyncMethod_Terminate : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithAsyncMethod_Terminate() {
        ::grpc::Service::MarkMethodAsync(6);
      }
      ~WithAsyncMethod_Terminate() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Terminate(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::TerminateRequest* /*request*/, ::mavsdk::rpc::action::TerminateResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestTerminate(::grpc::ServerContext* context, ::mavsdk::rpc::action::TerminateRequest* request, ::grpc::ServerAsyncResponseWriter< ::mavsdk::rpc::action::TerminateResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(6, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithAsyncMethod_Kill : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithAsyncMethod_Kill() {
        ::grpc::Service::MarkMethodAsync(7);
      }
      ~WithAsyncMethod_Kill() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Kill(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::KillRequest* /*request*/, ::mavsdk::rpc::action::KillResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestKill(::grpc::ServerContext* context, ::mavsdk::rpc::action::KillRequest* request, ::grpc::ServerAsyncResponseWriter< ::mavsdk::rpc::action::KillResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(7, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithAsyncMethod_ReturnToLaunch : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithAsyncMethod_ReturnToLaunch() {
        ::grpc::Service::MarkMethodAsync(8);
      }
      ~WithAsyncMethod_ReturnToLaunch() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status ReturnToLaunch(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::ReturnToLaunchRequest* /*request*/, ::mavsdk::rpc::action::ReturnToLaunchResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestReturnToLaunch(::grpc::ServerContext* context, ::mavsdk::rpc::action::ReturnToLaunchRequest* request, ::grpc::ServerAsyncResponseWriter< ::mavsdk::rpc::action::ReturnToLaunchResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(8, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithAsyncMethod_GotoLocation : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithAsyncMethod_GotoLocation() {
        ::grpc::Service::MarkMethodAsync(9);
      }
      ~WithAsyncMethod_GotoLocation() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status GotoLocation(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::GotoLocationRequest* /*request*/, ::mavsdk::rpc::action::GotoLocationResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestGotoLocation(::grpc::ServerContext* context, ::mavsdk::rpc::action::GotoLocationRequest* request, ::grpc::ServerAsyncResponseWriter< ::mavsdk::rpc::action::GotoLocationResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(9, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithAsyncMethod_DoOrbit : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithAsyncMethod_DoOrbit() {
        ::grpc::Service::MarkMethodAsync(10);
      }
      ~WithAsyncMethod_DoOrbit() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status DoOrbit(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::DoOrbitRequest* /*request*/, ::mavsdk::rpc::action::DoOrbitResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestDoOrbit(::grpc::ServerContext* context, ::mavsdk::rpc::action::DoOrbitRequest* request, ::grpc::ServerAsyncResponseWriter< ::mavsdk::rpc::action::DoOrbitResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(10, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithAsyncMethod_Hold : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithAsyncMethod_Hold() {
        ::grpc::Service::MarkMethodAsync(11);
      }
      ~WithAsyncMethod_Hold() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Hold(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::HoldRequest* /*request*/, ::mavsdk::rpc::action::HoldResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestHold(::grpc::ServerContext* context, ::mavsdk::rpc::action::HoldRequest* request, ::grpc::ServerAsyncResponseWriter< ::mavsdk::rpc::action::HoldResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(11, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithAsyncMethod_SetActuator : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithAsyncMethod_SetActuator() {
        ::grpc::Service::MarkMethodAsync(12);
      }
      ~WithAsyncMethod_SetActuator() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status SetActuator(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::SetActuatorRequest* /*request*/, ::mavsdk::rpc::action::SetActuatorResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestSetActuator(::grpc::ServerContext* context, ::mavsdk::rpc::action::SetActuatorRequest* request, ::grpc::ServerAsyncResponseWriter< ::mavsdk::rpc::action::SetActuatorResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(12, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithAsyncMethod_TransitionToFixedwing : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithAsyncMethod_TransitionToFixedwing() {
        ::grpc::Service::MarkMethodAsync(13);
      }
      ~WithAsyncMethod_TransitionToFixedwing() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status TransitionToFixedwing(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::TransitionToFixedwingRequest* /*request*/, ::mavsdk::rpc::action::TransitionToFixedwingResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestTransitionToFixedwing(::grpc::ServerContext* context, ::mavsdk::rpc::action::TransitionToFixedwingRequest* request, ::grpc::ServerAsyncResponseWriter< ::mavsdk::rpc::action::TransitionToFixedwingResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(13, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithAsyncMethod_TransitionToMulticopter : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithAsyncMethod_TransitionToMulticopter() {
        ::grpc::Service::MarkMethodAsync(14);
      }
      ~WithAsyncMethod_TransitionToMulticopter() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status TransitionToMulticopter(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::TransitionToMulticopterRequest* /*request*/, ::mavsdk::rpc::action::TransitionToMulticopterResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestTransitionToMulticopter(::grpc::ServerContext* context, ::mavsdk::rpc::action::TransitionToMulticopterRequest* request, ::grpc::ServerAsyncResponseWriter< ::mavsdk::rpc::action::TransitionToMulticopterResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(14, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithAsyncMethod_GetTakeoffAltitude : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithAsyncMethod_GetTakeoffAltitude() {
        ::grpc::Service::MarkMethodAsync(15);
      }
      ~WithAsyncMethod_GetTakeoffAltitude() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status GetTakeoffAltitude(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::GetTakeoffAltitudeRequest* /*request*/, ::mavsdk::rpc::action::GetTakeoffAltitudeResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestGetTakeoffAltitude(::grpc::ServerContext* context, ::mavsdk::rpc::action::GetTakeoffAltitudeRequest* request, ::grpc::ServerAsyncResponseWriter< ::mavsdk::rpc::action::GetTakeoffAltitudeResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(15, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithAsyncMethod_SetTakeoffAltitude : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithAsyncMethod_SetTakeoffAltitude() {
        ::grpc::Service::MarkMethodAsync(16);
      }
      ~WithAsyncMethod_SetTakeoffAltitude() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status SetTakeoffAltitude(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::SetTakeoffAltitudeRequest* /*request*/, ::mavsdk::rpc::action::SetTakeoffAltitudeResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestSetTakeoffAltitude(::grpc::ServerContext* context, ::mavsdk::rpc::action::SetTakeoffAltitudeRequest* request, ::grpc::ServerAsyncResponseWriter< ::mavsdk::rpc::action::SetTakeoffAltitudeResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(16, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithAsyncMethod_GetMaximumSpeed : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithAsyncMethod_GetMaximumSpeed() {
        ::grpc::Service::MarkMethodAsync(17);
      }
      ~WithAsyncMethod_GetMaximumSpeed() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status GetMaximumSpeed(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::GetMaximumSpeedRequest* /*request*/, ::mavsdk::rpc::action::GetMaximumSpeedResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestGetMaximumSpeed(::grpc::ServerContext* context, ::mavsdk::rpc::action::GetMaximumSpeedRequest* request, ::grpc::ServerAsyncResponseWriter< ::mavsdk::rpc::action::GetMaximumSpeedResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(17, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithAsyncMethod_SetMaximumSpeed : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithAsyncMethod_SetMaximumSpeed() {
        ::grpc::Service::MarkMethodAsync(18);
      }
      ~WithAsyncMethod_SetMaximumSpeed() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status SetMaximumSpeed(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::SetMaximumSpeedRequest* /*request*/, ::mavsdk::rpc::action::SetMaximumSpeedResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestSetMaximumSpeed(::grpc::ServerContext* context, ::mavsdk::rpc::action::SetMaximumSpeedRequest* request, ::grpc::ServerAsyncResponseWriter< ::mavsdk::rpc::action::SetMaximumSpeedResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(18, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithAsyncMethod_GetReturnToLaunchAltitude : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithAsyncMethod_GetReturnToLaunchAltitude() {
        ::grpc::Service::MarkMethodAsync(19);
      }
      ~WithAsyncMethod_GetReturnToLaunchAltitude() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status GetReturnToLaunchAltitude(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::GetReturnToLaunchAltitudeRequest* /*request*/, ::mavsdk::rpc::action::GetReturnToLaunchAltitudeResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestGetReturnToLaunchAltitude(::grpc::ServerContext* context, ::mavsdk::rpc::action::GetReturnToLaunchAltitudeRequest* request, ::grpc::ServerAsyncResponseWriter< ::mavsdk::rpc::action::GetReturnToLaunchAltitudeResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(19, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithAsyncMethod_SetReturnToLaunchAltitude : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithAsyncMethod_SetReturnToLaunchAltitude() {
        ::grpc::Service::MarkMethodAsync(20);
      }
      ~WithAsyncMethod_SetReturnToLaunchAltitude() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status SetReturnToLaunchAltitude(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::SetReturnToLaunchAltitudeRequest* /*request*/, ::mavsdk::rpc::action::SetReturnToLaunchAltitudeResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestSetReturnToLaunchAltitude(::grpc::ServerContext* context, ::mavsdk::rpc::action::SetReturnToLaunchAltitudeRequest* request, ::grpc::ServerAsyncResponseWriter< ::mavsdk::rpc::action::SetReturnToLaunchAltitudeResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(20, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithAsyncMethod_SetCurrentSpeed : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithAsyncMethod_SetCurrentSpeed() {
        ::grpc::Service::MarkMethodAsync(21);
      }
      ~WithAsyncMethod_SetCurrentSpeed() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status SetCurrentSpeed(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::SetCurrentSpeedRequest* /*request*/, ::mavsdk::rpc::action::SetCurrentSpeedResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestSetCurrentSpeed(::grpc::ServerContext* context, ::mavsdk::rpc::action::SetCurrentSpeedRequest* request, ::grpc::ServerAsyncResponseWriter< ::mavsdk::rpc::action::SetCurrentSpeedResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(21, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    typedef WithAsyncMethod_Arm<WithAsyncMethod_Disarm<WithAsyncMethod_Takeoff<WithAsyncMethod_Land<WithAsyncMethod_Reboot<WithAsyncMethod_Shutdown<WithAsyncMethod_Terminate<WithAsyncMethod_Kill<WithAsyncMethod_ReturnToLaunch<WithAsyncMethod_GotoLocation<WithAsyncMethod_DoOrbit<WithAsyncMethod_Hold<WithAsyncMethod_SetActuator<WithAsyncMethod_TransitionToFixedwing<WithAsyncMethod_TransitionToMulticopter<WithAsyncMethod_GetTakeoffAltitude<WithAsyncMethod_SetTakeoffAltitude<WithAsyncMethod_GetMaximumSpeed<WithAsyncMethod_SetMaximumSpeed<WithAsyncMethod_GetReturnToLaunchAltitude<WithAsyncMethod_SetReturnToLaunchAltitude<WithAsyncMethod_SetCurrentSpeed<Service > > > > > > > > > > > > > > > > > > > > > > AsyncService;
    template <class BaseClass>
    class WithCallbackMethod_Arm : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithCallbackMethod_Arm() {
        ::grpc::Service::MarkMethodCallback(0,
            new ::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::ArmRequest, ::mavsdk::rpc::action::ArmResponse>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::mavsdk::rpc::action::ArmRequest* request, ::mavsdk::rpc::action::ArmResponse* response) { return this->Arm(context, request, response); }));}
      void SetMessageAllocatorFor_Arm(
          ::grpc::MessageAllocator< ::mavsdk::rpc::action::ArmRequest, ::mavsdk::rpc::action::ArmResponse>* allocator) {
        ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(0);
        static_cast<::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::ArmRequest, ::mavsdk::rpc::action::ArmResponse>*>(handler)
                ->SetMessageAllocator(allocator);
      }
      ~WithCallbackMethod_Arm() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Arm(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::ArmRequest* /*request*/, ::mavsdk::rpc::action::ArmResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* Arm(
        ::grpc::CallbackServerContext* /*context*/, const ::mavsdk::rpc::action::ArmRequest* /*request*/, ::mavsdk::rpc::action::ArmResponse* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithCallbackMethod_Disarm : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithCallbackMethod_Disarm() {
        ::grpc::Service::MarkMethodCallback(1,
            new ::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::DisarmRequest, ::mavsdk::rpc::action::DisarmResponse>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::mavsdk::rpc::action::DisarmRequest* request, ::mavsdk::rpc::action::DisarmResponse* response) { return this->Disarm(context, request, response); }));}
      void SetMessageAllocatorFor_Disarm(
          ::grpc::MessageAllocator< ::mavsdk::rpc::action::DisarmRequest, ::mavsdk::rpc::action::DisarmResponse>* allocator) {
        ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(1);
        static_cast<::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::DisarmRequest, ::mavsdk::rpc::action::DisarmResponse>*>(handler)
                ->SetMessageAllocator(allocator);
      }
      ~WithCallbackMethod_Disarm() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Disarm(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::DisarmRequest* /*request*/, ::mavsdk::rpc::action::DisarmResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* Disarm(
        ::grpc::CallbackServerContext* /*context*/, const ::mavsdk::rpc::action::DisarmRequest* /*request*/, ::mavsdk::rpc::action::DisarmResponse* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithCallbackMethod_Takeoff : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithCallbackMethod_Takeoff() {
        ::grpc::Service::MarkMethodCallback(2,
            new ::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::TakeoffRequest, ::mavsdk::rpc::action::TakeoffResponse>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::mavsdk::rpc::action::TakeoffRequest* request, ::mavsdk::rpc::action::TakeoffResponse* response) { return this->Takeoff(context, request, response); }));}
      void SetMessageAllocatorFor_Takeoff(
          ::grpc::MessageAllocator< ::mavsdk::rpc::action::TakeoffRequest, ::mavsdk::rpc::action::TakeoffResponse>* allocator) {
        ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(2);
        static_cast<::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::TakeoffRequest, ::mavsdk::rpc::action::TakeoffResponse>*>(handler)
                ->SetMessageAllocator(allocator);
      }
      ~WithCallbackMethod_Takeoff() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Takeoff(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::TakeoffRequest* /*request*/, ::mavsdk::rpc::action::TakeoffResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* Takeoff(
        ::grpc::CallbackServerContext* /*context*/, const ::mavsdk::rpc::action::TakeoffRequest* /*request*/, ::mavsdk::rpc::action::TakeoffResponse* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithCallbackMethod_Land : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithCallbackMethod_Land() {
        ::grpc::Service::MarkMethodCallback(3,
            new ::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::LandRequest, ::mavsdk::rpc::action::LandResponse>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::mavsdk::rpc::action::LandRequest* request, ::mavsdk::rpc::action::LandResponse* response) { return this->Land(context, request, response); }));}
      void SetMessageAllocatorFor_Land(
          ::grpc::MessageAllocator< ::mavsdk::rpc::action::LandRequest, ::mavsdk::rpc::action::LandResponse>* allocator) {
        ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(3);
        static_cast<::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::LandRequest, ::mavsdk::rpc::action::LandResponse>*>(handler)
                ->SetMessageAllocator(allocator);
      }
      ~WithCallbackMethod_Land() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Land(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::LandRequest* /*request*/, ::mavsdk::rpc::action::LandResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* Land(
        ::grpc::CallbackServerContext* /*context*/, const ::mavsdk::rpc::action::LandRequest* /*request*/, ::mavsdk::rpc::action::LandResponse* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithCallbackMethod_Reboot : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithCallbackMethod_Reboot() {
        ::grpc::Service::MarkMethodCallback(4,
            new ::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::RebootRequest, ::mavsdk::rpc::action::RebootResponse>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::mavsdk::rpc::action::RebootRequest* request, ::mavsdk::rpc::action::RebootResponse* response) { return this->Reboot(context, request, response); }));}
      void SetMessageAllocatorFor_Reboot(
          ::grpc::MessageAllocator< ::mavsdk::rpc::action::RebootRequest, ::mavsdk::rpc::action::RebootResponse>* allocator) {
        ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(4);
        static_cast<::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::RebootRequest, ::mavsdk::rpc::action::RebootResponse>*>(handler)
                ->SetMessageAllocator(allocator);
      }
      ~WithCallbackMethod_Reboot() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Reboot(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::RebootRequest* /*request*/, ::mavsdk::rpc::action::RebootResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* Reboot(
        ::grpc::CallbackServerContext* /*context*/, const ::mavsdk::rpc::action::RebootRequest* /*request*/, ::mavsdk::rpc::action::RebootResponse* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithCallbackMethod_Shutdown : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithCallbackMethod_Shutdown() {
        ::grpc::Service::MarkMethodCallback(5,
            new ::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::ShutdownRequest, ::mavsdk::rpc::action::ShutdownResponse>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::mavsdk::rpc::action::ShutdownRequest* request, ::mavsdk::rpc::action::ShutdownResponse* response) { return this->Shutdown(context, request, response); }));}
      void SetMessageAllocatorFor_Shutdown(
          ::grpc::MessageAllocator< ::mavsdk::rpc::action::ShutdownRequest, ::mavsdk::rpc::action::ShutdownResponse>* allocator) {
        ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(5);
        static_cast<::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::ShutdownRequest, ::mavsdk::rpc::action::ShutdownResponse>*>(handler)
                ->SetMessageAllocator(allocator);
      }
      ~WithCallbackMethod_Shutdown() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Shutdown(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::ShutdownRequest* /*request*/, ::mavsdk::rpc::action::ShutdownResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* Shutdown(
        ::grpc::CallbackServerContext* /*context*/, const ::mavsdk::rpc::action::ShutdownRequest* /*request*/, ::mavsdk::rpc::action::ShutdownResponse* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithCallbackMethod_Terminate : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithCallbackMethod_Terminate() {
        ::grpc::Service::MarkMethodCallback(6,
            new ::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::TerminateRequest, ::mavsdk::rpc::action::TerminateResponse>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::mavsdk::rpc::action::TerminateRequest* request, ::mavsdk::rpc::action::TerminateResponse* response) { return this->Terminate(context, request, response); }));}
      void SetMessageAllocatorFor_Terminate(
          ::grpc::MessageAllocator< ::mavsdk::rpc::action::TerminateRequest, ::mavsdk::rpc::action::TerminateResponse>* allocator) {
        ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(6);
        static_cast<::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::TerminateRequest, ::mavsdk::rpc::action::TerminateResponse>*>(handler)
                ->SetMessageAllocator(allocator);
      }
      ~WithCallbackMethod_Terminate() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Terminate(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::TerminateRequest* /*request*/, ::mavsdk::rpc::action::TerminateResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* Terminate(
        ::grpc::CallbackServerContext* /*context*/, const ::mavsdk::rpc::action::TerminateRequest* /*request*/, ::mavsdk::rpc::action::TerminateResponse* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithCallbackMethod_Kill : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithCallbackMethod_Kill() {
        ::grpc::Service::MarkMethodCallback(7,
            new ::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::KillRequest, ::mavsdk::rpc::action::KillResponse>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::mavsdk::rpc::action::KillRequest* request, ::mavsdk::rpc::action::KillResponse* response) { return this->Kill(context, request, response); }));}
      void SetMessageAllocatorFor_Kill(
          ::grpc::MessageAllocator< ::mavsdk::rpc::action::KillRequest, ::mavsdk::rpc::action::KillResponse>* allocator) {
        ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(7);
        static_cast<::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::KillRequest, ::mavsdk::rpc::action::KillResponse>*>(handler)
                ->SetMessageAllocator(allocator);
      }
      ~WithCallbackMethod_Kill() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Kill(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::KillRequest* /*request*/, ::mavsdk::rpc::action::KillResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* Kill(
        ::grpc::CallbackServerContext* /*context*/, const ::mavsdk::rpc::action::KillRequest* /*request*/, ::mavsdk::rpc::action::KillResponse* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithCallbackMethod_ReturnToLaunch : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithCallbackMethod_ReturnToLaunch() {
        ::grpc::Service::MarkMethodCallback(8,
            new ::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::ReturnToLaunchRequest, ::mavsdk::rpc::action::ReturnToLaunchResponse>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::mavsdk::rpc::action::ReturnToLaunchRequest* request, ::mavsdk::rpc::action::ReturnToLaunchResponse* response) { return this->ReturnToLaunch(context, request, response); }));}
      void SetMessageAllocatorFor_ReturnToLaunch(
          ::grpc::MessageAllocator< ::mavsdk::rpc::action::ReturnToLaunchRequest, ::mavsdk::rpc::action::ReturnToLaunchResponse>* allocator) {
        ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(8);
        static_cast<::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::ReturnToLaunchRequest, ::mavsdk::rpc::action::ReturnToLaunchResponse>*>(handler)
                ->SetMessageAllocator(allocator);
      }
      ~WithCallbackMethod_ReturnToLaunch() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status ReturnToLaunch(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::ReturnToLaunchRequest* /*request*/, ::mavsdk::rpc::action::ReturnToLaunchResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* ReturnToLaunch(
        ::grpc::CallbackServerContext* /*context*/, const ::mavsdk::rpc::action::ReturnToLaunchRequest* /*request*/, ::mavsdk::rpc::action::ReturnToLaunchResponse* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithCallbackMethod_GotoLocation : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithCallbackMethod_GotoLocation() {
        ::grpc::Service::MarkMethodCallback(9,
            new ::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::GotoLocationRequest, ::mavsdk::rpc::action::GotoLocationResponse>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::mavsdk::rpc::action::GotoLocationRequest* request, ::mavsdk::rpc::action::GotoLocationResponse* response) { return this->GotoLocation(context, request, response); }));}
      void SetMessageAllocatorFor_GotoLocation(
          ::grpc::MessageAllocator< ::mavsdk::rpc::action::GotoLocationRequest, ::mavsdk::rpc::action::GotoLocationResponse>* allocator) {
        ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(9);
        static_cast<::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::GotoLocationRequest, ::mavsdk::rpc::action::GotoLocationResponse>*>(handler)
                ->SetMessageAllocator(allocator);
      }
      ~WithCallbackMethod_GotoLocation() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status GotoLocation(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::GotoLocationRequest* /*request*/, ::mavsdk::rpc::action::GotoLocationResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* GotoLocation(
        ::grpc::CallbackServerContext* /*context*/, const ::mavsdk::rpc::action::GotoLocationRequest* /*request*/, ::mavsdk::rpc::action::GotoLocationResponse* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithCallbackMethod_DoOrbit : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithCallbackMethod_DoOrbit() {
        ::grpc::Service::MarkMethodCallback(10,
            new ::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::DoOrbitRequest, ::mavsdk::rpc::action::DoOrbitResponse>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::mavsdk::rpc::action::DoOrbitRequest* request, ::mavsdk::rpc::action::DoOrbitResponse* response) { return this->DoOrbit(context, request, response); }));}
      void SetMessageAllocatorFor_DoOrbit(
          ::grpc::MessageAllocator< ::mavsdk::rpc::action::DoOrbitRequest, ::mavsdk::rpc::action::DoOrbitResponse>* allocator) {
        ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(10);
        static_cast<::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::DoOrbitRequest, ::mavsdk::rpc::action::DoOrbitResponse>*>(handler)
                ->SetMessageAllocator(allocator);
      }
      ~WithCallbackMethod_DoOrbit() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status DoOrbit(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::DoOrbitRequest* /*request*/, ::mavsdk::rpc::action::DoOrbitResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* DoOrbit(
        ::grpc::CallbackServerContext* /*context*/, const ::mavsdk::rpc::action::DoOrbitRequest* /*request*/, ::mavsdk::rpc::action::DoOrbitResponse* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithCallbackMethod_Hold : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithCallbackMethod_Hold() {
        ::grpc::Service::MarkMethodCallback(11,
            new ::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::HoldRequest, ::mavsdk::rpc::action::HoldResponse>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::mavsdk::rpc::action::HoldRequest* request, ::mavsdk::rpc::action::HoldResponse* response) { return this->Hold(context, request, response); }));}
      void SetMessageAllocatorFor_Hold(
          ::grpc::MessageAllocator< ::mavsdk::rpc::action::HoldRequest, ::mavsdk::rpc::action::HoldResponse>* allocator) {
        ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(11);
        static_cast<::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::HoldRequest, ::mavsdk::rpc::action::HoldResponse>*>(handler)
                ->SetMessageAllocator(allocator);
      }
      ~WithCallbackMethod_Hold() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Hold(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::HoldRequest* /*request*/, ::mavsdk::rpc::action::HoldResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* Hold(
        ::grpc::CallbackServerContext* /*context*/, const ::mavsdk::rpc::action::HoldRequest* /*request*/, ::mavsdk::rpc::action::HoldResponse* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithCallbackMethod_SetActuator : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithCallbackMethod_SetActuator() {
        ::grpc::Service::MarkMethodCallback(12,
            new ::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::SetActuatorRequest, ::mavsdk::rpc::action::SetActuatorResponse>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::mavsdk::rpc::action::SetActuatorRequest* request, ::mavsdk::rpc::action::SetActuatorResponse* response) { return this->SetActuator(context, request, response); }));}
      void SetMessageAllocatorFor_SetActuator(
          ::grpc::MessageAllocator< ::mavsdk::rpc::action::SetActuatorRequest, ::mavsdk::rpc::action::SetActuatorResponse>* allocator) {
        ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(12);
        static_cast<::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::SetActuatorRequest, ::mavsdk::rpc::action::SetActuatorResponse>*>(handler)
                ->SetMessageAllocator(allocator);
      }
      ~WithCallbackMethod_SetActuator() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status SetActuator(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::SetActuatorRequest* /*request*/, ::mavsdk::rpc::action::SetActuatorResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* SetActuator(
        ::grpc::CallbackServerContext* /*context*/, const ::mavsdk::rpc::action::SetActuatorRequest* /*request*/, ::mavsdk::rpc::action::SetActuatorResponse* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithCallbackMethod_TransitionToFixedwing : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithCallbackMethod_TransitionToFixedwing() {
        ::grpc::Service::MarkMethodCallback(13,
            new ::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::TransitionToFixedwingRequest, ::mavsdk::rpc::action::TransitionToFixedwingResponse>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::mavsdk::rpc::action::TransitionToFixedwingRequest* request, ::mavsdk::rpc::action::TransitionToFixedwingResponse* response) { return this->TransitionToFixedwing(context, request, response); }));}
      void SetMessageAllocatorFor_TransitionToFixedwing(
          ::grpc::MessageAllocator< ::mavsdk::rpc::action::TransitionToFixedwingRequest, ::mavsdk::rpc::action::TransitionToFixedwingResponse>* allocator) {
        ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(13);
        static_cast<::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::TransitionToFixedwingRequest, ::mavsdk::rpc::action::TransitionToFixedwingResponse>*>(handler)
                ->SetMessageAllocator(allocator);
      }
      ~WithCallbackMethod_TransitionToFixedwing() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status TransitionToFixedwing(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::TransitionToFixedwingRequest* /*request*/, ::mavsdk::rpc::action::TransitionToFixedwingResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* TransitionToFixedwing(
        ::grpc::CallbackServerContext* /*context*/, const ::mavsdk::rpc::action::TransitionToFixedwingRequest* /*request*/, ::mavsdk::rpc::action::TransitionToFixedwingResponse* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithCallbackMethod_TransitionToMulticopter : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithCallbackMethod_TransitionToMulticopter() {
        ::grpc::Service::MarkMethodCallback(14,
            new ::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::TransitionToMulticopterRequest, ::mavsdk::rpc::action::TransitionToMulticopterResponse>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::mavsdk::rpc::action::TransitionToMulticopterRequest* request, ::mavsdk::rpc::action::TransitionToMulticopterResponse* response) { return this->TransitionToMulticopter(context, request, response); }));}
      void SetMessageAllocatorFor_TransitionToMulticopter(
          ::grpc::MessageAllocator< ::mavsdk::rpc::action::TransitionToMulticopterRequest, ::mavsdk::rpc::action::TransitionToMulticopterResponse>* allocator) {
        ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(14);
        static_cast<::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::TransitionToMulticopterRequest, ::mavsdk::rpc::action::TransitionToMulticopterResponse>*>(handler)
                ->SetMessageAllocator(allocator);
      }
      ~WithCallbackMethod_TransitionToMulticopter() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status TransitionToMulticopter(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::TransitionToMulticopterRequest* /*request*/, ::mavsdk::rpc::action::TransitionToMulticopterResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* TransitionToMulticopter(
        ::grpc::CallbackServerContext* /*context*/, const ::mavsdk::rpc::action::TransitionToMulticopterRequest* /*request*/, ::mavsdk::rpc::action::TransitionToMulticopterResponse* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithCallbackMethod_GetTakeoffAltitude : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithCallbackMethod_GetTakeoffAltitude() {
        ::grpc::Service::MarkMethodCallback(15,
            new ::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::GetTakeoffAltitudeRequest, ::mavsdk::rpc::action::GetTakeoffAltitudeResponse>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::mavsdk::rpc::action::GetTakeoffAltitudeRequest* request, ::mavsdk::rpc::action::GetTakeoffAltitudeResponse* response) { return this->GetTakeoffAltitude(context, request, response); }));}
      void SetMessageAllocatorFor_GetTakeoffAltitude(
          ::grpc::MessageAllocator< ::mavsdk::rpc::action::GetTakeoffAltitudeRequest, ::mavsdk::rpc::action::GetTakeoffAltitudeResponse>* allocator) {
        ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(15);
        static_cast<::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::GetTakeoffAltitudeRequest, ::mavsdk::rpc::action::GetTakeoffAltitudeResponse>*>(handler)
                ->SetMessageAllocator(allocator);
      }
      ~WithCallbackMethod_GetTakeoffAltitude() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status GetTakeoffAltitude(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::GetTakeoffAltitudeRequest* /*request*/, ::mavsdk::rpc::action::GetTakeoffAltitudeResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* GetTakeoffAltitude(
        ::grpc::CallbackServerContext* /*context*/, const ::mavsdk::rpc::action::GetTakeoffAltitudeRequest* /*request*/, ::mavsdk::rpc::action::GetTakeoffAltitudeResponse* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithCallbackMethod_SetTakeoffAltitude : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithCallbackMethod_SetTakeoffAltitude() {
        ::grpc::Service::MarkMethodCallback(16,
            new ::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::SetTakeoffAltitudeRequest, ::mavsdk::rpc::action::SetTakeoffAltitudeResponse>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::mavsdk::rpc::action::SetTakeoffAltitudeRequest* request, ::mavsdk::rpc::action::SetTakeoffAltitudeResponse* response) { return this->SetTakeoffAltitude(context, request, response); }));}
      void SetMessageAllocatorFor_SetTakeoffAltitude(
          ::grpc::MessageAllocator< ::mavsdk::rpc::action::SetTakeoffAltitudeRequest, ::mavsdk::rpc::action::SetTakeoffAltitudeResponse>* allocator) {
        ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(16);
        static_cast<::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::SetTakeoffAltitudeRequest, ::mavsdk::rpc::action::SetTakeoffAltitudeResponse>*>(handler)
                ->SetMessageAllocator(allocator);
      }
      ~WithCallbackMethod_SetTakeoffAltitude() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status SetTakeoffAltitude(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::SetTakeoffAltitudeRequest* /*request*/, ::mavsdk::rpc::action::SetTakeoffAltitudeResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* SetTakeoffAltitude(
        ::grpc::CallbackServerContext* /*context*/, const ::mavsdk::rpc::action::SetTakeoffAltitudeRequest* /*request*/, ::mavsdk::rpc::action::SetTakeoffAltitudeResponse* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithCallbackMethod_GetMaximumSpeed : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithCallbackMethod_GetMaximumSpeed() {
        ::grpc::Service::MarkMethodCallback(17,
            new ::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::GetMaximumSpeedRequest, ::mavsdk::rpc::action::GetMaximumSpeedResponse>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::mavsdk::rpc::action::GetMaximumSpeedRequest* request, ::mavsdk::rpc::action::GetMaximumSpeedResponse* response) { return this->GetMaximumSpeed(context, request, response); }));}
      void SetMessageAllocatorFor_GetMaximumSpeed(
          ::grpc::MessageAllocator< ::mavsdk::rpc::action::GetMaximumSpeedRequest, ::mavsdk::rpc::action::GetMaximumSpeedResponse>* allocator) {
        ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(17);
        static_cast<::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::GetMaximumSpeedRequest, ::mavsdk::rpc::action::GetMaximumSpeedResponse>*>(handler)
                ->SetMessageAllocator(allocator);
      }
      ~WithCallbackMethod_GetMaximumSpeed() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status GetMaximumSpeed(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::GetMaximumSpeedRequest* /*request*/, ::mavsdk::rpc::action::GetMaximumSpeedResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* GetMaximumSpeed(
        ::grpc::CallbackServerContext* /*context*/, const ::mavsdk::rpc::action::GetMaximumSpeedRequest* /*request*/, ::mavsdk::rpc::action::GetMaximumSpeedResponse* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithCallbackMethod_SetMaximumSpeed : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithCallbackMethod_SetMaximumSpeed() {
        ::grpc::Service::MarkMethodCallback(18,
            new ::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::SetMaximumSpeedRequest, ::mavsdk::rpc::action::SetMaximumSpeedResponse>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::mavsdk::rpc::action::SetMaximumSpeedRequest* request, ::mavsdk::rpc::action::SetMaximumSpeedResponse* response) { return this->SetMaximumSpeed(context, request, response); }));}
      void SetMessageAllocatorFor_SetMaximumSpeed(
          ::grpc::MessageAllocator< ::mavsdk::rpc::action::SetMaximumSpeedRequest, ::mavsdk::rpc::action::SetMaximumSpeedResponse>* allocator) {
        ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(18);
        static_cast<::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::SetMaximumSpeedRequest, ::mavsdk::rpc::action::SetMaximumSpeedResponse>*>(handler)
                ->SetMessageAllocator(allocator);
      }
      ~WithCallbackMethod_SetMaximumSpeed() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status SetMaximumSpeed(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::SetMaximumSpeedRequest* /*request*/, ::mavsdk::rpc::action::SetMaximumSpeedResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* SetMaximumSpeed(
        ::grpc::CallbackServerContext* /*context*/, const ::mavsdk::rpc::action::SetMaximumSpeedRequest* /*request*/, ::mavsdk::rpc::action::SetMaximumSpeedResponse* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithCallbackMethod_GetReturnToLaunchAltitude : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithCallbackMethod_GetReturnToLaunchAltitude() {
        ::grpc::Service::MarkMethodCallback(19,
            new ::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::GetReturnToLaunchAltitudeRequest, ::mavsdk::rpc::action::GetReturnToLaunchAltitudeResponse>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::mavsdk::rpc::action::GetReturnToLaunchAltitudeRequest* request, ::mavsdk::rpc::action::GetReturnToLaunchAltitudeResponse* response) { return this->GetReturnToLaunchAltitude(context, request, response); }));}
      void SetMessageAllocatorFor_GetReturnToLaunchAltitude(
          ::grpc::MessageAllocator< ::mavsdk::rpc::action::GetReturnToLaunchAltitudeRequest, ::mavsdk::rpc::action::GetReturnToLaunchAltitudeResponse>* allocator) {
        ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(19);
        static_cast<::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::GetReturnToLaunchAltitudeRequest, ::mavsdk::rpc::action::GetReturnToLaunchAltitudeResponse>*>(handler)
                ->SetMessageAllocator(allocator);
      }
      ~WithCallbackMethod_GetReturnToLaunchAltitude() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status GetReturnToLaunchAltitude(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::GetReturnToLaunchAltitudeRequest* /*request*/, ::mavsdk::rpc::action::GetReturnToLaunchAltitudeResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* GetReturnToLaunchAltitude(
        ::grpc::CallbackServerContext* /*context*/, const ::mavsdk::rpc::action::GetReturnToLaunchAltitudeRequest* /*request*/, ::mavsdk::rpc::action::GetReturnToLaunchAltitudeResponse* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithCallbackMethod_SetReturnToLaunchAltitude : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithCallbackMethod_SetReturnToLaunchAltitude() {
        ::grpc::Service::MarkMethodCallback(20,
            new ::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::SetReturnToLaunchAltitudeRequest, ::mavsdk::rpc::action::SetReturnToLaunchAltitudeResponse>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::mavsdk::rpc::action::SetReturnToLaunchAltitudeRequest* request, ::mavsdk::rpc::action::SetReturnToLaunchAltitudeResponse* response) { return this->SetReturnToLaunchAltitude(context, request, response); }));}
      void SetMessageAllocatorFor_SetReturnToLaunchAltitude(
          ::grpc::MessageAllocator< ::mavsdk::rpc::action::SetReturnToLaunchAltitudeRequest, ::mavsdk::rpc::action::SetReturnToLaunchAltitudeResponse>* allocator) {
        ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(20);
        static_cast<::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::SetReturnToLaunchAltitudeRequest, ::mavsdk::rpc::action::SetReturnToLaunchAltitudeResponse>*>(handler)
                ->SetMessageAllocator(allocator);
      }
      ~WithCallbackMethod_SetReturnToLaunchAltitude() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status SetReturnToLaunchAltitude(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::SetReturnToLaunchAltitudeRequest* /*request*/, ::mavsdk::rpc::action::SetReturnToLaunchAltitudeResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* SetReturnToLaunchAltitude(
        ::grpc::CallbackServerContext* /*context*/, const ::mavsdk::rpc::action::SetReturnToLaunchAltitudeRequest* /*request*/, ::mavsdk::rpc::action::SetReturnToLaunchAltitudeResponse* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithCallbackMethod_SetCurrentSpeed : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithCallbackMethod_SetCurrentSpeed() {
        ::grpc::Service::MarkMethodCallback(21,
            new ::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::SetCurrentSpeedRequest, ::mavsdk::rpc::action::SetCurrentSpeedResponse>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::mavsdk::rpc::action::SetCurrentSpeedRequest* request, ::mavsdk::rpc::action::SetCurrentSpeedResponse* response) { return this->SetCurrentSpeed(context, request, response); }));}
      void SetMessageAllocatorFor_SetCurrentSpeed(
          ::grpc::MessageAllocator< ::mavsdk::rpc::action::SetCurrentSpeedRequest, ::mavsdk::rpc::action::SetCurrentSpeedResponse>* allocator) {
        ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(21);
        static_cast<::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::action::SetCurrentSpeedRequest, ::mavsdk::rpc::action::SetCurrentSpeedResponse>*>(handler)
                ->SetMessageAllocator(allocator);
      }
      ~WithCallbackMethod_SetCurrentSpeed() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status SetCurrentSpeed(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::SetCurrentSpeedRequest* /*request*/, ::mavsdk::rpc::action::SetCurrentSpeedResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* SetCurrentSpeed(
        ::grpc::CallbackServerContext* /*context*/, const ::mavsdk::rpc::action::SetCurrentSpeedRequest* /*request*/, ::mavsdk::rpc::action::SetCurrentSpeedResponse* /*response*/)  { return nullptr; }
    };
    typedef WithCallbackMethod_Arm<WithCallbackMethod_Disarm<WithCallbackMethod_Takeoff<WithCallbackMethod_Land<WithCallbackMethod_Reboot<WithCallbackMethod_Shutdown<WithCallbackMethod_Terminate<WithCallbackMethod_Kill<WithCallbackMethod_ReturnToLaunch<WithCallbackMethod_GotoLocation<WithCallbackMethod_DoOrbit<WithCallbackMethod_Hold<WithCallbackMethod_SetActuator<WithCallbackMethod_TransitionToFixedwing<WithCallbackMethod_TransitionToMulticopter<WithCallbackMethod_GetTakeoffAltitude<WithCallbackMethod_SetTakeoffAltitude<WithCallbackMethod_GetMaximumSpeed<WithCallbackMethod_SetMaximumSpeed<WithCallbackMethod_GetReturnToLaunchAltitude<WithCallbackMethod_SetReturnToLaunchAltitude<WithCallbackMethod_SetCurrentSpeed<Service > > > > > > > > > > > > > > > > > > > > > > CallbackService;
    typedef CallbackService ExperimentalCallbackService;
    template <class BaseClass>
    class WithGenericMethod_Arm : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithGenericMethod_Arm() {
        ::grpc::Service::MarkMethodGeneric(0);
      }
      ~WithGenericMethod_Arm() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Arm(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::ArmRequest* /*request*/, ::mavsdk::rpc::action::ArmResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
    };
    template <class BaseClass>
    class WithGenericMethod_Disarm : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithGenericMethod_Disarm() {
        ::grpc::Service::MarkMethodGeneric(1);
      }
      ~WithGenericMethod_Disarm() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Disarm(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::DisarmRequest* /*request*/, ::mavsdk::rpc::action::DisarmResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
    };
    template <class BaseClass>
    class WithGenericMethod_Takeoff : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithGenericMethod_Takeoff() {
        ::grpc::Service::MarkMethodGeneric(2);
      }
      ~WithGenericMethod_Takeoff() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Takeoff(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::TakeoffRequest* /*request*/, ::mavsdk::rpc::action::TakeoffResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
    };
    template <class BaseClass>
    class WithGenericMethod_Land : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithGenericMethod_Land() {
        ::grpc::Service::MarkMethodGeneric(3);
      }
      ~WithGenericMethod_Land() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Land(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::LandRequest* /*request*/, ::mavsdk::rpc::action::LandResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
    };
    template <class BaseClass>
    class WithGenericMethod_Reboot : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithGenericMethod_Reboot() {
        ::grpc::Service::MarkMethodGeneric(4);
      }
      ~WithGenericMethod_Reboot() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Reboot(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::RebootRequest* /*request*/, ::mavsdk::rpc::action::RebootResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
    };
    template <class BaseClass>
    class WithGenericMethod_Shutdown : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithGenericMethod_Shutdown() {
        ::grpc::Service::MarkMethodGeneric(5);
      }
      ~WithGenericMethod_Shutdown() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Shutdown(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::ShutdownRequest* /*request*/, ::mavsdk::rpc::action::ShutdownResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
    };
    template <class BaseClass>
    class WithGenericMethod_Terminate : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithGenericMethod_Terminate() {
        ::grpc::Service::MarkMethodGeneric(6);
      }
      ~WithGenericMethod_Terminate() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Terminate(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::TerminateRequest* /*request*/, ::mavsdk::rpc::action::TerminateResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
    };
    template <class BaseClass>
    class WithGenericMethod_Kill : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithGenericMethod_Kill() {
        ::grpc::Service::MarkMethodGeneric(7);
      }
      ~WithGenericMethod_Kill() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Kill(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::KillRequest* /*request*/, ::mavsdk::rpc::action::KillResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
    };
    template <class BaseClass>
    class WithGenericMethod_ReturnToLaunch : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithGenericMethod_ReturnToLaunch() {
        ::grpc::Service::MarkMethodGeneric(8);
      }
      ~WithGenericMethod_ReturnToLaunch() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status ReturnToLaunch(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::ReturnToLaunchRequest* /*request*/, ::mavsdk::rpc::action::ReturnToLaunchResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
    };
    template <class BaseClass>
    class WithGenericMethod_GotoLocation : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithGenericMethod_GotoLocation() {
        ::grpc::Service::MarkMethodGeneric(9);
      }
      ~WithGenericMethod_GotoLocation() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status GotoLocation(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::GotoLocationRequest* /*request*/, ::mavsdk::rpc::action::GotoLocationResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
    };
    template <class BaseClass>
    class WithGenericMethod_DoOrbit : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithGenericMethod_DoOrbit() {
        ::grpc::Service::MarkMethodGeneric(10);
      }
      ~WithGenericMethod_DoOrbit() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status DoOrbit(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::DoOrbitRequest* /*request*/, ::mavsdk::rpc::action::DoOrbitResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
    };
    template <class BaseClass>
    class WithGenericMethod_Hold : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithGenericMethod_Hold() {
        ::grpc::Service::MarkMethodGeneric(11);
      }
      ~WithGenericMethod_Hold() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Hold(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::HoldRequest* /*request*/, ::mavsdk::rpc::action::HoldResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
    };
    template <class BaseClass>
    class WithGenericMethod_SetActuator : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithGenericMethod_SetActuator() {
        ::grpc::Service::MarkMethodGeneric(12);
      }
      ~WithGenericMethod_SetActuator() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status SetActuator(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::SetActuatorRequest* /*request*/, ::mavsdk::rpc::action::SetActuatorResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
    };
    template <class BaseClass>
    class WithGenericMethod_TransitionToFixedwing : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithGenericMethod_TransitionToFixedwing() {
        ::grpc::Service::MarkMethodGeneric(13);
      }
      ~WithGenericMethod_TransitionToFixedwing() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status TransitionToFixedwing(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::TransitionToFixedwingRequest* /*request*/, ::mavsdk::rpc::action::TransitionToFixedwingResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
    };
    template <class BaseClass>
    class WithGenericMethod_TransitionToMulticopter : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithGenericMethod_TransitionToMulticopter() {
        ::grpc::Service::MarkMethodGeneric(14);
      }
      ~WithGenericMethod_TransitionToMulticopter() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status TransitionToMulticopter(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::TransitionToMulticopterRequest* /*request*/, ::mavsdk::rpc::action::TransitionToMulticopterResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
    };
    template <class BaseClass>
    class WithGenericMethod_GetTakeoffAltitude : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithGenericMethod_GetTakeoffAltitude() {
        ::grpc::Service::MarkMethodGeneric(15);
      }
      ~WithGenericMethod_GetTakeoffAltitude() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status GetTakeoffAltitude(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::GetTakeoffAltitudeRequest* /*request*/, ::mavsdk::rpc::action::GetTakeoffAltitudeResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
    };
    template <class BaseClass>
    class WithGenericMethod_SetTakeoffAltitude : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithGenericMethod_SetTakeoffAltitude() {
        ::grpc::Service::MarkMethodGeneric(16);
      }
      ~WithGenericMethod_SetTakeoffAltitude() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status SetTakeoffAltitude(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::SetTakeoffAltitudeRequest* /*request*/, ::mavsdk::rpc::action::SetTakeoffAltitudeResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
    };
    template <class BaseClass>
    class WithGenericMethod_GetMaximumSpeed : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithGenericMethod_GetMaximumSpeed() {
        ::grpc::Service::MarkMethodGeneric(17);
      }
      ~WithGenericMethod_GetMaximumSpeed() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status GetMaximumSpeed(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::GetMaximumSpeedRequest* /*request*/, ::mavsdk::rpc::action::GetMaximumSpeedResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
    };
    template <class BaseClass>
    class WithGenericMethod_SetMaximumSpeed : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithGenericMethod_SetMaximumSpeed() {
        ::grpc::Service::MarkMethodGeneric(18);
      }
      ~WithGenericMethod_SetMaximumSpeed() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status SetMaximumSpeed(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::SetMaximumSpeedRequest* /*request*/, ::mavsdk::rpc::action::SetMaximumSpeedResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
    };
    template <class BaseClass>
    class WithGenericMethod_GetReturnToLaunchAltitude : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithGenericMethod_GetReturnToLaunchAltitude() {
        ::grpc::Service::MarkMethodGeneric(19);
      }
      ~WithGenericMethod_GetReturnToLaunchAltitude() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status GetReturnToLaunchAltitude(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::GetReturnToLaunchAltitudeRequest* /*request*/, ::mavsdk::rpc::action::GetReturnToLaunchAltitudeResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
    };
    template <class BaseClass>
    class WithGenericMethod_SetReturnToLaunchAltitude : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithGenericMethod_SetReturnToLaunchAltitude() {
        ::grpc::Service::MarkMethodGeneric(20);
      }
      ~WithGenericMethod_SetReturnToLaunchAltitude() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status SetReturnToLaunchAltitude(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::SetReturnToLaunchAltitudeRequest* /*request*/, ::mavsdk::rpc::action::SetReturnToLaunchAltitudeResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
    };
    template <class BaseClass>
    class WithGenericMethod_SetCurrentSpeed : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithGenericMethod_SetCurrentSpeed() {
        ::grpc::Service::MarkMethodGeneric(21);
      }
      ~WithGenericMethod_SetCurrentSpeed() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status SetCurrentSpeed(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::SetCurrentSpeedRequest* /*request*/, ::mavsdk::rpc::action::SetCurrentSpeedResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
    };
    template <class BaseClass>
    class WithRawMethod_Arm : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawMethod_Arm() {
        ::grpc::Service::MarkMethodRaw(0);
      }
      ~WithRawMethod_Arm() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Arm(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::ArmRequest* /*request*/, ::mavsdk::rpc::action::ArmResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestArm(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(0, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithRawMethod_Disarm : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawMethod_Disarm() {
        ::grpc::Service::MarkMethodRaw(1);
      }
      ~WithRawMethod_Disarm() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Disarm(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::DisarmRequest* /*request*/, ::mavsdk::rpc::action::DisarmResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestDisarm(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(1, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithRawMethod_Takeoff : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawMethod_Takeoff() {
        ::grpc::Service::MarkMethodRaw(2);
      }
      ~WithRawMethod_Takeoff() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Takeoff(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::TakeoffRequest* /*request*/, ::mavsdk::rpc::action::TakeoffResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestTakeoff(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(2, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithRawMethod_Land : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawMethod_Land() {
        ::grpc::Service::MarkMethodRaw(3);
      }
      ~WithRawMethod_Land() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Land(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::LandRequest* /*request*/, ::mavsdk::rpc::action::LandResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestLand(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(3, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithRawMethod_Reboot : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawMethod_Reboot() {
        ::grpc::Service::MarkMethodRaw(4);
      }
      ~WithRawMethod_Reboot() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Reboot(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::RebootRequest* /*request*/, ::mavsdk::rpc::action::RebootResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestReboot(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(4, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithRawMethod_Shutdown : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawMethod_Shutdown() {
        ::grpc::Service::MarkMethodRaw(5);
      }
      ~WithRawMethod_Shutdown() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Shutdown(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::ShutdownRequest* /*request*/, ::mavsdk::rpc::action::ShutdownResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestShutdown(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(5, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithRawMethod_Terminate : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawMethod_Terminate() {
        ::grpc::Service::MarkMethodRaw(6);
      }
      ~WithRawMethod_Terminate() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Terminate(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::TerminateRequest* /*request*/, ::mavsdk::rpc::action::TerminateResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestTerminate(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(6, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithRawMethod_Kill : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawMethod_Kill() {
        ::grpc::Service::MarkMethodRaw(7);
      }
      ~WithRawMethod_Kill() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Kill(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::KillRequest* /*request*/, ::mavsdk::rpc::action::KillResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestKill(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(7, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithRawMethod_ReturnToLaunch : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawMethod_ReturnToLaunch() {
        ::grpc::Service::MarkMethodRaw(8);
      }
      ~WithRawMethod_ReturnToLaunch() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status ReturnToLaunch(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::ReturnToLaunchRequest* /*request*/, ::mavsdk::rpc::action::ReturnToLaunchResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestReturnToLaunch(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(8, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithRawMethod_GotoLocation : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawMethod_GotoLocation() {
        ::grpc::Service::MarkMethodRaw(9);
      }
      ~WithRawMethod_GotoLocation() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status GotoLocation(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::GotoLocationRequest* /*request*/, ::mavsdk::rpc::action::GotoLocationResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestGotoLocation(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(9, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithRawMethod_DoOrbit : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawMethod_DoOrbit() {
        ::grpc::Service::MarkMethodRaw(10);
      }
      ~WithRawMethod_DoOrbit() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status DoOrbit(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::DoOrbitRequest* /*request*/, ::mavsdk::rpc::action::DoOrbitResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestDoOrbit(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(10, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithRawMethod_Hold : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawMethod_Hold() {
        ::grpc::Service::MarkMethodRaw(11);
      }
      ~WithRawMethod_Hold() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Hold(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::HoldRequest* /*request*/, ::mavsdk::rpc::action::HoldResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestHold(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(11, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithRawMethod_SetActuator : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawMethod_SetActuator() {
        ::grpc::Service::MarkMethodRaw(12);
      }
      ~WithRawMethod_SetActuator() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status SetActuator(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::SetActuatorRequest* /*request*/, ::mavsdk::rpc::action::SetActuatorResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestSetActuator(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(12, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithRawMethod_TransitionToFixedwing : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawMethod_TransitionToFixedwing() {
        ::grpc::Service::MarkMethodRaw(13);
      }
      ~WithRawMethod_TransitionToFixedwing() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status TransitionToFixedwing(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::TransitionToFixedwingRequest* /*request*/, ::mavsdk::rpc::action::TransitionToFixedwingResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestTransitionToFixedwing(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(13, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithRawMethod_TransitionToMulticopter : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawMethod_TransitionToMulticopter() {
        ::grpc::Service::MarkMethodRaw(14);
      }
      ~WithRawMethod_TransitionToMulticopter() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status TransitionToMulticopter(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::TransitionToMulticopterRequest* /*request*/, ::mavsdk::rpc::action::TransitionToMulticopterResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestTransitionToMulticopter(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(14, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithRawMethod_GetTakeoffAltitude : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawMethod_GetTakeoffAltitude() {
        ::grpc::Service::MarkMethodRaw(15);
      }
      ~WithRawMethod_GetTakeoffAltitude() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status GetTakeoffAltitude(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::GetTakeoffAltitudeRequest* /*request*/, ::mavsdk::rpc::action::GetTakeoffAltitudeResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestGetTakeoffAltitude(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(15, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithRawMethod_SetTakeoffAltitude : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawMethod_SetTakeoffAltitude() {
        ::grpc::Service::MarkMethodRaw(16);
      }
      ~WithRawMethod_SetTakeoffAltitude() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status SetTakeoffAltitude(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::SetTakeoffAltitudeRequest* /*request*/, ::mavsdk::rpc::action::SetTakeoffAltitudeResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestSetTakeoffAltitude(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(16, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithRawMethod_GetMaximumSpeed : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawMethod_GetMaximumSpeed() {
        ::grpc::Service::MarkMethodRaw(17);
      }
      ~WithRawMethod_GetMaximumSpeed() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status GetMaximumSpeed(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::GetMaximumSpeedRequest* /*request*/, ::mavsdk::rpc::action::GetMaximumSpeedResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestGetMaximumSpeed(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(17, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithRawMethod_SetMaximumSpeed : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawMethod_SetMaximumSpeed() {
        ::grpc::Service::MarkMethodRaw(18);
      }
      ~WithRawMethod_SetMaximumSpeed() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status SetMaximumSpeed(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::SetMaximumSpeedRequest* /*request*/, ::mavsdk::rpc::action::SetMaximumSpeedResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestSetMaximumSpeed(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(18, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithRawMethod_GetReturnToLaunchAltitude : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawMethod_GetReturnToLaunchAltitude() {
        ::grpc::Service::MarkMethodRaw(19);
      }
      ~WithRawMethod_GetReturnToLaunchAltitude() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status GetReturnToLaunchAltitude(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::GetReturnToLaunchAltitudeRequest* /*request*/, ::mavsdk::rpc::action::GetReturnToLaunchAltitudeResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestGetReturnToLaunchAltitude(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(19, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithRawMethod_SetReturnToLaunchAltitude : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawMethod_SetReturnToLaunchAltitude() {
        ::grpc::Service::MarkMethodRaw(20);
      }
      ~WithRawMethod_SetReturnToLaunchAltitude() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status SetReturnToLaunchAltitude(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::SetReturnToLaunchAltitudeRequest* /*request*/, ::mavsdk::rpc::action::SetReturnToLaunchAltitudeResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestSetReturnToLaunchAltitude(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(20, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithRawMethod_SetCurrentSpeed : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawMethod_SetCurrentSpeed() {
        ::grpc::Service::MarkMethodRaw(21);
      }
      ~WithRawMethod_SetCurrentSpeed() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status SetCurrentSpeed(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::SetCurrentSpeedRequest* /*request*/, ::mavsdk::rpc::action::SetCurrentSpeedResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      void RequestSetCurrentSpeed(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
        ::grpc::Service::RequestAsyncUnary(21, context, request, response, new_call_cq, notification_cq, tag);
      }
    };
    template <class BaseClass>
    class WithRawCallbackMethod_Arm : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawCallbackMethod_Arm() {
        ::grpc::Service::MarkMethodRawCallback(0,
            new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->Arm(context, request, response); }));
      }
      ~WithRawCallbackMethod_Arm() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Arm(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::ArmRequest* /*request*/, ::mavsdk::rpc::action::ArmResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* Arm(
        ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithRawCallbackMethod_Disarm : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawCallbackMethod_Disarm() {
        ::grpc::Service::MarkMethodRawCallback(1,
            new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->Disarm(context, request, response); }));
      }
      ~WithRawCallbackMethod_Disarm() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Disarm(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::DisarmRequest* /*request*/, ::mavsdk::rpc::action::DisarmResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* Disarm(
        ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithRawCallbackMethod_Takeoff : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawCallbackMethod_Takeoff() {
        ::grpc::Service::MarkMethodRawCallback(2,
            new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->Takeoff(context, request, response); }));
      }
      ~WithRawCallbackMethod_Takeoff() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Takeoff(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::TakeoffRequest* /*request*/, ::mavsdk::rpc::action::TakeoffResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* Takeoff(
        ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithRawCallbackMethod_Land : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawCallbackMethod_Land() {
        ::grpc::Service::MarkMethodRawCallback(3,
            new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->Land(context, request, response); }));
      }
      ~WithRawCallbackMethod_Land() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Land(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::LandRequest* /*request*/, ::mavsdk::rpc::action::LandResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* Land(
        ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithRawCallbackMethod_Reboot : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawCallbackMethod_Reboot() {
        ::grpc::Service::MarkMethodRawCallback(4,
            new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->Reboot(context, request, response); }));
      }
      ~WithRawCallbackMethod_Reboot() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Reboot(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::RebootRequest* /*request*/, ::mavsdk::rpc::action::RebootResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* Reboot(
        ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithRawCallbackMethod_Shutdown : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawCallbackMethod_Shutdown() {
        ::grpc::Service::MarkMethodRawCallback(5,
            new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->Shutdown(context, request, response); }));
      }
      ~WithRawCallbackMethod_Shutdown() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Shutdown(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::ShutdownRequest* /*request*/, ::mavsdk::rpc::action::ShutdownResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* Shutdown(
        ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithRawCallbackMethod_Terminate : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawCallbackMethod_Terminate() {
        ::grpc::Service::MarkMethodRawCallback(6,
            new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->Terminate(context, request, response); }));
      }
      ~WithRawCallbackMethod_Terminate() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Terminate(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::TerminateRequest* /*request*/, ::mavsdk::rpc::action::TerminateResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* Terminate(
        ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithRawCallbackMethod_Kill : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawCallbackMethod_Kill() {
        ::grpc::Service::MarkMethodRawCallback(7,
            new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->Kill(context, request, response); }));
      }
      ~WithRawCallbackMethod_Kill() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Kill(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::KillRequest* /*request*/, ::mavsdk::rpc::action::KillResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* Kill(
        ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithRawCallbackMethod_ReturnToLaunch : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawCallbackMethod_ReturnToLaunch() {
        ::grpc::Service::MarkMethodRawCallback(8,
            new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->ReturnToLaunch(context, request, response); }));
      }
      ~WithRawCallbackMethod_ReturnToLaunch() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status ReturnToLaunch(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::ReturnToLaunchRequest* /*request*/, ::mavsdk::rpc::action::ReturnToLaunchResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* ReturnToLaunch(
        ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithRawCallbackMethod_GotoLocation : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawCallbackMethod_GotoLocation() {
        ::grpc::Service::MarkMethodRawCallback(9,
            new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->GotoLocation(context, request, response); }));
      }
      ~WithRawCallbackMethod_GotoLocation() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status GotoLocation(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::GotoLocationRequest* /*request*/, ::mavsdk::rpc::action::GotoLocationResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* GotoLocation(
        ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithRawCallbackMethod_DoOrbit : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawCallbackMethod_DoOrbit() {
        ::grpc::Service::MarkMethodRawCallback(10,
            new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->DoOrbit(context, request, response); }));
      }
      ~WithRawCallbackMethod_DoOrbit() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status DoOrbit(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::DoOrbitRequest* /*request*/, ::mavsdk::rpc::action::DoOrbitResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* DoOrbit(
        ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithRawCallbackMethod_Hold : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawCallbackMethod_Hold() {
        ::grpc::Service::MarkMethodRawCallback(11,
            new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->Hold(context, request, response); }));
      }
      ~WithRawCallbackMethod_Hold() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status Hold(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::HoldRequest* /*request*/, ::mavsdk::rpc::action::HoldResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* Hold(
        ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithRawCallbackMethod_SetActuator : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawCallbackMethod_SetActuator() {
        ::grpc::Service::MarkMethodRawCallback(12,
            new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->SetActuator(context, request, response); }));
      }
      ~WithRawCallbackMethod_SetActuator() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status SetActuator(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::SetActuatorRequest* /*request*/, ::mavsdk::rpc::action::SetActuatorResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* SetActuator(
        ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithRawCallbackMethod_TransitionToFixedwing : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawCallbackMethod_TransitionToFixedwing() {
        ::grpc::Service::MarkMethodRawCallback(13,
            new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->TransitionToFixedwing(context, request, response); }));
      }
      ~WithRawCallbackMethod_TransitionToFixedwing() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status TransitionToFixedwing(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::TransitionToFixedwingRequest* /*request*/, ::mavsdk::rpc::action::TransitionToFixedwingResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* TransitionToFixedwing(
        ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithRawCallbackMethod_TransitionToMulticopter : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawCallbackMethod_TransitionToMulticopter() {
        ::grpc::Service::MarkMethodRawCallback(14,
            new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->TransitionToMulticopter(context, request, response); }));
      }
      ~WithRawCallbackMethod_TransitionToMulticopter() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status TransitionToMulticopter(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::TransitionToMulticopterRequest* /*request*/, ::mavsdk::rpc::action::TransitionToMulticopterResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* TransitionToMulticopter(
        ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithRawCallbackMethod_GetTakeoffAltitude : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawCallbackMethod_GetTakeoffAltitude() {
        ::grpc::Service::MarkMethodRawCallback(15,
            new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->GetTakeoffAltitude(context, request, response); }));
      }
      ~WithRawCallbackMethod_GetTakeoffAltitude() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status GetTakeoffAltitude(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::GetTakeoffAltitudeRequest* /*request*/, ::mavsdk::rpc::action::GetTakeoffAltitudeResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* GetTakeoffAltitude(
        ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithRawCallbackMethod_SetTakeoffAltitude : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawCallbackMethod_SetTakeoffAltitude() {
        ::grpc::Service::MarkMethodRawCallback(16,
            new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->SetTakeoffAltitude(context, request, response); }));
      }
      ~WithRawCallbackMethod_SetTakeoffAltitude() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status SetTakeoffAltitude(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::SetTakeoffAltitudeRequest* /*request*/, ::mavsdk::rpc::action::SetTakeoffAltitudeResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* SetTakeoffAltitude(
        ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithRawCallbackMethod_GetMaximumSpeed : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawCallbackMethod_GetMaximumSpeed() {
        ::grpc::Service::MarkMethodRawCallback(17,
            new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->GetMaximumSpeed(context, request, response); }));
      }
      ~WithRawCallbackMethod_GetMaximumSpeed() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status GetMaximumSpeed(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::GetMaximumSpeedRequest* /*request*/, ::mavsdk::rpc::action::GetMaximumSpeedResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* GetMaximumSpeed(
        ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithRawCallbackMethod_SetMaximumSpeed : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawCallbackMethod_SetMaximumSpeed() {
        ::grpc::Service::MarkMethodRawCallback(18,
            new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->SetMaximumSpeed(context, request, response); }));
      }
      ~WithRawCallbackMethod_SetMaximumSpeed() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status SetMaximumSpeed(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::SetMaximumSpeedRequest* /*request*/, ::mavsdk::rpc::action::SetMaximumSpeedResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* SetMaximumSpeed(
        ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithRawCallbackMethod_GetReturnToLaunchAltitude : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawCallbackMethod_GetReturnToLaunchAltitude() {
        ::grpc::Service::MarkMethodRawCallback(19,
            new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->GetReturnToLaunchAltitude(context, request, response); }));
      }
      ~WithRawCallbackMethod_GetReturnToLaunchAltitude() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status GetReturnToLaunchAltitude(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::GetReturnToLaunchAltitudeRequest* /*request*/, ::mavsdk::rpc::action::GetReturnToLaunchAltitudeResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* GetReturnToLaunchAltitude(
        ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithRawCallbackMethod_SetReturnToLaunchAltitude : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawCallbackMethod_SetReturnToLaunchAltitude() {
        ::grpc::Service::MarkMethodRawCallback(20,
            new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->SetReturnToLaunchAltitude(context, request, response); }));
      }
      ~WithRawCallbackMethod_SetReturnToLaunchAltitude() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status SetReturnToLaunchAltitude(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::SetReturnToLaunchAltitudeRequest* /*request*/, ::mavsdk::rpc::action::SetReturnToLaunchAltitudeResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* SetReturnToLaunchAltitude(
        ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithRawCallbackMethod_SetCurrentSpeed : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithRawCallbackMethod_SetCurrentSpeed() {
        ::grpc::Service::MarkMethodRawCallback(21,
            new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
              [this](
                     ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->SetCurrentSpeed(context, request, response); }));
      }
      ~WithRawCallbackMethod_SetCurrentSpeed() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable synchronous version of this method
      ::grpc::Status SetCurrentSpeed(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::SetCurrentSpeedRequest* /*request*/, ::mavsdk::rpc::action::SetCurrentSpeedResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      virtual ::grpc::ServerUnaryReactor* SetCurrentSpeed(
        ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
    };
    template <class BaseClass>
    class WithStreamedUnaryMethod_Arm : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithStreamedUnaryMethod_Arm() {
        ::grpc::Service::MarkMethodStreamed(0,
          new ::grpc::internal::StreamedUnaryHandler<
            ::mavsdk::rpc::action::ArmRequest, ::mavsdk::rpc::action::ArmResponse>(
              [this](::grpc::ServerContext* context,
                     ::grpc::ServerUnaryStreamer<
                       ::mavsdk::rpc::action::ArmRequest, ::mavsdk::rpc::action::ArmResponse>* streamer) {
                         return this->StreamedArm(context,
                           streamer);
                    }));
      }
      ~WithStreamedUnaryMethod_Arm() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable regular version of this method
      ::grpc::Status Arm(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::ArmRequest* /*request*/, ::mavsdk::rpc::action::ArmResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      // replace default version of method with streamed unary
      virtual ::grpc::Status StreamedArm(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::mavsdk::rpc::action::ArmRequest,::mavsdk::rpc::action::ArmResponse>* server_unary_streamer) = 0;
    };
    template <class BaseClass>
    class WithStreamedUnaryMethod_Disarm : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithStreamedUnaryMethod_Disarm() {
        ::grpc::Service::MarkMethodStreamed(1,
          new ::grpc::internal::StreamedUnaryHandler<
            ::mavsdk::rpc::action::DisarmRequest, ::mavsdk::rpc::action::DisarmResponse>(
              [this](::grpc::ServerContext* context,
                     ::grpc::ServerUnaryStreamer<
                       ::mavsdk::rpc::action::DisarmRequest, ::mavsdk::rpc::action::DisarmResponse>* streamer) {
                         return this->StreamedDisarm(context,
                           streamer);
                    }));
      }
      ~WithStreamedUnaryMethod_Disarm() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable regular version of this method
      ::grpc::Status Disarm(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::DisarmRequest* /*request*/, ::mavsdk::rpc::action::DisarmResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      // replace default version of method with streamed unary
      virtual ::grpc::Status StreamedDisarm(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::mavsdk::rpc::action::DisarmRequest,::mavsdk::rpc::action::DisarmResponse>* server_unary_streamer) = 0;
    };
    template <class BaseClass>
    class WithStreamedUnaryMethod_Takeoff : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithStreamedUnaryMethod_Takeoff() {
        ::grpc::Service::MarkMethodStreamed(2,
          new ::grpc::internal::StreamedUnaryHandler<
            ::mavsdk::rpc::action::TakeoffRequest, ::mavsdk::rpc::action::TakeoffResponse>(
              [this](::grpc::ServerContext* context,
                     ::grpc::ServerUnaryStreamer<
                       ::mavsdk::rpc::action::TakeoffRequest, ::mavsdk::rpc::action::TakeoffResponse>* streamer) {
                         return this->StreamedTakeoff(context,
                           streamer);
                    }));
      }
      ~WithStreamedUnaryMethod_Takeoff() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable regular version of this method
      ::grpc::Status Takeoff(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::TakeoffRequest* /*request*/, ::mavsdk::rpc::action::TakeoffResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      // replace default version of method with streamed unary
      virtual ::grpc::Status StreamedTakeoff(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::mavsdk::rpc::action::TakeoffRequest,::mavsdk::rpc::action::TakeoffResponse>* server_unary_streamer) = 0;
    };
    template <class BaseClass>
    class WithStreamedUnaryMethod_Land : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithStreamedUnaryMethod_Land() {
        ::grpc::Service::MarkMethodStreamed(3,
          new ::grpc::internal::StreamedUnaryHandler<
            ::mavsdk::rpc::action::LandRequest, ::mavsdk::rpc::action::LandResponse>(
              [this](::grpc::ServerContext* context,
                     ::grpc::ServerUnaryStreamer<
                       ::mavsdk::rpc::action::LandRequest, ::mavsdk::rpc::action::LandResponse>* streamer) {
                         return this->StreamedLand(context,
                           streamer);
                    }));
      }
      ~WithStreamedUnaryMethod_Land() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable regular version of this method
      ::grpc::Status Land(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::LandRequest* /*request*/, ::mavsdk::rpc::action::LandResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      // replace default version of method with streamed unary
      virtual ::grpc::Status StreamedLand(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::mavsdk::rpc::action::LandRequest,::mavsdk::rpc::action::LandResponse>* server_unary_streamer) = 0;
    };
    template <class BaseClass>
    class WithStreamedUnaryMethod_Reboot : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithStreamedUnaryMethod_Reboot() {
        ::grpc::Service::MarkMethodStreamed(4,
          new ::grpc::internal::StreamedUnaryHandler<
            ::mavsdk::rpc::action::RebootRequest, ::mavsdk::rpc::action::RebootResponse>(
              [this](::grpc::ServerContext* context,
                     ::grpc::ServerUnaryStreamer<
                       ::mavsdk::rpc::action::RebootRequest, ::mavsdk::rpc::action::RebootResponse>* streamer) {
                         return this->StreamedReboot(context,
                           streamer);
                    }));
      }
      ~WithStreamedUnaryMethod_Reboot() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable regular version of this method
      ::grpc::Status Reboot(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::RebootRequest* /*request*/, ::mavsdk::rpc::action::RebootResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      // replace default version of method with streamed unary
      virtual ::grpc::Status StreamedReboot(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::mavsdk::rpc::action::RebootRequest,::mavsdk::rpc::action::RebootResponse>* server_unary_streamer) = 0;
    };
    template <class BaseClass>
    class WithStreamedUnaryMethod_Shutdown : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithStreamedUnaryMethod_Shutdown() {
        ::grpc::Service::MarkMethodStreamed(5,
          new ::grpc::internal::StreamedUnaryHandler<
            ::mavsdk::rpc::action::ShutdownRequest, ::mavsdk::rpc::action::ShutdownResponse>(
              [this](::grpc::ServerContext* context,
                     ::grpc::ServerUnaryStreamer<
                       ::mavsdk::rpc::action::ShutdownRequest, ::mavsdk::rpc::action::ShutdownResponse>* streamer) {
                         return this->StreamedShutdown(context,
                           streamer);
                    }));
      }
      ~WithStreamedUnaryMethod_Shutdown() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable regular version of this method
      ::grpc::Status Shutdown(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::ShutdownRequest* /*request*/, ::mavsdk::rpc::action::ShutdownResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      // replace default version of method with streamed unary
      virtual ::grpc::Status StreamedShutdown(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::mavsdk::rpc::action::ShutdownRequest,::mavsdk::rpc::action::ShutdownResponse>* server_unary_streamer) = 0;
    };
    template <class BaseClass>
    class WithStreamedUnaryMethod_Terminate : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithStreamedUnaryMethod_Terminate() {
        ::grpc::Service::MarkMethodStreamed(6,
          new ::grpc::internal::StreamedUnaryHandler<
            ::mavsdk::rpc::action::TerminateRequest, ::mavsdk::rpc::action::TerminateResponse>(
              [this](::grpc::ServerContext* context,
                     ::grpc::ServerUnaryStreamer<
                       ::mavsdk::rpc::action::TerminateRequest, ::mavsdk::rpc::action::TerminateResponse>* streamer) {
                         return this->StreamedTerminate(context,
                           streamer);
                    }));
      }
      ~WithStreamedUnaryMethod_Terminate() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable regular version of this method
      ::grpc::Status Terminate(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::TerminateRequest* /*request*/, ::mavsdk::rpc::action::TerminateResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      // replace default version of method with streamed unary
      virtual ::grpc::Status StreamedTerminate(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::mavsdk::rpc::action::TerminateRequest,::mavsdk::rpc::action::TerminateResponse>* server_unary_streamer) = 0;
    };
    template <class BaseClass>
    class WithStreamedUnaryMethod_Kill : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithStreamedUnaryMethod_Kill() {
        ::grpc::Service::MarkMethodStreamed(7,
          new ::grpc::internal::StreamedUnaryHandler<
            ::mavsdk::rpc::action::KillRequest, ::mavsdk::rpc::action::KillResponse>(
              [this](::grpc::ServerContext* context,
                     ::grpc::ServerUnaryStreamer<
                       ::mavsdk::rpc::action::KillRequest, ::mavsdk::rpc::action::KillResponse>* streamer) {
                         return this->StreamedKill(context,
                           streamer);
                    }));
      }
      ~WithStreamedUnaryMethod_Kill() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable regular version of this method
      ::grpc::Status Kill(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::KillRequest* /*request*/, ::mavsdk::rpc::action::KillResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      // replace default version of method with streamed unary
      virtual ::grpc::Status StreamedKill(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::mavsdk::rpc::action::KillRequest,::mavsdk::rpc::action::KillResponse>* server_unary_streamer) = 0;
    };
    template <class BaseClass>
    class WithStreamedUnaryMethod_ReturnToLaunch : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithStreamedUnaryMethod_ReturnToLaunch() {
        ::grpc::Service::MarkMethodStreamed(8,
          new ::grpc::internal::StreamedUnaryHandler<
            ::mavsdk::rpc::action::ReturnToLaunchRequest, ::mavsdk::rpc::action::ReturnToLaunchResponse>(
              [this](::grpc::ServerContext* context,
                     ::grpc::ServerUnaryStreamer<
                       ::mavsdk::rpc::action::ReturnToLaunchRequest, ::mavsdk::rpc::action::ReturnToLaunchResponse>* streamer) {
                         return this->StreamedReturnToLaunch(context,
                           streamer);
                    }));
      }
      ~WithStreamedUnaryMethod_ReturnToLaunch() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable regular version of this method
      ::grpc::Status ReturnToLaunch(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::ReturnToLaunchRequest* /*request*/, ::mavsdk::rpc::action::ReturnToLaunchResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      // replace default version of method with streamed unary
      virtual ::grpc::Status StreamedReturnToLaunch(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::mavsdk::rpc::action::ReturnToLaunchRequest,::mavsdk::rpc::action::ReturnToLaunchResponse>* server_unary_streamer) = 0;
    };
    template <class BaseClass>
    class WithStreamedUnaryMethod_GotoLocation : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithStreamedUnaryMethod_GotoLocation() {
        ::grpc::Service::MarkMethodStreamed(9,
          new ::grpc::internal::StreamedUnaryHandler<
            ::mavsdk::rpc::action::GotoLocationRequest, ::mavsdk::rpc::action::GotoLocationResponse>(
              [this](::grpc::ServerContext* context,
                     ::grpc::ServerUnaryStreamer<
                       ::mavsdk::rpc::action::GotoLocationRequest, ::mavsdk::rpc::action::GotoLocationResponse>* streamer) {
                         return this->StreamedGotoLocation(context,
                           streamer);
                    }));
      }
      ~WithStreamedUnaryMethod_GotoLocation() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable regular version of this method
      ::grpc::Status GotoLocation(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::GotoLocationRequest* /*request*/, ::mavsdk::rpc::action::GotoLocationResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      // replace default version of method with streamed unary
      virtual ::grpc::Status StreamedGotoLocation(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::mavsdk::rpc::action::GotoLocationRequest,::mavsdk::rpc::action::GotoLocationResponse>* server_unary_streamer) = 0;
    };
    template <class BaseClass>
    class WithStreamedUnaryMethod_DoOrbit : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithStreamedUnaryMethod_DoOrbit() {
        ::grpc::Service::MarkMethodStreamed(10,
          new ::grpc::internal::StreamedUnaryHandler<
            ::mavsdk::rpc::action::DoOrbitRequest, ::mavsdk::rpc::action::DoOrbitResponse>(
              [this](::grpc::ServerContext* context,
                     ::grpc::ServerUnaryStreamer<
                       ::mavsdk::rpc::action::DoOrbitRequest, ::mavsdk::rpc::action::DoOrbitResponse>* streamer) {
                         return this->StreamedDoOrbit(context,
                           streamer);
                    }));
      }
      ~WithStreamedUnaryMethod_DoOrbit() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable regular version of this method
      ::grpc::Status DoOrbit(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::DoOrbitRequest* /*request*/, ::mavsdk::rpc::action::DoOrbitResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      // replace default version of method with streamed unary
      virtual ::grpc::Status StreamedDoOrbit(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::mavsdk::rpc::action::DoOrbitRequest,::mavsdk::rpc::action::DoOrbitResponse>* server_unary_streamer) = 0;
    };
    template <class BaseClass>
    class WithStreamedUnaryMethod_Hold : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithStreamedUnaryMethod_Hold() {
        ::grpc::Service::MarkMethodStreamed(11,
          new ::grpc::internal::StreamedUnaryHandler<
            ::mavsdk::rpc::action::HoldRequest, ::mavsdk::rpc::action::HoldResponse>(
              [this](::grpc::ServerContext* context,
                     ::grpc::ServerUnaryStreamer<
                       ::mavsdk::rpc::action::HoldRequest, ::mavsdk::rpc::action::HoldResponse>* streamer) {
                         return this->StreamedHold(context,
                           streamer);
                    }));
      }
      ~WithStreamedUnaryMethod_Hold() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable regular version of this method
      ::grpc::Status Hold(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::HoldRequest* /*request*/, ::mavsdk::rpc::action::HoldResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      // replace default version of method with streamed unary
      virtual ::grpc::Status StreamedHold(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::mavsdk::rpc::action::HoldRequest,::mavsdk::rpc::action::HoldResponse>* server_unary_streamer) = 0;
    };
    template <class BaseClass>
    class WithStreamedUnaryMethod_SetActuator : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithStreamedUnaryMethod_SetActuator() {
        ::grpc::Service::MarkMethodStreamed(12,
          new ::grpc::internal::StreamedUnaryHandler<
            ::mavsdk::rpc::action::SetActuatorRequest, ::mavsdk::rpc::action::SetActuatorResponse>(
              [this](::grpc::ServerContext* context,
                     ::grpc::ServerUnaryStreamer<
                       ::mavsdk::rpc::action::SetActuatorRequest, ::mavsdk::rpc::action::SetActuatorResponse>* streamer) {
                         return this->StreamedSetActuator(context,
                           streamer);
                    }));
      }
      ~WithStreamedUnaryMethod_SetActuator() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable regular version of this method
      ::grpc::Status SetActuator(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::SetActuatorRequest* /*request*/, ::mavsdk::rpc::action::SetActuatorResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      // replace default version of method with streamed unary
      virtual ::grpc::Status StreamedSetActuator(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::mavsdk::rpc::action::SetActuatorRequest,::mavsdk::rpc::action::SetActuatorResponse>* server_unary_streamer) = 0;
    };
    template <class BaseClass>
    class WithStreamedUnaryMethod_TransitionToFixedwing : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithStreamedUnaryMethod_TransitionToFixedwing() {
        ::grpc::Service::MarkMethodStreamed(13,
          new ::grpc::internal::StreamedUnaryHandler<
            ::mavsdk::rpc::action::TransitionToFixedwingRequest, ::mavsdk::rpc::action::TransitionToFixedwingResponse>(
              [this](::grpc::ServerContext* context,
                     ::grpc::ServerUnaryStreamer<
                       ::mavsdk::rpc::action::TransitionToFixedwingRequest, ::mavsdk::rpc::action::TransitionToFixedwingResponse>* streamer) {
                         return this->StreamedTransitionToFixedwing(context,
                           streamer);
                    }));
      }
      ~WithStreamedUnaryMethod_TransitionToFixedwing() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable regular version of this method
      ::grpc::Status TransitionToFixedwing(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::TransitionToFixedwingRequest* /*request*/, ::mavsdk::rpc::action::TransitionToFixedwingResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      // replace default version of method with streamed unary
      virtual ::grpc::Status StreamedTransitionToFixedwing(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::mavsdk::rpc::action::TransitionToFixedwingRequest,::mavsdk::rpc::action::TransitionToFixedwingResponse>* server_unary_streamer) = 0;
    };
    template <class BaseClass>
    class WithStreamedUnaryMethod_TransitionToMulticopter : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithStreamedUnaryMethod_TransitionToMulticopter() {
        ::grpc::Service::MarkMethodStreamed(14,
          new ::grpc::internal::StreamedUnaryHandler<
            ::mavsdk::rpc::action::TransitionToMulticopterRequest, ::mavsdk::rpc::action::TransitionToMulticopterResponse>(
              [this](::grpc::ServerContext* context,
                     ::grpc::ServerUnaryStreamer<
                       ::mavsdk::rpc::action::TransitionToMulticopterRequest, ::mavsdk::rpc::action::TransitionToMulticopterResponse>* streamer) {
                         return this->StreamedTransitionToMulticopter(context,
                           streamer);
                    }));
      }
      ~WithStreamedUnaryMethod_TransitionToMulticopter() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable regular version of this method
      ::grpc::Status TransitionToMulticopter(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::TransitionToMulticopterRequest* /*request*/, ::mavsdk::rpc::action::TransitionToMulticopterResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      // replace default version of method with streamed unary
      virtual ::grpc::Status StreamedTransitionToMulticopter(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::mavsdk::rpc::action::TransitionToMulticopterRequest,::mavsdk::rpc::action::TransitionToMulticopterResponse>* server_unary_streamer) = 0;
    };
    template <class BaseClass>
    class WithStreamedUnaryMethod_GetTakeoffAltitude : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithStreamedUnaryMethod_GetTakeoffAltitude() {
        ::grpc::Service::MarkMethodStreamed(15,
          new ::grpc::internal::StreamedUnaryHandler<
            ::mavsdk::rpc::action::GetTakeoffAltitudeRequest, ::mavsdk::rpc::action::GetTakeoffAltitudeResponse>(
              [this](::grpc::ServerContext* context,
                     ::grpc::ServerUnaryStreamer<
                       ::mavsdk::rpc::action::GetTakeoffAltitudeRequest, ::mavsdk::rpc::action::GetTakeoffAltitudeResponse>* streamer) {
                         return this->StreamedGetTakeoffAltitude(context,
                           streamer);
                    }));
      }
      ~WithStreamedUnaryMethod_GetTakeoffAltitude() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable regular version of this method
      ::grpc::Status GetTakeoffAltitude(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::GetTakeoffAltitudeRequest* /*request*/, ::mavsdk::rpc::action::GetTakeoffAltitudeResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      // replace default version of method with streamed unary
      virtual ::grpc::Status StreamedGetTakeoffAltitude(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::mavsdk::rpc::action::GetTakeoffAltitudeRequest,::mavsdk::rpc::action::GetTakeoffAltitudeResponse>* server_unary_streamer) = 0;
    };
    template <class BaseClass>
    class WithStreamedUnaryMethod_SetTakeoffAltitude : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithStreamedUnaryMethod_SetTakeoffAltitude() {
        ::grpc::Service::MarkMethodStreamed(16,
          new ::grpc::internal::StreamedUnaryHandler<
            ::mavsdk::rpc::action::SetTakeoffAltitudeRequest, ::mavsdk::rpc::action::SetTakeoffAltitudeResponse>(
              [this](::grpc::ServerContext* context,
                     ::grpc::ServerUnaryStreamer<
                       ::mavsdk::rpc::action::SetTakeoffAltitudeRequest, ::mavsdk::rpc::action::SetTakeoffAltitudeResponse>* streamer) {
                         return this->StreamedSetTakeoffAltitude(context,
                           streamer);
                    }));
      }
      ~WithStreamedUnaryMethod_SetTakeoffAltitude() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable regular version of this method
      ::grpc::Status SetTakeoffAltitude(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::SetTakeoffAltitudeRequest* /*request*/, ::mavsdk::rpc::action::SetTakeoffAltitudeResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      // replace default version of method with streamed unary
      virtual ::grpc::Status StreamedSetTakeoffAltitude(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::mavsdk::rpc::action::SetTakeoffAltitudeRequest,::mavsdk::rpc::action::SetTakeoffAltitudeResponse>* server_unary_streamer) = 0;
    };
    template <class BaseClass>
    class WithStreamedUnaryMethod_GetMaximumSpeed : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithStreamedUnaryMethod_GetMaximumSpeed() {
        ::grpc::Service::MarkMethodStreamed(17,
          new ::grpc::internal::StreamedUnaryHandler<
            ::mavsdk::rpc::action::GetMaximumSpeedRequest, ::mavsdk::rpc::action::GetMaximumSpeedResponse>(
              [this](::grpc::ServerContext* context,
                     ::grpc::ServerUnaryStreamer<
                       ::mavsdk::rpc::action::GetMaximumSpeedRequest, ::mavsdk::rpc::action::GetMaximumSpeedResponse>* streamer) {
                         return this->StreamedGetMaximumSpeed(context,
                           streamer);
                    }));
      }
      ~WithStreamedUnaryMethod_GetMaximumSpeed() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable regular version of this method
      ::grpc::Status GetMaximumSpeed(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::GetMaximumSpeedRequest* /*request*/, ::mavsdk::rpc::action::GetMaximumSpeedResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      // replace default version of method with streamed unary
      virtual ::grpc::Status StreamedGetMaximumSpeed(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::mavsdk::rpc::action::GetMaximumSpeedRequest,::mavsdk::rpc::action::GetMaximumSpeedResponse>* server_unary_streamer) = 0;
    };
    template <class BaseClass>
    class WithStreamedUnaryMethod_SetMaximumSpeed : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithStreamedUnaryMethod_SetMaximumSpeed() {
        ::grpc::Service::MarkMethodStreamed(18,
          new ::grpc::internal::StreamedUnaryHandler<
            ::mavsdk::rpc::action::SetMaximumSpeedRequest, ::mavsdk::rpc::action::SetMaximumSpeedResponse>(
              [this](::grpc::ServerContext* context,
                     ::grpc::ServerUnaryStreamer<
                       ::mavsdk::rpc::action::SetMaximumSpeedRequest, ::mavsdk::rpc::action::SetMaximumSpeedResponse>* streamer) {
                         return this->StreamedSetMaximumSpeed(context,
                           streamer);
                    }));
      }
      ~WithStreamedUnaryMethod_SetMaximumSpeed() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable regular version of this method
      ::grpc::Status SetMaximumSpeed(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::SetMaximumSpeedRequest* /*request*/, ::mavsdk::rpc::action::SetMaximumSpeedResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      // replace default version of method with streamed unary
      virtual ::grpc::Status StreamedSetMaximumSpeed(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::mavsdk::rpc::action::SetMaximumSpeedRequest,::mavsdk::rpc::action::SetMaximumSpeedResponse>* server_unary_streamer) = 0;
    };
    template <class BaseClass>
    class WithStreamedUnaryMethod_GetReturnToLaunchAltitude : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithStreamedUnaryMethod_GetReturnToLaunchAltitude() {
        ::grpc::Service::MarkMethodStreamed(19,
          new ::grpc::internal::StreamedUnaryHandler<
            ::mavsdk::rpc::action::GetReturnToLaunchAltitudeRequest, ::mavsdk::rpc::action::GetReturnToLaunchAltitudeResponse>(
              [this](::grpc::ServerContext* context,
                     ::grpc::ServerUnaryStreamer<
                       ::mavsdk::rpc::action::GetReturnToLaunchAltitudeRequest, ::mavsdk::rpc::action::GetReturnToLaunchAltitudeResponse>* streamer) {
                         return this->StreamedGetReturnToLaunchAltitude(context,
                           streamer);
                    }));
      }
      ~WithStreamedUnaryMethod_GetReturnToLaunchAltitude() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable regular version of this method
      ::grpc::Status GetReturnToLaunchAltitude(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::GetReturnToLaunchAltitudeRequest* /*request*/, ::mavsdk::rpc::action::GetReturnToLaunchAltitudeResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      // replace default version of method with streamed unary
      virtual ::grpc::Status StreamedGetReturnToLaunchAltitude(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::mavsdk::rpc::action::GetReturnToLaunchAltitudeRequest,::mavsdk::rpc::action::GetReturnToLaunchAltitudeResponse>* server_unary_streamer) = 0;
    };
    template <class BaseClass>
    class WithStreamedUnaryMethod_SetReturnToLaunchAltitude : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithStreamedUnaryMethod_SetReturnToLaunchAltitude() {
        ::grpc::Service::MarkMethodStreamed(20,
          new ::grpc::internal::StreamedUnaryHandler<
            ::mavsdk::rpc::action::SetReturnToLaunchAltitudeRequest, ::mavsdk::rpc::action::SetReturnToLaunchAltitudeResponse>(
              [this](::grpc::ServerContext* context,
                     ::grpc::ServerUnaryStreamer<
                       ::mavsdk::rpc::action::SetReturnToLaunchAltitudeRequest, ::mavsdk::rpc::action::SetReturnToLaunchAltitudeResponse>* streamer) {
                         return this->StreamedSetReturnToLaunchAltitude(context,
                           streamer);
                    }));
      }
      ~WithStreamedUnaryMethod_SetReturnToLaunchAltitude() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable regular version of this method
      ::grpc::Status SetReturnToLaunchAltitude(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::SetReturnToLaunchAltitudeRequest* /*request*/, ::mavsdk::rpc::action::SetReturnToLaunchAltitudeResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      // replace default version of method with streamed unary
      virtual ::grpc::Status StreamedSetReturnToLaunchAltitude(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::mavsdk::rpc::action::SetReturnToLaunchAltitudeRequest,::mavsdk::rpc::action::SetReturnToLaunchAltitudeResponse>* server_unary_streamer) = 0;
    };
    template <class BaseClass>
    class WithStreamedUnaryMethod_SetCurrentSpeed : public BaseClass {
     private:
      void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
     public:
      WithStreamedUnaryMethod_SetCurrentSpeed() {
        ::grpc::Service::MarkMethodStreamed(21,
          new ::grpc::internal::StreamedUnaryHandler<
            ::mavsdk::rpc::action::SetCurrentSpeedRequest, ::mavsdk::rpc::action::SetCurrentSpeedResponse>(
              [this](::grpc::ServerContext* context,
                     ::grpc::ServerUnaryStreamer<
                       ::mavsdk::rpc::action::SetCurrentSpeedRequest, ::mavsdk::rpc::action::SetCurrentSpeedResponse>* streamer) {
                         return this->StreamedSetCurrentSpeed(context,
                           streamer);
                    }));
      }
      ~WithStreamedUnaryMethod_SetCurrentSpeed() override {
        BaseClassMustBeDerivedFromService(this);
      }
      // disable regular version of this method
      ::grpc::Status SetCurrentSpeed(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::action::SetCurrentSpeedRequest* /*request*/, ::mavsdk::rpc::action::SetCurrentSpeedResponse* /*response*/) override {
        abort();
        return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
      }
      // replace default version of method with streamed unary
      virtual ::grpc::Status StreamedSetCurrentSpeed(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::mavsdk::rpc::action::SetCurrentSpeedRequest,::mavsdk::rpc::action::SetCurrentSpeedResponse>* server_unary_streamer) = 0;
    };
    typedef WithStreamedUnaryMethod_Arm<WithStreamedUnaryMethod_Disarm<WithStreamedUnaryMethod_Takeoff<WithStreamedUnaryMethod_Land<WithStreamedUnaryMethod_Reboot<WithStreamedUnaryMethod_Shutdown<WithStreamedUnaryMethod_Terminate<WithStreamedUnaryMethod_Kill<WithStreamedUnaryMethod_ReturnToLaunch<WithStreamedUnaryMethod_GotoLocation<WithStreamedUnaryMethod_DoOrbit<WithStreamedUnaryMethod_Hold<WithStreamedUnaryMethod_SetActuator<WithStreamedUnaryMethod_TransitionToFixedwing<WithStreamedUnaryMethod_TransitionToMulticopter<WithStreamedUnaryMethod_GetTakeoffAltitude<WithStreamedUnaryMethod_SetTakeoffAltitude<WithStreamedUnaryMethod_GetMaximumSpeed<WithStreamedUnaryMethod_SetMaximumSpeed<WithStreamedUnaryMethod_GetReturnToLaunchAltitude<WithStreamedUnaryMethod_SetReturnToLaunchAltitude<WithStreamedUnaryMethod_SetCurrentSpeed<Service > > > > > > > > > > > > > > > > > > > > > > StreamedUnaryService;
    typedef Service SplitStreamedService;
    typedef WithStreamedUnaryMethod_Arm<WithStreamedUnaryMethod_Disarm<WithStreamedUnaryMethod_Takeoff<WithStreamedUnaryMethod_Land<WithStreamedUnaryMethod_Reboot<WithStreamedUnaryMethod_Shutdown<WithStreamedUnaryMethod_Terminate<WithStreamedUnaryMethod_Kill<WithStreamedUnaryMethod_ReturnToLaunch<WithStreamedUnaryMethod_GotoLocation<WithStreamedUnaryMethod_DoOrbit<WithStreamedUnaryMethod_Hold<WithStreamedUnaryMethod_SetActuator<WithStreamedUnaryMethod_TransitionToFixedwing<WithStreamedUnaryMethod_TransitionToMulticopter<WithStreamedUnaryMethod_GetTakeoffAltitude<WithStreamedUnaryMethod_SetTakeoffAltitude<WithStreamedUnaryMethod_GetMaximumSpeed<WithStreamedUnaryMethod_SetMaximumSpeed<WithStreamedUnaryMethod_GetReturnToLaunchAltitude<WithStreamedUnaryMethod_SetReturnToLaunchAltitude<WithStreamedUnaryMethod_SetCurrentSpeed<Service > > > > > > > > > > > > > > > > > > > > > > StreamedService;
  };
  
  }  // namespace action
  }  // namespace rpc
  }  // namespace mavsdk
  
  
  #endif  // GRPC_action_2faction_2eproto__INCLUDED
  