From efd50ea4878e53c329fdff257529fb1bacad6770 Mon Sep 17 00:00:00 2001 From: Julian Oes Date: Wed, 3 Mar 2021 16:09:58 +0100 Subject: [PATCH 1/2] mission: move QGC plan import from mission to mission_raw This moves the method to import QGroundControl .plan JSON mission files from the mission plugin to the mission_raw plugin. The reasoning is as follows: The imported missions did not really fit the Mission API, and I guess that the mission progress was often wrong. When the missions were imported into mission, many items/commands were unsupported and dropped with a warning. Such a warning is not visible in the language wrappers and could lead to surprises. The documentation said that the method would fail if any unsupported item was being imported, however, that was not true anymore in code. Therefore, in my opinion, it makes a lot more sense to implement the import in mission_raw where all/any mission items and commands can be imported. It's should be more complete, without surprises, and therefore safer to use. And in later steps we can also add geofence and rally items to this API. This PR contains the proto change and the implementation in code. It also slightly improves the parsing by moving it to a separate file and adding a bit more unit test coverage. --- proto | 2 +- src/cmake/unit_tests.cmake | 2 +- .../src/generated/mission/mission.grpc.pb.cc | 42 - .../src/generated/mission/mission.grpc.pb.h | 226 +-- .../src/generated/mission/mission.pb.cc | 665 +-------- .../src/generated/mission/mission.pb.h | 573 +------ .../mission_raw/mission_raw.grpc.pb.cc | 42 + .../mission_raw/mission_raw.grpc.pb.h | 235 ++- .../generated/mission_raw/mission_raw.pb.cc | 1316 +++++++++++++---- .../generated/mission_raw/mission_raw.pb.h | 970 +++++++++++- .../plugins/mission/mission_service_impl.h | 30 - .../mission_raw/mission_raw_service_impl.h | 76 + src/plugins/mission/CMakeLists.txt | 6 - .../mission/include/plugins/mission/mission.h | 33 - src/plugins/mission/mission.cpp | 16 - .../mission_equality_operator_test.cpp | 186 --- src/plugins/mission/mission_impl.cpp | 83 +- src/plugins/mission/mission_impl.h | 6 - .../mission/mission_import_qgc_test.cpp | 288 ---- .../mission/qgroundcontrol_sample.plan | 285 ---- .../qgroundcontrol_sample_with_survey.plan | 956 ------------ src/plugins/mission_raw/CMakeLists.txt | 11 + .../include/plugins/mission_raw/mission_raw.h | 43 + src/plugins/mission_raw/mission_import.cpp | 222 +++ src/plugins/mission_raw/mission_import.h | 26 + .../mission_raw/mission_import_test.cpp | 399 +++++ src/plugins/mission_raw/mission_raw.cpp | 47 + src/plugins/mission_raw/mission_raw_impl.cpp | 20 + src/plugins/mission_raw/mission_raw_impl.h | 11 + .../test_plans/qgroundcontrol_sample.plan | 140 ++ ...ndcontrol_sample_with_structured_scan.plan | 85 ++ .../qgroundcontrol_sample_with_survey.plan | 320 ++++ ...trol_sample_with_survey_missing_items.plan | 126 ++ ...trol_sample_with_survey_wrong_version.plan | 320 ++++ ...qgroundcontrol_sample_without_mission.plan | 10 + ...dcontrol_sample_wrong_mission_version.plan | 61 + ...dcontrol_sample_wrong_overall_version.plan | 61 + 37 files changed, 4323 insertions(+), 3617 deletions(-) delete mode 100644 src/plugins/mission/mission_equality_operator_test.cpp delete mode 100644 src/plugins/mission/mission_import_qgc_test.cpp delete mode 100644 src/plugins/mission/qgroundcontrol_sample.plan delete mode 100644 src/plugins/mission/qgroundcontrol_sample_with_survey.plan create mode 100644 src/plugins/mission_raw/mission_import.cpp create mode 100644 src/plugins/mission_raw/mission_import.h create mode 100644 src/plugins/mission_raw/mission_import_test.cpp create mode 100644 src/plugins/mission_raw/test_plans/qgroundcontrol_sample.plan create mode 100644 src/plugins/mission_raw/test_plans/qgroundcontrol_sample_with_structured_scan.plan create mode 100644 src/plugins/mission_raw/test_plans/qgroundcontrol_sample_with_survey.plan create mode 100644 src/plugins/mission_raw/test_plans/qgroundcontrol_sample_with_survey_missing_items.plan create mode 100644 src/plugins/mission_raw/test_plans/qgroundcontrol_sample_with_survey_wrong_version.plan create mode 100644 src/plugins/mission_raw/test_plans/qgroundcontrol_sample_without_mission.plan create mode 100644 src/plugins/mission_raw/test_plans/qgroundcontrol_sample_wrong_mission_version.plan create mode 100644 src/plugins/mission_raw/test_plans/qgroundcontrol_sample_wrong_overall_version.plan diff --git a/proto b/proto index 04519b04a2..255c822481 160000 --- a/proto +++ b/proto @@ -1 +1 @@ -Subproject commit 04519b04a26d7a4c4fec4fde2a7be21b93fbd948 +Subproject commit 255c8224813acbbacce1dd9fef519a968b0a40dc diff --git a/src/cmake/unit_tests.cmake b/src/cmake/unit_tests.cmake index 9b893ad2cc..91106f5010 100644 --- a/src/cmake/unit_tests.cmake +++ b/src/cmake/unit_tests.cmake @@ -15,7 +15,7 @@ set_target_properties(unit_tests_runner target_link_libraries(unit_tests_runner mavsdk - mavsdk_mission + mavsdk_mission_raw mavsdk_camera mavsdk_calibration mavsdk_telemetry diff --git a/src/mavsdk_server/src/generated/mission/mission.grpc.pb.cc b/src/mavsdk_server/src/generated/mission/mission.grpc.pb.cc index 34385fad0a..f2784dab40 100644 --- a/src/mavsdk_server/src/generated/mission/mission.grpc.pb.cc +++ b/src/mavsdk_server/src/generated/mission/mission.grpc.pb.cc @@ -36,7 +36,6 @@ static const char* MissionService_method_names[] = { "/mavsdk.rpc.mission.MissionService/SubscribeMissionProgress", "/mavsdk.rpc.mission.MissionService/GetReturnToLaunchAfterMission", "/mavsdk.rpc.mission.MissionService/SetReturnToLaunchAfterMission", - "/mavsdk.rpc.mission.MissionService/ImportQgroundcontrolMission", }; std::unique_ptr< MissionService::Stub> MissionService::NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options) { @@ -58,7 +57,6 @@ MissionService::Stub::Stub(const std::shared_ptr< ::grpc::ChannelInterface>& cha , rpcmethod_SubscribeMissionProgress_(MissionService_method_names[9], ::grpc::internal::RpcMethod::SERVER_STREAMING, channel) , rpcmethod_GetReturnToLaunchAfterMission_(MissionService_method_names[10], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) , rpcmethod_SetReturnToLaunchAfterMission_(MissionService_method_names[11], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) - , rpcmethod_ImportQgroundcontrolMission_(MissionService_method_names[12], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) {} ::grpc::Status MissionService::Stub::UploadMission(::grpc::ClientContext* context, const ::mavsdk::rpc::mission::UploadMissionRequest& request, ::mavsdk::rpc::mission::UploadMissionResponse* response) { @@ -330,29 +328,6 @@ ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::mission::SetReturnToLaunchAfte return result; } -::grpc::Status MissionService::Stub::ImportQgroundcontrolMission(::grpc::ClientContext* context, const ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest& request, ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse* response) { - return ::grpc::internal::BlockingUnaryCall< ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest, ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_ImportQgroundcontrolMission_, context, request, response); -} - -void MissionService::Stub::experimental_async::ImportQgroundcontrolMission(::grpc::ClientContext* context, const ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest* request, ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse* response, std::function f) { - ::grpc::internal::CallbackUnaryCall< ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest, ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_ImportQgroundcontrolMission_, context, request, response, std::move(f)); -} - -void MissionService::Stub::experimental_async::ImportQgroundcontrolMission(::grpc::ClientContext* context, const ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest* request, ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) { - ::grpc::internal::ClientCallbackUnaryFactory::Create< ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_ImportQgroundcontrolMission_, context, request, response, reactor); -} - -::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse>* MissionService::Stub::PrepareAsyncImportQgroundcontrolMissionRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest& request, ::grpc::CompletionQueue* cq) { - return ::grpc::internal::ClientAsyncResponseReaderHelper::Create< ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse, ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_ImportQgroundcontrolMission_, context, request); -} - -::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse>* MissionService::Stub::AsyncImportQgroundcontrolMissionRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest& request, ::grpc::CompletionQueue* cq) { - auto* result = - this->PrepareAsyncImportQgroundcontrolMissionRaw(context, request, cq); - result->StartCall(); - return result; -} - MissionService::Service::Service() { AddMethod(new ::grpc::internal::RpcServiceMethod( MissionService_method_names[0], @@ -474,16 +449,6 @@ MissionService::Service::Service() { ::mavsdk::rpc::mission::SetReturnToLaunchAfterMissionResponse* resp) { return service->SetReturnToLaunchAfterMission(ctx, req, resp); }, this))); - AddMethod(new ::grpc::internal::RpcServiceMethod( - MissionService_method_names[12], - ::grpc::internal::RpcMethod::NORMAL_RPC, - new ::grpc::internal::RpcMethodHandler< MissionService::Service, ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest, ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>( - [](MissionService::Service* service, - ::grpc::ServerContext* ctx, - const ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest* req, - ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse* resp) { - return service->ImportQgroundcontrolMission(ctx, req, resp); - }, this))); } MissionService::Service::~Service() { @@ -573,13 +538,6 @@ ::grpc::Status MissionService::Service::SetReturnToLaunchAfterMission(::grpc::Se return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } -::grpc::Status MissionService::Service::ImportQgroundcontrolMission(::grpc::ServerContext* context, const ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest* request, ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse* response) { - (void) context; - (void) request; - (void) response; - return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); -} - } // namespace mavsdk } // namespace rpc diff --git a/src/mavsdk_server/src/generated/mission/mission.grpc.pb.h b/src/mavsdk_server/src/generated/mission/mission.grpc.pb.h index 671b26b433..f1b5d0af2c 100644 --- a/src/mavsdk_server/src/generated/mission/mission.grpc.pb.h +++ b/src/mavsdk_server/src/generated/mission/mission.grpc.pb.h @@ -174,18 +174,6 @@ class MissionService final { std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::mission::SetReturnToLaunchAfterMissionResponse>> PrepareAsyncSetReturnToLaunchAfterMission(::grpc::ClientContext* context, const ::mavsdk::rpc::mission::SetReturnToLaunchAfterMissionRequest& request, ::grpc::CompletionQueue* cq) { return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::mission::SetReturnToLaunchAfterMissionResponse>>(PrepareAsyncSetReturnToLaunchAfterMissionRaw(context, request, cq)); } - // - // Import a QGroundControl (QGC) mission plan. - // - // The method will fail if any of the imported mission items are not supported - // by the MAVSDK API. - virtual ::grpc::Status ImportQgroundcontrolMission(::grpc::ClientContext* context, const ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest& request, ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse* response) = 0; - std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse>> AsyncImportQgroundcontrolMission(::grpc::ClientContext* context, const ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest& request, ::grpc::CompletionQueue* cq) { - return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse>>(AsyncImportQgroundcontrolMissionRaw(context, request, cq)); - } - std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse>> PrepareAsyncImportQgroundcontrolMission(::grpc::ClientContext* context, const ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest& request, ::grpc::CompletionQueue* cq) { - return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse>>(PrepareAsyncImportQgroundcontrolMissionRaw(context, request, cq)); - } class experimental_async_interface { public: virtual ~experimental_async_interface() {} @@ -309,17 +297,6 @@ class MissionService final { #else virtual void SetReturnToLaunchAfterMission(::grpc::ClientContext* context, const ::mavsdk::rpc::mission::SetReturnToLaunchAfterMissionRequest* request, ::mavsdk::rpc::mission::SetReturnToLaunchAfterMissionResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0; #endif - // - // Import a QGroundControl (QGC) mission plan. - // - // The method will fail if any of the imported mission items are not supported - // by the MAVSDK API. - virtual void ImportQgroundcontrolMission(::grpc::ClientContext* context, const ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest* request, ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse* response, std::function) = 0; - #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL - virtual void ImportQgroundcontrolMission(::grpc::ClientContext* context, const ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest* request, ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0; - #else - virtual void ImportQgroundcontrolMission(::grpc::ClientContext* context, const ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest* request, ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0; - #endif }; #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL typedef class experimental_async_interface async_interface; @@ -354,8 +331,6 @@ class MissionService final { virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::mission::GetReturnToLaunchAfterMissionResponse>* PrepareAsyncGetReturnToLaunchAfterMissionRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::mission::GetReturnToLaunchAfterMissionRequest& request, ::grpc::CompletionQueue* cq) = 0; virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::mission::SetReturnToLaunchAfterMissionResponse>* AsyncSetReturnToLaunchAfterMissionRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::mission::SetReturnToLaunchAfterMissionRequest& request, ::grpc::CompletionQueue* cq) = 0; virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::mission::SetReturnToLaunchAfterMissionResponse>* PrepareAsyncSetReturnToLaunchAfterMissionRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::mission::SetReturnToLaunchAfterMissionRequest& request, ::grpc::CompletionQueue* cq) = 0; - virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse>* AsyncImportQgroundcontrolMissionRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest& request, ::grpc::CompletionQueue* cq) = 0; - virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse>* PrepareAsyncImportQgroundcontrolMissionRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest& request, ::grpc::CompletionQueue* cq) = 0; }; class Stub final : public StubInterface { public: @@ -446,13 +421,6 @@ class MissionService final { std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::mission::SetReturnToLaunchAfterMissionResponse>> PrepareAsyncSetReturnToLaunchAfterMission(::grpc::ClientContext* context, const ::mavsdk::rpc::mission::SetReturnToLaunchAfterMissionRequest& request, ::grpc::CompletionQueue* cq) { return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::mission::SetReturnToLaunchAfterMissionResponse>>(PrepareAsyncSetReturnToLaunchAfterMissionRaw(context, request, cq)); } - ::grpc::Status ImportQgroundcontrolMission(::grpc::ClientContext* context, const ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest& request, ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse* response) override; - std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse>> AsyncImportQgroundcontrolMission(::grpc::ClientContext* context, const ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest& request, ::grpc::CompletionQueue* cq) { - return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse>>(AsyncImportQgroundcontrolMissionRaw(context, request, cq)); - } - std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse>> PrepareAsyncImportQgroundcontrolMission(::grpc::ClientContext* context, const ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest& request, ::grpc::CompletionQueue* cq) { - return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse>>(PrepareAsyncImportQgroundcontrolMissionRaw(context, request, cq)); - } class experimental_async final : public StubInterface::experimental_async_interface { public: @@ -527,12 +495,6 @@ class MissionService final { #else void SetReturnToLaunchAfterMission(::grpc::ClientContext* context, const ::mavsdk::rpc::mission::SetReturnToLaunchAfterMissionRequest* request, ::mavsdk::rpc::mission::SetReturnToLaunchAfterMissionResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) override; #endif - void ImportQgroundcontrolMission(::grpc::ClientContext* context, const ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest* request, ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse* response, std::function) override; - #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL - void ImportQgroundcontrolMission(::grpc::ClientContext* context, const ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest* request, ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse* response, ::grpc::ClientUnaryReactor* reactor) override; - #else - void ImportQgroundcontrolMission(::grpc::ClientContext* context, const ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest* request, ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) override; - #endif private: friend class Stub; explicit experimental_async(Stub* stub): stub_(stub) { } @@ -569,8 +531,6 @@ class MissionService final { ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::mission::GetReturnToLaunchAfterMissionResponse>* PrepareAsyncGetReturnToLaunchAfterMissionRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::mission::GetReturnToLaunchAfterMissionRequest& request, ::grpc::CompletionQueue* cq) override; ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::mission::SetReturnToLaunchAfterMissionResponse>* AsyncSetReturnToLaunchAfterMissionRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::mission::SetReturnToLaunchAfterMissionRequest& request, ::grpc::CompletionQueue* cq) override; ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::mission::SetReturnToLaunchAfterMissionResponse>* PrepareAsyncSetReturnToLaunchAfterMissionRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::mission::SetReturnToLaunchAfterMissionRequest& request, ::grpc::CompletionQueue* cq) override; - ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse>* AsyncImportQgroundcontrolMissionRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest& request, ::grpc::CompletionQueue* cq) override; - ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse>* PrepareAsyncImportQgroundcontrolMissionRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest& request, ::grpc::CompletionQueue* cq) override; const ::grpc::internal::RpcMethod rpcmethod_UploadMission_; const ::grpc::internal::RpcMethod rpcmethod_CancelMissionUpload_; const ::grpc::internal::RpcMethod rpcmethod_DownloadMission_; @@ -583,7 +543,6 @@ class MissionService final { const ::grpc::internal::RpcMethod rpcmethod_SubscribeMissionProgress_; const ::grpc::internal::RpcMethod rpcmethod_GetReturnToLaunchAfterMission_; const ::grpc::internal::RpcMethod rpcmethod_SetReturnToLaunchAfterMission_; - const ::grpc::internal::RpcMethod rpcmethod_ImportQgroundcontrolMission_; }; static std::unique_ptr NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options = ::grpc::StubOptions()); @@ -652,12 +611,6 @@ class MissionService final { // This will only take effect for the next mission upload, meaning that // the mission may have to be uploaded again. virtual ::grpc::Status SetReturnToLaunchAfterMission(::grpc::ServerContext* context, const ::mavsdk::rpc::mission::SetReturnToLaunchAfterMissionRequest* request, ::mavsdk::rpc::mission::SetReturnToLaunchAfterMissionResponse* response); - // - // Import a QGroundControl (QGC) mission plan. - // - // The method will fail if any of the imported mission items are not supported - // by the MAVSDK API. - virtual ::grpc::Status ImportQgroundcontrolMission(::grpc::ServerContext* context, const ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest* request, ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse* response); }; template class WithAsyncMethod_UploadMission : public BaseClass { @@ -899,27 +852,7 @@ class MissionService final { ::grpc::Service::RequestAsyncUnary(11, context, request, response, new_call_cq, notification_cq, tag); } }; - template - class WithAsyncMethod_ImportQgroundcontrolMission : public BaseClass { - private: - void BaseClassMustBeDerivedFromService(const Service* /*service*/) {} - public: - WithAsyncMethod_ImportQgroundcontrolMission() { - ::grpc::Service::MarkMethodAsync(12); - } - ~WithAsyncMethod_ImportQgroundcontrolMission() override { - BaseClassMustBeDerivedFromService(this); - } - // disable synchronous version of this method - ::grpc::Status ImportQgroundcontrolMission(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest* /*request*/, ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse* /*response*/) override { - abort(); - return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); - } - void RequestImportQgroundcontrolMission(::grpc::ServerContext* context, ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest* request, ::grpc::ServerAsyncResponseWriter< ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse>* 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); - } - }; - typedef WithAsyncMethod_UploadMission > > > > > > > > > > > > AsyncService; + typedef WithAsyncMethod_UploadMission > > > > > > > > > > > AsyncService; template class ExperimentalWithCallbackMethod_UploadMission : public BaseClass { private: @@ -1475,58 +1408,11 @@ class MissionService final { #endif { return nullptr; } }; - template - class ExperimentalWithCallbackMethod_ImportQgroundcontrolMission : public BaseClass { - private: - void BaseClassMustBeDerivedFromService(const Service* /*service*/) {} - public: - ExperimentalWithCallbackMethod_ImportQgroundcontrolMission() { - #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL - ::grpc::Service:: - #else - ::grpc::Service::experimental(). - #endif - MarkMethodCallback(12, - new ::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest, ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse>( - [this]( - #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL - ::grpc::CallbackServerContext* - #else - ::grpc::experimental::CallbackServerContext* - #endif - context, const ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest* request, ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse* response) { return this->ImportQgroundcontrolMission(context, request, response); }));} - void SetMessageAllocatorFor_ImportQgroundcontrolMission( - ::grpc::experimental::MessageAllocator< ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest, ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse>* allocator) { - #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL - ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(12); - #else - ::grpc::internal::MethodHandler* const handler = ::grpc::Service::experimental().GetHandler(12); - #endif - static_cast<::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest, ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse>*>(handler) - ->SetMessageAllocator(allocator); - } - ~ExperimentalWithCallbackMethod_ImportQgroundcontrolMission() override { - BaseClassMustBeDerivedFromService(this); - } - // disable synchronous version of this method - ::grpc::Status ImportQgroundcontrolMission(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest* /*request*/, ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse* /*response*/) override { - abort(); - return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); - } - #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL - virtual ::grpc::ServerUnaryReactor* ImportQgroundcontrolMission( - ::grpc::CallbackServerContext* /*context*/, const ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest* /*request*/, ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse* /*response*/) - #else - virtual ::grpc::experimental::ServerUnaryReactor* ImportQgroundcontrolMission( - ::grpc::experimental::CallbackServerContext* /*context*/, const ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest* /*request*/, ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse* /*response*/) - #endif - { return nullptr; } - }; #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL - typedef ExperimentalWithCallbackMethod_UploadMission > > > > > > > > > > > > CallbackService; + typedef ExperimentalWithCallbackMethod_UploadMission > > > > > > > > > > > CallbackService; #endif - typedef ExperimentalWithCallbackMethod_UploadMission > > > > > > > > > > > > ExperimentalCallbackService; + typedef ExperimentalWithCallbackMethod_UploadMission > > > > > > > > > > > ExperimentalCallbackService; template class WithGenericMethod_UploadMission : public BaseClass { private: @@ -1732,23 +1618,6 @@ class MissionService final { } }; template - class WithGenericMethod_ImportQgroundcontrolMission : public BaseClass { - private: - void BaseClassMustBeDerivedFromService(const Service* /*service*/) {} - public: - WithGenericMethod_ImportQgroundcontrolMission() { - ::grpc::Service::MarkMethodGeneric(12); - } - ~WithGenericMethod_ImportQgroundcontrolMission() override { - BaseClassMustBeDerivedFromService(this); - } - // disable synchronous version of this method - ::grpc::Status ImportQgroundcontrolMission(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest* /*request*/, ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse* /*response*/) override { - abort(); - return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); - } - }; - template class WithRawMethod_UploadMission : public BaseClass { private: void BaseClassMustBeDerivedFromService(const Service* /*service*/) {} @@ -1989,26 +1858,6 @@ class MissionService final { } }; template - class WithRawMethod_ImportQgroundcontrolMission : public BaseClass { - private: - void BaseClassMustBeDerivedFromService(const Service* /*service*/) {} - public: - WithRawMethod_ImportQgroundcontrolMission() { - ::grpc::Service::MarkMethodRaw(12); - } - ~WithRawMethod_ImportQgroundcontrolMission() override { - BaseClassMustBeDerivedFromService(this); - } - // disable synchronous version of this method - ::grpc::Status ImportQgroundcontrolMission(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest* /*request*/, ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse* /*response*/) override { - abort(); - return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); - } - void RequestImportQgroundcontrolMission(::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 ExperimentalWithRawCallbackMethod_UploadMission : public BaseClass { private: void BaseClassMustBeDerivedFromService(const Service* /*service*/) {} @@ -2465,44 +2314,6 @@ class MissionService final { { return nullptr; } }; template - class ExperimentalWithRawCallbackMethod_ImportQgroundcontrolMission : public BaseClass { - private: - void BaseClassMustBeDerivedFromService(const Service* /*service*/) {} - public: - ExperimentalWithRawCallbackMethod_ImportQgroundcontrolMission() { - #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL - ::grpc::Service:: - #else - ::grpc::Service::experimental(). - #endif - MarkMethodRawCallback(12, - new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( - [this]( - #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL - ::grpc::CallbackServerContext* - #else - ::grpc::experimental::CallbackServerContext* - #endif - context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->ImportQgroundcontrolMission(context, request, response); })); - } - ~ExperimentalWithRawCallbackMethod_ImportQgroundcontrolMission() override { - BaseClassMustBeDerivedFromService(this); - } - // disable synchronous version of this method - ::grpc::Status ImportQgroundcontrolMission(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest* /*request*/, ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse* /*response*/) override { - abort(); - return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); - } - #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL - virtual ::grpc::ServerUnaryReactor* ImportQgroundcontrolMission( - ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/) - #else - virtual ::grpc::experimental::ServerUnaryReactor* ImportQgroundcontrolMission( - ::grpc::experimental::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/) - #endif - { return nullptr; } - }; - template class WithStreamedUnaryMethod_UploadMission : public BaseClass { private: void BaseClassMustBeDerivedFromService(const Service* /*service*/) {} @@ -2799,34 +2610,7 @@ class MissionService final { // replace default version of method with streamed unary virtual ::grpc::Status StreamedSetReturnToLaunchAfterMission(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::mavsdk::rpc::mission::SetReturnToLaunchAfterMissionRequest,::mavsdk::rpc::mission::SetReturnToLaunchAfterMissionResponse>* server_unary_streamer) = 0; }; - template - class WithStreamedUnaryMethod_ImportQgroundcontrolMission : public BaseClass { - private: - void BaseClassMustBeDerivedFromService(const Service* /*service*/) {} - public: - WithStreamedUnaryMethod_ImportQgroundcontrolMission() { - ::grpc::Service::MarkMethodStreamed(12, - new ::grpc::internal::StreamedUnaryHandler< - ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest, ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse>( - [this](::grpc::ServerContext* context, - ::grpc::ServerUnaryStreamer< - ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest, ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse>* streamer) { - return this->StreamedImportQgroundcontrolMission(context, - streamer); - })); - } - ~WithStreamedUnaryMethod_ImportQgroundcontrolMission() override { - BaseClassMustBeDerivedFromService(this); - } - // disable regular version of this method - ::grpc::Status ImportQgroundcontrolMission(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest* /*request*/, ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse* /*response*/) override { - abort(); - return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); - } - // replace default version of method with streamed unary - virtual ::grpc::Status StreamedImportQgroundcontrolMission(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest,::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse>* server_unary_streamer) = 0; - }; - typedef WithStreamedUnaryMethod_UploadMission > > > > > > > > > > > StreamedUnaryService; + typedef WithStreamedUnaryMethod_UploadMission > > > > > > > > > > StreamedUnaryService; template class WithSplitStreamingMethod_SubscribeMissionProgress : public BaseClass { private: @@ -2855,7 +2639,7 @@ class MissionService final { virtual ::grpc::Status StreamedSubscribeMissionProgress(::grpc::ServerContext* context, ::grpc::ServerSplitStreamer< ::mavsdk::rpc::mission::SubscribeMissionProgressRequest,::mavsdk::rpc::mission::MissionProgressResponse>* server_split_streamer) = 0; }; typedef WithSplitStreamingMethod_SubscribeMissionProgress SplitStreamedService; - typedef WithStreamedUnaryMethod_UploadMission > > > > > > > > > > > > StreamedService; + typedef WithStreamedUnaryMethod_UploadMission > > > > > > > > > > > StreamedService; }; } // namespace mission diff --git a/src/mavsdk_server/src/generated/mission/mission.pb.cc b/src/mavsdk_server/src/generated/mission/mission.pb.cc index 738f0a2b54..a4a52562e1 100644 --- a/src/mavsdk_server/src/generated/mission/mission.pb.cc +++ b/src/mavsdk_server/src/generated/mission/mission.pb.cc @@ -301,31 +301,6 @@ struct SetReturnToLaunchAfterMissionResponseDefaultTypeInternal { }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT SetReturnToLaunchAfterMissionResponseDefaultTypeInternal _SetReturnToLaunchAfterMissionResponse_default_instance_; -constexpr ImportQgroundcontrolMissionRequest::ImportQgroundcontrolMissionRequest( - ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized) - : qgc_plan_path_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string){} -struct ImportQgroundcontrolMissionRequestDefaultTypeInternal { - constexpr ImportQgroundcontrolMissionRequestDefaultTypeInternal() - : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {} - ~ImportQgroundcontrolMissionRequestDefaultTypeInternal() {} - union { - ImportQgroundcontrolMissionRequest _instance; - }; -}; -PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT ImportQgroundcontrolMissionRequestDefaultTypeInternal _ImportQgroundcontrolMissionRequest_default_instance_; -constexpr ImportQgroundcontrolMissionResponse::ImportQgroundcontrolMissionResponse( - ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized) - : mission_result_(nullptr) - , mission_plan_(nullptr){} -struct ImportQgroundcontrolMissionResponseDefaultTypeInternal { - constexpr ImportQgroundcontrolMissionResponseDefaultTypeInternal() - : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {} - ~ImportQgroundcontrolMissionResponseDefaultTypeInternal() {} - union { - ImportQgroundcontrolMissionResponse _instance; - }; -}; -PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT ImportQgroundcontrolMissionResponseDefaultTypeInternal _ImportQgroundcontrolMissionResponse_default_instance_; constexpr MissionItem::MissionItem( ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized) : latitude_deg_(0) @@ -390,7 +365,7 @@ PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT MissionResultDefaultTypeInterna } // namespace mission } // namespace rpc } // namespace mavsdk -static ::PROTOBUF_NAMESPACE_ID::Metadata file_level_metadata_mission_2fmission_2eproto[30]; +static ::PROTOBUF_NAMESPACE_ID::Metadata file_level_metadata_mission_2fmission_2eproto[28]; static const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* file_level_enum_descriptors_mission_2fmission_2eproto[2]; static constexpr ::PROTOBUF_NAMESPACE_ID::ServiceDescriptor const** file_level_service_descriptors_mission_2fmission_2eproto = nullptr; @@ -534,19 +509,6 @@ const ::PROTOBUF_NAMESPACE_ID::uint32 TableStruct_mission_2fmission_2eproto::off ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::mavsdk::rpc::mission::SetReturnToLaunchAfterMissionResponse, mission_result_), ~0u, // no _has_bits_ - PROTOBUF_FIELD_OFFSET(::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest, _internal_metadata_), - ~0u, // no _extensions_ - ~0u, // no _oneof_case_ - ~0u, // no _weak_field_map_ - PROTOBUF_FIELD_OFFSET(::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest, qgc_plan_path_), - ~0u, // no _has_bits_ - PROTOBUF_FIELD_OFFSET(::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse, _internal_metadata_), - ~0u, // no _extensions_ - ~0u, // no _oneof_case_ - ~0u, // no _weak_field_map_ - PROTOBUF_FIELD_OFFSET(::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse, mission_result_), - PROTOBUF_FIELD_OFFSET(::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse, mission_plan_), - ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::mavsdk::rpc::mission::MissionItem, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ @@ -607,12 +569,10 @@ static const ::PROTOBUF_NAMESPACE_ID::internal::MigrationSchema schemas[] PROTOB { 119, -1, sizeof(::mavsdk::rpc::mission::GetReturnToLaunchAfterMissionResponse)}, { 126, -1, sizeof(::mavsdk::rpc::mission::SetReturnToLaunchAfterMissionRequest)}, { 132, -1, sizeof(::mavsdk::rpc::mission::SetReturnToLaunchAfterMissionResponse)}, - { 138, -1, sizeof(::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest)}, - { 144, -1, sizeof(::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse)}, - { 151, -1, sizeof(::mavsdk::rpc::mission::MissionItem)}, - { 166, -1, sizeof(::mavsdk::rpc::mission::MissionPlan)}, - { 172, -1, sizeof(::mavsdk::rpc::mission::MissionProgress)}, - { 179, -1, sizeof(::mavsdk::rpc::mission::MissionResult)}, + { 138, -1, sizeof(::mavsdk::rpc::mission::MissionItem)}, + { 153, -1, sizeof(::mavsdk::rpc::mission::MissionPlan)}, + { 159, -1, sizeof(::mavsdk::rpc::mission::MissionProgress)}, + { 166, -1, sizeof(::mavsdk::rpc::mission::MissionResult)}, }; static ::PROTOBUF_NAMESPACE_ID::Message const * const file_default_instances[] = { @@ -640,8 +600,6 @@ static ::PROTOBUF_NAMESPACE_ID::Message const * const file_default_instances[] = reinterpret_cast(&::mavsdk::rpc::mission::_GetReturnToLaunchAfterMissionResponse_default_instance_), reinterpret_cast(&::mavsdk::rpc::mission::_SetReturnToLaunchAfterMissionRequest_default_instance_), reinterpret_cast(&::mavsdk::rpc::mission::_SetReturnToLaunchAfterMissionResponse_default_instance_), - reinterpret_cast(&::mavsdk::rpc::mission::_ImportQgroundcontrolMissionRequest_default_instance_), - reinterpret_cast(&::mavsdk::rpc::mission::_ImportQgroundcontrolMissionResponse_default_instance_), reinterpret_cast(&::mavsdk::rpc::mission::_MissionItem_default_instance_), reinterpret_cast(&::mavsdk::rpc::mission::_MissionPlan_default_instance_), reinterpret_cast(&::mavsdk::rpc::mission::_MissionProgress_default_instance_), @@ -690,93 +648,82 @@ const char descriptor_table_protodef_mission_2fmission_2eproto[] PROTOBUF_SECTIO "etReturnToLaunchAfterMissionRequest\022\016\n\006e" "nable\030\001 \001(\010\"b\n%SetReturnToLaunchAfterMis" "sionResponse\0229\n\016mission_result\030\001 \001(\0132!.m" - "avsdk.rpc.mission.MissionResult\";\n\"Impor" - "tQgroundcontrolMissionRequest\022\025\n\rqgc_pla" - "n_path\030\001 \001(\t\"\227\001\n#ImportQgroundcontrolMis" - "sionResponse\0229\n\016mission_result\030\001 \001(\0132!.m" - "avsdk.rpc.mission.MissionResult\0225\n\014missi" - "on_plan\030\002 \001(\0132\037.mavsdk.rpc.mission.Missi" - "onPlan\"\203\005\n\013MissionItem\022(\n\014latitude_deg\030\001" - " \001(\001B\022\202\265\030\003NaN\211\265\030H\257\274\232\362\327z>\022)\n\rlongitude_de" - "g\030\002 \001(\001B\022\202\265\030\003NaN\211\265\030H\257\274\232\362\327z>\022$\n\023relative_" - "altitude_m\030\003 \001(\002B\007\202\265\030\003NaN\022\032\n\tspeed_m_s\030\004" - " \001(\002B\007\202\265\030\003NaN\022!\n\016is_fly_through\030\005 \001(\010B\t\202" - "\265\030\005false\022,\n\020gimbal_pitch_deg\030\006 \001(\002B\022\202\265\030\003" - "NaN\211\265\030-C\034\353\3426\032\?\022*\n\016gimbal_yaw_deg\030\007 \001(\002B\022" - "\202\265\030\003NaN\211\265\030-C\034\353\3426\032\?\022C\n\rcamera_action\030\010 \001(" - "\0162,.mavsdk.rpc.mission.MissionItem.Camer" - "aAction\022\036\n\rloiter_time_s\030\t \001(\002B\007\202\265\030\003NaN\022" - "(\n\027camera_photo_interval_s\030\n \001(\001B\007\202\265\030\0031." - "0\"\320\001\n\014CameraAction\022\026\n\022CAMERA_ACTION_NONE" - "\020\000\022\034\n\030CAMERA_ACTION_TAKE_PHOTO\020\001\022&\n\"CAME" - "RA_ACTION_START_PHOTO_INTERVAL\020\002\022%\n!CAME" - "RA_ACTION_STOP_PHOTO_INTERVAL\020\003\022\035\n\031CAMER" - "A_ACTION_START_VIDEO\020\004\022\034\n\030CAMERA_ACTION_" - "STOP_VIDEO\020\005\"E\n\013MissionPlan\0226\n\rmission_i" - "tems\030\001 \003(\0132\037.mavsdk.rpc.mission.MissionI" - "tem\"1\n\017MissionProgress\022\017\n\007current\030\001 \001(\005\022" - "\r\n\005total\030\002 \001(\005\"\314\003\n\rMissionResult\0228\n\006resu" - "lt\030\001 \001(\0162(.mavsdk.rpc.mission.MissionRes" - "ult.Result\022\022\n\nresult_str\030\002 \001(\t\"\354\002\n\006Resul" - "t\022\022\n\016RESULT_UNKNOWN\020\000\022\022\n\016RESULT_SUCCESS\020" - "\001\022\020\n\014RESULT_ERROR\020\002\022!\n\035RESULT_TOO_MANY_M" - "ISSION_ITEMS\020\003\022\017\n\013RESULT_BUSY\020\004\022\022\n\016RESUL" - "T_TIMEOUT\020\005\022\033\n\027RESULT_INVALID_ARGUMENT\020\006" - "\022\026\n\022RESULT_UNSUPPORTED\020\007\022\037\n\033RESULT_NO_MI" - "SSION_AVAILABLE\020\010\022\"\n\036RESULT_FAILED_TO_OP" - "EN_QGC_PLAN\020\t\022#\n\037RESULT_FAILED_TO_PARSE_" - "QGC_PLAN\020\n\022\"\n\036RESULT_UNSUPPORTED_MISSION" - "_CMD\020\013\022\035\n\031RESULT_TRANSFER_CANCELLED\020\0142\340\014" - "\n\016MissionService\022f\n\rUploadMission\022(.mavs" - "dk.rpc.mission.UploadMissionRequest\032).ma" - "vsdk.rpc.mission.UploadMissionResponse\"\000" - "\022|\n\023CancelMissionUpload\022..mavsdk.rpc.mis" - "sion.CancelMissionUploadRequest\032/.mavsdk" - ".rpc.mission.CancelMissionUploadResponse" - "\"\004\200\265\030\001\022l\n\017DownloadMission\022*.mavsdk.rpc.m" - "ission.DownloadMissionRequest\032+.mavsdk.r" - "pc.mission.DownloadMissionResponse\"\000\022\202\001\n" - "\025CancelMissionDownload\0220.mavsdk.rpc.miss" - "ion.CancelMissionDownloadRequest\0321.mavsd" - "k.rpc.mission.CancelMissionDownloadRespo" - "nse\"\004\200\265\030\001\022c\n\014StartMission\022\'.mavsdk.rpc.m" - "ission.StartMissionRequest\032(.mavsdk.rpc." - "mission.StartMissionResponse\"\000\022c\n\014PauseM" - "ission\022\'.mavsdk.rpc.mission.PauseMission" - "Request\032(.mavsdk.rpc.mission.PauseMissio" - "nResponse\"\000\022c\n\014ClearMission\022\'.mavsdk.rpc" - ".mission.ClearMissionRequest\032(.mavsdk.rp" - "c.mission.ClearMissionResponse\"\000\022~\n\025SetC" - "urrentMissionItem\0220.mavsdk.rpc.mission.S" - "etCurrentMissionItemRequest\0321.mavsdk.rpc" - ".mission.SetCurrentMissionItemResponse\"\000" - "\022v\n\021IsMissionFinished\022,.mavsdk.rpc.missi" - "on.IsMissionFinishedRequest\032-.mavsdk.rpc" - ".mission.IsMissionFinishedResponse\"\004\200\265\030\001" - "\022\200\001\n\030SubscribeMissionProgress\0223.mavsdk.r" - "pc.mission.SubscribeMissionProgressReque" - "st\032+.mavsdk.rpc.mission.MissionProgressR" - "esponse\"\0000\001\022\232\001\n\035GetReturnToLaunchAfterMi" - "ssion\0228.mavsdk.rpc.mission.GetReturnToLa" - "unchAfterMissionRequest\0329.mavsdk.rpc.mis" - "sion.GetReturnToLaunchAfterMissionRespon" - "se\"\004\200\265\030\001\022\232\001\n\035SetReturnToLaunchAfterMissi" - "on\0228.mavsdk.rpc.mission.SetReturnToLaunc" - "hAfterMissionRequest\0329.mavsdk.rpc.missio" - "n.SetReturnToLaunchAfterMissionResponse\"" - "\004\200\265\030\001\022\220\001\n\033ImportQgroundcontrolMission\0226." - "mavsdk.rpc.mission.ImportQgroundcontrolM" - "issionRequest\0327.mavsdk.rpc.mission.Impor" - "tQgroundcontrolMissionResponse\"\000B!\n\021io.m" - "avsdk.missionB\014MissionProtob\006proto3" + "avsdk.rpc.mission.MissionResult\"\203\005\n\013Miss" + "ionItem\022(\n\014latitude_deg\030\001 \001(\001B\022\202\265\030\003NaN\211\265" + "\030H\257\274\232\362\327z>\022)\n\rlongitude_deg\030\002 \001(\001B\022\202\265\030\003Na" + "N\211\265\030H\257\274\232\362\327z>\022$\n\023relative_altitude_m\030\003 \001(" + "\002B\007\202\265\030\003NaN\022\032\n\tspeed_m_s\030\004 \001(\002B\007\202\265\030\003NaN\022!" + "\n\016is_fly_through\030\005 \001(\010B\t\202\265\030\005false\022,\n\020gim" + "bal_pitch_deg\030\006 \001(\002B\022\202\265\030\003NaN\211\265\030-C\034\353\3426\032\?\022" + "*\n\016gimbal_yaw_deg\030\007 \001(\002B\022\202\265\030\003NaN\211\265\030-C\034\353\342" + "6\032\?\022C\n\rcamera_action\030\010 \001(\0162,.mavsdk.rpc." + "mission.MissionItem.CameraAction\022\036\n\rloit" + "er_time_s\030\t \001(\002B\007\202\265\030\003NaN\022(\n\027camera_photo" + "_interval_s\030\n \001(\001B\007\202\265\030\0031.0\"\320\001\n\014CameraAct" + "ion\022\026\n\022CAMERA_ACTION_NONE\020\000\022\034\n\030CAMERA_AC" + "TION_TAKE_PHOTO\020\001\022&\n\"CAMERA_ACTION_START" + "_PHOTO_INTERVAL\020\002\022%\n!CAMERA_ACTION_STOP_" + "PHOTO_INTERVAL\020\003\022\035\n\031CAMERA_ACTION_START_" + "VIDEO\020\004\022\034\n\030CAMERA_ACTION_STOP_VIDEO\020\005\"E\n" + "\013MissionPlan\0226\n\rmission_items\030\001 \003(\0132\037.ma" + "vsdk.rpc.mission.MissionItem\"1\n\017MissionP" + "rogress\022\017\n\007current\030\001 \001(\005\022\r\n\005total\030\002 \001(\005\"" + "\203\003\n\rMissionResult\0228\n\006result\030\001 \001(\0162(.mavs" + "dk.rpc.mission.MissionResult.Result\022\022\n\nr" + "esult_str\030\002 \001(\t\"\243\002\n\006Result\022\022\n\016RESULT_UNK" + "NOWN\020\000\022\022\n\016RESULT_SUCCESS\020\001\022\020\n\014RESULT_ERR" + "OR\020\002\022!\n\035RESULT_TOO_MANY_MISSION_ITEMS\020\003\022" + "\017\n\013RESULT_BUSY\020\004\022\022\n\016RESULT_TIMEOUT\020\005\022\033\n\027" + "RESULT_INVALID_ARGUMENT\020\006\022\026\n\022RESULT_UNSU" + "PPORTED\020\007\022\037\n\033RESULT_NO_MISSION_AVAILABLE" + "\020\010\022\"\n\036RESULT_UNSUPPORTED_MISSION_CMD\020\013\022\035" + "\n\031RESULT_TRANSFER_CANCELLED\020\0142\315\013\n\016Missio" + "nService\022f\n\rUploadMission\022(.mavsdk.rpc.m" + "ission.UploadMissionRequest\032).mavsdk.rpc" + ".mission.UploadMissionResponse\"\000\022|\n\023Canc" + "elMissionUpload\022..mavsdk.rpc.mission.Can" + "celMissionUploadRequest\032/.mavsdk.rpc.mis" + "sion.CancelMissionUploadResponse\"\004\200\265\030\001\022l" + "\n\017DownloadMission\022*.mavsdk.rpc.mission.D" + "ownloadMissionRequest\032+.mavsdk.rpc.missi" + "on.DownloadMissionResponse\"\000\022\202\001\n\025CancelM" + "issionDownload\0220.mavsdk.rpc.mission.Canc" + "elMissionDownloadRequest\0321.mavsdk.rpc.mi" + "ssion.CancelMissionDownloadResponse\"\004\200\265\030" + "\001\022c\n\014StartMission\022\'.mavsdk.rpc.mission.S" + "tartMissionRequest\032(.mavsdk.rpc.mission." + "StartMissionResponse\"\000\022c\n\014PauseMission\022\'" + ".mavsdk.rpc.mission.PauseMissionRequest\032" + "(.mavsdk.rpc.mission.PauseMissionRespons" + "e\"\000\022c\n\014ClearMission\022\'.mavsdk.rpc.mission" + ".ClearMissionRequest\032(.mavsdk.rpc.missio" + "n.ClearMissionResponse\"\000\022~\n\025SetCurrentMi" + "ssionItem\0220.mavsdk.rpc.mission.SetCurren" + "tMissionItemRequest\0321.mavsdk.rpc.mission" + ".SetCurrentMissionItemResponse\"\000\022v\n\021IsMi" + "ssionFinished\022,.mavsdk.rpc.mission.IsMis" + "sionFinishedRequest\032-.mavsdk.rpc.mission" + ".IsMissionFinishedResponse\"\004\200\265\030\001\022\200\001\n\030Sub" + "scribeMissionProgress\0223.mavsdk.rpc.missi" + "on.SubscribeMissionProgressRequest\032+.mav" + "sdk.rpc.mission.MissionProgressResponse\"" + "\0000\001\022\232\001\n\035GetReturnToLaunchAfterMission\0228." + "mavsdk.rpc.mission.GetReturnToLaunchAfte" + "rMissionRequest\0329.mavsdk.rpc.mission.Get" + "ReturnToLaunchAfterMissionResponse\"\004\200\265\030\001" + "\022\232\001\n\035SetReturnToLaunchAfterMission\0228.mav" + "sdk.rpc.mission.SetReturnToLaunchAfterMi" + "ssionRequest\0329.mavsdk.rpc.mission.SetRet" + "urnToLaunchAfterMissionResponse\"\004\200\265\030\001B!\n" + "\021io.mavsdk.missionB\014MissionProtob\006proto3" ; static const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable*const descriptor_table_mission_2fmission_2eproto_deps[1] = { &::descriptor_table_mavsdk_5foptions_2eproto, }; static ::PROTOBUF_NAMESPACE_ID::internal::once_flag descriptor_table_mission_2fmission_2eproto_once; const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_mission_2fmission_2eproto = { - false, false, 4795, descriptor_table_protodef_mission_2fmission_2eproto, "mission/mission.proto", - &descriptor_table_mission_2fmission_2eproto_once, descriptor_table_mission_2fmission_2eproto_deps, 1, 30, + false, false, 4360, descriptor_table_protodef_mission_2fmission_2eproto, "mission/mission.proto", + &descriptor_table_mission_2fmission_2eproto_once, descriptor_table_mission_2fmission_2eproto_deps, 1, 28, schemas, file_default_instances, TableStruct_mission_2fmission_2eproto::offsets, file_level_metadata_mission_2fmission_2eproto, file_level_enum_descriptors_mission_2fmission_2eproto, file_level_service_descriptors_mission_2fmission_2eproto, }; @@ -835,8 +782,6 @@ bool MissionResult_Result_IsValid(int value) { case 6: case 7: case 8: - case 9: - case 10: case 11: case 12: return true; @@ -855,8 +800,6 @@ constexpr MissionResult_Result MissionResult::RESULT_TIMEOUT; constexpr MissionResult_Result MissionResult::RESULT_INVALID_ARGUMENT; constexpr MissionResult_Result MissionResult::RESULT_UNSUPPORTED; constexpr MissionResult_Result MissionResult::RESULT_NO_MISSION_AVAILABLE; -constexpr MissionResult_Result MissionResult::RESULT_FAILED_TO_OPEN_QGC_PLAN; -constexpr MissionResult_Result MissionResult::RESULT_FAILED_TO_PARSE_QGC_PLAN; constexpr MissionResult_Result MissionResult::RESULT_UNSUPPORTED_MISSION_CMD; constexpr MissionResult_Result MissionResult::RESULT_TRANSFER_CANCELLED; constexpr MissionResult_Result MissionResult::Result_MIN; @@ -5415,458 +5358,6 @@ ::PROTOBUF_NAMESPACE_ID::Metadata SetReturnToLaunchAfterMissionResponse::GetMeta } -// =================================================================== - -class ImportQgroundcontrolMissionRequest::_Internal { - public: -}; - -ImportQgroundcontrolMissionRequest::ImportQgroundcontrolMissionRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena) - : ::PROTOBUF_NAMESPACE_ID::Message(arena) { - SharedCtor(); - RegisterArenaDtor(arena); - // @@protoc_insertion_point(arena_constructor:mavsdk.rpc.mission.ImportQgroundcontrolMissionRequest) -} -ImportQgroundcontrolMissionRequest::ImportQgroundcontrolMissionRequest(const ImportQgroundcontrolMissionRequest& from) - : ::PROTOBUF_NAMESPACE_ID::Message() { - _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); - qgc_plan_path_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); - if (!from._internal_qgc_plan_path().empty()) { - qgc_plan_path_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_qgc_plan_path(), - GetArena()); - } - // @@protoc_insertion_point(copy_constructor:mavsdk.rpc.mission.ImportQgroundcontrolMissionRequest) -} - -void ImportQgroundcontrolMissionRequest::SharedCtor() { -qgc_plan_path_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); -} - -ImportQgroundcontrolMissionRequest::~ImportQgroundcontrolMissionRequest() { - // @@protoc_insertion_point(destructor:mavsdk.rpc.mission.ImportQgroundcontrolMissionRequest) - SharedDtor(); - _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); -} - -void ImportQgroundcontrolMissionRequest::SharedDtor() { - GOOGLE_DCHECK(GetArena() == nullptr); - qgc_plan_path_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); -} - -void ImportQgroundcontrolMissionRequest::ArenaDtor(void* object) { - ImportQgroundcontrolMissionRequest* _this = reinterpret_cast< ImportQgroundcontrolMissionRequest* >(object); - (void)_this; -} -void ImportQgroundcontrolMissionRequest::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { -} -void ImportQgroundcontrolMissionRequest::SetCachedSize(int size) const { - _cached_size_.Set(size); -} - -void ImportQgroundcontrolMissionRequest::Clear() { -// @@protoc_insertion_point(message_clear_start:mavsdk.rpc.mission.ImportQgroundcontrolMissionRequest) - ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; - // Prevent compiler warnings about cached_has_bits being unused - (void) cached_has_bits; - - qgc_plan_path_.ClearToEmpty(); - _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); -} - -const char* ImportQgroundcontrolMissionRequest::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { -#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure - while (!ctx->Done(&ptr)) { - ::PROTOBUF_NAMESPACE_ID::uint32 tag; - ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); - CHK_(ptr); - switch (tag >> 3) { - // string qgc_plan_path = 1; - case 1: - if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { - auto str = _internal_mutable_qgc_plan_path(); - ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); - CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "mavsdk.rpc.mission.ImportQgroundcontrolMissionRequest.qgc_plan_path")); - CHK_(ptr); - } else goto handle_unusual; - continue; - default: { - handle_unusual: - if ((tag & 7) == 4 || tag == 0) { - ctx->SetLastTag(tag); - goto success; - } - ptr = UnknownFieldParse(tag, - _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), - ptr, ctx); - CHK_(ptr != nullptr); - continue; - } - } // switch - } // while -success: - return ptr; -failure: - ptr = nullptr; - goto success; -#undef CHK_ -} - -::PROTOBUF_NAMESPACE_ID::uint8* ImportQgroundcontrolMissionRequest::_InternalSerialize( - ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { - // @@protoc_insertion_point(serialize_to_array_start:mavsdk.rpc.mission.ImportQgroundcontrolMissionRequest) - ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; - (void) cached_has_bits; - - // string qgc_plan_path = 1; - if (this->qgc_plan_path().size() > 0) { - ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( - this->_internal_qgc_plan_path().data(), static_cast(this->_internal_qgc_plan_path().length()), - ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, - "mavsdk.rpc.mission.ImportQgroundcontrolMissionRequest.qgc_plan_path"); - target = stream->WriteStringMaybeAliased( - 1, this->_internal_qgc_plan_path(), target); - } - - if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { - target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( - _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); - } - // @@protoc_insertion_point(serialize_to_array_end:mavsdk.rpc.mission.ImportQgroundcontrolMissionRequest) - return target; -} - -size_t ImportQgroundcontrolMissionRequest::ByteSizeLong() const { -// @@protoc_insertion_point(message_byte_size_start:mavsdk.rpc.mission.ImportQgroundcontrolMissionRequest) - size_t total_size = 0; - - ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; - // Prevent compiler warnings about cached_has_bits being unused - (void) cached_has_bits; - - // string qgc_plan_path = 1; - if (this->qgc_plan_path().size() > 0) { - total_size += 1 + - ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( - this->_internal_qgc_plan_path()); - } - - if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { - return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( - _internal_metadata_, total_size, &_cached_size_); - } - int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); - SetCachedSize(cached_size); - return total_size; -} - -void ImportQgroundcontrolMissionRequest::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { -// @@protoc_insertion_point(generalized_merge_from_start:mavsdk.rpc.mission.ImportQgroundcontrolMissionRequest) - GOOGLE_DCHECK_NE(&from, this); - const ImportQgroundcontrolMissionRequest* source = - ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( - &from); - if (source == nullptr) { - // @@protoc_insertion_point(generalized_merge_from_cast_fail:mavsdk.rpc.mission.ImportQgroundcontrolMissionRequest) - ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); - } else { - // @@protoc_insertion_point(generalized_merge_from_cast_success:mavsdk.rpc.mission.ImportQgroundcontrolMissionRequest) - MergeFrom(*source); - } -} - -void ImportQgroundcontrolMissionRequest::MergeFrom(const ImportQgroundcontrolMissionRequest& from) { -// @@protoc_insertion_point(class_specific_merge_from_start:mavsdk.rpc.mission.ImportQgroundcontrolMissionRequest) - GOOGLE_DCHECK_NE(&from, this); - _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); - ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; - (void) cached_has_bits; - - if (from.qgc_plan_path().size() > 0) { - _internal_set_qgc_plan_path(from._internal_qgc_plan_path()); - } -} - -void ImportQgroundcontrolMissionRequest::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { -// @@protoc_insertion_point(generalized_copy_from_start:mavsdk.rpc.mission.ImportQgroundcontrolMissionRequest) - if (&from == this) return; - Clear(); - MergeFrom(from); -} - -void ImportQgroundcontrolMissionRequest::CopyFrom(const ImportQgroundcontrolMissionRequest& from) { -// @@protoc_insertion_point(class_specific_copy_from_start:mavsdk.rpc.mission.ImportQgroundcontrolMissionRequest) - if (&from == this) return; - Clear(); - MergeFrom(from); -} - -bool ImportQgroundcontrolMissionRequest::IsInitialized() const { - return true; -} - -void ImportQgroundcontrolMissionRequest::InternalSwap(ImportQgroundcontrolMissionRequest* other) { - using std::swap; - _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); - qgc_plan_path_.Swap(&other->qgc_plan_path_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); -} - -::PROTOBUF_NAMESPACE_ID::Metadata ImportQgroundcontrolMissionRequest::GetMetadata() const { - return GetMetadataStatic(); -} - - -// =================================================================== - -class ImportQgroundcontrolMissionResponse::_Internal { - public: - static const ::mavsdk::rpc::mission::MissionResult& mission_result(const ImportQgroundcontrolMissionResponse* msg); - static const ::mavsdk::rpc::mission::MissionPlan& mission_plan(const ImportQgroundcontrolMissionResponse* msg); -}; - -const ::mavsdk::rpc::mission::MissionResult& -ImportQgroundcontrolMissionResponse::_Internal::mission_result(const ImportQgroundcontrolMissionResponse* msg) { - return *msg->mission_result_; -} -const ::mavsdk::rpc::mission::MissionPlan& -ImportQgroundcontrolMissionResponse::_Internal::mission_plan(const ImportQgroundcontrolMissionResponse* msg) { - return *msg->mission_plan_; -} -ImportQgroundcontrolMissionResponse::ImportQgroundcontrolMissionResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena) - : ::PROTOBUF_NAMESPACE_ID::Message(arena) { - SharedCtor(); - RegisterArenaDtor(arena); - // @@protoc_insertion_point(arena_constructor:mavsdk.rpc.mission.ImportQgroundcontrolMissionResponse) -} -ImportQgroundcontrolMissionResponse::ImportQgroundcontrolMissionResponse(const ImportQgroundcontrolMissionResponse& from) - : ::PROTOBUF_NAMESPACE_ID::Message() { - _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); - if (from._internal_has_mission_result()) { - mission_result_ = new ::mavsdk::rpc::mission::MissionResult(*from.mission_result_); - } else { - mission_result_ = nullptr; - } - if (from._internal_has_mission_plan()) { - mission_plan_ = new ::mavsdk::rpc::mission::MissionPlan(*from.mission_plan_); - } else { - mission_plan_ = nullptr; - } - // @@protoc_insertion_point(copy_constructor:mavsdk.rpc.mission.ImportQgroundcontrolMissionResponse) -} - -void ImportQgroundcontrolMissionResponse::SharedCtor() { -::memset(reinterpret_cast(this) + static_cast( - reinterpret_cast(&mission_result_) - reinterpret_cast(this)), - 0, static_cast(reinterpret_cast(&mission_plan_) - - reinterpret_cast(&mission_result_)) + sizeof(mission_plan_)); -} - -ImportQgroundcontrolMissionResponse::~ImportQgroundcontrolMissionResponse() { - // @@protoc_insertion_point(destructor:mavsdk.rpc.mission.ImportQgroundcontrolMissionResponse) - SharedDtor(); - _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); -} - -void ImportQgroundcontrolMissionResponse::SharedDtor() { - GOOGLE_DCHECK(GetArena() == nullptr); - if (this != internal_default_instance()) delete mission_result_; - if (this != internal_default_instance()) delete mission_plan_; -} - -void ImportQgroundcontrolMissionResponse::ArenaDtor(void* object) { - ImportQgroundcontrolMissionResponse* _this = reinterpret_cast< ImportQgroundcontrolMissionResponse* >(object); - (void)_this; -} -void ImportQgroundcontrolMissionResponse::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { -} -void ImportQgroundcontrolMissionResponse::SetCachedSize(int size) const { - _cached_size_.Set(size); -} - -void ImportQgroundcontrolMissionResponse::Clear() { -// @@protoc_insertion_point(message_clear_start:mavsdk.rpc.mission.ImportQgroundcontrolMissionResponse) - ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; - // Prevent compiler warnings about cached_has_bits being unused - (void) cached_has_bits; - - if (GetArena() == nullptr && mission_result_ != nullptr) { - delete mission_result_; - } - mission_result_ = nullptr; - if (GetArena() == nullptr && mission_plan_ != nullptr) { - delete mission_plan_; - } - mission_plan_ = nullptr; - _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); -} - -const char* ImportQgroundcontrolMissionResponse::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { -#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure - while (!ctx->Done(&ptr)) { - ::PROTOBUF_NAMESPACE_ID::uint32 tag; - ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); - CHK_(ptr); - switch (tag >> 3) { - // .mavsdk.rpc.mission.MissionResult mission_result = 1; - case 1: - if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { - ptr = ctx->ParseMessage(_internal_mutable_mission_result(), ptr); - CHK_(ptr); - } else goto handle_unusual; - continue; - // .mavsdk.rpc.mission.MissionPlan mission_plan = 2; - case 2: - if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { - ptr = ctx->ParseMessage(_internal_mutable_mission_plan(), ptr); - CHK_(ptr); - } else goto handle_unusual; - continue; - default: { - handle_unusual: - if ((tag & 7) == 4 || tag == 0) { - ctx->SetLastTag(tag); - goto success; - } - ptr = UnknownFieldParse(tag, - _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), - ptr, ctx); - CHK_(ptr != nullptr); - continue; - } - } // switch - } // while -success: - return ptr; -failure: - ptr = nullptr; - goto success; -#undef CHK_ -} - -::PROTOBUF_NAMESPACE_ID::uint8* ImportQgroundcontrolMissionResponse::_InternalSerialize( - ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { - // @@protoc_insertion_point(serialize_to_array_start:mavsdk.rpc.mission.ImportQgroundcontrolMissionResponse) - ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; - (void) cached_has_bits; - - // .mavsdk.rpc.mission.MissionResult mission_result = 1; - if (this->has_mission_result()) { - target = stream->EnsureSpace(target); - target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: - InternalWriteMessage( - 1, _Internal::mission_result(this), target, stream); - } - - // .mavsdk.rpc.mission.MissionPlan mission_plan = 2; - if (this->has_mission_plan()) { - target = stream->EnsureSpace(target); - target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: - InternalWriteMessage( - 2, _Internal::mission_plan(this), target, stream); - } - - if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { - target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( - _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); - } - // @@protoc_insertion_point(serialize_to_array_end:mavsdk.rpc.mission.ImportQgroundcontrolMissionResponse) - return target; -} - -size_t ImportQgroundcontrolMissionResponse::ByteSizeLong() const { -// @@protoc_insertion_point(message_byte_size_start:mavsdk.rpc.mission.ImportQgroundcontrolMissionResponse) - size_t total_size = 0; - - ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; - // Prevent compiler warnings about cached_has_bits being unused - (void) cached_has_bits; - - // .mavsdk.rpc.mission.MissionResult mission_result = 1; - if (this->has_mission_result()) { - total_size += 1 + - ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( - *mission_result_); - } - - // .mavsdk.rpc.mission.MissionPlan mission_plan = 2; - if (this->has_mission_plan()) { - total_size += 1 + - ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( - *mission_plan_); - } - - if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { - return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( - _internal_metadata_, total_size, &_cached_size_); - } - int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); - SetCachedSize(cached_size); - return total_size; -} - -void ImportQgroundcontrolMissionResponse::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { -// @@protoc_insertion_point(generalized_merge_from_start:mavsdk.rpc.mission.ImportQgroundcontrolMissionResponse) - GOOGLE_DCHECK_NE(&from, this); - const ImportQgroundcontrolMissionResponse* source = - ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( - &from); - if (source == nullptr) { - // @@protoc_insertion_point(generalized_merge_from_cast_fail:mavsdk.rpc.mission.ImportQgroundcontrolMissionResponse) - ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); - } else { - // @@protoc_insertion_point(generalized_merge_from_cast_success:mavsdk.rpc.mission.ImportQgroundcontrolMissionResponse) - MergeFrom(*source); - } -} - -void ImportQgroundcontrolMissionResponse::MergeFrom(const ImportQgroundcontrolMissionResponse& from) { -// @@protoc_insertion_point(class_specific_merge_from_start:mavsdk.rpc.mission.ImportQgroundcontrolMissionResponse) - GOOGLE_DCHECK_NE(&from, this); - _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); - ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; - (void) cached_has_bits; - - if (from.has_mission_result()) { - _internal_mutable_mission_result()->::mavsdk::rpc::mission::MissionResult::MergeFrom(from._internal_mission_result()); - } - if (from.has_mission_plan()) { - _internal_mutable_mission_plan()->::mavsdk::rpc::mission::MissionPlan::MergeFrom(from._internal_mission_plan()); - } -} - -void ImportQgroundcontrolMissionResponse::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { -// @@protoc_insertion_point(generalized_copy_from_start:mavsdk.rpc.mission.ImportQgroundcontrolMissionResponse) - if (&from == this) return; - Clear(); - MergeFrom(from); -} - -void ImportQgroundcontrolMissionResponse::CopyFrom(const ImportQgroundcontrolMissionResponse& from) { -// @@protoc_insertion_point(class_specific_copy_from_start:mavsdk.rpc.mission.ImportQgroundcontrolMissionResponse) - if (&from == this) return; - Clear(); - MergeFrom(from); -} - -bool ImportQgroundcontrolMissionResponse::IsInitialized() const { - return true; -} - -void ImportQgroundcontrolMissionResponse::InternalSwap(ImportQgroundcontrolMissionResponse* other) { - using std::swap; - _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); - ::PROTOBUF_NAMESPACE_ID::internal::memswap< - PROTOBUF_FIELD_OFFSET(ImportQgroundcontrolMissionResponse, mission_plan_) - + sizeof(ImportQgroundcontrolMissionResponse::mission_plan_) - - PROTOBUF_FIELD_OFFSET(ImportQgroundcontrolMissionResponse, mission_result_)>( - reinterpret_cast(&mission_result_), - reinterpret_cast(&other->mission_result_)); -} - -::PROTOBUF_NAMESPACE_ID::Metadata ImportQgroundcontrolMissionResponse::GetMetadata() const { - return GetMetadataStatic(); -} - - // =================================================================== class MissionItem::_Internal { @@ -6981,12 +6472,6 @@ template<> PROTOBUF_NOINLINE ::mavsdk::rpc::mission::SetReturnToLaunchAfterMissi template<> PROTOBUF_NOINLINE ::mavsdk::rpc::mission::SetReturnToLaunchAfterMissionResponse* Arena::CreateMaybeMessage< ::mavsdk::rpc::mission::SetReturnToLaunchAfterMissionResponse >(Arena* arena) { return Arena::CreateMessageInternal< ::mavsdk::rpc::mission::SetReturnToLaunchAfterMissionResponse >(arena); } -template<> PROTOBUF_NOINLINE ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest* Arena::CreateMaybeMessage< ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest >(Arena* arena) { - return Arena::CreateMessageInternal< ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest >(arena); -} -template<> PROTOBUF_NOINLINE ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse* Arena::CreateMaybeMessage< ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse >(Arena* arena) { - return Arena::CreateMessageInternal< ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse >(arena); -} template<> PROTOBUF_NOINLINE ::mavsdk::rpc::mission::MissionItem* Arena::CreateMaybeMessage< ::mavsdk::rpc::mission::MissionItem >(Arena* arena) { return Arena::CreateMessageInternal< ::mavsdk::rpc::mission::MissionItem >(arena); } diff --git a/src/mavsdk_server/src/generated/mission/mission.pb.h b/src/mavsdk_server/src/generated/mission/mission.pb.h index 979527eab6..3dfaa7680e 100644 --- a/src/mavsdk_server/src/generated/mission/mission.pb.h +++ b/src/mavsdk_server/src/generated/mission/mission.pb.h @@ -48,7 +48,7 @@ struct TableStruct_mission_2fmission_2eproto { PROTOBUF_SECTION_VARIABLE(protodesc_cold); static const ::PROTOBUF_NAMESPACE_ID::internal::AuxiliaryParseTableField aux[] PROTOBUF_SECTION_VARIABLE(protodesc_cold); - static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTable schema[30] + static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTable schema[28] PROTOBUF_SECTION_VARIABLE(protodesc_cold); static const ::PROTOBUF_NAMESPACE_ID::internal::FieldMetadata field_metadata[]; static const ::PROTOBUF_NAMESPACE_ID::internal::SerializationTable serialization_table[]; @@ -89,12 +89,6 @@ extern GetReturnToLaunchAfterMissionRequestDefaultTypeInternal _GetReturnToLaunc class GetReturnToLaunchAfterMissionResponse; struct GetReturnToLaunchAfterMissionResponseDefaultTypeInternal; extern GetReturnToLaunchAfterMissionResponseDefaultTypeInternal _GetReturnToLaunchAfterMissionResponse_default_instance_; -class ImportQgroundcontrolMissionRequest; -struct ImportQgroundcontrolMissionRequestDefaultTypeInternal; -extern ImportQgroundcontrolMissionRequestDefaultTypeInternal _ImportQgroundcontrolMissionRequest_default_instance_; -class ImportQgroundcontrolMissionResponse; -struct ImportQgroundcontrolMissionResponseDefaultTypeInternal; -extern ImportQgroundcontrolMissionResponseDefaultTypeInternal _ImportQgroundcontrolMissionResponse_default_instance_; class IsMissionFinishedRequest; struct IsMissionFinishedRequestDefaultTypeInternal; extern IsMissionFinishedRequestDefaultTypeInternal _IsMissionFinishedRequest_default_instance_; @@ -163,8 +157,6 @@ template<> ::mavsdk::rpc::mission::DownloadMissionRequest* Arena::CreateMaybeMes template<> ::mavsdk::rpc::mission::DownloadMissionResponse* Arena::CreateMaybeMessage<::mavsdk::rpc::mission::DownloadMissionResponse>(Arena*); template<> ::mavsdk::rpc::mission::GetReturnToLaunchAfterMissionRequest* Arena::CreateMaybeMessage<::mavsdk::rpc::mission::GetReturnToLaunchAfterMissionRequest>(Arena*); template<> ::mavsdk::rpc::mission::GetReturnToLaunchAfterMissionResponse* Arena::CreateMaybeMessage<::mavsdk::rpc::mission::GetReturnToLaunchAfterMissionResponse>(Arena*); -template<> ::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest* Arena::CreateMaybeMessage<::mavsdk::rpc::mission::ImportQgroundcontrolMissionRequest>(Arena*); -template<> ::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse* Arena::CreateMaybeMessage<::mavsdk::rpc::mission::ImportQgroundcontrolMissionResponse>(Arena*); template<> ::mavsdk::rpc::mission::IsMissionFinishedRequest* Arena::CreateMaybeMessage<::mavsdk::rpc::mission::IsMissionFinishedRequest>(Arena*); template<> ::mavsdk::rpc::mission::IsMissionFinishedResponse* Arena::CreateMaybeMessage<::mavsdk::rpc::mission::IsMissionFinishedResponse>(Arena*); template<> ::mavsdk::rpc::mission::MissionItem* Arena::CreateMaybeMessage<::mavsdk::rpc::mission::MissionItem>(Arena*); @@ -227,8 +219,6 @@ enum MissionResult_Result : int { MissionResult_Result_RESULT_INVALID_ARGUMENT = 6, MissionResult_Result_RESULT_UNSUPPORTED = 7, MissionResult_Result_RESULT_NO_MISSION_AVAILABLE = 8, - MissionResult_Result_RESULT_FAILED_TO_OPEN_QGC_PLAN = 9, - MissionResult_Result_RESULT_FAILED_TO_PARSE_QGC_PLAN = 10, MissionResult_Result_RESULT_UNSUPPORTED_MISSION_CMD = 11, MissionResult_Result_RESULT_TRANSFER_CANCELLED = 12, MissionResult_Result_MissionResult_Result_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), @@ -3585,316 +3575,6 @@ class SetReturnToLaunchAfterMissionResponse PROTOBUF_FINAL : }; // ------------------------------------------------------------------- -class ImportQgroundcontrolMissionRequest PROTOBUF_FINAL : - public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:mavsdk.rpc.mission.ImportQgroundcontrolMissionRequest) */ { - public: - inline ImportQgroundcontrolMissionRequest() : ImportQgroundcontrolMissionRequest(nullptr) {} - virtual ~ImportQgroundcontrolMissionRequest(); - explicit constexpr ImportQgroundcontrolMissionRequest(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); - - ImportQgroundcontrolMissionRequest(const ImportQgroundcontrolMissionRequest& from); - ImportQgroundcontrolMissionRequest(ImportQgroundcontrolMissionRequest&& from) noexcept - : ImportQgroundcontrolMissionRequest() { - *this = ::std::move(from); - } - - inline ImportQgroundcontrolMissionRequest& operator=(const ImportQgroundcontrolMissionRequest& from) { - CopyFrom(from); - return *this; - } - inline ImportQgroundcontrolMissionRequest& operator=(ImportQgroundcontrolMissionRequest&& from) noexcept { - if (GetArena() == from.GetArena()) { - if (this != &from) InternalSwap(&from); - } else { - CopyFrom(from); - } - return *this; - } - - static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { - return GetDescriptor(); - } - static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { - return GetMetadataStatic().descriptor; - } - static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { - return GetMetadataStatic().reflection; - } - static const ImportQgroundcontrolMissionRequest& default_instance() { - return *internal_default_instance(); - } - static inline const ImportQgroundcontrolMissionRequest* internal_default_instance() { - return reinterpret_cast( - &_ImportQgroundcontrolMissionRequest_default_instance_); - } - static constexpr int kIndexInFileMessages = - 24; - - friend void swap(ImportQgroundcontrolMissionRequest& a, ImportQgroundcontrolMissionRequest& b) { - a.Swap(&b); - } - inline void Swap(ImportQgroundcontrolMissionRequest* other) { - if (other == this) return; - if (GetArena() == other->GetArena()) { - InternalSwap(other); - } else { - ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); - } - } - void UnsafeArenaSwap(ImportQgroundcontrolMissionRequest* other) { - if (other == this) return; - GOOGLE_DCHECK(GetArena() == other->GetArena()); - InternalSwap(other); - } - - // implements Message ---------------------------------------------- - - inline ImportQgroundcontrolMissionRequest* New() const final { - return CreateMaybeMessage(nullptr); - } - - ImportQgroundcontrolMissionRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { - return CreateMaybeMessage(arena); - } - void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; - void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; - void CopyFrom(const ImportQgroundcontrolMissionRequest& from); - void MergeFrom(const ImportQgroundcontrolMissionRequest& from); - PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; - bool IsInitialized() const final; - - size_t ByteSizeLong() const final; - const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; - ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( - ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; - int GetCachedSize() const final { return _cached_size_.Get(); } - - private: - inline void SharedCtor(); - inline void SharedDtor(); - void SetCachedSize(int size) const final; - void InternalSwap(ImportQgroundcontrolMissionRequest* other); - friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; - static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { - return "mavsdk.rpc.mission.ImportQgroundcontrolMissionRequest"; - } - protected: - explicit ImportQgroundcontrolMissionRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena); - private: - static void ArenaDtor(void* object); - inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); - public: - - ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; - private: - static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { - return ::descriptor_table_mission_2fmission_2eproto_metadata_getter(kIndexInFileMessages); - } - - public: - - // nested types ---------------------------------------------------- - - // accessors ------------------------------------------------------- - - enum : int { - kQgcPlanPathFieldNumber = 1, - }; - // string qgc_plan_path = 1; - void clear_qgc_plan_path(); - const std::string& qgc_plan_path() const; - void set_qgc_plan_path(const std::string& value); - void set_qgc_plan_path(std::string&& value); - void set_qgc_plan_path(const char* value); - void set_qgc_plan_path(const char* value, size_t size); - std::string* mutable_qgc_plan_path(); - std::string* release_qgc_plan_path(); - void set_allocated_qgc_plan_path(std::string* qgc_plan_path); - private: - const std::string& _internal_qgc_plan_path() const; - void _internal_set_qgc_plan_path(const std::string& value); - std::string* _internal_mutable_qgc_plan_path(); - public: - - // @@protoc_insertion_point(class_scope:mavsdk.rpc.mission.ImportQgroundcontrolMissionRequest) - private: - class _Internal; - - template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; - typedef void InternalArenaConstructable_; - typedef void DestructorSkippable_; - ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr qgc_plan_path_; - mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; - friend struct ::TableStruct_mission_2fmission_2eproto; -}; -// ------------------------------------------------------------------- - -class ImportQgroundcontrolMissionResponse PROTOBUF_FINAL : - public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:mavsdk.rpc.mission.ImportQgroundcontrolMissionResponse) */ { - public: - inline ImportQgroundcontrolMissionResponse() : ImportQgroundcontrolMissionResponse(nullptr) {} - virtual ~ImportQgroundcontrolMissionResponse(); - explicit constexpr ImportQgroundcontrolMissionResponse(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); - - ImportQgroundcontrolMissionResponse(const ImportQgroundcontrolMissionResponse& from); - ImportQgroundcontrolMissionResponse(ImportQgroundcontrolMissionResponse&& from) noexcept - : ImportQgroundcontrolMissionResponse() { - *this = ::std::move(from); - } - - inline ImportQgroundcontrolMissionResponse& operator=(const ImportQgroundcontrolMissionResponse& from) { - CopyFrom(from); - return *this; - } - inline ImportQgroundcontrolMissionResponse& operator=(ImportQgroundcontrolMissionResponse&& from) noexcept { - if (GetArena() == from.GetArena()) { - if (this != &from) InternalSwap(&from); - } else { - CopyFrom(from); - } - return *this; - } - - static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { - return GetDescriptor(); - } - static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { - return GetMetadataStatic().descriptor; - } - static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { - return GetMetadataStatic().reflection; - } - static const ImportQgroundcontrolMissionResponse& default_instance() { - return *internal_default_instance(); - } - static inline const ImportQgroundcontrolMissionResponse* internal_default_instance() { - return reinterpret_cast( - &_ImportQgroundcontrolMissionResponse_default_instance_); - } - static constexpr int kIndexInFileMessages = - 25; - - friend void swap(ImportQgroundcontrolMissionResponse& a, ImportQgroundcontrolMissionResponse& b) { - a.Swap(&b); - } - inline void Swap(ImportQgroundcontrolMissionResponse* other) { - if (other == this) return; - if (GetArena() == other->GetArena()) { - InternalSwap(other); - } else { - ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); - } - } - void UnsafeArenaSwap(ImportQgroundcontrolMissionResponse* other) { - if (other == this) return; - GOOGLE_DCHECK(GetArena() == other->GetArena()); - InternalSwap(other); - } - - // implements Message ---------------------------------------------- - - inline ImportQgroundcontrolMissionResponse* New() const final { - return CreateMaybeMessage(nullptr); - } - - ImportQgroundcontrolMissionResponse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { - return CreateMaybeMessage(arena); - } - void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; - void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; - void CopyFrom(const ImportQgroundcontrolMissionResponse& from); - void MergeFrom(const ImportQgroundcontrolMissionResponse& from); - PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; - bool IsInitialized() const final; - - size_t ByteSizeLong() const final; - const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; - ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( - ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; - int GetCachedSize() const final { return _cached_size_.Get(); } - - private: - inline void SharedCtor(); - inline void SharedDtor(); - void SetCachedSize(int size) const final; - void InternalSwap(ImportQgroundcontrolMissionResponse* other); - friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; - static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { - return "mavsdk.rpc.mission.ImportQgroundcontrolMissionResponse"; - } - protected: - explicit ImportQgroundcontrolMissionResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena); - private: - static void ArenaDtor(void* object); - inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); - public: - - ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; - private: - static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { - return ::descriptor_table_mission_2fmission_2eproto_metadata_getter(kIndexInFileMessages); - } - - public: - - // nested types ---------------------------------------------------- - - // accessors ------------------------------------------------------- - - enum : int { - kMissionResultFieldNumber = 1, - kMissionPlanFieldNumber = 2, - }; - // .mavsdk.rpc.mission.MissionResult mission_result = 1; - bool has_mission_result() const; - private: - bool _internal_has_mission_result() const; - public: - void clear_mission_result(); - const ::mavsdk::rpc::mission::MissionResult& mission_result() const; - ::mavsdk::rpc::mission::MissionResult* release_mission_result(); - ::mavsdk::rpc::mission::MissionResult* mutable_mission_result(); - void set_allocated_mission_result(::mavsdk::rpc::mission::MissionResult* mission_result); - private: - const ::mavsdk::rpc::mission::MissionResult& _internal_mission_result() const; - ::mavsdk::rpc::mission::MissionResult* _internal_mutable_mission_result(); - public: - void unsafe_arena_set_allocated_mission_result( - ::mavsdk::rpc::mission::MissionResult* mission_result); - ::mavsdk::rpc::mission::MissionResult* unsafe_arena_release_mission_result(); - - // .mavsdk.rpc.mission.MissionPlan mission_plan = 2; - bool has_mission_plan() const; - private: - bool _internal_has_mission_plan() const; - public: - void clear_mission_plan(); - const ::mavsdk::rpc::mission::MissionPlan& mission_plan() const; - ::mavsdk::rpc::mission::MissionPlan* release_mission_plan(); - ::mavsdk::rpc::mission::MissionPlan* mutable_mission_plan(); - void set_allocated_mission_plan(::mavsdk::rpc::mission::MissionPlan* mission_plan); - private: - const ::mavsdk::rpc::mission::MissionPlan& _internal_mission_plan() const; - ::mavsdk::rpc::mission::MissionPlan* _internal_mutable_mission_plan(); - public: - void unsafe_arena_set_allocated_mission_plan( - ::mavsdk::rpc::mission::MissionPlan* mission_plan); - ::mavsdk::rpc::mission::MissionPlan* unsafe_arena_release_mission_plan(); - - // @@protoc_insertion_point(class_scope:mavsdk.rpc.mission.ImportQgroundcontrolMissionResponse) - private: - class _Internal; - - template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; - typedef void InternalArenaConstructable_; - typedef void DestructorSkippable_; - ::mavsdk::rpc::mission::MissionResult* mission_result_; - ::mavsdk::rpc::mission::MissionPlan* mission_plan_; - mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; - friend struct ::TableStruct_mission_2fmission_2eproto; -}; -// ------------------------------------------------------------------- - class MissionItem PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:mavsdk.rpc.mission.MissionItem) */ { public: @@ -3938,7 +3618,7 @@ class MissionItem PROTOBUF_FINAL : &_MissionItem_default_instance_); } static constexpr int kIndexInFileMessages = - 26; + 24; friend void swap(MissionItem& a, MissionItem& b) { a.Swap(&b); @@ -4212,7 +3892,7 @@ class MissionPlan PROTOBUF_FINAL : &_MissionPlan_default_instance_); } static constexpr int kIndexInFileMessages = - 27; + 25; friend void swap(MissionPlan& a, MissionPlan& b) { a.Swap(&b); @@ -4358,7 +4038,7 @@ class MissionProgress PROTOBUF_FINAL : &_MissionProgress_default_instance_); } static constexpr int kIndexInFileMessages = - 28; + 26; friend void swap(MissionProgress& a, MissionProgress& b) { a.Swap(&b); @@ -4506,7 +4186,7 @@ class MissionResult PROTOBUF_FINAL : &_MissionResult_default_instance_); } static constexpr int kIndexInFileMessages = - 29; + 27; friend void swap(MissionResult& a, MissionResult& b) { a.Swap(&b); @@ -4592,10 +4272,6 @@ class MissionResult PROTOBUF_FINAL : MissionResult_Result_RESULT_UNSUPPORTED; static constexpr Result RESULT_NO_MISSION_AVAILABLE = MissionResult_Result_RESULT_NO_MISSION_AVAILABLE; - static constexpr Result RESULT_FAILED_TO_OPEN_QGC_PLAN = - MissionResult_Result_RESULT_FAILED_TO_OPEN_QGC_PLAN; - static constexpr Result RESULT_FAILED_TO_PARSE_QGC_PLAN = - MissionResult_Result_RESULT_FAILED_TO_PARSE_QGC_PLAN; static constexpr Result RESULT_UNSUPPORTED_MISSION_CMD = MissionResult_Result_RESULT_UNSUPPORTED_MISSION_CMD; static constexpr Result RESULT_TRANSFER_CANCELLED = @@ -6015,241 +5691,6 @@ inline void SetReturnToLaunchAfterMissionResponse::set_allocated_mission_result( // ------------------------------------------------------------------- -// ImportQgroundcontrolMissionRequest - -// string qgc_plan_path = 1; -inline void ImportQgroundcontrolMissionRequest::clear_qgc_plan_path() { - qgc_plan_path_.ClearToEmpty(); -} -inline const std::string& ImportQgroundcontrolMissionRequest::qgc_plan_path() const { - // @@protoc_insertion_point(field_get:mavsdk.rpc.mission.ImportQgroundcontrolMissionRequest.qgc_plan_path) - return _internal_qgc_plan_path(); -} -inline void ImportQgroundcontrolMissionRequest::set_qgc_plan_path(const std::string& value) { - _internal_set_qgc_plan_path(value); - // @@protoc_insertion_point(field_set:mavsdk.rpc.mission.ImportQgroundcontrolMissionRequest.qgc_plan_path) -} -inline std::string* ImportQgroundcontrolMissionRequest::mutable_qgc_plan_path() { - // @@protoc_insertion_point(field_mutable:mavsdk.rpc.mission.ImportQgroundcontrolMissionRequest.qgc_plan_path) - return _internal_mutable_qgc_plan_path(); -} -inline const std::string& ImportQgroundcontrolMissionRequest::_internal_qgc_plan_path() const { - return qgc_plan_path_.Get(); -} -inline void ImportQgroundcontrolMissionRequest::_internal_set_qgc_plan_path(const std::string& value) { - - qgc_plan_path_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); -} -inline void ImportQgroundcontrolMissionRequest::set_qgc_plan_path(std::string&& value) { - - qgc_plan_path_.Set( - ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); - // @@protoc_insertion_point(field_set_rvalue:mavsdk.rpc.mission.ImportQgroundcontrolMissionRequest.qgc_plan_path) -} -inline void ImportQgroundcontrolMissionRequest::set_qgc_plan_path(const char* value) { - GOOGLE_DCHECK(value != nullptr); - - qgc_plan_path_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); - // @@protoc_insertion_point(field_set_char:mavsdk.rpc.mission.ImportQgroundcontrolMissionRequest.qgc_plan_path) -} -inline void ImportQgroundcontrolMissionRequest::set_qgc_plan_path(const char* value, - size_t size) { - - qgc_plan_path_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( - reinterpret_cast(value), size), GetArena()); - // @@protoc_insertion_point(field_set_pointer:mavsdk.rpc.mission.ImportQgroundcontrolMissionRequest.qgc_plan_path) -} -inline std::string* ImportQgroundcontrolMissionRequest::_internal_mutable_qgc_plan_path() { - - return qgc_plan_path_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); -} -inline std::string* ImportQgroundcontrolMissionRequest::release_qgc_plan_path() { - // @@protoc_insertion_point(field_release:mavsdk.rpc.mission.ImportQgroundcontrolMissionRequest.qgc_plan_path) - return qgc_plan_path_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); -} -inline void ImportQgroundcontrolMissionRequest::set_allocated_qgc_plan_path(std::string* qgc_plan_path) { - if (qgc_plan_path != nullptr) { - - } else { - - } - qgc_plan_path_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), qgc_plan_path, - GetArena()); - // @@protoc_insertion_point(field_set_allocated:mavsdk.rpc.mission.ImportQgroundcontrolMissionRequest.qgc_plan_path) -} - -// ------------------------------------------------------------------- - -// ImportQgroundcontrolMissionResponse - -// .mavsdk.rpc.mission.MissionResult mission_result = 1; -inline bool ImportQgroundcontrolMissionResponse::_internal_has_mission_result() const { - return this != internal_default_instance() && mission_result_ != nullptr; -} -inline bool ImportQgroundcontrolMissionResponse::has_mission_result() const { - return _internal_has_mission_result(); -} -inline void ImportQgroundcontrolMissionResponse::clear_mission_result() { - if (GetArena() == nullptr && mission_result_ != nullptr) { - delete mission_result_; - } - mission_result_ = nullptr; -} -inline const ::mavsdk::rpc::mission::MissionResult& ImportQgroundcontrolMissionResponse::_internal_mission_result() const { - const ::mavsdk::rpc::mission::MissionResult* p = mission_result_; - return p != nullptr ? *p : reinterpret_cast( - ::mavsdk::rpc::mission::_MissionResult_default_instance_); -} -inline const ::mavsdk::rpc::mission::MissionResult& ImportQgroundcontrolMissionResponse::mission_result() const { - // @@protoc_insertion_point(field_get:mavsdk.rpc.mission.ImportQgroundcontrolMissionResponse.mission_result) - return _internal_mission_result(); -} -inline void ImportQgroundcontrolMissionResponse::unsafe_arena_set_allocated_mission_result( - ::mavsdk::rpc::mission::MissionResult* mission_result) { - if (GetArena() == nullptr) { - delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(mission_result_); - } - mission_result_ = mission_result; - if (mission_result) { - - } else { - - } - // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mavsdk.rpc.mission.ImportQgroundcontrolMissionResponse.mission_result) -} -inline ::mavsdk::rpc::mission::MissionResult* ImportQgroundcontrolMissionResponse::release_mission_result() { - - ::mavsdk::rpc::mission::MissionResult* temp = mission_result_; - mission_result_ = nullptr; - if (GetArena() != nullptr) { - temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); - } - return temp; -} -inline ::mavsdk::rpc::mission::MissionResult* ImportQgroundcontrolMissionResponse::unsafe_arena_release_mission_result() { - // @@protoc_insertion_point(field_release:mavsdk.rpc.mission.ImportQgroundcontrolMissionResponse.mission_result) - - ::mavsdk::rpc::mission::MissionResult* temp = mission_result_; - mission_result_ = nullptr; - return temp; -} -inline ::mavsdk::rpc::mission::MissionResult* ImportQgroundcontrolMissionResponse::_internal_mutable_mission_result() { - - if (mission_result_ == nullptr) { - auto* p = CreateMaybeMessage<::mavsdk::rpc::mission::MissionResult>(GetArena()); - mission_result_ = p; - } - return mission_result_; -} -inline ::mavsdk::rpc::mission::MissionResult* ImportQgroundcontrolMissionResponse::mutable_mission_result() { - // @@protoc_insertion_point(field_mutable:mavsdk.rpc.mission.ImportQgroundcontrolMissionResponse.mission_result) - return _internal_mutable_mission_result(); -} -inline void ImportQgroundcontrolMissionResponse::set_allocated_mission_result(::mavsdk::rpc::mission::MissionResult* mission_result) { - ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); - if (message_arena == nullptr) { - delete mission_result_; - } - if (mission_result) { - ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = - ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(mission_result); - if (message_arena != submessage_arena) { - mission_result = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( - message_arena, mission_result, submessage_arena); - } - - } else { - - } - mission_result_ = mission_result; - // @@protoc_insertion_point(field_set_allocated:mavsdk.rpc.mission.ImportQgroundcontrolMissionResponse.mission_result) -} - -// .mavsdk.rpc.mission.MissionPlan mission_plan = 2; -inline bool ImportQgroundcontrolMissionResponse::_internal_has_mission_plan() const { - return this != internal_default_instance() && mission_plan_ != nullptr; -} -inline bool ImportQgroundcontrolMissionResponse::has_mission_plan() const { - return _internal_has_mission_plan(); -} -inline void ImportQgroundcontrolMissionResponse::clear_mission_plan() { - if (GetArena() == nullptr && mission_plan_ != nullptr) { - delete mission_plan_; - } - mission_plan_ = nullptr; -} -inline const ::mavsdk::rpc::mission::MissionPlan& ImportQgroundcontrolMissionResponse::_internal_mission_plan() const { - const ::mavsdk::rpc::mission::MissionPlan* p = mission_plan_; - return p != nullptr ? *p : reinterpret_cast( - ::mavsdk::rpc::mission::_MissionPlan_default_instance_); -} -inline const ::mavsdk::rpc::mission::MissionPlan& ImportQgroundcontrolMissionResponse::mission_plan() const { - // @@protoc_insertion_point(field_get:mavsdk.rpc.mission.ImportQgroundcontrolMissionResponse.mission_plan) - return _internal_mission_plan(); -} -inline void ImportQgroundcontrolMissionResponse::unsafe_arena_set_allocated_mission_plan( - ::mavsdk::rpc::mission::MissionPlan* mission_plan) { - if (GetArena() == nullptr) { - delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(mission_plan_); - } - mission_plan_ = mission_plan; - if (mission_plan) { - - } else { - - } - // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mavsdk.rpc.mission.ImportQgroundcontrolMissionResponse.mission_plan) -} -inline ::mavsdk::rpc::mission::MissionPlan* ImportQgroundcontrolMissionResponse::release_mission_plan() { - - ::mavsdk::rpc::mission::MissionPlan* temp = mission_plan_; - mission_plan_ = nullptr; - if (GetArena() != nullptr) { - temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); - } - return temp; -} -inline ::mavsdk::rpc::mission::MissionPlan* ImportQgroundcontrolMissionResponse::unsafe_arena_release_mission_plan() { - // @@protoc_insertion_point(field_release:mavsdk.rpc.mission.ImportQgroundcontrolMissionResponse.mission_plan) - - ::mavsdk::rpc::mission::MissionPlan* temp = mission_plan_; - mission_plan_ = nullptr; - return temp; -} -inline ::mavsdk::rpc::mission::MissionPlan* ImportQgroundcontrolMissionResponse::_internal_mutable_mission_plan() { - - if (mission_plan_ == nullptr) { - auto* p = CreateMaybeMessage<::mavsdk::rpc::mission::MissionPlan>(GetArena()); - mission_plan_ = p; - } - return mission_plan_; -} -inline ::mavsdk::rpc::mission::MissionPlan* ImportQgroundcontrolMissionResponse::mutable_mission_plan() { - // @@protoc_insertion_point(field_mutable:mavsdk.rpc.mission.ImportQgroundcontrolMissionResponse.mission_plan) - return _internal_mutable_mission_plan(); -} -inline void ImportQgroundcontrolMissionResponse::set_allocated_mission_plan(::mavsdk::rpc::mission::MissionPlan* mission_plan) { - ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); - if (message_arena == nullptr) { - delete mission_plan_; - } - if (mission_plan) { - ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = - ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(mission_plan); - if (message_arena != submessage_arena) { - mission_plan = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( - message_arena, mission_plan, submessage_arena); - } - - } else { - - } - mission_plan_ = mission_plan; - // @@protoc_insertion_point(field_set_allocated:mavsdk.rpc.mission.ImportQgroundcontrolMissionResponse.mission_plan) -} - -// ------------------------------------------------------------------- - // MissionItem // double latitude_deg = 1 [(.mavsdk.options.default_value) = "NaN", (.mavsdk.options.epsilon) = 1e-07]; @@ -6681,10 +6122,6 @@ inline void MissionResult::set_allocated_result_str(std::string* result_str) { // ------------------------------------------------------------------- -// ------------------------------------------------------------------- - -// ------------------------------------------------------------------- - // @@protoc_insertion_point(namespace_scope) diff --git a/src/mavsdk_server/src/generated/mission_raw/mission_raw.grpc.pb.cc b/src/mavsdk_server/src/generated/mission_raw/mission_raw.grpc.pb.cc index faba2d4e83..e5f7ec8857 100644 --- a/src/mavsdk_server/src/generated/mission_raw/mission_raw.grpc.pb.cc +++ b/src/mavsdk_server/src/generated/mission_raw/mission_raw.grpc.pb.cc @@ -34,6 +34,7 @@ static const char* MissionRawService_method_names[] = { "/mavsdk.rpc.mission_raw.MissionRawService/SetCurrentMissionItem", "/mavsdk.rpc.mission_raw.MissionRawService/SubscribeMissionProgress", "/mavsdk.rpc.mission_raw.MissionRawService/SubscribeMissionChanged", + "/mavsdk.rpc.mission_raw.MissionRawService/ImportQgroundcontrolMission", }; std::unique_ptr< MissionRawService::Stub> MissionRawService::NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options) { @@ -53,6 +54,7 @@ MissionRawService::Stub::Stub(const std::shared_ptr< ::grpc::ChannelInterface>& , rpcmethod_SetCurrentMissionItem_(MissionRawService_method_names[7], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) , rpcmethod_SubscribeMissionProgress_(MissionRawService_method_names[8], ::grpc::internal::RpcMethod::SERVER_STREAMING, channel) , rpcmethod_SubscribeMissionChanged_(MissionRawService_method_names[9], ::grpc::internal::RpcMethod::SERVER_STREAMING, channel) + , rpcmethod_ImportQgroundcontrolMission_(MissionRawService_method_names[10], ::grpc::internal::RpcMethod::NORMAL_RPC, channel) {} ::grpc::Status MissionRawService::Stub::UploadMission(::grpc::ClientContext* context, const ::mavsdk::rpc::mission_raw::UploadMissionRequest& request, ::mavsdk::rpc::mission_raw::UploadMissionResponse* response) { @@ -271,6 +273,29 @@ ::grpc::ClientAsyncReader< ::mavsdk::rpc::mission_raw::MissionChangedResponse>* return ::grpc::internal::ClientAsyncReaderFactory< ::mavsdk::rpc::mission_raw::MissionChangedResponse>::Create(channel_.get(), cq, rpcmethod_SubscribeMissionChanged_, context, request, false, nullptr); } +::grpc::Status MissionRawService::Stub::ImportQgroundcontrolMission(::grpc::ClientContext* context, const ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest& request, ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse* response) { + return ::grpc::internal::BlockingUnaryCall< ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest, ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_ImportQgroundcontrolMission_, context, request, response); +} + +void MissionRawService::Stub::experimental_async::ImportQgroundcontrolMission(::grpc::ClientContext* context, const ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest* request, ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse* response, std::function f) { + ::grpc::internal::CallbackUnaryCall< ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest, ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_ImportQgroundcontrolMission_, context, request, response, std::move(f)); +} + +void MissionRawService::Stub::experimental_async::ImportQgroundcontrolMission(::grpc::ClientContext* context, const ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest* request, ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) { + ::grpc::internal::ClientCallbackUnaryFactory::Create< ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_ImportQgroundcontrolMission_, context, request, response, reactor); +} + +::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse>* MissionRawService::Stub::PrepareAsyncImportQgroundcontrolMissionRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest& request, ::grpc::CompletionQueue* cq) { + return ::grpc::internal::ClientAsyncResponseReaderHelper::Create< ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse, ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_ImportQgroundcontrolMission_, context, request); +} + +::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse>* MissionRawService::Stub::AsyncImportQgroundcontrolMissionRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest& request, ::grpc::CompletionQueue* cq) { + auto* result = + this->PrepareAsyncImportQgroundcontrolMissionRaw(context, request, cq); + result->StartCall(); + return result; +} + MissionRawService::Service::Service() { AddMethod(new ::grpc::internal::RpcServiceMethod( MissionRawService_method_names[0], @@ -372,6 +397,16 @@ MissionRawService::Service::Service() { ::grpc::ServerWriter<::mavsdk::rpc::mission_raw::MissionChangedResponse>* writer) { return service->SubscribeMissionChanged(ctx, req, writer); }, this))); + AddMethod(new ::grpc::internal::RpcServiceMethod( + MissionRawService_method_names[10], + ::grpc::internal::RpcMethod::NORMAL_RPC, + new ::grpc::internal::RpcMethodHandler< MissionRawService::Service, ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest, ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>( + [](MissionRawService::Service* service, + ::grpc::ServerContext* ctx, + const ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest* req, + ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse* resp) { + return service->ImportQgroundcontrolMission(ctx, req, resp); + }, this))); } MissionRawService::Service::~Service() { @@ -447,6 +482,13 @@ ::grpc::Status MissionRawService::Service::SubscribeMissionChanged(::grpc::Serve return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); } +::grpc::Status MissionRawService::Service::ImportQgroundcontrolMission(::grpc::ServerContext* context, const ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest* request, ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse* response) { + (void) context; + (void) request; + (void) response; + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); +} + } // namespace mavsdk } // namespace rpc diff --git a/src/mavsdk_server/src/generated/mission_raw/mission_raw.grpc.pb.h b/src/mavsdk_server/src/generated/mission_raw/mission_raw.grpc.pb.h index 8a7e508f26..94ef591a80 100644 --- a/src/mavsdk_server/src/generated/mission_raw/mission_raw.grpc.pb.h +++ b/src/mavsdk_server/src/generated/mission_raw/mission_raw.grpc.pb.h @@ -151,6 +151,21 @@ class MissionRawService final { std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::mavsdk::rpc::mission_raw::MissionChangedResponse>> PrepareAsyncSubscribeMissionChanged(::grpc::ClientContext* context, const ::mavsdk::rpc::mission_raw::SubscribeMissionChangedRequest& request, ::grpc::CompletionQueue* cq) { return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::mavsdk::rpc::mission_raw::MissionChangedResponse>>(PrepareAsyncSubscribeMissionChangedRaw(context, request, cq)); } + // + // Import a QGroundControl missions in JSON .plan format. + // + // Supported: + // - Waypoints + // - Survey + // Not supported: + // - Structure Scan + virtual ::grpc::Status ImportQgroundcontrolMission(::grpc::ClientContext* context, const ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest& request, ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse* response) = 0; + std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse>> AsyncImportQgroundcontrolMission(::grpc::ClientContext* context, const ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse>>(AsyncImportQgroundcontrolMissionRaw(context, request, cq)); + } + std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse>> PrepareAsyncImportQgroundcontrolMission(::grpc::ClientContext* context, const ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse>>(PrepareAsyncImportQgroundcontrolMissionRaw(context, request, cq)); + } class experimental_async_interface { public: virtual ~experimental_async_interface() {} @@ -250,6 +265,20 @@ class MissionRawService final { #else virtual void SubscribeMissionChanged(::grpc::ClientContext* context, ::mavsdk::rpc::mission_raw::SubscribeMissionChangedRequest* request, ::grpc::experimental::ClientReadReactor< ::mavsdk::rpc::mission_raw::MissionChangedResponse>* reactor) = 0; #endif + // + // Import a QGroundControl missions in JSON .plan format. + // + // Supported: + // - Waypoints + // - Survey + // Not supported: + // - Structure Scan + virtual void ImportQgroundcontrolMission(::grpc::ClientContext* context, const ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest* request, ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse* response, std::function) = 0; + #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL + virtual void ImportQgroundcontrolMission(::grpc::ClientContext* context, const ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest* request, ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0; + #else + virtual void ImportQgroundcontrolMission(::grpc::ClientContext* context, const ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest* request, ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0; + #endif }; #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL typedef class experimental_async_interface async_interface; @@ -281,6 +310,8 @@ class MissionRawService final { virtual ::grpc::ClientReaderInterface< ::mavsdk::rpc::mission_raw::MissionChangedResponse>* SubscribeMissionChangedRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::mission_raw::SubscribeMissionChangedRequest& request) = 0; virtual ::grpc::ClientAsyncReaderInterface< ::mavsdk::rpc::mission_raw::MissionChangedResponse>* AsyncSubscribeMissionChangedRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::mission_raw::SubscribeMissionChangedRequest& request, ::grpc::CompletionQueue* cq, void* tag) = 0; virtual ::grpc::ClientAsyncReaderInterface< ::mavsdk::rpc::mission_raw::MissionChangedResponse>* PrepareAsyncSubscribeMissionChangedRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::mission_raw::SubscribeMissionChangedRequest& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse>* AsyncImportQgroundcontrolMissionRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest& request, ::grpc::CompletionQueue* cq) = 0; + virtual ::grpc::ClientAsyncResponseReaderInterface< ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse>* PrepareAsyncImportQgroundcontrolMissionRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest& request, ::grpc::CompletionQueue* cq) = 0; }; class Stub final : public StubInterface { public: @@ -359,6 +390,13 @@ class MissionRawService final { std::unique_ptr< ::grpc::ClientAsyncReader< ::mavsdk::rpc::mission_raw::MissionChangedResponse>> PrepareAsyncSubscribeMissionChanged(::grpc::ClientContext* context, const ::mavsdk::rpc::mission_raw::SubscribeMissionChangedRequest& request, ::grpc::CompletionQueue* cq) { return std::unique_ptr< ::grpc::ClientAsyncReader< ::mavsdk::rpc::mission_raw::MissionChangedResponse>>(PrepareAsyncSubscribeMissionChangedRaw(context, request, cq)); } + ::grpc::Status ImportQgroundcontrolMission(::grpc::ClientContext* context, const ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest& request, ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse* response) override; + std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse>> AsyncImportQgroundcontrolMission(::grpc::ClientContext* context, const ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse>>(AsyncImportQgroundcontrolMissionRaw(context, request, cq)); + } + std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse>> PrepareAsyncImportQgroundcontrolMission(::grpc::ClientContext* context, const ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest& request, ::grpc::CompletionQueue* cq) { + return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse>>(PrepareAsyncImportQgroundcontrolMissionRaw(context, request, cq)); + } class experimental_async final : public StubInterface::experimental_async_interface { public: @@ -420,6 +458,12 @@ class MissionRawService final { #else void SubscribeMissionChanged(::grpc::ClientContext* context, ::mavsdk::rpc::mission_raw::SubscribeMissionChangedRequest* request, ::grpc::experimental::ClientReadReactor< ::mavsdk::rpc::mission_raw::MissionChangedResponse>* reactor) override; #endif + void ImportQgroundcontrolMission(::grpc::ClientContext* context, const ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest* request, ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse* response, std::function) override; + #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL + void ImportQgroundcontrolMission(::grpc::ClientContext* context, const ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest* request, ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse* response, ::grpc::ClientUnaryReactor* reactor) override; + #else + void ImportQgroundcontrolMission(::grpc::ClientContext* context, const ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest* request, ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) override; + #endif private: friend class Stub; explicit experimental_async(Stub* stub): stub_(stub) { } @@ -453,6 +497,8 @@ class MissionRawService final { ::grpc::ClientReader< ::mavsdk::rpc::mission_raw::MissionChangedResponse>* SubscribeMissionChangedRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::mission_raw::SubscribeMissionChangedRequest& request) override; ::grpc::ClientAsyncReader< ::mavsdk::rpc::mission_raw::MissionChangedResponse>* AsyncSubscribeMissionChangedRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::mission_raw::SubscribeMissionChangedRequest& request, ::grpc::CompletionQueue* cq, void* tag) override; ::grpc::ClientAsyncReader< ::mavsdk::rpc::mission_raw::MissionChangedResponse>* PrepareAsyncSubscribeMissionChangedRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::mission_raw::SubscribeMissionChangedRequest& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse>* AsyncImportQgroundcontrolMissionRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest& request, ::grpc::CompletionQueue* cq) override; + ::grpc::ClientAsyncResponseReader< ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse>* PrepareAsyncImportQgroundcontrolMissionRaw(::grpc::ClientContext* context, const ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest& request, ::grpc::CompletionQueue* cq) override; const ::grpc::internal::RpcMethod rpcmethod_UploadMission_; const ::grpc::internal::RpcMethod rpcmethod_CancelMissionUpload_; const ::grpc::internal::RpcMethod rpcmethod_DownloadMission_; @@ -463,6 +509,7 @@ class MissionRawService final { const ::grpc::internal::RpcMethod rpcmethod_SetCurrentMissionItem_; const ::grpc::internal::RpcMethod rpcmethod_SubscribeMissionProgress_; const ::grpc::internal::RpcMethod rpcmethod_SubscribeMissionChanged_; + const ::grpc::internal::RpcMethod rpcmethod_ImportQgroundcontrolMission_; }; static std::unique_ptr NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options = ::grpc::StubOptions()); @@ -518,6 +565,15 @@ class MissionRawService final { // // @param callback Callback to notify about change. virtual ::grpc::Status SubscribeMissionChanged(::grpc::ServerContext* context, const ::mavsdk::rpc::mission_raw::SubscribeMissionChangedRequest* request, ::grpc::ServerWriter< ::mavsdk::rpc::mission_raw::MissionChangedResponse>* writer); + // + // Import a QGroundControl missions in JSON .plan format. + // + // Supported: + // - Waypoints + // - Survey + // Not supported: + // - Structure Scan + virtual ::grpc::Status ImportQgroundcontrolMission(::grpc::ServerContext* context, const ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest* request, ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse* response); }; template class WithAsyncMethod_UploadMission : public BaseClass { @@ -719,7 +775,27 @@ class MissionRawService final { ::grpc::Service::RequestAsyncServerStreaming(9, context, request, writer, new_call_cq, notification_cq, tag); } }; - typedef WithAsyncMethod_UploadMission > > > > > > > > > AsyncService; + template + class WithAsyncMethod_ImportQgroundcontrolMission : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) {} + public: + WithAsyncMethod_ImportQgroundcontrolMission() { + ::grpc::Service::MarkMethodAsync(10); + } + ~WithAsyncMethod_ImportQgroundcontrolMission() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status ImportQgroundcontrolMission(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest* /*request*/, ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse* /*response*/) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestImportQgroundcontrolMission(::grpc::ServerContext* context, ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest* request, ::grpc::ServerAsyncResponseWriter< ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse>* 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); + } + }; + typedef WithAsyncMethod_UploadMission > > > > > > > > > > AsyncService; template class ExperimentalWithCallbackMethod_UploadMission : public BaseClass { private: @@ -1172,11 +1248,58 @@ class MissionRawService final { #endif { return nullptr; } }; + template + class ExperimentalWithCallbackMethod_ImportQgroundcontrolMission : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) {} + public: + ExperimentalWithCallbackMethod_ImportQgroundcontrolMission() { + #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL + ::grpc::Service:: + #else + ::grpc::Service::experimental(). + #endif + MarkMethodCallback(10, + new ::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest, ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse>( + [this]( + #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL + ::grpc::CallbackServerContext* + #else + ::grpc::experimental::CallbackServerContext* + #endif + context, const ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest* request, ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse* response) { return this->ImportQgroundcontrolMission(context, request, response); }));} + void SetMessageAllocatorFor_ImportQgroundcontrolMission( + ::grpc::experimental::MessageAllocator< ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest, ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse>* allocator) { + #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL + ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(10); + #else + ::grpc::internal::MethodHandler* const handler = ::grpc::Service::experimental().GetHandler(10); + #endif + static_cast<::grpc::internal::CallbackUnaryHandler< ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest, ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse>*>(handler) + ->SetMessageAllocator(allocator); + } + ~ExperimentalWithCallbackMethod_ImportQgroundcontrolMission() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status ImportQgroundcontrolMission(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest* /*request*/, ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse* /*response*/) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL + virtual ::grpc::ServerUnaryReactor* ImportQgroundcontrolMission( + ::grpc::CallbackServerContext* /*context*/, const ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest* /*request*/, ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse* /*response*/) + #else + virtual ::grpc::experimental::ServerUnaryReactor* ImportQgroundcontrolMission( + ::grpc::experimental::CallbackServerContext* /*context*/, const ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest* /*request*/, ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse* /*response*/) + #endif + { return nullptr; } + }; #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL - typedef ExperimentalWithCallbackMethod_UploadMission > > > > > > > > > CallbackService; + typedef ExperimentalWithCallbackMethod_UploadMission > > > > > > > > > > CallbackService; #endif - typedef ExperimentalWithCallbackMethod_UploadMission > > > > > > > > > ExperimentalCallbackService; + typedef ExperimentalWithCallbackMethod_UploadMission > > > > > > > > > > ExperimentalCallbackService; template class WithGenericMethod_UploadMission : public BaseClass { private: @@ -1348,6 +1471,23 @@ class MissionRawService final { } }; template + class WithGenericMethod_ImportQgroundcontrolMission : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) {} + public: + WithGenericMethod_ImportQgroundcontrolMission() { + ::grpc::Service::MarkMethodGeneric(10); + } + ~WithGenericMethod_ImportQgroundcontrolMission() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status ImportQgroundcontrolMission(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest* /*request*/, ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse* /*response*/) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + }; + template class WithRawMethod_UploadMission : public BaseClass { private: void BaseClassMustBeDerivedFromService(const Service* /*service*/) {} @@ -1548,6 +1688,26 @@ class MissionRawService final { } }; template + class WithRawMethod_ImportQgroundcontrolMission : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) {} + public: + WithRawMethod_ImportQgroundcontrolMission() { + ::grpc::Service::MarkMethodRaw(10); + } + ~WithRawMethod_ImportQgroundcontrolMission() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status ImportQgroundcontrolMission(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest* /*request*/, ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse* /*response*/) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + void RequestImportQgroundcontrolMission(::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 ExperimentalWithRawCallbackMethod_UploadMission : public BaseClass { private: void BaseClassMustBeDerivedFromService(const Service* /*service*/) {} @@ -1928,6 +2088,44 @@ class MissionRawService final { { return nullptr; } }; template + class ExperimentalWithRawCallbackMethod_ImportQgroundcontrolMission : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) {} + public: + ExperimentalWithRawCallbackMethod_ImportQgroundcontrolMission() { + #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL + ::grpc::Service:: + #else + ::grpc::Service::experimental(). + #endif + MarkMethodRawCallback(10, + new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>( + [this]( + #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL + ::grpc::CallbackServerContext* + #else + ::grpc::experimental::CallbackServerContext* + #endif + context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->ImportQgroundcontrolMission(context, request, response); })); + } + ~ExperimentalWithRawCallbackMethod_ImportQgroundcontrolMission() override { + BaseClassMustBeDerivedFromService(this); + } + // disable synchronous version of this method + ::grpc::Status ImportQgroundcontrolMission(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest* /*request*/, ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse* /*response*/) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL + virtual ::grpc::ServerUnaryReactor* ImportQgroundcontrolMission( + ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/) + #else + virtual ::grpc::experimental::ServerUnaryReactor* ImportQgroundcontrolMission( + ::grpc::experimental::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/) + #endif + { return nullptr; } + }; + template class WithStreamedUnaryMethod_UploadMission : public BaseClass { private: void BaseClassMustBeDerivedFromService(const Service* /*service*/) {} @@ -2143,7 +2341,34 @@ class MissionRawService final { // replace default version of method with streamed unary virtual ::grpc::Status StreamedSetCurrentMissionItem(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::mavsdk::rpc::mission_raw::SetCurrentMissionItemRequest,::mavsdk::rpc::mission_raw::SetCurrentMissionItemResponse>* server_unary_streamer) = 0; }; - typedef WithStreamedUnaryMethod_UploadMission > > > > > > > StreamedUnaryService; + template + class WithStreamedUnaryMethod_ImportQgroundcontrolMission : public BaseClass { + private: + void BaseClassMustBeDerivedFromService(const Service* /*service*/) {} + public: + WithStreamedUnaryMethod_ImportQgroundcontrolMission() { + ::grpc::Service::MarkMethodStreamed(10, + new ::grpc::internal::StreamedUnaryHandler< + ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest, ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse>( + [this](::grpc::ServerContext* context, + ::grpc::ServerUnaryStreamer< + ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest, ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse>* streamer) { + return this->StreamedImportQgroundcontrolMission(context, + streamer); + })); + } + ~WithStreamedUnaryMethod_ImportQgroundcontrolMission() override { + BaseClassMustBeDerivedFromService(this); + } + // disable regular version of this method + ::grpc::Status ImportQgroundcontrolMission(::grpc::ServerContext* /*context*/, const ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest* /*request*/, ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse* /*response*/) override { + abort(); + return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, ""); + } + // replace default version of method with streamed unary + virtual ::grpc::Status StreamedImportQgroundcontrolMission(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest,::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse>* server_unary_streamer) = 0; + }; + typedef WithStreamedUnaryMethod_UploadMission > > > > > > > > StreamedUnaryService; template class WithSplitStreamingMethod_SubscribeMissionProgress : public BaseClass { private: @@ -2199,7 +2424,7 @@ class MissionRawService final { virtual ::grpc::Status StreamedSubscribeMissionChanged(::grpc::ServerContext* context, ::grpc::ServerSplitStreamer< ::mavsdk::rpc::mission_raw::SubscribeMissionChangedRequest,::mavsdk::rpc::mission_raw::MissionChangedResponse>* server_split_streamer) = 0; }; typedef WithSplitStreamingMethod_SubscribeMissionProgress > SplitStreamedService; - typedef WithStreamedUnaryMethod_UploadMission > > > > > > > > > StreamedService; + typedef WithStreamedUnaryMethod_UploadMission > > > > > > > > > > StreamedService; }; } // namespace mission_raw diff --git a/src/mavsdk_server/src/generated/mission_raw/mission_raw.pb.cc b/src/mavsdk_server/src/generated/mission_raw/mission_raw.pb.cc index 63f013e78b..25461021c5 100644 --- a/src/mavsdk_server/src/generated/mission_raw/mission_raw.pb.cc +++ b/src/mavsdk_server/src/generated/mission_raw/mission_raw.pb.cc @@ -252,6 +252,31 @@ struct MissionChangedResponseDefaultTypeInternal { }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT MissionChangedResponseDefaultTypeInternal _MissionChangedResponse_default_instance_; +constexpr ImportQgroundcontrolMissionRequest::ImportQgroundcontrolMissionRequest( + ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized) + : qgc_plan_path_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string){} +struct ImportQgroundcontrolMissionRequestDefaultTypeInternal { + constexpr ImportQgroundcontrolMissionRequestDefaultTypeInternal() + : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {} + ~ImportQgroundcontrolMissionRequestDefaultTypeInternal() {} + union { + ImportQgroundcontrolMissionRequest _instance; + }; +}; +PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT ImportQgroundcontrolMissionRequestDefaultTypeInternal _ImportQgroundcontrolMissionRequest_default_instance_; +constexpr ImportQgroundcontrolMissionResponse::ImportQgroundcontrolMissionResponse( + ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized) + : mission_raw_result_(nullptr) + , mission_import_data_(nullptr){} +struct ImportQgroundcontrolMissionResponseDefaultTypeInternal { + constexpr ImportQgroundcontrolMissionResponseDefaultTypeInternal() + : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {} + ~ImportQgroundcontrolMissionResponseDefaultTypeInternal() {} + union { + ImportQgroundcontrolMissionResponse _instance; + }; +}; +PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT ImportQgroundcontrolMissionResponseDefaultTypeInternal _ImportQgroundcontrolMissionResponse_default_instance_; constexpr MissionProgress::MissionProgress( ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized) : current_(0) @@ -289,6 +314,20 @@ struct MissionItemDefaultTypeInternal { }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT MissionItemDefaultTypeInternal _MissionItem_default_instance_; +constexpr MissionImportData::MissionImportData( + ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized) + : mission_items_() + , geofence_items_() + , rally_items_(){} +struct MissionImportDataDefaultTypeInternal { + constexpr MissionImportDataDefaultTypeInternal() + : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {} + ~MissionImportDataDefaultTypeInternal() {} + union { + MissionImportData _instance; + }; +}; +PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT MissionImportDataDefaultTypeInternal _MissionImportData_default_instance_; constexpr MissionRawResult::MissionRawResult( ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized) : result_str_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string) @@ -306,7 +345,7 @@ PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT MissionRawResultDefaultTypeInte } // namespace mission_raw } // namespace rpc } // namespace mavsdk -static ::PROTOBUF_NAMESPACE_ID::Metadata file_level_metadata_mission_5fraw_2fmission_5fraw_2eproto[23]; +static ::PROTOBUF_NAMESPACE_ID::Metadata file_level_metadata_mission_5fraw_2fmission_5fraw_2eproto[26]; static const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* file_level_enum_descriptors_mission_5fraw_2fmission_5fraw_2eproto[1]; static constexpr ::PROTOBUF_NAMESPACE_ID::ServiceDescriptor const** file_level_service_descriptors_mission_5fraw_2fmission_5fraw_2eproto = nullptr; @@ -425,6 +464,19 @@ const ::PROTOBUF_NAMESPACE_ID::uint32 TableStruct_mission_5fraw_2fmission_5fraw_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::mavsdk::rpc::mission_raw::MissionChangedResponse, mission_changed_), ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + PROTOBUF_FIELD_OFFSET(::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest, qgc_plan_path_), + ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + PROTOBUF_FIELD_OFFSET(::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse, mission_raw_result_), + PROTOBUF_FIELD_OFFSET(::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse, mission_import_data_), + ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::mavsdk::rpc::mission_raw::MissionProgress, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ @@ -450,6 +502,14 @@ const ::PROTOBUF_NAMESPACE_ID::uint32 TableStruct_mission_5fraw_2fmission_5fraw_ PROTOBUF_FIELD_OFFSET(::mavsdk::rpc::mission_raw::MissionItem, z_), PROTOBUF_FIELD_OFFSET(::mavsdk::rpc::mission_raw::MissionItem, mission_type_), ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::mavsdk::rpc::mission_raw::MissionImportData, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + PROTOBUF_FIELD_OFFSET(::mavsdk::rpc::mission_raw::MissionImportData, mission_items_), + PROTOBUF_FIELD_OFFSET(::mavsdk::rpc::mission_raw::MissionImportData, geofence_items_), + PROTOBUF_FIELD_OFFSET(::mavsdk::rpc::mission_raw::MissionImportData, rally_items_), + ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::mavsdk::rpc::mission_raw::MissionRawResult, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ @@ -478,9 +538,12 @@ static const ::PROTOBUF_NAMESPACE_ID::internal::MigrationSchema schemas[] PROTOB { 96, -1, sizeof(::mavsdk::rpc::mission_raw::MissionProgressResponse)}, { 102, -1, sizeof(::mavsdk::rpc::mission_raw::SubscribeMissionChangedRequest)}, { 107, -1, sizeof(::mavsdk::rpc::mission_raw::MissionChangedResponse)}, - { 113, -1, sizeof(::mavsdk::rpc::mission_raw::MissionProgress)}, - { 120, -1, sizeof(::mavsdk::rpc::mission_raw::MissionItem)}, - { 138, -1, sizeof(::mavsdk::rpc::mission_raw::MissionRawResult)}, + { 113, -1, sizeof(::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest)}, + { 119, -1, sizeof(::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse)}, + { 126, -1, sizeof(::mavsdk::rpc::mission_raw::MissionProgress)}, + { 133, -1, sizeof(::mavsdk::rpc::mission_raw::MissionItem)}, + { 151, -1, sizeof(::mavsdk::rpc::mission_raw::MissionImportData)}, + { 159, -1, sizeof(::mavsdk::rpc::mission_raw::MissionRawResult)}, }; static ::PROTOBUF_NAMESPACE_ID::Message const * const file_default_instances[] = { @@ -504,8 +567,11 @@ static ::PROTOBUF_NAMESPACE_ID::Message const * const file_default_instances[] = reinterpret_cast(&::mavsdk::rpc::mission_raw::_MissionProgressResponse_default_instance_), reinterpret_cast(&::mavsdk::rpc::mission_raw::_SubscribeMissionChangedRequest_default_instance_), reinterpret_cast(&::mavsdk::rpc::mission_raw::_MissionChangedResponse_default_instance_), + reinterpret_cast(&::mavsdk::rpc::mission_raw::_ImportQgroundcontrolMissionRequest_default_instance_), + reinterpret_cast(&::mavsdk::rpc::mission_raw::_ImportQgroundcontrolMissionResponse_default_instance_), reinterpret_cast(&::mavsdk::rpc::mission_raw::_MissionProgress_default_instance_), reinterpret_cast(&::mavsdk::rpc::mission_raw::_MissionItem_default_instance_), + reinterpret_cast(&::mavsdk::rpc::mission_raw::_MissionImportData_default_instance_), reinterpret_cast(&::mavsdk::rpc::mission_raw::_MissionRawResult_default_instance_), }; @@ -545,64 +611,81 @@ const char descriptor_table_protodef_mission_5fraw_2fmission_5fraw_2eproto[] PRO "_progress\030\001 \001(\0132\'.mavsdk.rpc.mission_raw" ".MissionProgress\" \n\036SubscribeMissionChan" "gedRequest\"1\n\026MissionChangedResponse\022\027\n\017" - "mission_changed\030\001 \001(\010\"1\n\017MissionProgress" - "\022\017\n\007current\030\001 \001(\005\022\r\n\005total\030\002 \001(\005\"\330\001\n\013Mis" - "sionItem\022\013\n\003seq\030\001 \001(\r\022\r\n\005frame\030\002 \001(\r\022\017\n\007" - "command\030\003 \001(\r\022\017\n\007current\030\004 \001(\r\022\024\n\014autoco" - "ntinue\030\005 \001(\r\022\016\n\006param1\030\006 \001(\002\022\016\n\006param2\030\007" - " \001(\002\022\016\n\006param3\030\010 \001(\002\022\016\n\006param4\030\t \001(\002\022\t\n\001" - "x\030\n \001(\005\022\t\n\001y\030\013 \001(\005\022\t\n\001z\030\014 \001(\002\022\024\n\014mission" - "_type\030\r \001(\r\"\351\002\n\020MissionRawResult\022\?\n\006resu" - "lt\030\001 \001(\0162/.mavsdk.rpc.mission_raw.Missio" - "nRawResult.Result\022\022\n\nresult_str\030\002 \001(\t\"\377\001" - "\n\006Result\022\022\n\016RESULT_UNKNOWN\020\000\022\022\n\016RESULT_S" - "UCCESS\020\001\022\020\n\014RESULT_ERROR\020\002\022!\n\035RESULT_TOO" - "_MANY_MISSION_ITEMS\020\003\022\017\n\013RESULT_BUSY\020\004\022\022" - "\n\016RESULT_TIMEOUT\020\005\022\033\n\027RESULT_INVALID_ARG" - "UMENT\020\006\022\026\n\022RESULT_UNSUPPORTED\020\007\022\037\n\033RESUL" - "T_NO_MISSION_AVAILABLE\020\010\022\035\n\031RESULT_TRANS" - "FER_CANCELLED\020\t2\364\t\n\021MissionRawService\022n\n" - "\rUploadMission\022,.mavsdk.rpc.mission_raw." - "UploadMissionRequest\032-.mavsdk.rpc.missio" - "n_raw.UploadMissionResponse\"\000\022\204\001\n\023Cancel" - "MissionUpload\0222.mavsdk.rpc.mission_raw.C" - "ancelMissionUploadRequest\0323.mavsdk.rpc.m" - "ission_raw.CancelMissionUploadResponse\"\004" - "\200\265\030\001\022t\n\017DownloadMission\022..mavsdk.rpc.mis" - "sion_raw.DownloadMissionRequest\032/.mavsdk" - ".rpc.mission_raw.DownloadMissionResponse" - "\"\000\022\212\001\n\025CancelMissionDownload\0224.mavsdk.rp" - "c.mission_raw.CancelMissionDownloadReque" - "st\0325.mavsdk.rpc.mission_raw.CancelMissio" - "nDownloadResponse\"\004\200\265\030\001\022k\n\014StartMission\022" - "+.mavsdk.rpc.mission_raw.StartMissionReq" - "uest\032,.mavsdk.rpc.mission_raw.StartMissi" - "onResponse\"\000\022k\n\014PauseMission\022+.mavsdk.rp" - "c.mission_raw.PauseMissionRequest\032,.mavs" - "dk.rpc.mission_raw.PauseMissionResponse\"" - "\000\022k\n\014ClearMission\022+.mavsdk.rpc.mission_r" - "aw.ClearMissionRequest\032,.mavsdk.rpc.miss" - "ion_raw.ClearMissionResponse\"\000\022\206\001\n\025SetCu" - "rrentMissionItem\0224.mavsdk.rpc.mission_ra" - "w.SetCurrentMissionItemRequest\0325.mavsdk." - "rpc.mission_raw.SetCurrentMissionItemRes" - "ponse\"\000\022\210\001\n\030SubscribeMissionProgress\0227.m" - "avsdk.rpc.mission_raw.SubscribeMissionPr" - "ogressRequest\032/.mavsdk.rpc.mission_raw.M" - "issionProgressResponse\"\0000\001\022\211\001\n\027Subscribe" - "MissionChanged\0226.mavsdk.rpc.mission_raw." - "SubscribeMissionChangedRequest\032..mavsdk." - "rpc.mission_raw.MissionChangedResponse\"\004" - "\200\265\030\0000\001B(\n\025io.mavsdk.mission_rawB\017Mission" - "RawProtob\006proto3" + "mission_changed\030\001 \001(\010\";\n\"ImportQgroundco" + "ntrolMissionRequest\022\025\n\rqgc_plan_path\030\001 \001" + "(\t\"\263\001\n#ImportQgroundcontrolMissionRespon" + "se\022D\n\022mission_raw_result\030\001 \001(\0132(.mavsdk." + "rpc.mission_raw.MissionRawResult\022F\n\023miss" + "ion_import_data\030\002 \001(\0132).mavsdk.rpc.missi" + "on_raw.MissionImportData\"1\n\017MissionProgr" + "ess\022\017\n\007current\030\001 \001(\005\022\r\n\005total\030\002 \001(\005\"\330\001\n\013" + "MissionItem\022\013\n\003seq\030\001 \001(\r\022\r\n\005frame\030\002 \001(\r\022" + "\017\n\007command\030\003 \001(\r\022\017\n\007current\030\004 \001(\r\022\024\n\014aut" + "ocontinue\030\005 \001(\r\022\016\n\006param1\030\006 \001(\002\022\016\n\006param" + "2\030\007 \001(\002\022\016\n\006param3\030\010 \001(\002\022\016\n\006param4\030\t \001(\002\022" + "\t\n\001x\030\n \001(\005\022\t\n\001y\030\013 \001(\005\022\t\n\001z\030\014 \001(\002\022\024\n\014miss" + "ion_type\030\r \001(\r\"\306\001\n\021MissionImportData\022:\n\r" + "mission_items\030\001 \003(\0132#.mavsdk.rpc.mission" + "_raw.MissionItem\022;\n\016geofence_items\030\002 \003(\013" + "2#.mavsdk.rpc.mission_raw.MissionItem\0228\n" + "\013rally_items\030\003 \003(\0132#.mavsdk.rpc.mission_" + "raw.MissionItem\"\262\003\n\020MissionRawResult\022\?\n\006" + "result\030\001 \001(\0162/.mavsdk.rpc.mission_raw.Mi" + "ssionRawResult.Result\022\022\n\nresult_str\030\002 \001(" + "\t\"\310\002\n\006Result\022\022\n\016RESULT_UNKNOWN\020\000\022\022\n\016RESU" + "LT_SUCCESS\020\001\022\020\n\014RESULT_ERROR\020\002\022!\n\035RESULT" + "_TOO_MANY_MISSION_ITEMS\020\003\022\017\n\013RESULT_BUSY" + "\020\004\022\022\n\016RESULT_TIMEOUT\020\005\022\033\n\027RESULT_INVALID" + "_ARGUMENT\020\006\022\026\n\022RESULT_UNSUPPORTED\020\007\022\037\n\033R" + "ESULT_NO_MISSION_AVAILABLE\020\010\022\035\n\031RESULT_T" + "RANSFER_CANCELLED\020\t\022\"\n\036RESULT_FAILED_TO_" + "OPEN_QGC_PLAN\020\n\022#\n\037RESULT_FAILED_TO_PARS" + "E_QGC_PLAN\020\0132\223\013\n\021MissionRawService\022n\n\rUp" + "loadMission\022,.mavsdk.rpc.mission_raw.Upl" + "oadMissionRequest\032-.mavsdk.rpc.mission_r" + "aw.UploadMissionResponse\"\000\022\204\001\n\023CancelMis" + "sionUpload\0222.mavsdk.rpc.mission_raw.Canc" + "elMissionUploadRequest\0323.mavsdk.rpc.miss" + "ion_raw.CancelMissionUploadResponse\"\004\200\265\030" + "\001\022t\n\017DownloadMission\022..mavsdk.rpc.missio" + "n_raw.DownloadMissionRequest\032/.mavsdk.rp" + "c.mission_raw.DownloadMissionResponse\"\000\022" + "\212\001\n\025CancelMissionDownload\0224.mavsdk.rpc.m" + "ission_raw.CancelMissionDownloadRequest\032" + "5.mavsdk.rpc.mission_raw.CancelMissionDo" + "wnloadResponse\"\004\200\265\030\001\022k\n\014StartMission\022+.m" + "avsdk.rpc.mission_raw.StartMissionReques" + "t\032,.mavsdk.rpc.mission_raw.StartMissionR" + "esponse\"\000\022k\n\014PauseMission\022+.mavsdk.rpc.m" + "ission_raw.PauseMissionRequest\032,.mavsdk." + "rpc.mission_raw.PauseMissionResponse\"\000\022k" + "\n\014ClearMission\022+.mavsdk.rpc.mission_raw." + "ClearMissionRequest\032,.mavsdk.rpc.mission" + "_raw.ClearMissionResponse\"\000\022\206\001\n\025SetCurre" + "ntMissionItem\0224.mavsdk.rpc.mission_raw.S" + "etCurrentMissionItemRequest\0325.mavsdk.rpc" + ".mission_raw.SetCurrentMissionItemRespon" + "se\"\000\022\210\001\n\030SubscribeMissionProgress\0227.mavs" + "dk.rpc.mission_raw.SubscribeMissionProgr" + "essRequest\032/.mavsdk.rpc.mission_raw.Miss" + "ionProgressResponse\"\0000\001\022\211\001\n\027SubscribeMis" + "sionChanged\0226.mavsdk.rpc.mission_raw.Sub" + "scribeMissionChangedRequest\032..mavsdk.rpc" + ".mission_raw.MissionChangedResponse\"\004\200\265\030" + "\0000\001\022\234\001\n\033ImportQgroundcontrolMission\022:.ma" + "vsdk.rpc.mission_raw.ImportQgroundcontro" + "lMissionRequest\032;.mavsdk.rpc.mission_raw" + ".ImportQgroundcontrolMissionResponse\"\004\200\265" + "\030\001B(\n\025io.mavsdk.mission_rawB\017MissionRawP" + "rotob\006proto3" ; static const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable*const descriptor_table_mission_5fraw_2fmission_5fraw_2eproto_deps[1] = { &::descriptor_table_mavsdk_5foptions_2eproto, }; static ::PROTOBUF_NAMESPACE_ID::internal::once_flag descriptor_table_mission_5fraw_2fmission_5fraw_2eproto_once; const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_mission_5fraw_2fmission_5fraw_2eproto = { - false, false, 3376, descriptor_table_protodef_mission_5fraw_2fmission_5fraw_2eproto, "mission_raw/mission_raw.proto", - &descriptor_table_mission_5fraw_2fmission_5fraw_2eproto_once, descriptor_table_mission_5fraw_2fmission_5fraw_2eproto_deps, 1, 23, + false, false, 4052, descriptor_table_protodef_mission_5fraw_2fmission_5fraw_2eproto, "mission_raw/mission_raw.proto", + &descriptor_table_mission_5fraw_2fmission_5fraw_2eproto_once, descriptor_table_mission_5fraw_2fmission_5fraw_2eproto_deps, 1, 26, schemas, file_default_instances, TableStruct_mission_5fraw_2fmission_5fraw_2eproto::offsets, file_level_metadata_mission_5fraw_2fmission_5fraw_2eproto, file_level_enum_descriptors_mission_5fraw_2fmission_5fraw_2eproto, file_level_service_descriptors_mission_5fraw_2fmission_5fraw_2eproto, }; @@ -633,6 +716,8 @@ bool MissionRawResult_Result_IsValid(int value) { case 7: case 8: case 9: + case 10: + case 11: return true; default: return false; @@ -650,6 +735,8 @@ constexpr MissionRawResult_Result MissionRawResult::RESULT_INVALID_ARGUMENT; constexpr MissionRawResult_Result MissionRawResult::RESULT_UNSUPPORTED; constexpr MissionRawResult_Result MissionRawResult::RESULT_NO_MISSION_AVAILABLE; constexpr MissionRawResult_Result MissionRawResult::RESULT_TRANSFER_CANCELLED; +constexpr MissionRawResult_Result MissionRawResult::RESULT_FAILED_TO_OPEN_QGC_PLAN; +constexpr MissionRawResult_Result MissionRawResult::RESULT_FAILED_TO_PARSE_QGC_PLAN; constexpr MissionRawResult_Result MissionRawResult::Result_MIN; constexpr MissionRawResult_Result MissionRawResult::Result_MAX; constexpr int MissionRawResult::Result_ARRAYSIZE; @@ -4351,82 +4438,75 @@ ::PROTOBUF_NAMESPACE_ID::Metadata MissionChangedResponse::GetMetadata() const { // =================================================================== -class MissionProgress::_Internal { +class ImportQgroundcontrolMissionRequest::_Internal { public: }; -MissionProgress::MissionProgress(::PROTOBUF_NAMESPACE_ID::Arena* arena) +ImportQgroundcontrolMissionRequest::ImportQgroundcontrolMissionRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); - // @@protoc_insertion_point(arena_constructor:mavsdk.rpc.mission_raw.MissionProgress) + // @@protoc_insertion_point(arena_constructor:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionRequest) } -MissionProgress::MissionProgress(const MissionProgress& from) +ImportQgroundcontrolMissionRequest::ImportQgroundcontrolMissionRequest(const ImportQgroundcontrolMissionRequest& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); - ::memcpy(¤t_, &from.current_, - static_cast(reinterpret_cast(&total_) - - reinterpret_cast(¤t_)) + sizeof(total_)); - // @@protoc_insertion_point(copy_constructor:mavsdk.rpc.mission_raw.MissionProgress) + qgc_plan_path_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); + if (!from._internal_qgc_plan_path().empty()) { + qgc_plan_path_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_qgc_plan_path(), + GetArena()); + } + // @@protoc_insertion_point(copy_constructor:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionRequest) } -void MissionProgress::SharedCtor() { -::memset(reinterpret_cast(this) + static_cast( - reinterpret_cast(¤t_) - reinterpret_cast(this)), - 0, static_cast(reinterpret_cast(&total_) - - reinterpret_cast(¤t_)) + sizeof(total_)); +void ImportQgroundcontrolMissionRequest::SharedCtor() { +qgc_plan_path_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } -MissionProgress::~MissionProgress() { - // @@protoc_insertion_point(destructor:mavsdk.rpc.mission_raw.MissionProgress) +ImportQgroundcontrolMissionRequest::~ImportQgroundcontrolMissionRequest() { + // @@protoc_insertion_point(destructor:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionRequest) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } -void MissionProgress::SharedDtor() { +void ImportQgroundcontrolMissionRequest::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); + qgc_plan_path_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } -void MissionProgress::ArenaDtor(void* object) { - MissionProgress* _this = reinterpret_cast< MissionProgress* >(object); +void ImportQgroundcontrolMissionRequest::ArenaDtor(void* object) { + ImportQgroundcontrolMissionRequest* _this = reinterpret_cast< ImportQgroundcontrolMissionRequest* >(object); (void)_this; } -void MissionProgress::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { +void ImportQgroundcontrolMissionRequest::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } -void MissionProgress::SetCachedSize(int size) const { +void ImportQgroundcontrolMissionRequest::SetCachedSize(int size) const { _cached_size_.Set(size); } -void MissionProgress::Clear() { -// @@protoc_insertion_point(message_clear_start:mavsdk.rpc.mission_raw.MissionProgress) +void ImportQgroundcontrolMissionRequest::Clear() { +// @@protoc_insertion_point(message_clear_start:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionRequest) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; - ::memset(¤t_, 0, static_cast( - reinterpret_cast(&total_) - - reinterpret_cast(¤t_)) + sizeof(total_)); + qgc_plan_path_.ClearToEmpty(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } -const char* MissionProgress::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { +const char* ImportQgroundcontrolMissionRequest::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { - // int32 current = 1; + // string qgc_plan_path = 1; case 1: - if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { - current_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); - CHK_(ptr); - } else goto handle_unusual; - continue; - // int32 total = 2; - case 2: - if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { - total_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { + auto str = _internal_mutable_qgc_plan_path(); + ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); + CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionRequest.qgc_plan_path")); CHK_(ptr); } else goto handle_unusual; continue; @@ -4452,52 +4532,43 @@ const char* MissionProgress::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPAC #undef CHK_ } -::PROTOBUF_NAMESPACE_ID::uint8* MissionProgress::_InternalSerialize( +::PROTOBUF_NAMESPACE_ID::uint8* ImportQgroundcontrolMissionRequest::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { - // @@protoc_insertion_point(serialize_to_array_start:mavsdk.rpc.mission_raw.MissionProgress) + // @@protoc_insertion_point(serialize_to_array_start:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionRequest) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; - // int32 current = 1; - if (this->current() != 0) { - target = stream->EnsureSpace(target); - target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(1, this->_internal_current(), target); - } - - // int32 total = 2; - if (this->total() != 0) { - target = stream->EnsureSpace(target); - target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(2, this->_internal_total(), target); + // string qgc_plan_path = 1; + if (this->qgc_plan_path().size() > 0) { + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( + this->_internal_qgc_plan_path().data(), static_cast(this->_internal_qgc_plan_path().length()), + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, + "mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionRequest.qgc_plan_path"); + target = stream->WriteStringMaybeAliased( + 1, this->_internal_qgc_plan_path(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } - // @@protoc_insertion_point(serialize_to_array_end:mavsdk.rpc.mission_raw.MissionProgress) + // @@protoc_insertion_point(serialize_to_array_end:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionRequest) return target; } -size_t MissionProgress::ByteSizeLong() const { -// @@protoc_insertion_point(message_byte_size_start:mavsdk.rpc.mission_raw.MissionProgress) +size_t ImportQgroundcontrolMissionRequest::ByteSizeLong() const { +// @@protoc_insertion_point(message_byte_size_start:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionRequest) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; - // int32 current = 1; - if (this->current() != 0) { - total_size += 1 + - ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( - this->_internal_current()); - } - - // int32 total = 2; - if (this->total() != 0) { + // string qgc_plan_path = 1; + if (this->qgc_plan_path().size() > 0) { total_size += 1 + - ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( - this->_internal_total()); + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( + this->_internal_qgc_plan_path()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { @@ -4509,225 +4580,164 @@ size_t MissionProgress::ByteSizeLong() const { return total_size; } -void MissionProgress::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { -// @@protoc_insertion_point(generalized_merge_from_start:mavsdk.rpc.mission_raw.MissionProgress) +void ImportQgroundcontrolMissionRequest::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { +// @@protoc_insertion_point(generalized_merge_from_start:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionRequest) GOOGLE_DCHECK_NE(&from, this); - const MissionProgress* source = - ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( + const ImportQgroundcontrolMissionRequest* source = + ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { - // @@protoc_insertion_point(generalized_merge_from_cast_fail:mavsdk.rpc.mission_raw.MissionProgress) + // @@protoc_insertion_point(generalized_merge_from_cast_fail:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionRequest) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { - // @@protoc_insertion_point(generalized_merge_from_cast_success:mavsdk.rpc.mission_raw.MissionProgress) + // @@protoc_insertion_point(generalized_merge_from_cast_success:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionRequest) MergeFrom(*source); } } -void MissionProgress::MergeFrom(const MissionProgress& from) { -// @@protoc_insertion_point(class_specific_merge_from_start:mavsdk.rpc.mission_raw.MissionProgress) +void ImportQgroundcontrolMissionRequest::MergeFrom(const ImportQgroundcontrolMissionRequest& from) { +// @@protoc_insertion_point(class_specific_merge_from_start:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionRequest) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; - if (from.current() != 0) { - _internal_set_current(from._internal_current()); - } - if (from.total() != 0) { - _internal_set_total(from._internal_total()); + if (from.qgc_plan_path().size() > 0) { + _internal_set_qgc_plan_path(from._internal_qgc_plan_path()); } } -void MissionProgress::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { -// @@protoc_insertion_point(generalized_copy_from_start:mavsdk.rpc.mission_raw.MissionProgress) +void ImportQgroundcontrolMissionRequest::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { +// @@protoc_insertion_point(generalized_copy_from_start:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionRequest) if (&from == this) return; Clear(); MergeFrom(from); } -void MissionProgress::CopyFrom(const MissionProgress& from) { -// @@protoc_insertion_point(class_specific_copy_from_start:mavsdk.rpc.mission_raw.MissionProgress) +void ImportQgroundcontrolMissionRequest::CopyFrom(const ImportQgroundcontrolMissionRequest& from) { +// @@protoc_insertion_point(class_specific_copy_from_start:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionRequest) if (&from == this) return; Clear(); MergeFrom(from); } -bool MissionProgress::IsInitialized() const { +bool ImportQgroundcontrolMissionRequest::IsInitialized() const { return true; } -void MissionProgress::InternalSwap(MissionProgress* other) { +void ImportQgroundcontrolMissionRequest::InternalSwap(ImportQgroundcontrolMissionRequest* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); - ::PROTOBUF_NAMESPACE_ID::internal::memswap< - PROTOBUF_FIELD_OFFSET(MissionProgress, total_) - + sizeof(MissionProgress::total_) - - PROTOBUF_FIELD_OFFSET(MissionProgress, current_)>( - reinterpret_cast(¤t_), - reinterpret_cast(&other->current_)); + qgc_plan_path_.Swap(&other->qgc_plan_path_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } -::PROTOBUF_NAMESPACE_ID::Metadata MissionProgress::GetMetadata() const { +::PROTOBUF_NAMESPACE_ID::Metadata ImportQgroundcontrolMissionRequest::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== -class MissionItem::_Internal { +class ImportQgroundcontrolMissionResponse::_Internal { public: + static const ::mavsdk::rpc::mission_raw::MissionRawResult& mission_raw_result(const ImportQgroundcontrolMissionResponse* msg); + static const ::mavsdk::rpc::mission_raw::MissionImportData& mission_import_data(const ImportQgroundcontrolMissionResponse* msg); }; -MissionItem::MissionItem(::PROTOBUF_NAMESPACE_ID::Arena* arena) +const ::mavsdk::rpc::mission_raw::MissionRawResult& +ImportQgroundcontrolMissionResponse::_Internal::mission_raw_result(const ImportQgroundcontrolMissionResponse* msg) { + return *msg->mission_raw_result_; +} +const ::mavsdk::rpc::mission_raw::MissionImportData& +ImportQgroundcontrolMissionResponse::_Internal::mission_import_data(const ImportQgroundcontrolMissionResponse* msg) { + return *msg->mission_import_data_; +} +ImportQgroundcontrolMissionResponse::ImportQgroundcontrolMissionResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); - // @@protoc_insertion_point(arena_constructor:mavsdk.rpc.mission_raw.MissionItem) + // @@protoc_insertion_point(arena_constructor:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionResponse) } -MissionItem::MissionItem(const MissionItem& from) +ImportQgroundcontrolMissionResponse::ImportQgroundcontrolMissionResponse(const ImportQgroundcontrolMissionResponse& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); - ::memcpy(&seq_, &from.seq_, - static_cast(reinterpret_cast(&mission_type_) - - reinterpret_cast(&seq_)) + sizeof(mission_type_)); - // @@protoc_insertion_point(copy_constructor:mavsdk.rpc.mission_raw.MissionItem) + if (from._internal_has_mission_raw_result()) { + mission_raw_result_ = new ::mavsdk::rpc::mission_raw::MissionRawResult(*from.mission_raw_result_); + } else { + mission_raw_result_ = nullptr; + } + if (from._internal_has_mission_import_data()) { + mission_import_data_ = new ::mavsdk::rpc::mission_raw::MissionImportData(*from.mission_import_data_); + } else { + mission_import_data_ = nullptr; + } + // @@protoc_insertion_point(copy_constructor:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionResponse) } -void MissionItem::SharedCtor() { +void ImportQgroundcontrolMissionResponse::SharedCtor() { ::memset(reinterpret_cast(this) + static_cast( - reinterpret_cast(&seq_) - reinterpret_cast(this)), - 0, static_cast(reinterpret_cast(&mission_type_) - - reinterpret_cast(&seq_)) + sizeof(mission_type_)); + reinterpret_cast(&mission_raw_result_) - reinterpret_cast(this)), + 0, static_cast(reinterpret_cast(&mission_import_data_) - + reinterpret_cast(&mission_raw_result_)) + sizeof(mission_import_data_)); } -MissionItem::~MissionItem() { - // @@protoc_insertion_point(destructor:mavsdk.rpc.mission_raw.MissionItem) +ImportQgroundcontrolMissionResponse::~ImportQgroundcontrolMissionResponse() { + // @@protoc_insertion_point(destructor:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionResponse) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } -void MissionItem::SharedDtor() { +void ImportQgroundcontrolMissionResponse::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); + if (this != internal_default_instance()) delete mission_raw_result_; + if (this != internal_default_instance()) delete mission_import_data_; } -void MissionItem::ArenaDtor(void* object) { - MissionItem* _this = reinterpret_cast< MissionItem* >(object); +void ImportQgroundcontrolMissionResponse::ArenaDtor(void* object) { + ImportQgroundcontrolMissionResponse* _this = reinterpret_cast< ImportQgroundcontrolMissionResponse* >(object); (void)_this; } -void MissionItem::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { +void ImportQgroundcontrolMissionResponse::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } -void MissionItem::SetCachedSize(int size) const { +void ImportQgroundcontrolMissionResponse::SetCachedSize(int size) const { _cached_size_.Set(size); } -void MissionItem::Clear() { -// @@protoc_insertion_point(message_clear_start:mavsdk.rpc.mission_raw.MissionItem) +void ImportQgroundcontrolMissionResponse::Clear() { +// @@protoc_insertion_point(message_clear_start:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionResponse) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; - ::memset(&seq_, 0, static_cast( - reinterpret_cast(&mission_type_) - - reinterpret_cast(&seq_)) + sizeof(mission_type_)); + if (GetArena() == nullptr && mission_raw_result_ != nullptr) { + delete mission_raw_result_; + } + mission_raw_result_ = nullptr; + if (GetArena() == nullptr && mission_import_data_ != nullptr) { + delete mission_import_data_; + } + mission_import_data_ = nullptr; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } -const char* MissionItem::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { +const char* ImportQgroundcontrolMissionResponse::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { - // uint32 seq = 1; + // .mavsdk.rpc.mission_raw.MissionRawResult mission_raw_result = 1; case 1: - if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { - seq_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); + if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { + ptr = ctx->ParseMessage(_internal_mutable_mission_raw_result(), ptr); CHK_(ptr); } else goto handle_unusual; continue; - // uint32 frame = 2; + // .mavsdk.rpc.mission_raw.MissionImportData mission_import_data = 2; case 2: - if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { - frame_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); - CHK_(ptr); - } else goto handle_unusual; - continue; - // uint32 command = 3; - case 3: - if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { - command_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); - CHK_(ptr); - } else goto handle_unusual; - continue; - // uint32 current = 4; - case 4: - if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { - current_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); - CHK_(ptr); - } else goto handle_unusual; - continue; - // uint32 autocontinue = 5; - case 5: - if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { - autocontinue_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); - CHK_(ptr); - } else goto handle_unusual; - continue; - // float param1 = 6; - case 6: - if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 53)) { - param1_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad(ptr); - ptr += sizeof(float); - } else goto handle_unusual; - continue; - // float param2 = 7; - case 7: - if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 61)) { - param2_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad(ptr); - ptr += sizeof(float); - } else goto handle_unusual; - continue; - // float param3 = 8; - case 8: - if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 69)) { - param3_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad(ptr); - ptr += sizeof(float); - } else goto handle_unusual; - continue; - // float param4 = 9; - case 9: - if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 77)) { - param4_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad(ptr); - ptr += sizeof(float); - } else goto handle_unusual; - continue; - // int32 x = 10; - case 10: - if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 80)) { - x_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); - CHK_(ptr); - } else goto handle_unusual; - continue; - // int32 y = 11; - case 11: - if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 88)) { - y_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); - CHK_(ptr); - } else goto handle_unusual; - continue; - // float z = 12; - case 12: - if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 101)) { - z_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad(ptr); - ptr += sizeof(float); - } else goto handle_unusual; - continue; - // uint32 mission_type = 13; - case 13: - if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 104)) { - mission_type_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); + if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { + ptr = ctx->ParseMessage(_internal_mutable_mission_import_data(), ptr); CHK_(ptr); } else goto handle_unusual; continue; @@ -4753,13 +4763,542 @@ const char* MissionItem::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID #undef CHK_ } -::PROTOBUF_NAMESPACE_ID::uint8* MissionItem::_InternalSerialize( +::PROTOBUF_NAMESPACE_ID::uint8* ImportQgroundcontrolMissionResponse::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { - // @@protoc_insertion_point(serialize_to_array_start:mavsdk.rpc.mission_raw.MissionItem) + // @@protoc_insertion_point(serialize_to_array_start:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionResponse) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; - // uint32 seq = 1; + // .mavsdk.rpc.mission_raw.MissionRawResult mission_raw_result = 1; + if (this->has_mission_raw_result()) { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: + InternalWriteMessage( + 1, _Internal::mission_raw_result(this), target, stream); + } + + // .mavsdk.rpc.mission_raw.MissionImportData mission_import_data = 2; + if (this->has_mission_import_data()) { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: + InternalWriteMessage( + 2, _Internal::mission_import_data(this), target, stream); + } + + if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); + } + // @@protoc_insertion_point(serialize_to_array_end:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionResponse) + return target; +} + +size_t ImportQgroundcontrolMissionResponse::ByteSizeLong() const { +// @@protoc_insertion_point(message_byte_size_start:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionResponse) + size_t total_size = 0; + + ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + // .mavsdk.rpc.mission_raw.MissionRawResult mission_raw_result = 1; + if (this->has_mission_raw_result()) { + total_size += 1 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( + *mission_raw_result_); + } + + // .mavsdk.rpc.mission_raw.MissionImportData mission_import_data = 2; + if (this->has_mission_import_data()) { + total_size += 1 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( + *mission_import_data_); + } + + if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { + return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( + _internal_metadata_, total_size, &_cached_size_); + } + int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); + SetCachedSize(cached_size); + return total_size; +} + +void ImportQgroundcontrolMissionResponse::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { +// @@protoc_insertion_point(generalized_merge_from_start:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionResponse) + GOOGLE_DCHECK_NE(&from, this); + const ImportQgroundcontrolMissionResponse* source = + ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( + &from); + if (source == nullptr) { + // @@protoc_insertion_point(generalized_merge_from_cast_fail:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionResponse) + ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); + } else { + // @@protoc_insertion_point(generalized_merge_from_cast_success:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionResponse) + MergeFrom(*source); + } +} + +void ImportQgroundcontrolMissionResponse::MergeFrom(const ImportQgroundcontrolMissionResponse& from) { +// @@protoc_insertion_point(class_specific_merge_from_start:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionResponse) + GOOGLE_DCHECK_NE(&from, this); + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + if (from.has_mission_raw_result()) { + _internal_mutable_mission_raw_result()->::mavsdk::rpc::mission_raw::MissionRawResult::MergeFrom(from._internal_mission_raw_result()); + } + if (from.has_mission_import_data()) { + _internal_mutable_mission_import_data()->::mavsdk::rpc::mission_raw::MissionImportData::MergeFrom(from._internal_mission_import_data()); + } +} + +void ImportQgroundcontrolMissionResponse::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { +// @@protoc_insertion_point(generalized_copy_from_start:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionResponse) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +void ImportQgroundcontrolMissionResponse::CopyFrom(const ImportQgroundcontrolMissionResponse& from) { +// @@protoc_insertion_point(class_specific_copy_from_start:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionResponse) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool ImportQgroundcontrolMissionResponse::IsInitialized() const { + return true; +} + +void ImportQgroundcontrolMissionResponse::InternalSwap(ImportQgroundcontrolMissionResponse* other) { + using std::swap; + _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); + ::PROTOBUF_NAMESPACE_ID::internal::memswap< + PROTOBUF_FIELD_OFFSET(ImportQgroundcontrolMissionResponse, mission_import_data_) + + sizeof(ImportQgroundcontrolMissionResponse::mission_import_data_) + - PROTOBUF_FIELD_OFFSET(ImportQgroundcontrolMissionResponse, mission_raw_result_)>( + reinterpret_cast(&mission_raw_result_), + reinterpret_cast(&other->mission_raw_result_)); +} + +::PROTOBUF_NAMESPACE_ID::Metadata ImportQgroundcontrolMissionResponse::GetMetadata() const { + return GetMetadataStatic(); +} + + +// =================================================================== + +class MissionProgress::_Internal { + public: +}; + +MissionProgress::MissionProgress(::PROTOBUF_NAMESPACE_ID::Arena* arena) + : ::PROTOBUF_NAMESPACE_ID::Message(arena) { + SharedCtor(); + RegisterArenaDtor(arena); + // @@protoc_insertion_point(arena_constructor:mavsdk.rpc.mission_raw.MissionProgress) +} +MissionProgress::MissionProgress(const MissionProgress& from) + : ::PROTOBUF_NAMESPACE_ID::Message() { + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + ::memcpy(¤t_, &from.current_, + static_cast(reinterpret_cast(&total_) - + reinterpret_cast(¤t_)) + sizeof(total_)); + // @@protoc_insertion_point(copy_constructor:mavsdk.rpc.mission_raw.MissionProgress) +} + +void MissionProgress::SharedCtor() { +::memset(reinterpret_cast(this) + static_cast( + reinterpret_cast(¤t_) - reinterpret_cast(this)), + 0, static_cast(reinterpret_cast(&total_) - + reinterpret_cast(¤t_)) + sizeof(total_)); +} + +MissionProgress::~MissionProgress() { + // @@protoc_insertion_point(destructor:mavsdk.rpc.mission_raw.MissionProgress) + SharedDtor(); + _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); +} + +void MissionProgress::SharedDtor() { + GOOGLE_DCHECK(GetArena() == nullptr); +} + +void MissionProgress::ArenaDtor(void* object) { + MissionProgress* _this = reinterpret_cast< MissionProgress* >(object); + (void)_this; +} +void MissionProgress::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { +} +void MissionProgress::SetCachedSize(int size) const { + _cached_size_.Set(size); +} + +void MissionProgress::Clear() { +// @@protoc_insertion_point(message_clear_start:mavsdk.rpc.mission_raw.MissionProgress) + ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + ::memset(¤t_, 0, static_cast( + reinterpret_cast(&total_) - + reinterpret_cast(¤t_)) + sizeof(total_)); + _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); +} + +const char* MissionProgress::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { +#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure + while (!ctx->Done(&ptr)) { + ::PROTOBUF_NAMESPACE_ID::uint32 tag; + ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); + CHK_(ptr); + switch (tag >> 3) { + // int32 current = 1; + case 1: + if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { + current_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + } else goto handle_unusual; + continue; + // int32 total = 2; + case 2: + if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { + total_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + } else goto handle_unusual; + continue; + default: { + handle_unusual: + if ((tag & 7) == 4 || tag == 0) { + ctx->SetLastTag(tag); + goto success; + } + ptr = UnknownFieldParse(tag, + _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), + ptr, ctx); + CHK_(ptr != nullptr); + continue; + } + } // switch + } // while +success: + return ptr; +failure: + ptr = nullptr; + goto success; +#undef CHK_ +} + +::PROTOBUF_NAMESPACE_ID::uint8* MissionProgress::_InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { + // @@protoc_insertion_point(serialize_to_array_start:mavsdk.rpc.mission_raw.MissionProgress) + ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // int32 current = 1; + if (this->current() != 0) { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(1, this->_internal_current(), target); + } + + // int32 total = 2; + if (this->total() != 0) { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(2, this->_internal_total(), target); + } + + if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); + } + // @@protoc_insertion_point(serialize_to_array_end:mavsdk.rpc.mission_raw.MissionProgress) + return target; +} + +size_t MissionProgress::ByteSizeLong() const { +// @@protoc_insertion_point(message_byte_size_start:mavsdk.rpc.mission_raw.MissionProgress) + size_t total_size = 0; + + ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + // int32 current = 1; + if (this->current() != 0) { + total_size += 1 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( + this->_internal_current()); + } + + // int32 total = 2; + if (this->total() != 0) { + total_size += 1 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( + this->_internal_total()); + } + + if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { + return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( + _internal_metadata_, total_size, &_cached_size_); + } + int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); + SetCachedSize(cached_size); + return total_size; +} + +void MissionProgress::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { +// @@protoc_insertion_point(generalized_merge_from_start:mavsdk.rpc.mission_raw.MissionProgress) + GOOGLE_DCHECK_NE(&from, this); + const MissionProgress* source = + ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( + &from); + if (source == nullptr) { + // @@protoc_insertion_point(generalized_merge_from_cast_fail:mavsdk.rpc.mission_raw.MissionProgress) + ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); + } else { + // @@protoc_insertion_point(generalized_merge_from_cast_success:mavsdk.rpc.mission_raw.MissionProgress) + MergeFrom(*source); + } +} + +void MissionProgress::MergeFrom(const MissionProgress& from) { +// @@protoc_insertion_point(class_specific_merge_from_start:mavsdk.rpc.mission_raw.MissionProgress) + GOOGLE_DCHECK_NE(&from, this); + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + if (from.current() != 0) { + _internal_set_current(from._internal_current()); + } + if (from.total() != 0) { + _internal_set_total(from._internal_total()); + } +} + +void MissionProgress::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { +// @@protoc_insertion_point(generalized_copy_from_start:mavsdk.rpc.mission_raw.MissionProgress) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +void MissionProgress::CopyFrom(const MissionProgress& from) { +// @@protoc_insertion_point(class_specific_copy_from_start:mavsdk.rpc.mission_raw.MissionProgress) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool MissionProgress::IsInitialized() const { + return true; +} + +void MissionProgress::InternalSwap(MissionProgress* other) { + using std::swap; + _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); + ::PROTOBUF_NAMESPACE_ID::internal::memswap< + PROTOBUF_FIELD_OFFSET(MissionProgress, total_) + + sizeof(MissionProgress::total_) + - PROTOBUF_FIELD_OFFSET(MissionProgress, current_)>( + reinterpret_cast(¤t_), + reinterpret_cast(&other->current_)); +} + +::PROTOBUF_NAMESPACE_ID::Metadata MissionProgress::GetMetadata() const { + return GetMetadataStatic(); +} + + +// =================================================================== + +class MissionItem::_Internal { + public: +}; + +MissionItem::MissionItem(::PROTOBUF_NAMESPACE_ID::Arena* arena) + : ::PROTOBUF_NAMESPACE_ID::Message(arena) { + SharedCtor(); + RegisterArenaDtor(arena); + // @@protoc_insertion_point(arena_constructor:mavsdk.rpc.mission_raw.MissionItem) +} +MissionItem::MissionItem(const MissionItem& from) + : ::PROTOBUF_NAMESPACE_ID::Message() { + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + ::memcpy(&seq_, &from.seq_, + static_cast(reinterpret_cast(&mission_type_) - + reinterpret_cast(&seq_)) + sizeof(mission_type_)); + // @@protoc_insertion_point(copy_constructor:mavsdk.rpc.mission_raw.MissionItem) +} + +void MissionItem::SharedCtor() { +::memset(reinterpret_cast(this) + static_cast( + reinterpret_cast(&seq_) - reinterpret_cast(this)), + 0, static_cast(reinterpret_cast(&mission_type_) - + reinterpret_cast(&seq_)) + sizeof(mission_type_)); +} + +MissionItem::~MissionItem() { + // @@protoc_insertion_point(destructor:mavsdk.rpc.mission_raw.MissionItem) + SharedDtor(); + _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); +} + +void MissionItem::SharedDtor() { + GOOGLE_DCHECK(GetArena() == nullptr); +} + +void MissionItem::ArenaDtor(void* object) { + MissionItem* _this = reinterpret_cast< MissionItem* >(object); + (void)_this; +} +void MissionItem::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { +} +void MissionItem::SetCachedSize(int size) const { + _cached_size_.Set(size); +} + +void MissionItem::Clear() { +// @@protoc_insertion_point(message_clear_start:mavsdk.rpc.mission_raw.MissionItem) + ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + ::memset(&seq_, 0, static_cast( + reinterpret_cast(&mission_type_) - + reinterpret_cast(&seq_)) + sizeof(mission_type_)); + _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); +} + +const char* MissionItem::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { +#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure + while (!ctx->Done(&ptr)) { + ::PROTOBUF_NAMESPACE_ID::uint32 tag; + ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); + CHK_(ptr); + switch (tag >> 3) { + // uint32 seq = 1; + case 1: + if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { + seq_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); + CHK_(ptr); + } else goto handle_unusual; + continue; + // uint32 frame = 2; + case 2: + if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { + frame_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); + CHK_(ptr); + } else goto handle_unusual; + continue; + // uint32 command = 3; + case 3: + if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { + command_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); + CHK_(ptr); + } else goto handle_unusual; + continue; + // uint32 current = 4; + case 4: + if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { + current_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); + CHK_(ptr); + } else goto handle_unusual; + continue; + // uint32 autocontinue = 5; + case 5: + if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { + autocontinue_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); + CHK_(ptr); + } else goto handle_unusual; + continue; + // float param1 = 6; + case 6: + if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 53)) { + param1_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad(ptr); + ptr += sizeof(float); + } else goto handle_unusual; + continue; + // float param2 = 7; + case 7: + if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 61)) { + param2_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad(ptr); + ptr += sizeof(float); + } else goto handle_unusual; + continue; + // float param3 = 8; + case 8: + if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 69)) { + param3_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad(ptr); + ptr += sizeof(float); + } else goto handle_unusual; + continue; + // float param4 = 9; + case 9: + if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 77)) { + param4_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad(ptr); + ptr += sizeof(float); + } else goto handle_unusual; + continue; + // int32 x = 10; + case 10: + if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 80)) { + x_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + } else goto handle_unusual; + continue; + // int32 y = 11; + case 11: + if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 88)) { + y_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); + CHK_(ptr); + } else goto handle_unusual; + continue; + // float z = 12; + case 12: + if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 101)) { + z_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad(ptr); + ptr += sizeof(float); + } else goto handle_unusual; + continue; + // uint32 mission_type = 13; + case 13: + if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 104)) { + mission_type_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); + CHK_(ptr); + } else goto handle_unusual; + continue; + default: { + handle_unusual: + if ((tag & 7) == 4 || tag == 0) { + ctx->SetLastTag(tag); + goto success; + } + ptr = UnknownFieldParse(tag, + _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), + ptr, ctx); + CHK_(ptr != nullptr); + continue; + } + } // switch + } // while +success: + return ptr; +failure: + ptr = nullptr; + goto success; +#undef CHK_ +} + +::PROTOBUF_NAMESPACE_ID::uint8* MissionItem::_InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { + // @@protoc_insertion_point(serialize_to_array_start:mavsdk.rpc.mission_raw.MissionItem) + ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // uint32 seq = 1; if (this->seq() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(1, this->_internal_seq(), target); @@ -5040,6 +5579,264 @@ ::PROTOBUF_NAMESPACE_ID::Metadata MissionItem::GetMetadata() const { } +// =================================================================== + +class MissionImportData::_Internal { + public: +}; + +MissionImportData::MissionImportData(::PROTOBUF_NAMESPACE_ID::Arena* arena) + : ::PROTOBUF_NAMESPACE_ID::Message(arena), + mission_items_(arena), + geofence_items_(arena), + rally_items_(arena) { + SharedCtor(); + RegisterArenaDtor(arena); + // @@protoc_insertion_point(arena_constructor:mavsdk.rpc.mission_raw.MissionImportData) +} +MissionImportData::MissionImportData(const MissionImportData& from) + : ::PROTOBUF_NAMESPACE_ID::Message(), + mission_items_(from.mission_items_), + geofence_items_(from.geofence_items_), + rally_items_(from.rally_items_) { + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + // @@protoc_insertion_point(copy_constructor:mavsdk.rpc.mission_raw.MissionImportData) +} + +void MissionImportData::SharedCtor() { +} + +MissionImportData::~MissionImportData() { + // @@protoc_insertion_point(destructor:mavsdk.rpc.mission_raw.MissionImportData) + SharedDtor(); + _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); +} + +void MissionImportData::SharedDtor() { + GOOGLE_DCHECK(GetArena() == nullptr); +} + +void MissionImportData::ArenaDtor(void* object) { + MissionImportData* _this = reinterpret_cast< MissionImportData* >(object); + (void)_this; +} +void MissionImportData::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { +} +void MissionImportData::SetCachedSize(int size) const { + _cached_size_.Set(size); +} + +void MissionImportData::Clear() { +// @@protoc_insertion_point(message_clear_start:mavsdk.rpc.mission_raw.MissionImportData) + ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + mission_items_.Clear(); + geofence_items_.Clear(); + rally_items_.Clear(); + _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); +} + +const char* MissionImportData::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { +#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure + while (!ctx->Done(&ptr)) { + ::PROTOBUF_NAMESPACE_ID::uint32 tag; + ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); + CHK_(ptr); + switch (tag >> 3) { + // repeated .mavsdk.rpc.mission_raw.MissionItem mission_items = 1; + case 1: + if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { + ptr -= 1; + do { + ptr += 1; + ptr = ctx->ParseMessage(_internal_add_mission_items(), ptr); + CHK_(ptr); + if (!ctx->DataAvailable(ptr)) break; + } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); + } else goto handle_unusual; + continue; + // repeated .mavsdk.rpc.mission_raw.MissionItem geofence_items = 2; + case 2: + if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { + ptr -= 1; + do { + ptr += 1; + ptr = ctx->ParseMessage(_internal_add_geofence_items(), ptr); + CHK_(ptr); + if (!ctx->DataAvailable(ptr)) break; + } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); + } else goto handle_unusual; + continue; + // repeated .mavsdk.rpc.mission_raw.MissionItem rally_items = 3; + case 3: + if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { + ptr -= 1; + do { + ptr += 1; + ptr = ctx->ParseMessage(_internal_add_rally_items(), ptr); + CHK_(ptr); + if (!ctx->DataAvailable(ptr)) break; + } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); + } else goto handle_unusual; + continue; + default: { + handle_unusual: + if ((tag & 7) == 4 || tag == 0) { + ctx->SetLastTag(tag); + goto success; + } + ptr = UnknownFieldParse(tag, + _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), + ptr, ctx); + CHK_(ptr != nullptr); + continue; + } + } // switch + } // while +success: + return ptr; +failure: + ptr = nullptr; + goto success; +#undef CHK_ +} + +::PROTOBUF_NAMESPACE_ID::uint8* MissionImportData::_InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { + // @@protoc_insertion_point(serialize_to_array_start:mavsdk.rpc.mission_raw.MissionImportData) + ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + // repeated .mavsdk.rpc.mission_raw.MissionItem mission_items = 1; + for (unsigned int i = 0, + n = static_cast(this->_internal_mission_items_size()); i < n; i++) { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: + InternalWriteMessage(1, this->_internal_mission_items(i), target, stream); + } + + // repeated .mavsdk.rpc.mission_raw.MissionItem geofence_items = 2; + for (unsigned int i = 0, + n = static_cast(this->_internal_geofence_items_size()); i < n; i++) { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: + InternalWriteMessage(2, this->_internal_geofence_items(i), target, stream); + } + + // repeated .mavsdk.rpc.mission_raw.MissionItem rally_items = 3; + for (unsigned int i = 0, + n = static_cast(this->_internal_rally_items_size()); i < n; i++) { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: + InternalWriteMessage(3, this->_internal_rally_items(i), target, stream); + } + + if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); + } + // @@protoc_insertion_point(serialize_to_array_end:mavsdk.rpc.mission_raw.MissionImportData) + return target; +} + +size_t MissionImportData::ByteSizeLong() const { +// @@protoc_insertion_point(message_byte_size_start:mavsdk.rpc.mission_raw.MissionImportData) + size_t total_size = 0; + + ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + // repeated .mavsdk.rpc.mission_raw.MissionItem mission_items = 1; + total_size += 1UL * this->_internal_mission_items_size(); + for (const auto& msg : this->mission_items_) { + total_size += + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); + } + + // repeated .mavsdk.rpc.mission_raw.MissionItem geofence_items = 2; + total_size += 1UL * this->_internal_geofence_items_size(); + for (const auto& msg : this->geofence_items_) { + total_size += + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); + } + + // repeated .mavsdk.rpc.mission_raw.MissionItem rally_items = 3; + total_size += 1UL * this->_internal_rally_items_size(); + for (const auto& msg : this->rally_items_) { + total_size += + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); + } + + if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { + return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( + _internal_metadata_, total_size, &_cached_size_); + } + int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); + SetCachedSize(cached_size); + return total_size; +} + +void MissionImportData::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { +// @@protoc_insertion_point(generalized_merge_from_start:mavsdk.rpc.mission_raw.MissionImportData) + GOOGLE_DCHECK_NE(&from, this); + const MissionImportData* source = + ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( + &from); + if (source == nullptr) { + // @@protoc_insertion_point(generalized_merge_from_cast_fail:mavsdk.rpc.mission_raw.MissionImportData) + ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); + } else { + // @@protoc_insertion_point(generalized_merge_from_cast_success:mavsdk.rpc.mission_raw.MissionImportData) + MergeFrom(*source); + } +} + +void MissionImportData::MergeFrom(const MissionImportData& from) { +// @@protoc_insertion_point(class_specific_merge_from_start:mavsdk.rpc.mission_raw.MissionImportData) + GOOGLE_DCHECK_NE(&from, this); + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; + (void) cached_has_bits; + + mission_items_.MergeFrom(from.mission_items_); + geofence_items_.MergeFrom(from.geofence_items_); + rally_items_.MergeFrom(from.rally_items_); +} + +void MissionImportData::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { +// @@protoc_insertion_point(generalized_copy_from_start:mavsdk.rpc.mission_raw.MissionImportData) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +void MissionImportData::CopyFrom(const MissionImportData& from) { +// @@protoc_insertion_point(class_specific_copy_from_start:mavsdk.rpc.mission_raw.MissionImportData) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool MissionImportData::IsInitialized() const { + return true; +} + +void MissionImportData::InternalSwap(MissionImportData* other) { + using std::swap; + _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); + mission_items_.InternalSwap(&other->mission_items_); + geofence_items_.InternalSwap(&other->geofence_items_); + rally_items_.InternalSwap(&other->rally_items_); +} + +::PROTOBUF_NAMESPACE_ID::Metadata MissionImportData::GetMetadata() const { + return GetMetadataStatic(); +} + + // =================================================================== class MissionRawResult::_Internal { @@ -5333,12 +6130,21 @@ template<> PROTOBUF_NOINLINE ::mavsdk::rpc::mission_raw::SubscribeMissionChanged template<> PROTOBUF_NOINLINE ::mavsdk::rpc::mission_raw::MissionChangedResponse* Arena::CreateMaybeMessage< ::mavsdk::rpc::mission_raw::MissionChangedResponse >(Arena* arena) { return Arena::CreateMessageInternal< ::mavsdk::rpc::mission_raw::MissionChangedResponse >(arena); } +template<> PROTOBUF_NOINLINE ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest* Arena::CreateMaybeMessage< ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest >(Arena* arena) { + return Arena::CreateMessageInternal< ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest >(arena); +} +template<> PROTOBUF_NOINLINE ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse* Arena::CreateMaybeMessage< ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse >(Arena* arena) { + return Arena::CreateMessageInternal< ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse >(arena); +} template<> PROTOBUF_NOINLINE ::mavsdk::rpc::mission_raw::MissionProgress* Arena::CreateMaybeMessage< ::mavsdk::rpc::mission_raw::MissionProgress >(Arena* arena) { return Arena::CreateMessageInternal< ::mavsdk::rpc::mission_raw::MissionProgress >(arena); } template<> PROTOBUF_NOINLINE ::mavsdk::rpc::mission_raw::MissionItem* Arena::CreateMaybeMessage< ::mavsdk::rpc::mission_raw::MissionItem >(Arena* arena) { return Arena::CreateMessageInternal< ::mavsdk::rpc::mission_raw::MissionItem >(arena); } +template<> PROTOBUF_NOINLINE ::mavsdk::rpc::mission_raw::MissionImportData* Arena::CreateMaybeMessage< ::mavsdk::rpc::mission_raw::MissionImportData >(Arena* arena) { + return Arena::CreateMessageInternal< ::mavsdk::rpc::mission_raw::MissionImportData >(arena); +} template<> PROTOBUF_NOINLINE ::mavsdk::rpc::mission_raw::MissionRawResult* Arena::CreateMaybeMessage< ::mavsdk::rpc::mission_raw::MissionRawResult >(Arena* arena) { return Arena::CreateMessageInternal< ::mavsdk::rpc::mission_raw::MissionRawResult >(arena); } diff --git a/src/mavsdk_server/src/generated/mission_raw/mission_raw.pb.h b/src/mavsdk_server/src/generated/mission_raw/mission_raw.pb.h index eff53b0a88..61ed39594e 100644 --- a/src/mavsdk_server/src/generated/mission_raw/mission_raw.pb.h +++ b/src/mavsdk_server/src/generated/mission_raw/mission_raw.pb.h @@ -48,7 +48,7 @@ struct TableStruct_mission_5fraw_2fmission_5fraw_2eproto { PROTOBUF_SECTION_VARIABLE(protodesc_cold); static const ::PROTOBUF_NAMESPACE_ID::internal::AuxiliaryParseTableField aux[] PROTOBUF_SECTION_VARIABLE(protodesc_cold); - static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTable schema[23] + static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTable schema[26] PROTOBUF_SECTION_VARIABLE(protodesc_cold); static const ::PROTOBUF_NAMESPACE_ID::internal::FieldMetadata field_metadata[]; static const ::PROTOBUF_NAMESPACE_ID::internal::SerializationTable serialization_table[]; @@ -83,9 +83,18 @@ extern DownloadMissionRequestDefaultTypeInternal _DownloadMissionRequest_default class DownloadMissionResponse; struct DownloadMissionResponseDefaultTypeInternal; extern DownloadMissionResponseDefaultTypeInternal _DownloadMissionResponse_default_instance_; +class ImportQgroundcontrolMissionRequest; +struct ImportQgroundcontrolMissionRequestDefaultTypeInternal; +extern ImportQgroundcontrolMissionRequestDefaultTypeInternal _ImportQgroundcontrolMissionRequest_default_instance_; +class ImportQgroundcontrolMissionResponse; +struct ImportQgroundcontrolMissionResponseDefaultTypeInternal; +extern ImportQgroundcontrolMissionResponseDefaultTypeInternal _ImportQgroundcontrolMissionResponse_default_instance_; class MissionChangedResponse; struct MissionChangedResponseDefaultTypeInternal; extern MissionChangedResponseDefaultTypeInternal _MissionChangedResponse_default_instance_; +class MissionImportData; +struct MissionImportDataDefaultTypeInternal; +extern MissionImportDataDefaultTypeInternal _MissionImportData_default_instance_; class MissionItem; struct MissionItemDefaultTypeInternal; extern MissionItemDefaultTypeInternal _MissionItem_default_instance_; @@ -140,7 +149,10 @@ template<> ::mavsdk::rpc::mission_raw::ClearMissionRequest* Arena::CreateMaybeMe template<> ::mavsdk::rpc::mission_raw::ClearMissionResponse* Arena::CreateMaybeMessage<::mavsdk::rpc::mission_raw::ClearMissionResponse>(Arena*); template<> ::mavsdk::rpc::mission_raw::DownloadMissionRequest* Arena::CreateMaybeMessage<::mavsdk::rpc::mission_raw::DownloadMissionRequest>(Arena*); template<> ::mavsdk::rpc::mission_raw::DownloadMissionResponse* Arena::CreateMaybeMessage<::mavsdk::rpc::mission_raw::DownloadMissionResponse>(Arena*); +template<> ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest* Arena::CreateMaybeMessage<::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionRequest>(Arena*); +template<> ::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse* Arena::CreateMaybeMessage<::mavsdk::rpc::mission_raw::ImportQgroundcontrolMissionResponse>(Arena*); template<> ::mavsdk::rpc::mission_raw::MissionChangedResponse* Arena::CreateMaybeMessage<::mavsdk::rpc::mission_raw::MissionChangedResponse>(Arena*); +template<> ::mavsdk::rpc::mission_raw::MissionImportData* Arena::CreateMaybeMessage<::mavsdk::rpc::mission_raw::MissionImportData>(Arena*); template<> ::mavsdk::rpc::mission_raw::MissionItem* Arena::CreateMaybeMessage<::mavsdk::rpc::mission_raw::MissionItem>(Arena*); template<> ::mavsdk::rpc::mission_raw::MissionProgress* Arena::CreateMaybeMessage<::mavsdk::rpc::mission_raw::MissionProgress>(Arena*); template<> ::mavsdk::rpc::mission_raw::MissionProgressResponse* Arena::CreateMaybeMessage<::mavsdk::rpc::mission_raw::MissionProgressResponse>(Arena*); @@ -171,12 +183,14 @@ enum MissionRawResult_Result : int { MissionRawResult_Result_RESULT_UNSUPPORTED = 7, MissionRawResult_Result_RESULT_NO_MISSION_AVAILABLE = 8, MissionRawResult_Result_RESULT_TRANSFER_CANCELLED = 9, + MissionRawResult_Result_RESULT_FAILED_TO_OPEN_QGC_PLAN = 10, + MissionRawResult_Result_RESULT_FAILED_TO_PARSE_QGC_PLAN = 11, MissionRawResult_Result_MissionRawResult_Result_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), MissionRawResult_Result_MissionRawResult_Result_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool MissionRawResult_Result_IsValid(int value); constexpr MissionRawResult_Result MissionRawResult_Result_Result_MIN = MissionRawResult_Result_RESULT_UNKNOWN; -constexpr MissionRawResult_Result MissionRawResult_Result_Result_MAX = MissionRawResult_Result_RESULT_TRANSFER_CANCELLED; +constexpr MissionRawResult_Result MissionRawResult_Result_Result_MAX = MissionRawResult_Result_RESULT_FAILED_TO_PARSE_QGC_PLAN; constexpr int MissionRawResult_Result_Result_ARRAYSIZE = MissionRawResult_Result_Result_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* MissionRawResult_Result_descriptor(); @@ -2941,6 +2955,316 @@ class MissionChangedResponse PROTOBUF_FINAL : }; // ------------------------------------------------------------------- +class ImportQgroundcontrolMissionRequest PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionRequest) */ { + public: + inline ImportQgroundcontrolMissionRequest() : ImportQgroundcontrolMissionRequest(nullptr) {} + virtual ~ImportQgroundcontrolMissionRequest(); + explicit constexpr ImportQgroundcontrolMissionRequest(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); + + ImportQgroundcontrolMissionRequest(const ImportQgroundcontrolMissionRequest& from); + ImportQgroundcontrolMissionRequest(ImportQgroundcontrolMissionRequest&& from) noexcept + : ImportQgroundcontrolMissionRequest() { + *this = ::std::move(from); + } + + inline ImportQgroundcontrolMissionRequest& operator=(const ImportQgroundcontrolMissionRequest& from) { + CopyFrom(from); + return *this; + } + inline ImportQgroundcontrolMissionRequest& operator=(ImportQgroundcontrolMissionRequest&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const ImportQgroundcontrolMissionRequest& default_instance() { + return *internal_default_instance(); + } + static inline const ImportQgroundcontrolMissionRequest* internal_default_instance() { + return reinterpret_cast( + &_ImportQgroundcontrolMissionRequest_default_instance_); + } + static constexpr int kIndexInFileMessages = + 20; + + friend void swap(ImportQgroundcontrolMissionRequest& a, ImportQgroundcontrolMissionRequest& b) { + a.Swap(&b); + } + inline void Swap(ImportQgroundcontrolMissionRequest* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(ImportQgroundcontrolMissionRequest* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline ImportQgroundcontrolMissionRequest* New() const final { + return CreateMaybeMessage(nullptr); + } + + ImportQgroundcontrolMissionRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const ImportQgroundcontrolMissionRequest& from); + void MergeFrom(const ImportQgroundcontrolMissionRequest& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(ImportQgroundcontrolMissionRequest* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionRequest"; + } + protected: + explicit ImportQgroundcontrolMissionRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + return ::descriptor_table_mission_5fraw_2fmission_5fraw_2eproto_metadata_getter(kIndexInFileMessages); + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kQgcPlanPathFieldNumber = 1, + }; + // string qgc_plan_path = 1; + void clear_qgc_plan_path(); + const std::string& qgc_plan_path() const; + void set_qgc_plan_path(const std::string& value); + void set_qgc_plan_path(std::string&& value); + void set_qgc_plan_path(const char* value); + void set_qgc_plan_path(const char* value, size_t size); + std::string* mutable_qgc_plan_path(); + std::string* release_qgc_plan_path(); + void set_allocated_qgc_plan_path(std::string* qgc_plan_path); + private: + const std::string& _internal_qgc_plan_path() const; + void _internal_set_qgc_plan_path(const std::string& value); + std::string* _internal_mutable_qgc_plan_path(); + public: + + // @@protoc_insertion_point(class_scope:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionRequest) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr qgc_plan_path_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_mission_5fraw_2fmission_5fraw_2eproto; +}; +// ------------------------------------------------------------------- + +class ImportQgroundcontrolMissionResponse PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionResponse) */ { + public: + inline ImportQgroundcontrolMissionResponse() : ImportQgroundcontrolMissionResponse(nullptr) {} + virtual ~ImportQgroundcontrolMissionResponse(); + explicit constexpr ImportQgroundcontrolMissionResponse(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); + + ImportQgroundcontrolMissionResponse(const ImportQgroundcontrolMissionResponse& from); + ImportQgroundcontrolMissionResponse(ImportQgroundcontrolMissionResponse&& from) noexcept + : ImportQgroundcontrolMissionResponse() { + *this = ::std::move(from); + } + + inline ImportQgroundcontrolMissionResponse& operator=(const ImportQgroundcontrolMissionResponse& from) { + CopyFrom(from); + return *this; + } + inline ImportQgroundcontrolMissionResponse& operator=(ImportQgroundcontrolMissionResponse&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const ImportQgroundcontrolMissionResponse& default_instance() { + return *internal_default_instance(); + } + static inline const ImportQgroundcontrolMissionResponse* internal_default_instance() { + return reinterpret_cast( + &_ImportQgroundcontrolMissionResponse_default_instance_); + } + static constexpr int kIndexInFileMessages = + 21; + + friend void swap(ImportQgroundcontrolMissionResponse& a, ImportQgroundcontrolMissionResponse& b) { + a.Swap(&b); + } + inline void Swap(ImportQgroundcontrolMissionResponse* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(ImportQgroundcontrolMissionResponse* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline ImportQgroundcontrolMissionResponse* New() const final { + return CreateMaybeMessage(nullptr); + } + + ImportQgroundcontrolMissionResponse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const ImportQgroundcontrolMissionResponse& from); + void MergeFrom(const ImportQgroundcontrolMissionResponse& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(ImportQgroundcontrolMissionResponse* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionResponse"; + } + protected: + explicit ImportQgroundcontrolMissionResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + return ::descriptor_table_mission_5fraw_2fmission_5fraw_2eproto_metadata_getter(kIndexInFileMessages); + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kMissionRawResultFieldNumber = 1, + kMissionImportDataFieldNumber = 2, + }; + // .mavsdk.rpc.mission_raw.MissionRawResult mission_raw_result = 1; + bool has_mission_raw_result() const; + private: + bool _internal_has_mission_raw_result() const; + public: + void clear_mission_raw_result(); + const ::mavsdk::rpc::mission_raw::MissionRawResult& mission_raw_result() const; + ::mavsdk::rpc::mission_raw::MissionRawResult* release_mission_raw_result(); + ::mavsdk::rpc::mission_raw::MissionRawResult* mutable_mission_raw_result(); + void set_allocated_mission_raw_result(::mavsdk::rpc::mission_raw::MissionRawResult* mission_raw_result); + private: + const ::mavsdk::rpc::mission_raw::MissionRawResult& _internal_mission_raw_result() const; + ::mavsdk::rpc::mission_raw::MissionRawResult* _internal_mutable_mission_raw_result(); + public: + void unsafe_arena_set_allocated_mission_raw_result( + ::mavsdk::rpc::mission_raw::MissionRawResult* mission_raw_result); + ::mavsdk::rpc::mission_raw::MissionRawResult* unsafe_arena_release_mission_raw_result(); + + // .mavsdk.rpc.mission_raw.MissionImportData mission_import_data = 2; + bool has_mission_import_data() const; + private: + bool _internal_has_mission_import_data() const; + public: + void clear_mission_import_data(); + const ::mavsdk::rpc::mission_raw::MissionImportData& mission_import_data() const; + ::mavsdk::rpc::mission_raw::MissionImportData* release_mission_import_data(); + ::mavsdk::rpc::mission_raw::MissionImportData* mutable_mission_import_data(); + void set_allocated_mission_import_data(::mavsdk::rpc::mission_raw::MissionImportData* mission_import_data); + private: + const ::mavsdk::rpc::mission_raw::MissionImportData& _internal_mission_import_data() const; + ::mavsdk::rpc::mission_raw::MissionImportData* _internal_mutable_mission_import_data(); + public: + void unsafe_arena_set_allocated_mission_import_data( + ::mavsdk::rpc::mission_raw::MissionImportData* mission_import_data); + ::mavsdk::rpc::mission_raw::MissionImportData* unsafe_arena_release_mission_import_data(); + + // @@protoc_insertion_point(class_scope:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionResponse) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::mavsdk::rpc::mission_raw::MissionRawResult* mission_raw_result_; + ::mavsdk::rpc::mission_raw::MissionImportData* mission_import_data_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_mission_5fraw_2fmission_5fraw_2eproto; +}; +// ------------------------------------------------------------------- + class MissionProgress PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:mavsdk.rpc.mission_raw.MissionProgress) */ { public: @@ -2984,7 +3308,7 @@ class MissionProgress PROTOBUF_FINAL : &_MissionProgress_default_instance_); } static constexpr int kIndexInFileMessages = - 20; + 22; friend void swap(MissionProgress& a, MissionProgress& b) { a.Swap(&b); @@ -3132,7 +3456,7 @@ class MissionItem PROTOBUF_FINAL : &_MissionItem_default_instance_); } static constexpr int kIndexInFileMessages = - 21; + 23; friend void swap(MissionItem& a, MissionItem& b) { a.Swap(&b); @@ -3293,66 +3617,252 @@ class MissionItem PROTOBUF_FINAL : float param4() const; void set_param4(float value); private: - float _internal_param4() const; - void _internal_set_param4(float value); + float _internal_param4() const; + void _internal_set_param4(float value); + public: + + // int32 x = 10; + void clear_x(); + ::PROTOBUF_NAMESPACE_ID::int32 x() const; + void set_x(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_x() const; + void _internal_set_x(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // int32 y = 11; + void clear_y(); + ::PROTOBUF_NAMESPACE_ID::int32 y() const; + void set_y(::PROTOBUF_NAMESPACE_ID::int32 value); + private: + ::PROTOBUF_NAMESPACE_ID::int32 _internal_y() const; + void _internal_set_y(::PROTOBUF_NAMESPACE_ID::int32 value); + public: + + // float z = 12; + void clear_z(); + float z() const; + void set_z(float value); + private: + float _internal_z() const; + void _internal_set_z(float value); + public: + + // uint32 mission_type = 13; + void clear_mission_type(); + ::PROTOBUF_NAMESPACE_ID::uint32 mission_type() const; + void set_mission_type(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_mission_type() const; + void _internal_set_mission_type(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + + // @@protoc_insertion_point(class_scope:mavsdk.rpc.mission_raw.MissionItem) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + ::PROTOBUF_NAMESPACE_ID::uint32 seq_; + ::PROTOBUF_NAMESPACE_ID::uint32 frame_; + ::PROTOBUF_NAMESPACE_ID::uint32 command_; + ::PROTOBUF_NAMESPACE_ID::uint32 current_; + ::PROTOBUF_NAMESPACE_ID::uint32 autocontinue_; + float param1_; + float param2_; + float param3_; + float param4_; + ::PROTOBUF_NAMESPACE_ID::int32 x_; + ::PROTOBUF_NAMESPACE_ID::int32 y_; + float z_; + ::PROTOBUF_NAMESPACE_ID::uint32 mission_type_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + friend struct ::TableStruct_mission_5fraw_2fmission_5fraw_2eproto; +}; +// ------------------------------------------------------------------- + +class MissionImportData PROTOBUF_FINAL : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:mavsdk.rpc.mission_raw.MissionImportData) */ { + public: + inline MissionImportData() : MissionImportData(nullptr) {} + virtual ~MissionImportData(); + explicit constexpr MissionImportData(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); + + MissionImportData(const MissionImportData& from); + MissionImportData(MissionImportData&& from) noexcept + : MissionImportData() { + *this = ::std::move(from); + } + + inline MissionImportData& operator=(const MissionImportData& from) { + CopyFrom(from); + return *this; + } + inline MissionImportData& operator=(MissionImportData&& from) noexcept { + if (GetArena() == from.GetArena()) { + if (this != &from) InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return GetMetadataStatic().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return GetMetadataStatic().reflection; + } + static const MissionImportData& default_instance() { + return *internal_default_instance(); + } + static inline const MissionImportData* internal_default_instance() { + return reinterpret_cast( + &_MissionImportData_default_instance_); + } + static constexpr int kIndexInFileMessages = + 24; + + friend void swap(MissionImportData& a, MissionImportData& b) { + a.Swap(&b); + } + inline void Swap(MissionImportData* other) { + if (other == this) return; + if (GetArena() == other->GetArena()) { + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(MissionImportData* other) { + if (other == this) return; + GOOGLE_DCHECK(GetArena() == other->GetArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + inline MissionImportData* New() const final { + return CreateMaybeMessage(nullptr); + } + + MissionImportData* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { + return CreateMaybeMessage(arena); + } + void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; + void CopyFrom(const MissionImportData& from); + void MergeFrom(const MissionImportData& from); + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( + ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _cached_size_.Get(); } + + private: + inline void SharedCtor(); + inline void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(MissionImportData* other); + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "mavsdk.rpc.mission_raw.MissionImportData"; + } + protected: + explicit MissionImportData(::PROTOBUF_NAMESPACE_ID::Arena* arena); + private: + static void ArenaDtor(void* object); + inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); + public: + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + private: + static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { + return ::descriptor_table_mission_5fraw_2fmission_5fraw_2eproto_metadata_getter(kIndexInFileMessages); + } + + public: + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kMissionItemsFieldNumber = 1, + kGeofenceItemsFieldNumber = 2, + kRallyItemsFieldNumber = 3, + }; + // repeated .mavsdk.rpc.mission_raw.MissionItem mission_items = 1; + int mission_items_size() const; + private: + int _internal_mission_items_size() const; + public: + void clear_mission_items(); + ::mavsdk::rpc::mission_raw::MissionItem* mutable_mission_items(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::mavsdk::rpc::mission_raw::MissionItem >* + mutable_mission_items(); + private: + const ::mavsdk::rpc::mission_raw::MissionItem& _internal_mission_items(int index) const; + ::mavsdk::rpc::mission_raw::MissionItem* _internal_add_mission_items(); public: + const ::mavsdk::rpc::mission_raw::MissionItem& mission_items(int index) const; + ::mavsdk::rpc::mission_raw::MissionItem* add_mission_items(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::mavsdk::rpc::mission_raw::MissionItem >& + mission_items() const; - // int32 x = 10; - void clear_x(); - ::PROTOBUF_NAMESPACE_ID::int32 x() const; - void set_x(::PROTOBUF_NAMESPACE_ID::int32 value); + // repeated .mavsdk.rpc.mission_raw.MissionItem geofence_items = 2; + int geofence_items_size() const; private: - ::PROTOBUF_NAMESPACE_ID::int32 _internal_x() const; - void _internal_set_x(::PROTOBUF_NAMESPACE_ID::int32 value); + int _internal_geofence_items_size() const; public: - - // int32 y = 11; - void clear_y(); - ::PROTOBUF_NAMESPACE_ID::int32 y() const; - void set_y(::PROTOBUF_NAMESPACE_ID::int32 value); + void clear_geofence_items(); + ::mavsdk::rpc::mission_raw::MissionItem* mutable_geofence_items(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::mavsdk::rpc::mission_raw::MissionItem >* + mutable_geofence_items(); private: - ::PROTOBUF_NAMESPACE_ID::int32 _internal_y() const; - void _internal_set_y(::PROTOBUF_NAMESPACE_ID::int32 value); + const ::mavsdk::rpc::mission_raw::MissionItem& _internal_geofence_items(int index) const; + ::mavsdk::rpc::mission_raw::MissionItem* _internal_add_geofence_items(); public: + const ::mavsdk::rpc::mission_raw::MissionItem& geofence_items(int index) const; + ::mavsdk::rpc::mission_raw::MissionItem* add_geofence_items(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::mavsdk::rpc::mission_raw::MissionItem >& + geofence_items() const; - // float z = 12; - void clear_z(); - float z() const; - void set_z(float value); + // repeated .mavsdk.rpc.mission_raw.MissionItem rally_items = 3; + int rally_items_size() const; private: - float _internal_z() const; - void _internal_set_z(float value); + int _internal_rally_items_size() const; public: - - // uint32 mission_type = 13; - void clear_mission_type(); - ::PROTOBUF_NAMESPACE_ID::uint32 mission_type() const; - void set_mission_type(::PROTOBUF_NAMESPACE_ID::uint32 value); + void clear_rally_items(); + ::mavsdk::rpc::mission_raw::MissionItem* mutable_rally_items(int index); + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::mavsdk::rpc::mission_raw::MissionItem >* + mutable_rally_items(); private: - ::PROTOBUF_NAMESPACE_ID::uint32 _internal_mission_type() const; - void _internal_set_mission_type(::PROTOBUF_NAMESPACE_ID::uint32 value); + const ::mavsdk::rpc::mission_raw::MissionItem& _internal_rally_items(int index) const; + ::mavsdk::rpc::mission_raw::MissionItem* _internal_add_rally_items(); public: + const ::mavsdk::rpc::mission_raw::MissionItem& rally_items(int index) const; + ::mavsdk::rpc::mission_raw::MissionItem* add_rally_items(); + const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::mavsdk::rpc::mission_raw::MissionItem >& + rally_items() const; - // @@protoc_insertion_point(class_scope:mavsdk.rpc.mission_raw.MissionItem) + // @@protoc_insertion_point(class_scope:mavsdk.rpc.mission_raw.MissionImportData) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; - ::PROTOBUF_NAMESPACE_ID::uint32 seq_; - ::PROTOBUF_NAMESPACE_ID::uint32 frame_; - ::PROTOBUF_NAMESPACE_ID::uint32 command_; - ::PROTOBUF_NAMESPACE_ID::uint32 current_; - ::PROTOBUF_NAMESPACE_ID::uint32 autocontinue_; - float param1_; - float param2_; - float param3_; - float param4_; - ::PROTOBUF_NAMESPACE_ID::int32 x_; - ::PROTOBUF_NAMESPACE_ID::int32 y_; - float z_; - ::PROTOBUF_NAMESPACE_ID::uint32 mission_type_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::mavsdk::rpc::mission_raw::MissionItem > mission_items_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::mavsdk::rpc::mission_raw::MissionItem > geofence_items_; + ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::mavsdk::rpc::mission_raw::MissionItem > rally_items_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_mission_5fraw_2fmission_5fraw_2eproto; }; @@ -3401,7 +3911,7 @@ class MissionRawResult PROTOBUF_FINAL : &_MissionRawResult_default_instance_); } static constexpr int kIndexInFileMessages = - 22; + 25; friend void swap(MissionRawResult& a, MissionRawResult& b) { a.Swap(&b); @@ -3489,6 +3999,10 @@ class MissionRawResult PROTOBUF_FINAL : MissionRawResult_Result_RESULT_NO_MISSION_AVAILABLE; static constexpr Result RESULT_TRANSFER_CANCELLED = MissionRawResult_Result_RESULT_TRANSFER_CANCELLED; + static constexpr Result RESULT_FAILED_TO_OPEN_QGC_PLAN = + MissionRawResult_Result_RESULT_FAILED_TO_OPEN_QGC_PLAN; + static constexpr Result RESULT_FAILED_TO_PARSE_QGC_PLAN = + MissionRawResult_Result_RESULT_FAILED_TO_PARSE_QGC_PLAN; static inline bool Result_IsValid(int value) { return MissionRawResult_Result_IsValid(value); } @@ -4511,6 +5025,241 @@ inline void MissionChangedResponse::set_mission_changed(bool value) { // ------------------------------------------------------------------- +// ImportQgroundcontrolMissionRequest + +// string qgc_plan_path = 1; +inline void ImportQgroundcontrolMissionRequest::clear_qgc_plan_path() { + qgc_plan_path_.ClearToEmpty(); +} +inline const std::string& ImportQgroundcontrolMissionRequest::qgc_plan_path() const { + // @@protoc_insertion_point(field_get:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionRequest.qgc_plan_path) + return _internal_qgc_plan_path(); +} +inline void ImportQgroundcontrolMissionRequest::set_qgc_plan_path(const std::string& value) { + _internal_set_qgc_plan_path(value); + // @@protoc_insertion_point(field_set:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionRequest.qgc_plan_path) +} +inline std::string* ImportQgroundcontrolMissionRequest::mutable_qgc_plan_path() { + // @@protoc_insertion_point(field_mutable:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionRequest.qgc_plan_path) + return _internal_mutable_qgc_plan_path(); +} +inline const std::string& ImportQgroundcontrolMissionRequest::_internal_qgc_plan_path() const { + return qgc_plan_path_.Get(); +} +inline void ImportQgroundcontrolMissionRequest::_internal_set_qgc_plan_path(const std::string& value) { + + qgc_plan_path_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); +} +inline void ImportQgroundcontrolMissionRequest::set_qgc_plan_path(std::string&& value) { + + qgc_plan_path_.Set( + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); + // @@protoc_insertion_point(field_set_rvalue:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionRequest.qgc_plan_path) +} +inline void ImportQgroundcontrolMissionRequest::set_qgc_plan_path(const char* value) { + GOOGLE_DCHECK(value != nullptr); + + qgc_plan_path_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); + // @@protoc_insertion_point(field_set_char:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionRequest.qgc_plan_path) +} +inline void ImportQgroundcontrolMissionRequest::set_qgc_plan_path(const char* value, + size_t size) { + + qgc_plan_path_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( + reinterpret_cast(value), size), GetArena()); + // @@protoc_insertion_point(field_set_pointer:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionRequest.qgc_plan_path) +} +inline std::string* ImportQgroundcontrolMissionRequest::_internal_mutable_qgc_plan_path() { + + return qgc_plan_path_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); +} +inline std::string* ImportQgroundcontrolMissionRequest::release_qgc_plan_path() { + // @@protoc_insertion_point(field_release:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionRequest.qgc_plan_path) + return qgc_plan_path_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); +} +inline void ImportQgroundcontrolMissionRequest::set_allocated_qgc_plan_path(std::string* qgc_plan_path) { + if (qgc_plan_path != nullptr) { + + } else { + + } + qgc_plan_path_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), qgc_plan_path, + GetArena()); + // @@protoc_insertion_point(field_set_allocated:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionRequest.qgc_plan_path) +} + +// ------------------------------------------------------------------- + +// ImportQgroundcontrolMissionResponse + +// .mavsdk.rpc.mission_raw.MissionRawResult mission_raw_result = 1; +inline bool ImportQgroundcontrolMissionResponse::_internal_has_mission_raw_result() const { + return this != internal_default_instance() && mission_raw_result_ != nullptr; +} +inline bool ImportQgroundcontrolMissionResponse::has_mission_raw_result() const { + return _internal_has_mission_raw_result(); +} +inline void ImportQgroundcontrolMissionResponse::clear_mission_raw_result() { + if (GetArena() == nullptr && mission_raw_result_ != nullptr) { + delete mission_raw_result_; + } + mission_raw_result_ = nullptr; +} +inline const ::mavsdk::rpc::mission_raw::MissionRawResult& ImportQgroundcontrolMissionResponse::_internal_mission_raw_result() const { + const ::mavsdk::rpc::mission_raw::MissionRawResult* p = mission_raw_result_; + return p != nullptr ? *p : reinterpret_cast( + ::mavsdk::rpc::mission_raw::_MissionRawResult_default_instance_); +} +inline const ::mavsdk::rpc::mission_raw::MissionRawResult& ImportQgroundcontrolMissionResponse::mission_raw_result() const { + // @@protoc_insertion_point(field_get:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionResponse.mission_raw_result) + return _internal_mission_raw_result(); +} +inline void ImportQgroundcontrolMissionResponse::unsafe_arena_set_allocated_mission_raw_result( + ::mavsdk::rpc::mission_raw::MissionRawResult* mission_raw_result) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(mission_raw_result_); + } + mission_raw_result_ = mission_raw_result; + if (mission_raw_result) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionResponse.mission_raw_result) +} +inline ::mavsdk::rpc::mission_raw::MissionRawResult* ImportQgroundcontrolMissionResponse::release_mission_raw_result() { + + ::mavsdk::rpc::mission_raw::MissionRawResult* temp = mission_raw_result_; + mission_raw_result_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::mavsdk::rpc::mission_raw::MissionRawResult* ImportQgroundcontrolMissionResponse::unsafe_arena_release_mission_raw_result() { + // @@protoc_insertion_point(field_release:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionResponse.mission_raw_result) + + ::mavsdk::rpc::mission_raw::MissionRawResult* temp = mission_raw_result_; + mission_raw_result_ = nullptr; + return temp; +} +inline ::mavsdk::rpc::mission_raw::MissionRawResult* ImportQgroundcontrolMissionResponse::_internal_mutable_mission_raw_result() { + + if (mission_raw_result_ == nullptr) { + auto* p = CreateMaybeMessage<::mavsdk::rpc::mission_raw::MissionRawResult>(GetArena()); + mission_raw_result_ = p; + } + return mission_raw_result_; +} +inline ::mavsdk::rpc::mission_raw::MissionRawResult* ImportQgroundcontrolMissionResponse::mutable_mission_raw_result() { + // @@protoc_insertion_point(field_mutable:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionResponse.mission_raw_result) + return _internal_mutable_mission_raw_result(); +} +inline void ImportQgroundcontrolMissionResponse::set_allocated_mission_raw_result(::mavsdk::rpc::mission_raw::MissionRawResult* mission_raw_result) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete mission_raw_result_; + } + if (mission_raw_result) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(mission_raw_result); + if (message_arena != submessage_arena) { + mission_raw_result = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, mission_raw_result, submessage_arena); + } + + } else { + + } + mission_raw_result_ = mission_raw_result; + // @@protoc_insertion_point(field_set_allocated:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionResponse.mission_raw_result) +} + +// .mavsdk.rpc.mission_raw.MissionImportData mission_import_data = 2; +inline bool ImportQgroundcontrolMissionResponse::_internal_has_mission_import_data() const { + return this != internal_default_instance() && mission_import_data_ != nullptr; +} +inline bool ImportQgroundcontrolMissionResponse::has_mission_import_data() const { + return _internal_has_mission_import_data(); +} +inline void ImportQgroundcontrolMissionResponse::clear_mission_import_data() { + if (GetArena() == nullptr && mission_import_data_ != nullptr) { + delete mission_import_data_; + } + mission_import_data_ = nullptr; +} +inline const ::mavsdk::rpc::mission_raw::MissionImportData& ImportQgroundcontrolMissionResponse::_internal_mission_import_data() const { + const ::mavsdk::rpc::mission_raw::MissionImportData* p = mission_import_data_; + return p != nullptr ? *p : reinterpret_cast( + ::mavsdk::rpc::mission_raw::_MissionImportData_default_instance_); +} +inline const ::mavsdk::rpc::mission_raw::MissionImportData& ImportQgroundcontrolMissionResponse::mission_import_data() const { + // @@protoc_insertion_point(field_get:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionResponse.mission_import_data) + return _internal_mission_import_data(); +} +inline void ImportQgroundcontrolMissionResponse::unsafe_arena_set_allocated_mission_import_data( + ::mavsdk::rpc::mission_raw::MissionImportData* mission_import_data) { + if (GetArena() == nullptr) { + delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(mission_import_data_); + } + mission_import_data_ = mission_import_data; + if (mission_import_data) { + + } else { + + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionResponse.mission_import_data) +} +inline ::mavsdk::rpc::mission_raw::MissionImportData* ImportQgroundcontrolMissionResponse::release_mission_import_data() { + + ::mavsdk::rpc::mission_raw::MissionImportData* temp = mission_import_data_; + mission_import_data_ = nullptr; + if (GetArena() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + return temp; +} +inline ::mavsdk::rpc::mission_raw::MissionImportData* ImportQgroundcontrolMissionResponse::unsafe_arena_release_mission_import_data() { + // @@protoc_insertion_point(field_release:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionResponse.mission_import_data) + + ::mavsdk::rpc::mission_raw::MissionImportData* temp = mission_import_data_; + mission_import_data_ = nullptr; + return temp; +} +inline ::mavsdk::rpc::mission_raw::MissionImportData* ImportQgroundcontrolMissionResponse::_internal_mutable_mission_import_data() { + + if (mission_import_data_ == nullptr) { + auto* p = CreateMaybeMessage<::mavsdk::rpc::mission_raw::MissionImportData>(GetArena()); + mission_import_data_ = p; + } + return mission_import_data_; +} +inline ::mavsdk::rpc::mission_raw::MissionImportData* ImportQgroundcontrolMissionResponse::mutable_mission_import_data() { + // @@protoc_insertion_point(field_mutable:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionResponse.mission_import_data) + return _internal_mutable_mission_import_data(); +} +inline void ImportQgroundcontrolMissionResponse::set_allocated_mission_import_data(::mavsdk::rpc::mission_raw::MissionImportData* mission_import_data) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); + if (message_arena == nullptr) { + delete mission_import_data_; + } + if (mission_import_data) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(mission_import_data); + if (message_arena != submessage_arena) { + mission_import_data = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, mission_import_data, submessage_arena); + } + + } else { + + } + mission_import_data_ = mission_import_data; + // @@protoc_insertion_point(field_set_allocated:mavsdk.rpc.mission_raw.ImportQgroundcontrolMissionResponse.mission_import_data) +} + +// ------------------------------------------------------------------- + // MissionProgress // int32 current = 1; @@ -4819,6 +5568,127 @@ inline void MissionItem::set_mission_type(::PROTOBUF_NAMESPACE_ID::uint32 value) // ------------------------------------------------------------------- +// MissionImportData + +// repeated .mavsdk.rpc.mission_raw.MissionItem mission_items = 1; +inline int MissionImportData::_internal_mission_items_size() const { + return mission_items_.size(); +} +inline int MissionImportData::mission_items_size() const { + return _internal_mission_items_size(); +} +inline void MissionImportData::clear_mission_items() { + mission_items_.Clear(); +} +inline ::mavsdk::rpc::mission_raw::MissionItem* MissionImportData::mutable_mission_items(int index) { + // @@protoc_insertion_point(field_mutable:mavsdk.rpc.mission_raw.MissionImportData.mission_items) + return mission_items_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::mavsdk::rpc::mission_raw::MissionItem >* +MissionImportData::mutable_mission_items() { + // @@protoc_insertion_point(field_mutable_list:mavsdk.rpc.mission_raw.MissionImportData.mission_items) + return &mission_items_; +} +inline const ::mavsdk::rpc::mission_raw::MissionItem& MissionImportData::_internal_mission_items(int index) const { + return mission_items_.Get(index); +} +inline const ::mavsdk::rpc::mission_raw::MissionItem& MissionImportData::mission_items(int index) const { + // @@protoc_insertion_point(field_get:mavsdk.rpc.mission_raw.MissionImportData.mission_items) + return _internal_mission_items(index); +} +inline ::mavsdk::rpc::mission_raw::MissionItem* MissionImportData::_internal_add_mission_items() { + return mission_items_.Add(); +} +inline ::mavsdk::rpc::mission_raw::MissionItem* MissionImportData::add_mission_items() { + // @@protoc_insertion_point(field_add:mavsdk.rpc.mission_raw.MissionImportData.mission_items) + return _internal_add_mission_items(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::mavsdk::rpc::mission_raw::MissionItem >& +MissionImportData::mission_items() const { + // @@protoc_insertion_point(field_list:mavsdk.rpc.mission_raw.MissionImportData.mission_items) + return mission_items_; +} + +// repeated .mavsdk.rpc.mission_raw.MissionItem geofence_items = 2; +inline int MissionImportData::_internal_geofence_items_size() const { + return geofence_items_.size(); +} +inline int MissionImportData::geofence_items_size() const { + return _internal_geofence_items_size(); +} +inline void MissionImportData::clear_geofence_items() { + geofence_items_.Clear(); +} +inline ::mavsdk::rpc::mission_raw::MissionItem* MissionImportData::mutable_geofence_items(int index) { + // @@protoc_insertion_point(field_mutable:mavsdk.rpc.mission_raw.MissionImportData.geofence_items) + return geofence_items_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::mavsdk::rpc::mission_raw::MissionItem >* +MissionImportData::mutable_geofence_items() { + // @@protoc_insertion_point(field_mutable_list:mavsdk.rpc.mission_raw.MissionImportData.geofence_items) + return &geofence_items_; +} +inline const ::mavsdk::rpc::mission_raw::MissionItem& MissionImportData::_internal_geofence_items(int index) const { + return geofence_items_.Get(index); +} +inline const ::mavsdk::rpc::mission_raw::MissionItem& MissionImportData::geofence_items(int index) const { + // @@protoc_insertion_point(field_get:mavsdk.rpc.mission_raw.MissionImportData.geofence_items) + return _internal_geofence_items(index); +} +inline ::mavsdk::rpc::mission_raw::MissionItem* MissionImportData::_internal_add_geofence_items() { + return geofence_items_.Add(); +} +inline ::mavsdk::rpc::mission_raw::MissionItem* MissionImportData::add_geofence_items() { + // @@protoc_insertion_point(field_add:mavsdk.rpc.mission_raw.MissionImportData.geofence_items) + return _internal_add_geofence_items(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::mavsdk::rpc::mission_raw::MissionItem >& +MissionImportData::geofence_items() const { + // @@protoc_insertion_point(field_list:mavsdk.rpc.mission_raw.MissionImportData.geofence_items) + return geofence_items_; +} + +// repeated .mavsdk.rpc.mission_raw.MissionItem rally_items = 3; +inline int MissionImportData::_internal_rally_items_size() const { + return rally_items_.size(); +} +inline int MissionImportData::rally_items_size() const { + return _internal_rally_items_size(); +} +inline void MissionImportData::clear_rally_items() { + rally_items_.Clear(); +} +inline ::mavsdk::rpc::mission_raw::MissionItem* MissionImportData::mutable_rally_items(int index) { + // @@protoc_insertion_point(field_mutable:mavsdk.rpc.mission_raw.MissionImportData.rally_items) + return rally_items_.Mutable(index); +} +inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::mavsdk::rpc::mission_raw::MissionItem >* +MissionImportData::mutable_rally_items() { + // @@protoc_insertion_point(field_mutable_list:mavsdk.rpc.mission_raw.MissionImportData.rally_items) + return &rally_items_; +} +inline const ::mavsdk::rpc::mission_raw::MissionItem& MissionImportData::_internal_rally_items(int index) const { + return rally_items_.Get(index); +} +inline const ::mavsdk::rpc::mission_raw::MissionItem& MissionImportData::rally_items(int index) const { + // @@protoc_insertion_point(field_get:mavsdk.rpc.mission_raw.MissionImportData.rally_items) + return _internal_rally_items(index); +} +inline ::mavsdk::rpc::mission_raw::MissionItem* MissionImportData::_internal_add_rally_items() { + return rally_items_.Add(); +} +inline ::mavsdk::rpc::mission_raw::MissionItem* MissionImportData::add_rally_items() { + // @@protoc_insertion_point(field_add:mavsdk.rpc.mission_raw.MissionImportData.rally_items) + return _internal_add_rally_items(); +} +inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::mavsdk::rpc::mission_raw::MissionItem >& +MissionImportData::rally_items() const { + // @@protoc_insertion_point(field_list:mavsdk.rpc.mission_raw.MissionImportData.rally_items) + return rally_items_; +} + +// ------------------------------------------------------------------- + // MissionRawResult // .mavsdk.rpc.mission_raw.MissionRawResult.Result result = 1; @@ -4949,6 +5819,12 @@ inline void MissionRawResult::set_allocated_result_str(std::string* result_str) // ------------------------------------------------------------------- +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + +// ------------------------------------------------------------------- + // @@protoc_insertion_point(namespace_scope) diff --git a/src/mavsdk_server/src/plugins/mission/mission_service_impl.h b/src/mavsdk_server/src/plugins/mission/mission_service_impl.h index 0b4efc3208..fd2e3814e6 100644 --- a/src/mavsdk_server/src/plugins/mission/mission_service_impl.h +++ b/src/mavsdk_server/src/plugins/mission/mission_service_impl.h @@ -211,10 +211,6 @@ class MissionServiceImpl final : public rpc::mission::MissionService::Service { return rpc::mission::MissionResult_Result_RESULT_UNSUPPORTED; case mavsdk::Mission::Result::NoMissionAvailable: return rpc::mission::MissionResult_Result_RESULT_NO_MISSION_AVAILABLE; - case mavsdk::Mission::Result::FailedToOpenQgcPlan: - return rpc::mission::MissionResult_Result_RESULT_FAILED_TO_OPEN_QGC_PLAN; - case mavsdk::Mission::Result::FailedToParseQgcPlan: - return rpc::mission::MissionResult_Result_RESULT_FAILED_TO_PARSE_QGC_PLAN; case mavsdk::Mission::Result::UnsupportedMissionCmd: return rpc::mission::MissionResult_Result_RESULT_UNSUPPORTED_MISSION_CMD; case mavsdk::Mission::Result::TransferCancelled: @@ -247,10 +243,6 @@ class MissionServiceImpl final : public rpc::mission::MissionService::Service { return mavsdk::Mission::Result::Unsupported; case rpc::mission::MissionResult_Result_RESULT_NO_MISSION_AVAILABLE: return mavsdk::Mission::Result::NoMissionAvailable; - case rpc::mission::MissionResult_Result_RESULT_FAILED_TO_OPEN_QGC_PLAN: - return mavsdk::Mission::Result::FailedToOpenQgcPlan; - case rpc::mission::MissionResult_Result_RESULT_FAILED_TO_PARSE_QGC_PLAN: - return mavsdk::Mission::Result::FailedToParseQgcPlan; case rpc::mission::MissionResult_Result_RESULT_UNSUPPORTED_MISSION_CMD: return mavsdk::Mission::Result::UnsupportedMissionCmd; case rpc::mission::MissionResult_Result_RESULT_TRANSFER_CANCELLED: @@ -470,28 +462,6 @@ class MissionServiceImpl final : public rpc::mission::MissionService::Service { return grpc::Status::OK; } - grpc::Status ImportQgroundcontrolMission( - grpc::ServerContext* /* context */, - const rpc::mission::ImportQgroundcontrolMissionRequest* request, - rpc::mission::ImportQgroundcontrolMissionResponse* response) override - { - if (request == nullptr) { - LogWarn() << "ImportQgroundcontrolMission sent with a null request! Ignoring..."; - return grpc::Status::OK; - } - - auto result = _mission.import_qgroundcontrol_mission(request->qgc_plan_path()); - - if (response != nullptr) { - fillResponseWithResult(response, result.first); - - response->set_allocated_mission_plan( - translateToRpcMissionPlan(result.second).release()); - } - - return grpc::Status::OK; - } - void stop() { _stopped.store(true); diff --git a/src/mavsdk_server/src/plugins/mission_raw/mission_raw_service_impl.h b/src/mavsdk_server/src/plugins/mission_raw/mission_raw_service_impl.h index 28bf5e10d6..384d1d035e 100644 --- a/src/mavsdk_server/src/plugins/mission_raw/mission_raw_service_impl.h +++ b/src/mavsdk_server/src/plugins/mission_raw/mission_raw_service_impl.h @@ -128,6 +128,52 @@ class MissionRawServiceImpl final : public rpc::mission_raw::MissionRawService:: return obj; } + static std::unique_ptr translateToRpcMissionImportData( + const mavsdk::MissionRaw::MissionImportData& mission_import_data) + { + auto rpc_obj = std::make_unique(); + + for (const auto& elem : mission_import_data.mission_items) { + auto* ptr = rpc_obj->add_mission_items(); + ptr->CopyFrom(*translateToRpcMissionItem(elem).release()); + } + + for (const auto& elem : mission_import_data.geofence_items) { + auto* ptr = rpc_obj->add_geofence_items(); + ptr->CopyFrom(*translateToRpcMissionItem(elem).release()); + } + + for (const auto& elem : mission_import_data.rally_items) { + auto* ptr = rpc_obj->add_rally_items(); + ptr->CopyFrom(*translateToRpcMissionItem(elem).release()); + } + + return rpc_obj; + } + + static mavsdk::MissionRaw::MissionImportData translateFromRpcMissionImportData( + const rpc::mission_raw::MissionImportData& mission_import_data) + { + mavsdk::MissionRaw::MissionImportData obj; + + for (const auto& elem : mission_import_data.mission_items()) { + obj.mission_items.push_back(translateFromRpcMissionItem( + static_cast(elem))); + } + + for (const auto& elem : mission_import_data.geofence_items()) { + obj.geofence_items.push_back(translateFromRpcMissionItem( + static_cast(elem))); + } + + for (const auto& elem : mission_import_data.rally_items()) { + obj.rally_items.push_back(translateFromRpcMissionItem( + static_cast(elem))); + } + + return obj; + } + static rpc::mission_raw::MissionRawResult::Result translateToRpcResult(const mavsdk::MissionRaw::Result& result) { @@ -155,6 +201,10 @@ class MissionRawServiceImpl final : public rpc::mission_raw::MissionRawService:: return rpc::mission_raw::MissionRawResult_Result_RESULT_NO_MISSION_AVAILABLE; case mavsdk::MissionRaw::Result::TransferCancelled: return rpc::mission_raw::MissionRawResult_Result_RESULT_TRANSFER_CANCELLED; + case mavsdk::MissionRaw::Result::FailedToOpenQgcPlan: + return rpc::mission_raw::MissionRawResult_Result_RESULT_FAILED_TO_OPEN_QGC_PLAN; + case mavsdk::MissionRaw::Result::FailedToParseQgcPlan: + return rpc::mission_raw::MissionRawResult_Result_RESULT_FAILED_TO_PARSE_QGC_PLAN; } } @@ -185,6 +235,10 @@ class MissionRawServiceImpl final : public rpc::mission_raw::MissionRawService:: return mavsdk::MissionRaw::Result::NoMissionAvailable; case rpc::mission_raw::MissionRawResult_Result_RESULT_TRANSFER_CANCELLED: return mavsdk::MissionRaw::Result::TransferCancelled; + case rpc::mission_raw::MissionRawResult_Result_RESULT_FAILED_TO_OPEN_QGC_PLAN: + return mavsdk::MissionRaw::Result::FailedToOpenQgcPlan; + case rpc::mission_raw::MissionRawResult_Result_RESULT_FAILED_TO_PARSE_QGC_PLAN: + return mavsdk::MissionRaw::Result::FailedToParseQgcPlan; } } @@ -391,6 +445,28 @@ class MissionRawServiceImpl final : public rpc::mission_raw::MissionRawService:: return grpc::Status::OK; } + grpc::Status ImportQgroundcontrolMission( + grpc::ServerContext* /* context */, + const rpc::mission_raw::ImportQgroundcontrolMissionRequest* request, + rpc::mission_raw::ImportQgroundcontrolMissionResponse* response) override + { + if (request == nullptr) { + LogWarn() << "ImportQgroundcontrolMission sent with a null request! Ignoring..."; + return grpc::Status::OK; + } + + auto result = _mission_raw.import_qgroundcontrol_mission(request->qgc_plan_path()); + + if (response != nullptr) { + fillResponseWithResult(response, result.first); + + response->set_allocated_mission_import_data( + translateToRpcMissionImportData(result.second).release()); + } + + return grpc::Status::OK; + } + void stop() { _stopped.store(true); diff --git a/src/plugins/mission/CMakeLists.txt b/src/plugins/mission/CMakeLists.txt index 6d277f7f5a..7fc02d5bd6 100644 --- a/src/plugins/mission/CMakeLists.txt +++ b/src/plugins/mission/CMakeLists.txt @@ -37,9 +37,3 @@ install(FILES include/plugins/mission/mission.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/mavsdk/plugins/mission ) - -list(APPEND UNIT_TEST_SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/mission_import_qgc_test.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/mission_equality_operator_test.cpp -) -set(UNIT_TEST_SOURCES ${UNIT_TEST_SOURCES} PARENT_SCOPE) diff --git a/src/plugins/mission/include/plugins/mission/mission.h b/src/plugins/mission/include/plugins/mission/mission.h index 48584b45ce..369efc8558 100644 --- a/src/plugins/mission/include/plugins/mission/mission.h +++ b/src/plugins/mission/include/plugins/mission/mission.h @@ -174,8 +174,6 @@ class Mission : public PluginBase { InvalidArgument, /**< @brief Invalid argument. */ Unsupported, /**< @brief Mission downloaded from the system is not supported. */ NoMissionAvailable, /**< @brief No mission available on the system. */ - FailedToOpenQgcPlan, /**< @brief Failed to open the QGroundControl plan. */ - FailedToParseQgcPlan, /**< @brief Failed to parse the QGroundControl plan. */ UnsupportedMissionCmd, /**< @brief Unsupported mission command. */ TransferCancelled, /**< @brief Mission transfer (upload or download) has been cancelled. */ }; @@ -401,37 +399,6 @@ class Mission : public PluginBase { */ Result set_return_to_launch_after_mission(bool enable) const; - /** - * @brief Callback type for import_qgroundcontrol_mission_async. - */ - using ImportQgroundcontrolMissionCallback = std::function; - - /** - * @brief Import a QGroundControl (QGC) mission plan. - * - * The method will fail if any of the imported mission items are not supported - * by the MAVSDK API. - * - * This function is non-blocking. See 'import_qgroundcontrol_mission' for the blocking - * counterpart. - */ - void import_qgroundcontrol_mission_async( - std::string qgc_plan_path, const ImportQgroundcontrolMissionCallback callback); - - /** - * @brief Import a QGroundControl (QGC) mission plan. - * - * The method will fail if any of the imported mission items are not supported - * by the MAVSDK API. - * - * This function is blocking. See 'import_qgroundcontrol_mission_async' for the non-blocking - * counterpart. - * - * @return Result of request. - */ - std::pair - import_qgroundcontrol_mission(std::string qgc_plan_path) const; - /** * @brief Copy constructor. */ diff --git a/src/plugins/mission/mission.cpp b/src/plugins/mission/mission.cpp index 026ba6db67..d31572ba3b 100644 --- a/src/plugins/mission/mission.cpp +++ b/src/plugins/mission/mission.cpp @@ -114,18 +114,6 @@ Mission::Result Mission::set_return_to_launch_after_mission(bool enable) const return _impl->set_return_to_launch_after_mission(enable); } -void Mission::import_qgroundcontrol_mission_async( - std::string qgc_plan_path, const ImportQgroundcontrolMissionCallback callback) -{ - _impl->import_qgroundcontrol_mission_async(qgc_plan_path, callback); -} - -std::pair -Mission::import_qgroundcontrol_mission(std::string qgc_plan_path) const -{ - return _impl->import_qgroundcontrol_mission(qgc_plan_path); -} - std::ostream& operator<<(std::ostream& str, Mission::MissionItem::CameraAction const& camera_action) { switch (camera_action) { @@ -240,10 +228,6 @@ std::ostream& operator<<(std::ostream& str, Mission::Result const& result) return str << "Unsupported"; case Mission::Result::NoMissionAvailable: return str << "No Mission Available"; - case Mission::Result::FailedToOpenQgcPlan: - return str << "Failed To Open Qgc Plan"; - case Mission::Result::FailedToParseQgcPlan: - return str << "Failed To Parse Qgc Plan"; case Mission::Result::UnsupportedMissionCmd: return str << "Unsupported Mission Cmd"; case Mission::Result::TransferCancelled: diff --git a/src/plugins/mission/mission_equality_operator_test.cpp b/src/plugins/mission/mission_equality_operator_test.cpp deleted file mode 100644 index 51b201e044..0000000000 --- a/src/plugins/mission/mission_equality_operator_test.cpp +++ /dev/null @@ -1,186 +0,0 @@ -#include -#include - -#include "plugins/mission/mission.h" - -using namespace mavsdk; - -TEST(MissionOperator, MissionItemEqualsOperatorIsValidForDefaultItems) -{ - Mission::MissionItem mission_item1; - Mission::MissionItem mission_item2; - - ASSERT_EQ(mission_item1, mission_item2); -} - -TEST(MissionOperator, MissionItemEqualsOperatorIsValidForArbitraryItems) -{ - Mission::MissionItem mission_item1; - Mission::MissionItem mission_item2; - - mission_item1.latitude_deg = 47.3982; - mission_item1.longitude_deg = 8.54567; - mission_item1.relative_altitude_m = 13.8f; - mission_item1.speed_m_s = 6.9f; - mission_item1.is_fly_through = 0; - mission_item1.gimbal_pitch_deg = std::numeric_limits::quiet_NaN(); - mission_item1.gimbal_yaw_deg = std::numeric_limits::quiet_NaN(); - mission_item1.camera_action = Mission::MissionItem::CameraAction::None; - mission_item1.loiter_time_s = std::numeric_limits::quiet_NaN(); - mission_item1.camera_photo_interval_s = 1; - - mission_item2.latitude_deg = 47.3982; - mission_item2.longitude_deg = 8.54567; - mission_item2.relative_altitude_m = 13.8f; - mission_item2.speed_m_s = 6.9f; - mission_item2.is_fly_through = 0; - mission_item2.gimbal_pitch_deg = std::numeric_limits::quiet_NaN(); - mission_item2.gimbal_yaw_deg = std::numeric_limits::quiet_NaN(); - mission_item2.camera_action = Mission::MissionItem::CameraAction::None; - mission_item2.loiter_time_s = std::numeric_limits::quiet_NaN(); - mission_item2.camera_photo_interval_s = 1; - - ASSERT_EQ(mission_item1, mission_item2); -} - -TEST(MissionOperator, MissionItemEqualsOperatorIsValidForDifferentItems) -{ - Mission::MissionItem mission_item1; - Mission::MissionItem mission_item2{}; - - mission_item1.latitude_deg = 47.3982; - mission_item1.longitude_deg = 8.54567; - mission_item1.relative_altitude_m = 13.8f; - mission_item1.speed_m_s = 6.9f; - mission_item1.is_fly_through = 0; - mission_item1.gimbal_pitch_deg = std::numeric_limits::quiet_NaN(); - mission_item1.gimbal_yaw_deg = std::numeric_limits::quiet_NaN(); - mission_item1.camera_action = Mission::MissionItem::CameraAction::None; - mission_item1.loiter_time_s = std::numeric_limits::quiet_NaN(); - mission_item1.camera_photo_interval_s = 1; - - ASSERT_FALSE(mission_item1 == mission_item2); -} - -TEST(MissionOperator, MissionItemEqualsOperatorIsValidForEmptyVectors) -{ - std::vector mission_items1; - std::vector mission_items2; - - ASSERT_EQ(mission_items1, mission_items2); -} - -TEST(MissionOperator, MissionItemEqualsOperatorIsValidForVector) -{ - // First vector - std::vector mission_items1; - Mission::MissionItem mission_item1; - - mission_item1.latitude_deg = 47.3982; - mission_item1.longitude_deg = 8.54567; - mission_item1.relative_altitude_m = 13.8f; - mission_item1.speed_m_s = 6.9f; - mission_item1.is_fly_through = 0; - mission_item1.gimbal_pitch_deg = std::numeric_limits::quiet_NaN(); - mission_item1.gimbal_yaw_deg = std::numeric_limits::quiet_NaN(); - mission_item1.camera_action = Mission::MissionItem::CameraAction::None; - mission_item1.loiter_time_s = std::numeric_limits::quiet_NaN(); - mission_item1.camera_photo_interval_s = 1; - - mission_items1.push_back(mission_item1); - - // Second vector - std::vector mission_items2; - Mission::MissionItem mission_item2; - - mission_item2.latitude_deg = 47.3982; - mission_item2.longitude_deg = 8.54567; - mission_item2.relative_altitude_m = 13.8f; - mission_item2.speed_m_s = 6.9f; - mission_item2.is_fly_through = 0; - mission_item2.gimbal_pitch_deg = std::numeric_limits::quiet_NaN(); - mission_item2.gimbal_yaw_deg = std::numeric_limits::quiet_NaN(); - mission_item2.camera_action = Mission::MissionItem::CameraAction::None; - mission_item2.loiter_time_s = std::numeric_limits::quiet_NaN(); - mission_item2.camera_photo_interval_s = 1; - - mission_items2.push_back(mission_item2); - - ASSERT_EQ(mission_items1, mission_items2); -} - -TEST(MissionOperator, MissionPlanOperatorIsValidForArbitraryPlans) -{ - // First MissionPlan - Mission::MissionPlan mission_plan1; - - std::vector mission_items1; - Mission::MissionItem mission_item1; - - mission_item1.latitude_deg = 47.39824189; - mission_item1.longitude_deg = 8.545536999; - mission_item1.relative_altitude_m = 10.0f; - mission_item1.speed_m_s = 2.0f; - mission_item1.is_fly_through = true; - mission_item1.gimbal_pitch_deg = 0; - mission_item1.gimbal_yaw_deg = -60; - mission_item1.camera_action = Mission::MissionItem::CameraAction::TakePhoto; - mission_item1.loiter_time_s = 5; - mission_item1.camera_photo_interval_s = 1; - - mission_items1.push_back(mission_item1); - - mission_plan1.mission_items = mission_items1; - - // Second MissionPlan - Mission::MissionPlan mission_plan2; - - std::vector mission_items2; - Mission::MissionItem mission_item2; - - mission_item2.latitude_deg = 47.39824189; - mission_item2.longitude_deg = 8.545536999; - mission_item2.relative_altitude_m = 10.0f; - mission_item2.speed_m_s = 2.0f; - mission_item2.is_fly_through = true; - mission_item2.gimbal_pitch_deg = 0; - mission_item2.gimbal_yaw_deg = -60; - mission_item2.camera_action = Mission::MissionItem::CameraAction::TakePhoto; - mission_item2.loiter_time_s = 5; - mission_item2.camera_photo_interval_s = 1; - - mission_items2.push_back(mission_item2); - - mission_plan2.mission_items = mission_items2; - - ASSERT_EQ(mission_plan1, mission_plan2); -} - -TEST(MissionOperator, MissionPlanOperatorIsValidForDifferentPlans) -{ - // First MissionPlan - Mission::MissionPlan mission_plan1; - - std::vector mission_items1; - Mission::MissionItem mission_item1; - - mission_item1.latitude_deg = 47.39824189; - mission_item1.longitude_deg = 8.545536999; - mission_item1.relative_altitude_m = 10.0f; - mission_item1.speed_m_s = 2.0f; - mission_item1.is_fly_through = true; - mission_item1.gimbal_pitch_deg = 0; - mission_item1.gimbal_yaw_deg = -60; - mission_item1.camera_action = Mission::MissionItem::CameraAction::TakePhoto; - mission_item1.loiter_time_s = 5; - mission_item1.camera_photo_interval_s = 1; - - mission_items1.push_back(mission_item1); - - mission_plan1.mission_items = mission_items1; - - // Second MissionPlan - Mission::MissionPlan mission_plan2{}; - - ASSERT_FALSE(mission_plan1 == mission_plan2); -} diff --git a/src/plugins/mission/mission_impl.cpp b/src/plugins/mission/mission_impl.cpp index 69c4f61086..9063f82d2e 100644 --- a/src/plugins/mission/mission_impl.cpp +++ b/src/plugins/mission/mission_impl.cpp @@ -2,8 +2,6 @@ #include "system.h" #include "global_include.h" #include -#include // for `std::ifstream` -#include // for `std::stringstream` #include namespace mavsdk { @@ -933,6 +931,7 @@ Mission::Result MissionImpl::convert_result(MAVLinkMissionTransfer::Result resul } } +#if 0 std::pair MissionImpl::import_qgroundcontrol_mission(const std::string& qgc_plan_file) { @@ -981,6 +980,7 @@ void MissionImpl::import_qgroundcontrol_mission_async( UNUSED(fut); } +#endif // Build a mission item out of command, params and add them to the mission vector. Mission::Result MissionImpl::build_mission_items( @@ -1070,85 +1070,6 @@ Mission::Result MissionImpl::build_mission_items( return result; } -Mission::Result MissionImpl::import_simple_mission_item( - std::vector& all_mission_items, - const Json::Value& json_mission_item, - MissionItem& new_mission_item) -{ - // Parameters of Mission item & MAV command of it. - MAV_CMD command = static_cast(json_mission_item["command"].asInt()); - - // Extract parameters of each mission item - std::vector params; - for (auto& p : json_mission_item["params"]) { - if (p.type() == Json::nullValue) { - // QGC sets params as `null` if they should be unchanged. - params.push_back(double(NAN)); - } else { - params.push_back(p.asDouble()); - } - } - return build_mission_items(command, params, new_mission_item, all_mission_items); -} - -Mission::Result MissionImpl::import_complex_mission_item( - std::vector& all_mission_items, - const Json::Value& json_complex_mission_item, - MissionItem& new_mission_item) -{ - if (json_complex_mission_item["TransectStyleComplexItem"].isNull()) { - LogWarn() << "Unknown complex item type (" << json_complex_mission_item["complexItemType"] - << ")"; - return Mission::Result::UnsupportedMissionCmd; - } - - // QGC supports more complex mission items than simple waypoints. - // Surveys and coridor scans (NOT structure scans) are stored in a so called - // "TransectStyleComplexItem" item inside the mission_items array. These ComplexItems also - // contain an array ("Items") which contains waypoints. It is used by GQC to keep survey - // parameters so one can edit it as a survey after importing. Structure scans are not supported - // as thes do not contain simple mission items. - Json::Value complex_item = json_complex_mission_item["TransectStyleComplexItem"]; - for (auto& json_mission_item : complex_item["Items"]) { - Mission::Result result = - import_simple_mission_item(all_mission_items, json_mission_item, new_mission_item); - if (result != Mission::Result::Success) { - return result; - } - } - return Mission::Result::Success; -} - -Mission::Result MissionImpl::import_mission_items( - std::vector& all_mission_items, const Json::Value& qgc_plan_json) -{ - const auto json_mission_items = qgc_plan_json["mission"]; - MissionItem new_mission_item{}; - - // Iterate mission items and build Mavsdk mission items. - for (auto& json_mission_item : json_mission_items["items"]) { - Mission::Result result; - - // Check if mission item is complex (like a survey from qgc) or a simple item - Json::Value type = json_mission_item["type"]; - - if (!type.isNull() && type.asString() == "ComplexItem") { - result = - import_complex_mission_item(all_mission_items, json_mission_item, new_mission_item); - } else { - result = - import_simple_mission_item(all_mission_items, json_mission_item, new_mission_item); - } - - if (result != Mission::Result::Success) { - break; - } - } - // Don't forget to add the last mission which possibly didn't have position set. - all_mission_items.push_back(new_mission_item); - return Mission::Result::Success; -} - void MissionImpl::add_gimbal_items_v1( std::vector& int_items, unsigned item_i, diff --git a/src/plugins/mission/mission_impl.h b/src/plugins/mission/mission_impl.h index 7c24282283..0296db150b 100644 --- a/src/plugins/mission/mission_impl.h +++ b/src/plugins/mission/mission_impl.h @@ -64,12 +64,6 @@ class MissionImpl : public PluginImplBase { Mission::MissionProgress mission_progress(); void subscribe_mission_progress(Mission::MissionProgressCallback callback); - void import_qgroundcontrol_mission_async( - std::string qgc_plan_path, const Mission::ImportQgroundcontrolMissionCallback callback); - - static std::pair - import_qgroundcontrol_mission(const std::string& qgc_plan_path); - // Non-copyable MissionImpl(const MissionImpl&) = delete; const MissionImpl& operator=(const MissionImpl&) = delete; diff --git a/src/plugins/mission/mission_import_qgc_test.cpp b/src/plugins/mission/mission_import_qgc_test.cpp deleted file mode 100644 index 53c28f630e..0000000000 --- a/src/plugins/mission/mission_import_qgc_test.cpp +++ /dev/null @@ -1,288 +0,0 @@ -#include -#include -#include - -#include "global_include.h" -#include "log.h" -#include "mavlink_include.h" -#include "plugins/mission/mission.h" -#include "mission_impl.h" - -using namespace mavsdk; -using MissionItem = Mission::MissionItem; -using CameraAction = Mission::MissionItem::CameraAction; - -static const std::string QGC_SAMPLE_PLAN = "src/plugins/mission/qgroundcontrol_sample.plan"; -static const std::string QGC_COMPLEX_SAMPLE_PLAN = - "src/plugins/mission/qgroundcontrol_sample_with_survey.plan"; - -struct QGCMissionItem { - MAV_CMD command; - std::vector params; -}; - -Mission::Result compose_mission_items( - MAV_CMD command, - std::vector params, - MissionItem& new_mission_item, - std::vector& mission_items); - -static void compare(const MissionItem& local, const MissionItem& imported); - -// capture array size -template -static void build_local_mission_items( - QGCMissionItem (&items_test)[N], std::vector& mission_items_local) -{ - MissionItem new_mission_item{}; - Mission::Result result = Mission::Result::Success; - - for (auto& qgc_it : items_test) { - auto command = qgc_it.command; - auto params = qgc_it.params; - result = compose_mission_items(command, params, new_mission_item, mission_items_local); - EXPECT_EQ(result, Mission::Result::Success); - } - mission_items_local.push_back(new_mission_item); -} - -static void test_mission_items( - std::string qgc_mission_plan_path, std::vector& expected_mission_items) -{ - // Import Mission items from QGC plan - auto import_result = MissionImpl::import_qgroundcontrol_mission(qgc_mission_plan_path); - ASSERT_EQ(import_result.first, Mission::Result::Success); - EXPECT_NE(import_result.second.mission_items.size(), 0); - - // Compare local & parsed mission items - ASSERT_EQ(expected_mission_items.size(), import_result.second.mission_items.size()); - for (unsigned i = 0; i < import_result.second.mission_items.size(); ++i) { - compare(expected_mission_items.at(i), import_result.second.mission_items.at(i)); - } -} - -TEST(QGCComplextMissionImport, ValidateQGCComplexMissionItems) -{ - // These mission items are meant to match those in - // file:://plugins/mission/qgroundcontrol_sample_with_survey.plan - QGCMissionItem items_test[] = { - {MAV_CMD_NAV_TAKEOFF, {0., 0., 0., double(NAN), 47.39781011, 8.54553801, 15.}}, - // Survey starts here - {MAV_CMD_NAV_WAYPOINT, {0., 0., 0., double(NAN), 47.39784192965106, 8.545413449078293, 50}}, - {MAV_CMD_NAV_WAYPOINT, {0., 0., 0., double(NAN), 47.39790440182785, 8.545317879157443, 50}}, - {MAV_CMD_DO_SET_CAM_TRIGG_DIST, {250., 0., 1., 0., 0., 0., 0.}}, - {MAV_CMD_NAV_WAYPOINT, - {0., 0., 0., double(NAN), 47.397974177081146, 8.545211136580374, 50}}, - {MAV_CMD_DO_SET_CAM_TRIGG_DIST, {0., 0., 0., 0., 0., 0., 0.}}, - {MAV_CMD_NAV_WAYPOINT, - {0., 0., 0., double(NAN), 47.398036649089796, 8.545115566179781, 50}}, - {MAV_CMD_NAV_WAYPOINT, {0., 0., 0., double(NAN), 47.39800123401638, 8.545074115797751, 50}}, - {MAV_CMD_NAV_WAYPOINT, {0., 0., 0., double(NAN), 47.39793876204219, 8.545169686183264, 50}}, - {MAV_CMD_DO_SET_CAM_TRIGG_DIST, {250., 0., 1., 0., 0., 0., 0.}}, - {MAV_CMD_NAV_WAYPOINT, - {0., 0., 0., double(NAN), 47.397879855533304, 8.545259801757693, 50}}, - {MAV_CMD_DO_SET_CAM_TRIGG_DIST, {0., 0., 0., 0., 0., 0., 0.}}, - {MAV_CMD_NAV_WAYPOINT, {0., 0., 0., double(NAN), 47.3978173834048, 8.545355371702888, 50}}, - {MAV_CMD_NAV_WAYPOINT, - {0., 0., 0., double(NAN), 47.397792837129174, 8.545297294381587, 50}}, - {MAV_CMD_NAV_WAYPOINT, - {0., 0., 0., double(NAN), 47.397855309209426, 8.545201724412054, 50}}, - {MAV_CMD_DO_SET_CAM_TRIGG_DIST, {250., 0., 1., 0., 0., 0., 0.}}, - {MAV_CMD_NAV_WAYPOINT, - {0., 0., 0., double(NAN), 47.397894043423285, 8.545142468524519, 50}}, - {MAV_CMD_DO_SET_CAM_TRIGG_DIST, {0., 0., 0., 0., 0., 0., 0.}}, - {MAV_CMD_NAV_WAYPOINT, - {0., 0., 0., double(NAN), 47.397956515374865, 8.545046898187849, 50}}, - {MAV_CMD_NAV_WAYPOINT, - {0., 0., 0., double(NAN), 47.397911199101806, 8.545020594879665, 50}}, - {MAV_CMD_NAV_WAYPOINT, {0., 0., 0., double(NAN), 47.39784872717209, 8.545116165165322, 50}}, - {MAV_CMD_DO_SET_CAM_TRIGG_DIST, {250., 0., 1., 0., 0., 0., 0.}}, - {MAV_CMD_NAV_WAYPOINT, {0., 0., 0., double(NAN), 47.39783076285621, 8.545143647120529, 50}}, - {MAV_CMD_DO_SET_CAM_TRIGG_DIST, {0., 0., 0., 0., 0., 0., 0.}}, - {MAV_CMD_NAV_WAYPOINT, {0., 0., 0., double(NAN), 47.39776829082423, 8.545239217114402, 50}}, - // Survey ends here - // Corridor Scan starts here - {MAV_CMD_NAV_WAYPOINT, {0., 0., 0., double(NAN), 47.3976842915956, 8.545111950891618, 50}}, - {MAV_CMD_DO_SET_CAM_TRIGG_DIST, {25., 0., 1., 0., 0., 0., 0.}}, - {MAV_CMD_NAV_WAYPOINT, {0., 0., 0., double(NAN), 47.39767426032188, 8.545243979383299, 50}}, - {MAV_CMD_DO_SET_CAM_TRIGG_DIST, {25., 0., 1., 0., 0., 0., 0.}}, - {MAV_CMD_NAV_WAYPOINT, {0., 0., 0., double(NAN), 47.39766439222148, 8.545373858243078, 50}}, - {MAV_CMD_NAV_WAYPOINT, {0., 0., 0., double(NAN), 47.39766180157361, 8.545586905499258, 50}}, - {MAV_CMD_NAV_WAYPOINT, {0., 0., 0., double(NAN), 47.39779107211276, 8.545911807235703, 50}}, - {MAV_CMD_NAV_WAYPOINT, - {0., 0., 0., double(NAN), 47.398005467277635, 8.545879128614397, 50}}, - {MAV_CMD_NAV_WAYPOINT, {0., 0., 0., double(NAN), 47.39809492445337, 8.54586549325971, 50}}, - {MAV_CMD_NAV_WAYPOINT, - {0., 0., 0., double(NAN), 47.398099539336236, 8.545931571871845, 50}}, - {MAV_CMD_NAV_WAYPOINT, {0., 0., 0., double(NAN), 47.39801008215267, 8.54594520711554, 50}}, - {MAV_CMD_DO_SET_CAM_TRIGG_DIST, {25., 0., 1., 0., 0., 0., 0.}}, - {MAV_CMD_NAV_WAYPOINT, {0., 0., 0., double(NAN), 47.39776694725207, 8.545982265990538, 50}}, - {MAV_CMD_NAV_WAYPOINT, {0., 0., 0., double(NAN), 47.3976166151349, 8.545604428957498, 50}}, - {MAV_CMD_NAV_WAYPOINT, {0., 0., 0., double(NAN), 47.39761947130397, 8.545369547331699, 50}}, - {MAV_CMD_NAV_WAYPOINT, {0., 0., 0., double(NAN), 47.39762957485054, 8.545236569673113, 50}}, - {MAV_CMD_NAV_WAYPOINT, {0., 0., 0., double(NAN), 47.39763960611574, 8.545104541291987, 50}}, - {MAV_CMD_DO_SET_CAM_TRIGG_DIST, {0., 0., 0., 0., 0., 0., 0.}}, - // Corridor Scan ends here - {MAV_CMD_NAV_RETURN_TO_LAUNCH, {0., 0., 0., 0., 0., 0., 0.}}}; - - // Build mission items for comparison - std::vector mission_items_local; - build_local_mission_items<>(items_test, mission_items_local); - test_mission_items(QGC_COMPLEX_SAMPLE_PLAN, mission_items_local); -} - -TEST(QGCMissionImport, ValidateQGCMissonItems) -{ - // These mission items are meant to match those in - // file:://plugins/mission/qgroundcontrol_sample.plan - QGCMissionItem items_test[] = { - {MAV_CMD_NAV_TAKEOFF, {0., 0., 0., double(NAN), 47.39781011, 8.54553801, 15.}}, - {MAV_CMD_NAV_WAYPOINT, {0., 0., 0., double(NAN), 47.39779921, 8.54546693, 15.}}, - {MAV_CMD_DO_MOUNT_CONTROL, {25.0, 0., 50.0}}, // Gimbal pitch & yaw in deg - {MAV_CMD_NAV_WAYPOINT, {0., 0., 0., 0., 47.39773658, 8.54543743, 15.}}, - {MAV_CMD_IMAGE_START_CAPTURE, - { - 0., - 0., - 1., - }}, // Take 1 photo - {MAV_CMD_NAV_WAYPOINT, {0., 0., 0., 0., 47.39768937, 8.54548034, 15.}}, - {MAV_CMD_IMAGE_START_CAPTURE, - { - 0, - 1., - 0., - }}, // Start image capture - {MAV_CMD_NAV_WAYPOINT, {0., 0., 0., double(NAN), 47.39768029, 8.54561177, 15.}}, - {MAV_CMD_DO_CHANGE_SPEED, {1., 100., -1., 0}}, - {MAV_CMD_NAV_WAYPOINT, {0., 0., 0., double(NAN), 47.39779649, 8.54566005, 15.}}, - {MAV_CMD_NAV_LOITER_TIME, {30.}}, // Loiter for 30 seconds - {MAV_CMD_NAV_WAYPOINT, {0., 0., 0., double(NAN), 47.39779468, 8.54561445, 15.}}, - {MAV_CMD_VIDEO_START_CAPTURE, {}}, // Start video capture - {MAV_CMD_NAV_WAYPOINT, {0., 0., 0., double(NAN), 47.39784279, 8.54553533, 15.}}, - {MAV_CMD_IMAGE_STOP_CAPTURE, {}}, // Stop image capture - {MAV_CMD_VIDEO_STOP_CAPTURE, {}}, // Stop video capture - }; - - // Build mission items for comparison - std::vector mission_items_local; - build_local_mission_items(items_test, mission_items_local); - - test_mission_items(QGC_SAMPLE_PLAN, mission_items_local); -} - -Mission::Result compose_mission_items( - MAV_CMD command, - std::vector params, - MissionItem& new_mission_item, - std::vector& mission_items) -{ - Mission::Result result = Mission::Result::Success; - - // Choosen "Do - While(0)" loop for the convenience of using `break` statement. - do { - if (command == MAV_CMD_NAV_WAYPOINT || command == MAV_CMD_NAV_TAKEOFF || - command == MAV_CMD_NAV_LAND) { - if (std::isfinite(new_mission_item.latitude_deg) && - std::isfinite(new_mission_item.longitude_deg) && - std::isfinite(new_mission_item.relative_altitude_m)) { - mission_items.push_back(new_mission_item); - new_mission_item = {}; - } - if (command == MAV_CMD_NAV_WAYPOINT) { - auto is_fly_thru = !(int(params[0]) > 0); - new_mission_item.is_fly_through = is_fly_thru; - } - auto lat = params[4], lon = params[5]; - new_mission_item.latitude_deg = lat; - new_mission_item.longitude_deg = lon; - - auto rel_alt = float(params[6]); - new_mission_item.relative_altitude_m = rel_alt; - - } else if (command == MAV_CMD_DO_MOUNT_CONTROL) { - auto pitch = float(params[0]), yaw = float(params[2]); - new_mission_item.gimbal_pitch_deg = pitch; - new_mission_item.gimbal_yaw_deg = yaw; - - } else if (command == MAV_CMD_NAV_LOITER_TIME) { - auto loiter_time_s = float(params[0]); - new_mission_item.loiter_time_s = loiter_time_s; - - } else if (command == MAV_CMD_IMAGE_START_CAPTURE) { - auto photo_interval = int(params[1]), photo_count = int(params[2]); - - if (photo_interval > 0 && photo_count == 0) { - new_mission_item.camera_action = CameraAction::StartPhotoInterval; - new_mission_item.camera_photo_interval_s = photo_interval; - } else if (photo_interval == 0 && photo_count == 1) { - new_mission_item.camera_action = CameraAction::TakePhoto; - } else { - LogErr() << "Mission item START_CAPTURE params unsupported."; - result = Mission::Result::Unsupported; - break; - } - - } else if (command == MAV_CMD_IMAGE_STOP_CAPTURE) { - new_mission_item.camera_action = CameraAction::StopPhotoInterval; - - } else if (command == MAV_CMD_VIDEO_START_CAPTURE) { - new_mission_item.camera_action = CameraAction::StartVideo; - - } else if (command == MAV_CMD_VIDEO_STOP_CAPTURE) { - new_mission_item.camera_action = CameraAction::StopVideo; - - } else if (command == MAV_CMD_DO_CHANGE_SPEED) { - enum { AirSpeed, GroundSpeed }; - auto speed_type = int(params[0]); - auto speed_m_s = float(params[1]); - auto throttle = params[2]; - auto is_absolute = (params[3] == 0); - - if (speed_type == int(GroundSpeed) && throttle < 0 && is_absolute) { - new_mission_item.speed_m_s = speed_m_s; - } else { - LogErr() << command << "Mission item DO_CHANGE_SPEED params unsupported"; - result = Mission::Result::Unsupported; - break; - } - } else { - LogWarn() << "UNSUPPORTED mission item command(" << command << ")"; - } - } while (false); // Executed once per method invokation. - - return result; -} - -void compare(const MissionItem& local, const MissionItem& imported) -{ - if (local.camera_action == CameraAction::None) { - // Non-Camera commands - if (std::isfinite(local.latitude_deg)) { - EXPECT_NEAR(local.latitude_deg, imported.latitude_deg, 1e-6); - } - if (std::isfinite(local.longitude_deg)) { - EXPECT_NEAR(local.longitude_deg, imported.longitude_deg, 1e-6); - } - if (std::isfinite(local.relative_altitude_m)) { - EXPECT_FLOAT_EQ(local.relative_altitude_m, imported.relative_altitude_m); - } - - EXPECT_EQ(local.is_fly_through, imported.is_fly_through); - if (std::isfinite(local.speed_m_s)) { - EXPECT_FLOAT_EQ(local.speed_m_s, imported.speed_m_s); - } - } - - EXPECT_EQ(local.camera_action, imported.camera_action); - - if (local.camera_action == CameraAction::StartPhotoInterval && - // Camera commands - std::isfinite(local.camera_photo_interval_s)) { - EXPECT_DOUBLE_EQ(local.camera_photo_interval_s, imported.camera_photo_interval_s); - } - - if (std::isfinite(local.loiter_time_s)) { - EXPECT_FLOAT_EQ(local.loiter_time_s, imported.loiter_time_s); - } -} diff --git a/src/plugins/mission/qgroundcontrol_sample.plan b/src/plugins/mission/qgroundcontrol_sample.plan deleted file mode 100644 index ac7d0dccb3..0000000000 --- a/src/plugins/mission/qgroundcontrol_sample.plan +++ /dev/null @@ -1,285 +0,0 @@ -{ - "fileType": "Plan", - "geoFence": { - "polygon": [ - ], - "version": 1 - }, - "groundStation": "QGroundControl", - "mission": { - "cruiseSpeed": 15, - "firmwareType": 12, - "hoverSpeed": 5, - "items": [ - { - "autoContinue": true, - "command": 22, - "doJumpId": 1, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.39781011, - 8.54553801, - 15 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 16, - "doJumpId": 2, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.39779921, - 8.54546693, - 15 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 205, - "doJumpId": 3, - "frame": 2, - "params": [ - 25, - 0, - 50, - null, - 47.39776563, - 8.54544413, - 2 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 16, - "doJumpId": 4, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.39773658, - 8.54543743, - 15 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 2000, - "doJumpId": 5, - "frame": 2, - "params": [ - 0, - 0, - 1, - null, - 47.3977048, - 8.54544279, - 15 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 16, - "doJumpId": 6, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.39768937, - 8.54548034, - 15 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 2000, - "doJumpId": 7, - "frame": 2, - "params": [ - 0, - 1, - 0, - null, - 47.39767757, - 8.54553935, - 15 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 16, - "doJumpId": 8, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.39768029, - 8.54561177, - 15 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 178, - "doJumpId": 9, - "frame": 2, - "params": [ - 1, - 100, - -1, - 0, - 47.39776835, - 8.54569894, - 15 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 16, - "doJumpId": 10, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.39779649, - 8.54566005, - 15 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 19, - "doJumpId": 11, - "frame": 3, - "params": [ - 30, - 0, - 0, - null, - 47.39784007, - 8.54563859, - 15 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 16, - "doJumpId": 12, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.39779468, - 8.54561445, - 15 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 2500, - "doJumpId": 13, - "frame": 2, - "params": [ - 0, - 0, - 0, - null, - 47.39784279, - 8.5455769, - 15 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 16, - "doJumpId": 14, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.39784279, - 8.54553533, - 15 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 2001, - "doJumpId": 15, - "frame": 2, - "params": [ - 0, - 0, - 0, - null, - 47.39782511, - 8.54551128, - 15 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 2501, - "doJumpId": 16, - "frame": 2, - "params": [ - 0, - 0, - 0, - null, - 47.39787413, - 8.54555017, - 15 - ], - "type": "SimpleItem" - } - ], - "plannedHomePosition": [ - 47.3977424, - 8.545599, - 488.103 - ], - "vehicleType": 2, - "version": 2 - }, - "rallyPoints": { - "points": [ - ], - "version": 1 - }, - "version": 1 -} diff --git a/src/plugins/mission/qgroundcontrol_sample_with_survey.plan b/src/plugins/mission/qgroundcontrol_sample_with_survey.plan deleted file mode 100644 index 15567f1299..0000000000 --- a/src/plugins/mission/qgroundcontrol_sample_with_survey.plan +++ /dev/null @@ -1,956 +0,0 @@ -{ - "fileType": "Plan", - "geoFence": { - "circles": [ - ], - "polygons": [ - ], - "version": 2 - }, - "groundStation": "QGroundControl", - "mission": { - "cruiseSpeed": 15, - "firmwareType": 12, - "hoverSpeed": 5, - "items": [ - { - "AMSLAltAboveTerrain": null, - "Altitude": 15, - "AltitudeMode": 1, - "autoContinue": true, - "command": 22, - "doJumpId": 1, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.39781011, - 8.54553801, - 15 - ], - "type": "SimpleItem" - }, - { - "TransectStyleComplexItem": { - "CameraCalc": { - "AdjustedFootprintFrontal": 250, - "AdjustedFootprintSide": 5, - "CameraName": "Manual (no camera specs)", - "DistanceToSurface": 50, - "DistanceToSurfaceRelative": true, - "version": 1 - }, - "CameraShots": 4, - "CameraTriggerInTurnAround": false, - "FollowTerrain": false, - "HoverAndCapture": false, - "Items": [ - { - "autoContinue": true, - "command": 16, - "doJumpId": 2, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.39784192965106, - 8.545413449078293, - 50 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 16, - "doJumpId": 3, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.39790440182785, - 8.545317879157443, - 50 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 206, - "doJumpId": 4, - "frame": 2, - "params": [ - 250, - 0, - 1, - 0, - 0, - 0, - 0 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 16, - "doJumpId": 5, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.397974177081146, - 8.545211136580374, - 50 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 206, - "doJumpId": 6, - "frame": 2, - "params": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 16, - "doJumpId": 7, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.398036649089796, - 8.545115566179781, - 50 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 16, - "doJumpId": 8, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.39800123401638, - 8.545074115797751, - 50 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 16, - "doJumpId": 9, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.39793876204219, - 8.545169686183264, - 50 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 206, - "doJumpId": 10, - "frame": 2, - "params": [ - 250, - 0, - 1, - 0, - 0, - 0, - 0 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 16, - "doJumpId": 11, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.397879855533304, - 8.545259801757693, - 50 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 206, - "doJumpId": 12, - "frame": 2, - "params": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 16, - "doJumpId": 13, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.3978173834048, - 8.545355371702888, - 50 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 16, - "doJumpId": 14, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.397792837129174, - 8.545297294381587, - 50 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 16, - "doJumpId": 15, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.397855309209426, - 8.545201724412054, - 50 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 206, - "doJumpId": 16, - "frame": 2, - "params": [ - 250, - 0, - 1, - 0, - 0, - 0, - 0 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 16, - "doJumpId": 17, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.397894043423285, - 8.545142468524519, - 50 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 206, - "doJumpId": 18, - "frame": 2, - "params": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 16, - "doJumpId": 19, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.397956515374865, - 8.545046898187849, - 50 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 16, - "doJumpId": 20, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.397911199101806, - 8.545020594879665, - 50 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 16, - "doJumpId": 21, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.39784872717209, - 8.545116165165322, - 50 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 206, - "doJumpId": 22, - "frame": 2, - "params": [ - 250, - 0, - 1, - 0, - 0, - 0, - 0 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 16, - "doJumpId": 23, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.39783076285621, - 8.545143647120529, - 50 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 206, - "doJumpId": 24, - "frame": 2, - "params": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 16, - "doJumpId": 25, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.39776829082423, - 8.545239217114402, - 50 - ], - "type": "SimpleItem" - } - ], - "Refly90Degrees": false, - "TurnAroundDistance": 10, - "VisualTransectPoints": [ - [ - 47.39784192965106, - 8.545413449078293 - ], - [ - 47.39790440182785, - 8.545317879157443 - ], - [ - 47.397974177081146, - 8.545211136580374 - ], - [ - 47.398036649089796, - 8.545115566179781 - ], - [ - 47.39800123401638, - 8.545074115797751 - ], - [ - 47.39793876204219, - 8.545169686183264 - ], - [ - 47.397879855533304, - 8.545259801757693 - ], - [ - 47.3978173834048, - 8.545355371702888 - ], - [ - 47.397792837129174, - 8.545297294381587 - ], - [ - 47.397855309209426, - 8.545201724412054 - ], - [ - 47.397894043423285, - 8.545142468524519 - ], - [ - 47.397956515374865, - 8.545046898187849 - ], - [ - 47.397911199101806, - 8.545020594879665 - ], - [ - 47.39784872717209, - 8.545116165165322 - ], - [ - 47.39783076285621, - 8.545143647120529 - ], - [ - 47.39776829082423, - 8.545239217114402 - ] - ], - "version": 1 - }, - "angle": 314, - "complexItemType": "survey", - "entryLocation": 0, - "flyAlternateTransects": false, - "polygon": [ - [ - 47.397983603206725, - 8.54522216909925 - ], - [ - 47.397924595864666, - 8.545365659054301 - ], - [ - 47.39780953215994, - 8.545093414856652 - ], - [ - 47.397936624425284, - 8.545167184280425 - ] - ], - "splitConcavePolygons": false, - "type": "ComplexItem", - "version": 5 - }, - { - "CorridorWidth": 10, - "EntryPoint": 0, - "TransectStyleComplexItem": { - "CameraCalc": { - "AdjustedFootprintFrontal": 25, - "AdjustedFootprintSide": 5, - "CameraName": "Manual (no camera specs)", - "DistanceToSurface": 50, - "DistanceToSurfaceRelative": true, - "version": 1 - }, - "CameraShots": 9, - "CameraTriggerInTurnAround": true, - "FollowTerrain": false, - "HoverAndCapture": false, - "Items": [ - { - "autoContinue": true, - "command": 16, - "doJumpId": 26, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.3976842915956, - 8.545111950891618, - 50 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 206, - "doJumpId": 27, - "frame": 2, - "params": [ - 25, - 0, - 1, - 0, - 0, - 0, - 0 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 16, - "doJumpId": 28, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.39767426032188, - 8.545243979383299, - 50 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 206, - "doJumpId": 29, - "frame": 2, - "params": [ - 25, - 0, - 1, - 0, - 0, - 0, - 0 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 16, - "doJumpId": 30, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.39766439222148, - 8.545373858243078, - 50 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 16, - "doJumpId": 31, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.39766180157361, - 8.545586905499258, - 50 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 16, - "doJumpId": 32, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.39779107211276, - 8.545911807235703, - 50 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 16, - "doJumpId": 33, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.398005467277635, - 8.545879128614397, - 50 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 16, - "doJumpId": 34, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.39809492445337, - 8.54586549325971, - 50 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 16, - "doJumpId": 35, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.398099539336236, - 8.545931571871845, - 50 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 16, - "doJumpId": 36, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.39801008215267, - 8.54594520711554, - 50 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 206, - "doJumpId": 37, - "frame": 2, - "params": [ - 25, - 0, - 1, - 0, - 0, - 0, - 0 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 16, - "doJumpId": 38, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.39776694725207, - 8.545982265990538, - 50 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 16, - "doJumpId": 39, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.3976166151349, - 8.545604428957498, - 50 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 16, - "doJumpId": 40, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.39761947130397, - 8.545369547331699, - 50 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 16, - "doJumpId": 41, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.39762957485054, - 8.545236569673113, - 50 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 16, - "doJumpId": 42, - "frame": 3, - "params": [ - 0, - 0, - 0, - null, - 47.39763960611574, - 8.545104541291987, - 50 - ], - "type": "SimpleItem" - }, - { - "autoContinue": true, - "command": 206, - "doJumpId": 43, - "frame": 2, - "params": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "type": "SimpleItem" - } - ], - "Refly90Degrees": false, - "TurnAroundDistance": 10, - "VisualTransectPoints": [ - [ - 47.3976842915956, - 8.545111950891618 - ], - [ - 47.39767426032188, - 8.545243979383299 - ], - [ - 47.39766439222148, - 8.545373858243078 - ], - [ - 47.39766180157361, - 8.545586905499258 - ], - [ - 47.39779107211276, - 8.545911807235703 - ], - [ - 47.398005467277635, - 8.545879128614397 - ], - [ - 47.39809492445337, - 8.54586549325971 - ], - [ - 47.398099539336236, - 8.545931571871845 - ], - [ - 47.39801008215267, - 8.54594520711554 - ], - [ - 47.39776694725207, - 8.545982265990538 - ], - [ - 47.3976166151349, - 8.545604428957498 - ], - [ - 47.39761947130397, - 8.545369547331699 - ], - [ - 47.39762957485054, - 8.545236569673113 - ], - [ - 47.39763960611574, - 8.545104541291987 - ] - ], - "version": 1 - }, - "complexItemType": "CorridorScan", - "polyline": [ - [ - 47.39765191758626, - 8.545240274526634 - ], - [ - 47.39764193176274, - 8.545371702786468 - ], - [ - 47.39763920835458, - 8.545595667232135 - ], - [ - 47.39777900968782, - 8.545947036621186 - ], - [ - 47.3980077747199, - 8.54591216786352 - ] - ], - "type": "ComplexItem", - "version": 2 - }, - { - "autoContinue": true, - "command": 20, - "doJumpId": 44, - "frame": 2, - "params": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "type": "SimpleItem" - } - ], - "plannedHomePosition": [ - 47.3977424, - 8.545599, - 489 - ], - "vehicleType": 2, - "version": 2 - }, - "rallyPoints": { - "points": [ - ], - "version": 2 - }, - "version": 1 -} diff --git a/src/plugins/mission_raw/CMakeLists.txt b/src/plugins/mission_raw/CMakeLists.txt index 00cbe0b1dd..62a5f86b77 100644 --- a/src/plugins/mission_raw/CMakeLists.txt +++ b/src/plugins/mission_raw/CMakeLists.txt @@ -1,6 +1,9 @@ +find_package(JsonCpp REQUIRED) + add_library(mavsdk_mission_raw mission_raw.cpp mission_raw_impl.cpp + mission_import.cpp ) include_directories( @@ -14,7 +17,10 @@ set_target_properties(mavsdk_mission_raw ) target_link_libraries(mavsdk_mission_raw + PUBLIC mavsdk + PRIVATE + JsonCpp::jsoncpp ) target_include_directories(mavsdk_mission_raw PUBLIC @@ -32,3 +38,8 @@ install(FILES include/plugins/mission_raw/mission_raw.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/mavsdk/plugins/mission_raw ) + +list(APPEND UNIT_TEST_SOURCES + ${CMAKE_CURRENT_SOURCE_DIR}/mission_import_test.cpp +) +set(UNIT_TEST_SOURCES ${UNIT_TEST_SOURCES} PARENT_SCOPE) diff --git a/src/plugins/mission_raw/include/plugins/mission_raw/mission_raw.h b/src/plugins/mission_raw/include/plugins/mission_raw/mission_raw.h index 8205ffaa67..fd5e8507f5 100644 --- a/src/plugins/mission_raw/include/plugins/mission_raw/mission_raw.h +++ b/src/plugins/mission_raw/include/plugins/mission_raw/mission_raw.h @@ -116,6 +116,31 @@ class MissionRaw : public PluginBase { */ friend std::ostream& operator<<(std::ostream& str, MissionRaw::MissionItem const& mission_item); + /** + * @brief Mission import data + */ + struct MissionImportData { + std::vector mission_items{}; /**< @brief Mission items */ + std::vector geofence_items{}; /**< @brief Geofence items */ + std::vector rally_items{}; /**< @brief Rally items */ + }; + + /** + * @brief Equal operator to compare two `MissionRaw::MissionImportData` objects. + * + * @return `true` if items are equal. + */ + friend bool + operator==(const MissionRaw::MissionImportData& lhs, const MissionRaw::MissionImportData& rhs); + + /** + * @brief Stream operator to print information about a `MissionRaw::MissionImportData`. + * + * @return A reference to the stream. + */ + friend std::ostream& + operator<<(std::ostream& str, MissionRaw::MissionImportData const& mission_import_data); + /** * @brief Possible results returned for action requests. */ @@ -130,6 +155,8 @@ class MissionRaw : public PluginBase { Unsupported, /**< @brief Mission downloaded from the system is not supported. */ NoMissionAvailable, /**< @brief No mission available on the system. */ TransferCancelled, /**< @brief Mission transfer (upload or download) has been cancelled. */ + FailedToOpenQgcPlan, /**< @brief Failed to open the QGroundControl plan. */ + FailedToParseQgcPlan, /**< @brief Failed to parse the QGroundControl plan. */ }; /** @@ -326,6 +353,22 @@ class MissionRaw : public PluginBase { */ void subscribe_mission_changed(MissionChangedCallback callback); + /** + * @brief Import a QGroundControl missions in JSON .plan format. + * + * Supported: + * - Waypoints + * - Survey + * Not supported: + * - Structure Scan + * + * This function is blocking. + * + * @return Result of request. + */ + std::pair + import_qgroundcontrol_mission(std::string qgc_plan_path) const; + /** * @brief Copy constructor. */ diff --git a/src/plugins/mission_raw/mission_import.cpp b/src/plugins/mission_raw/mission_import.cpp new file mode 100644 index 0000000000..8d9f6cf3d3 --- /dev/null +++ b/src/plugins/mission_raw/mission_import.cpp @@ -0,0 +1,222 @@ +#include "log.h" +#include "mission_import.h" +#include "mavlink_include.h" +#include // for `std::round` +#include // for `std::ifstream` +#include // for `std::stringstream` + +namespace mavsdk { + +std::pair +MissionImport::parse_json(const std::string& raw_json) +{ + Json::CharReaderBuilder builder; + const std::unique_ptr reader(builder.newCharReader()); + Json::Value root; + JSONCPP_STRING err; + + if (!reader->parse(raw_json.c_str(), raw_json.c_str() + raw_json.length(), &root, &err)) { + LogErr() << "Parse error: " << err; + return {MissionRaw::Result::FailedToParseQgcPlan, {}}; + } + + if (!check_overall_version(root)) { + return {MissionRaw::Result::FailedToParseQgcPlan, {}}; + } + + auto maybe_mission_items = import_mission(root); + if (!maybe_mission_items.has_value()) { + return {MissionRaw::Result::FailedToParseQgcPlan, {}}; + } + + MissionRaw::MissionImportData import_data; + import_data.mission_items = maybe_mission_items.value(); + return {MissionRaw::Result::Success, import_data}; +} + +bool MissionImport::check_overall_version(const Json::Value& root) +{ + const auto supported_overall_version = 1; + const auto overall_version = root["version"]; + if (overall_version.empty() || overall_version.asInt() != supported_overall_version) { + LogErr() << "Overall .plan version not supported, found version: " << overall_version + << ", supported: " << supported_overall_version; + return false; + } + + return true; +} + +std::optional> +MissionImport::import_mission(const Json::Value& root) +{ + // We need a mission part. + const auto mission = root["mission"]; + if (mission.empty()) { + LogErr() << "No mission found in .plan."; + return std::nullopt; + } + + // Check the mission version. + const auto supported_mission_version = 2; + const auto mission_version = mission["version"]; + if (mission_version.empty() || mission_version.asInt() != supported_mission_version) { + LogErr() << "mission version for .plan not supported, found version: " + << mission_version.asInt() << ", supported: " << supported_mission_version; + return std::nullopt; + } + + std::vector mission_items; + + // Go through items + for (const auto& json_item : mission["items"]) { + const auto type = json_item["type"]; + + if (!type.isNull() && type.asString() == "SimpleItem") { + const auto maybe_item = import_simple_mission_item(json_item); + if (maybe_item.has_value()) { + mission_items.push_back(maybe_item.value()); + } else { + return std::nullopt; + } + + } else if (!type.isNull() && type.asString() == "ComplexItem") { + const auto maybe_items = import_complex_mission_items(json_item); + if (maybe_items.has_value()) { + mission_items.insert( + mission_items.end(), maybe_items.value().begin(), maybe_items.value().end()); + } else { + return std::nullopt; + } + + } else { + LogErr() << "Type " << type.asString() << " not understood."; + return std::nullopt; + } + } + + // Mark first item as current + if (mission_items.size() > 0) { + mission_items[0].current = 1; + } + + // Don't forget sequence number + unsigned sequence = 0; + for (auto& mission_item : mission_items) { + mission_item.seq = sequence++; + } + + // Returning an empty vector is ok here if there were really no mission items. + return {mission_items}; +} + +std::optional +MissionImport::import_simple_mission_item(const Json::Value& json_item) +{ + if (json_item["command"].empty() || json_item["autoContinue"].empty() || + json_item["frame"].empty() || json_item["params"].empty()) { + LogErr() << "Missing mission item field."; + return std::nullopt; + } + + if (!json_item["params"].isArray()) { + LogErr() << "No param array found."; + return std::nullopt; + } + + MissionRaw::MissionItem item{}; + item.command = json_item["command"].asInt(); + item.autocontinue = json_item["autoContinue"].asBool() ? 1 : 0; + item.frame = json_item["frame"].asInt(); + item.mission_type = MAV_MISSION_TYPE_MISSION; + + const auto set_float = [](const Json::Value& val) { + return val.isNull() ? NAN : val.asFloat(); + }; + + const auto set_int32 = [](const Json::Value& val) { + return static_cast(val.isNull() ? 0 : (std::round(val.asDouble() * 1e7))); + }; + + for (unsigned i = 0; i < 7; ++i) { + switch (i) { + case 0: + item.param1 = set_float(json_item["params"][i]); + break; + case 1: + item.param2 = set_float(json_item["params"][i]); + break; + case 2: + item.param3 = set_float(json_item["params"][i]); + break; + case 3: + item.param4 = set_float(json_item["params"][i]); + break; + case 4: + item.x = set_int32(json_item["params"][i]); + break; + case 5: + item.y = set_int32(json_item["params"][i]); + break; + case 6: + item.z = set_float(json_item["params"][i]); + break; + default: + // should never happen + break; + } + } + + return {item}; +} + +std::optional> +MissionImport::import_complex_mission_items(const Json::Value& json_item) +{ + if (json_item["complexItemType"].empty()) { + LogErr() << "Could not determine complexItemType"; + return std::nullopt; + } + + if (json_item["complexItemType"] != "survey") { + LogErr() << "complexItemType: " << json_item["complexItemType"] << " not supported"; + return std::nullopt; + } + + if (json_item["version"].empty()) { + LogErr() << "version of complexItem not found"; + return std::nullopt; + } + + const int supported_complex_item_version = 5; + const int found_version = json_item["version"].asInt(); + if (found_version != 5) { + LogErr() << "version of complexItem not supported, found version: " << found_version + << ", supported: " << supported_complex_item_version; + return std::nullopt; + } + + if (json_item["TransectStyleComplexItem"].empty()) { + LogErr() << "TransectStyleComplexItem not found"; + return std::nullopt; + } + + // These are Items (capitalized!) inside the TransectStyleComplexItem. + if (json_item["TransectStyleComplexItem"]["Items"].empty() || + !json_item["TransectStyleComplexItem"]["Items"].isArray()) { + LogErr() << "No survey items found"; + return std::nullopt; + } + + std::vector mission_items; + for (const auto& json_item_subitem : json_item["TransectStyleComplexItem"]["Items"]) { + const auto maybe_item = import_simple_mission_item(json_item_subitem); + if (maybe_item.has_value()) { + mission_items.push_back(maybe_item.value()); + } + } + + return {mission_items}; +} + +} // namespace mavsdk diff --git a/src/plugins/mission_raw/mission_import.h b/src/plugins/mission_raw/mission_import.h new file mode 100644 index 0000000000..e8e162d2dd --- /dev/null +++ b/src/plugins/mission_raw/mission_import.h @@ -0,0 +1,26 @@ +#pragma once + +#include "plugins/mission_raw/mission_raw.h" +#include +#include +#include +#include + +namespace mavsdk { + +class MissionImport { +public: + static std::pair + parse_json(const std::string& raw_json); + +private: + static bool check_overall_version(const Json::Value& root); + static std::optional> + import_mission(const Json::Value& root); + static std::optional + import_simple_mission_item(const Json::Value& json_item); + static std::optional> + import_complex_mission_items(const Json::Value& json_item); +}; + +} // namespace mavsdk diff --git a/src/plugins/mission_raw/mission_import_test.cpp b/src/plugins/mission_raw/mission_import_test.cpp new file mode 100644 index 0000000000..442bda6e5c --- /dev/null +++ b/src/plugins/mission_raw/mission_import_test.cpp @@ -0,0 +1,399 @@ +#include +#include +#include // for `std::ifstream` +#include // for `std::stringstream` +#include +#include + +#include "global_include.h" +#include "log.h" +#include "mavlink_include.h" +#include "plugins/mission_raw/mission_raw.h" +#include "mission_import.h" + +using namespace mavsdk; + +std::string path_prefix(const std::string& path) +{ + return std::string("src/plugins/mission_raw/test_plans/") + path; +} + +TEST(MissionRaw, ImportSamplePlanSuccessfully) +{ + const std::vector reference_items = { + {0, + MAV_FRAME_GLOBAL_RELATIVE_ALT, + MAV_CMD_NAV_TAKEOFF, + 1, // current + 1, + 15.0f, + 0.0f, + 0.0f, + NAN, + 473977507, + 85456075, + 50.0f, + MAV_MISSION_TYPE_MISSION}, + {1, + MAV_FRAME_GLOBAL_RELATIVE_ALT, + MAV_CMD_NAV_WAYPOINT, + 0, + 1, + 0.0f, + 0.0f, + 0.0f, + NAN, + 473977711, + 85466122, + 50.0f, + MAV_MISSION_TYPE_MISSION}, + {2, + MAV_FRAME_MISSION, + MAV_CMD_IMAGE_START_CAPTURE, + 0, + 1, + 0.0f, + 0.0f, + 1.0f, + 0.0f, + 0, + 0, + 0.0f, + MAV_MISSION_TYPE_MISSION}, + {3, + MAV_FRAME_GLOBAL_RELATIVE_ALT, + MAV_CMD_NAV_WAYPOINT, + 0, + 1, + 0.0f, + 0.0f, + 0.0f, + NAN, + 473982738, + 85466053, + 50.0f, + MAV_MISSION_TYPE_MISSION}, + {4, + MAV_FRAME_GLOBAL_RELATIVE_ALT, + MAV_CMD_NAV_WAYPOINT, + 0, + 1, + 0.0f, + 0.0f, + 0.0f, + NAN, + 473982784, + 85456082, + 50.0f, + MAV_MISSION_TYPE_MISSION}, + {5, + MAV_FRAME_MISSION, + MAV_CMD_NAV_RETURN_TO_LAUNCH, + 0, + 1, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0, + 0, + 0.0f, + MAV_MISSION_TYPE_MISSION}, + }; + + std::ifstream file{path_prefix("qgroundcontrol_sample.plan")}; + ASSERT_TRUE(file); + + std::stringstream buf; + buf << file.rdbuf(); + file.close(); + + const auto result_pair = MissionImport::parse_json(buf.str()); + ASSERT_EQ(result_pair.first, MissionRaw::Result::Success); + + EXPECT_EQ(reference_items, result_pair.second.mission_items); +} + +TEST(MissionRaw, ImportSamplePlanWithWrongOverallVersion) +{ + std::ifstream file(path_prefix("qgroundcontrol_sample_wrong_overall_version.plan")); + ASSERT_TRUE(file); + + std::stringstream buf; + buf << file.rdbuf(); + file.close(); + + const auto result_pair = MissionImport::parse_json(buf.str()); + EXPECT_EQ(result_pair.first, MissionRaw::Result::FailedToParseQgcPlan); + EXPECT_EQ(result_pair.second.mission_items.size(), 0); + EXPECT_EQ(result_pair.second.geofence_items.size(), 0); + EXPECT_EQ(result_pair.second.rally_items.size(), 0); +} + +TEST(MissionRaw, ImportSamplePlanWithWrongMissionVersion) +{ + std::ifstream file(path_prefix("qgroundcontrol_sample_wrong_mission_version.plan")); + ASSERT_TRUE(file); + + std::stringstream buf; + buf << file.rdbuf(); + file.close(); + + const auto result_pair = MissionImport::parse_json(buf.str()); + EXPECT_EQ(result_pair.first, MissionRaw::Result::FailedToParseQgcPlan); + EXPECT_EQ(result_pair.second.mission_items.size(), 0); + EXPECT_EQ(result_pair.second.geofence_items.size(), 0); + EXPECT_EQ(result_pair.second.rally_items.size(), 0); +} + +TEST(MissionRaw, ImportSamplePlanWithoutMission) +{ + std::ifstream file(path_prefix("qgroundcontrol_sample_without_mission.plan")); + ASSERT_TRUE(file); + + std::stringstream buf; + buf << file.rdbuf(); + file.close(); + + const auto result_pair = MissionImport::parse_json(buf.str()); + EXPECT_EQ(result_pair.first, MissionRaw::Result::FailedToParseQgcPlan); + EXPECT_EQ(result_pair.second.mission_items.size(), 0); + EXPECT_EQ(result_pair.second.geofence_items.size(), 0); + EXPECT_EQ(result_pair.second.rally_items.size(), 0); +} + +TEST(MissionRaw, ImportSamplePlanWithComplexMissionSurvey) +{ + const std::vector reference_items = { + {0, + MAV_FRAME_MISSION, + MAV_CMD_SET_CAMERA_MODE, + 1, // current + 1, + 0.0f, + 2.0f, + NAN, + NAN, + 0, + 0, + NAN, + MAV_MISSION_TYPE_MISSION}, + {1, + MAV_FRAME_GLOBAL_RELATIVE_ALT, + MAV_CMD_NAV_WAYPOINT, + 0, + 1, + 0.0f, + 0.0f, + 0.0f, + NAN, + 473977060, + 85463397, + 50.0f, + MAV_MISSION_TYPE_MISSION}, + {2, + MAV_FRAME_MISSION, + MAV_CMD_DO_SET_CAM_TRIGG_DIST, + 0, + 1, + 25.0f, + 0.0f, + 1.0f, + 0.0f, + 0, + 0, + 0.0f, + MAV_MISSION_TYPE_MISSION}, + {3, + MAV_FRAME_GLOBAL_RELATIVE_ALT, + MAV_CMD_NAV_WAYPOINT, + 0, + 1, + 0.0f, + 0.0f, + 0.0f, + NAN, + 473977060, + 85462068, + 50.0f, + MAV_MISSION_TYPE_MISSION}, + {4, + MAV_FRAME_MISSION, + MAV_CMD_DO_SET_CAM_TRIGG_DIST, + 0, + 1, + 25.0f, + 0.0f, + 1.0f, + 0.0f, + 0, + 0, + 0.0f, + MAV_MISSION_TYPE_MISSION}, + {5, + MAV_FRAME_GLOBAL_RELATIVE_ALT, + MAV_CMD_NAV_WAYPOINT, + 0, + 1, + 0.0f, + 0.0f, + 0.0f, + NAN, + 473977060, + 85457443, + 50.0f, + MAV_MISSION_TYPE_MISSION}, + {6, + MAV_FRAME_GLOBAL_RELATIVE_ALT, + MAV_CMD_NAV_WAYPOINT, + 0, + 1, + 0.0f, + 0.0f, + 0.0f, + NAN, + 473977060, + 85456115, + 50.0f, + MAV_MISSION_TYPE_MISSION}, + {7, + MAV_FRAME_GLOBAL_RELATIVE_ALT, + MAV_CMD_NAV_WAYPOINT, + 0, + 1, + 0.0f, + 0.0f, + 0.0f, + NAN, + 473974811, + 85456316, + 50.0f, + MAV_MISSION_TYPE_MISSION}, + {8, + MAV_FRAME_GLOBAL_RELATIVE_ALT, + MAV_CMD_NAV_WAYPOINT, + 0, + 1, + 0.0f, + 0.0f, + 0.0f, + NAN, + 473974811, + 85457645, + 50.0f, + MAV_MISSION_TYPE_MISSION}, + {9, + MAV_FRAME_MISSION, + MAV_CMD_DO_SET_CAM_TRIGG_DIST, + 0, + 1, + 25.0f, + 0.0f, + 1.0f, + 0.0f, + 0, + 0, + 0.0f, + MAV_MISSION_TYPE_MISSION}, + {10, + MAV_FRAME_GLOBAL_RELATIVE_ALT, + MAV_CMD_NAV_WAYPOINT, + 0, + 1, + 0.0f, + 0.0f, + 0.0f, + NAN, + 473974811, + 85462092, + 50.0f, + MAV_MISSION_TYPE_MISSION}, + {11, + MAV_FRAME_GLOBAL_RELATIVE_ALT, + MAV_CMD_NAV_WAYPOINT, + 0, + 1, + 0.0f, + 0.0f, + 0.0f, + NAN, + 473974811, + 85463421, + 50.0f, + MAV_MISSION_TYPE_MISSION}, + {12, + MAV_FRAME_MISSION, + MAV_CMD_DO_SET_CAM_TRIGG_DIST, + 0, + 1, + 0.0f, + 0.0f, + 1.0f, + 0.0f, + 0, + 0, + 0.0f, + MAV_MISSION_TYPE_MISSION}}; + + std::ifstream file(path_prefix("qgroundcontrol_sample_with_survey.plan")); + ASSERT_TRUE(file); + + std::stringstream buf; + buf << file.rdbuf(); + file.close(); + + const auto result_pair = MissionImport::parse_json(buf.str()); + EXPECT_EQ(result_pair.first, MissionRaw::Result::Success); + EXPECT_EQ(reference_items, result_pair.second.mission_items); + + EXPECT_EQ(result_pair.second.geofence_items.size(), 0); + EXPECT_EQ(result_pair.second.rally_items.size(), 0); +} + +TEST(MissionRaw, ImportSamplePlanWithComplexMissionSurveyWrongVersion) +{ + std::ifstream file(path_prefix("qgroundcontrol_sample_with_survey_wrong_version.plan")); + ASSERT_TRUE(file); + + std::stringstream buf; + buf << file.rdbuf(); + file.close(); + + const auto result_pair = MissionImport::parse_json(buf.str()); + EXPECT_EQ(result_pair.first, MissionRaw::Result::FailedToParseQgcPlan); + EXPECT_EQ(result_pair.second.mission_items.size(), 0); + EXPECT_EQ(result_pair.second.geofence_items.size(), 0); + EXPECT_EQ(result_pair.second.rally_items.size(), 0); +} + +TEST(MissionRaw, ImportSamplePlanWithComplexMissionStructuredScan) +{ + std::ifstream file(path_prefix("qgroundcontrol_sample_with_structured_scan.plan")); + ASSERT_TRUE(file); + + std::stringstream buf; + buf << file.rdbuf(); + file.close(); + + const auto result_pair = MissionImport::parse_json(buf.str()); + EXPECT_EQ(result_pair.first, MissionRaw::Result::FailedToParseQgcPlan); + EXPECT_EQ(result_pair.second.mission_items.size(), 0); + EXPECT_EQ(result_pair.second.geofence_items.size(), 0); + EXPECT_EQ(result_pair.second.rally_items.size(), 0); +} + +TEST(MissionRaw, ImportSamplePlanWithComplexMissionSurveyMissingItems) +{ + std::ifstream file(path_prefix("qgroundcontrol_sample_with_survey_missing_items.plan")); + ASSERT_TRUE(file); + + std::stringstream buf; + buf << file.rdbuf(); + file.close(); + + const auto result_pair = MissionImport::parse_json(buf.str()); + EXPECT_EQ(result_pair.first, MissionRaw::Result::FailedToParseQgcPlan); + EXPECT_EQ(result_pair.second.mission_items.size(), 0); + EXPECT_EQ(result_pair.second.geofence_items.size(), 0); + EXPECT_EQ(result_pair.second.rally_items.size(), 0); +} diff --git a/src/plugins/mission_raw/mission_raw.cpp b/src/plugins/mission_raw/mission_raw.cpp index bacb2b262c..3339e49a83 100644 --- a/src/plugins/mission_raw/mission_raw.cpp +++ b/src/plugins/mission_raw/mission_raw.cpp @@ -11,6 +11,7 @@ namespace mavsdk { using MissionProgress = MissionRaw::MissionProgress; using MissionItem = MissionRaw::MissionItem; +using MissionImportData = MissionRaw::MissionImportData; MissionRaw::MissionRaw(System& system) : PluginBase(), _impl{new MissionRawImpl(system)} {} @@ -108,6 +109,12 @@ void MissionRaw::subscribe_mission_changed(MissionChangedCallback callback) _impl->subscribe_mission_changed(callback); } +std::pair +MissionRaw::import_qgroundcontrol_mission(std::string qgc_plan_path) const +{ + return _impl->import_qgroundcontrol_mission(qgc_plan_path); +} + bool operator==(const MissionRaw::MissionProgress& lhs, const MissionRaw::MissionProgress& rhs) { return (rhs.current == lhs.current) && (rhs.total == lhs.total); @@ -157,6 +164,42 @@ std::ostream& operator<<(std::ostream& str, MissionRaw::MissionItem const& missi return str; } +bool operator==(const MissionRaw::MissionImportData& lhs, const MissionRaw::MissionImportData& rhs) +{ + return (rhs.mission_items == lhs.mission_items) && (rhs.geofence_items == lhs.geofence_items) && + (rhs.rally_items == lhs.rally_items); +} + +std::ostream& +operator<<(std::ostream& str, MissionRaw::MissionImportData const& mission_import_data) +{ + str << std::setprecision(15); + str << "mission_import_data:" << '\n' << "{\n"; + str << " mission_items: ["; + for (auto it = mission_import_data.mission_items.begin(); + it != mission_import_data.mission_items.end(); + ++it) { + str << *it; + str << (it + 1 != mission_import_data.mission_items.end() ? ", " : "]\n"); + } + str << " geofence_items: ["; + for (auto it = mission_import_data.geofence_items.begin(); + it != mission_import_data.geofence_items.end(); + ++it) { + str << *it; + str << (it + 1 != mission_import_data.geofence_items.end() ? ", " : "]\n"); + } + str << " rally_items: ["; + for (auto it = mission_import_data.rally_items.begin(); + it != mission_import_data.rally_items.end(); + ++it) { + str << *it; + str << (it + 1 != mission_import_data.rally_items.end() ? ", " : "]\n"); + } + str << '}'; + return str; +} + std::ostream& operator<<(std::ostream& str, MissionRaw::Result const& result) { switch (result) { @@ -180,6 +223,10 @@ std::ostream& operator<<(std::ostream& str, MissionRaw::Result const& result) return str << "No Mission Available"; case MissionRaw::Result::TransferCancelled: return str << "Transfer Cancelled"; + case MissionRaw::Result::FailedToOpenQgcPlan: + return str << "Failed To Open Qgc Plan"; + case MissionRaw::Result::FailedToParseQgcPlan: + return str << "Failed To Parse Qgc Plan"; default: return str << "Unknown"; } diff --git a/src/plugins/mission_raw/mission_raw_impl.cpp b/src/plugins/mission_raw/mission_raw_impl.cpp index 1d769bff36..9f74fe2b09 100644 --- a/src/plugins/mission_raw/mission_raw_impl.cpp +++ b/src/plugins/mission_raw/mission_raw_impl.cpp @@ -1,7 +1,11 @@ #include "mission_raw_impl.h" +#include "mission_import.h" #include "system.h" #include "global_include.h" +#include // for `std::ifstream` +#include // for `std::stringstream` + namespace mavsdk { using namespace std::placeholders; // for `_1` @@ -464,6 +468,22 @@ void MissionRawImpl::subscribe_mission_changed(MissionRaw::MissionChangedCallbac _mission_changed.callback = callback; } +std::pair +MissionRawImpl::import_qgroundcontrol_mission(std::string qgc_plan_path) +{ + std::ifstream file(qgc_plan_path); + if (!file) { + return std::make_pair( + MissionRaw::Result::FailedToOpenQgcPlan, {}); + } + + std::stringstream buf; + buf << file.rdbuf(); + file.close(); + + return MissionImport::parse_json(buf.str()); +} + MissionRaw::Result MissionRawImpl::convert_result(MAVLinkMissionTransfer::Result result) { switch (result) { diff --git a/src/plugins/mission_raw/mission_raw_impl.h b/src/plugins/mission_raw/mission_raw_impl.h index 85b8f47ef8..ba795802e4 100644 --- a/src/plugins/mission_raw/mission_raw_impl.h +++ b/src/plugins/mission_raw/mission_raw_impl.h @@ -49,6 +49,17 @@ class MissionRawImpl : public PluginImplBase { MissionRaw::MissionProgress mission_progress(); void subscribe_mission_progress(MissionRaw::MissionProgressCallback callback); + std::pair + import_qgroundcontrol_mission(std::string qgc_plan_path); + +#if 0 + void import_qgroundcontrol_mission_async( + std::string qgc_plan_path, const MissionRaw::ImportQgroundcontrolMissionCallback callback); + + static std::pair + import_qgroundcontrol_mission(const std::string& qgc_plan_path); +#endif + MissionRawImpl(const MissionRawImpl&) = delete; const MissionRawImpl& operator=(const MissionRawImpl&) = delete; diff --git a/src/plugins/mission_raw/test_plans/qgroundcontrol_sample.plan b/src/plugins/mission_raw/test_plans/qgroundcontrol_sample.plan new file mode 100644 index 0000000000..0a8302537d --- /dev/null +++ b/src/plugins/mission_raw/test_plans/qgroundcontrol_sample.plan @@ -0,0 +1,140 @@ +{ + "fileType": "Plan", + "geoFence": { + "circles": [ + ], + "polygons": [ + ], + "version": 2 + }, + "groundStation": "QGroundControl", + "mission": { + "cruiseSpeed": 15, + "firmwareType": 12, + "globalPlanAltitudeMode": 1, + "hoverSpeed": 5, + "items": [ + { + "AMSLAltAboveTerrain": null, + "Altitude": 50, + "AltitudeMode": 1, + "autoContinue": true, + "command": 22, + "doJumpId": 1, + "frame": 3, + "params": [ + 15, + 0, + 0, + null, + 47.3977507, + 8.5456075, + 50 + ], + "type": "SimpleItem" + }, + { + "AMSLAltAboveTerrain": null, + "Altitude": 50, + "AltitudeMode": 1, + "autoContinue": true, + "command": 16, + "doJumpId": 2, + "frame": 3, + "params": [ + 0, + 0, + 0, + null, + 47.39777106, + 8.5466122, + 50 + ], + "type": "SimpleItem" + }, + { + "autoContinue": true, + "command": 2000, + "doJumpId": 3, + "frame": 2, + "params": [ + 0, + 0, + 1, + 0, + 0, + 0, + 0 + ], + "type": "SimpleItem" + }, + { + "AMSLAltAboveTerrain": null, + "Altitude": 50, + "AltitudeMode": 1, + "autoContinue": true, + "command": 16, + "doJumpId": 4, + "frame": 3, + "params": [ + 0, + 0, + 0, + null, + 47.39827377, + 8.54660532, + 50 + ], + "type": "SimpleItem" + }, + { + "AMSLAltAboveTerrain": null, + "Altitude": 50, + "AltitudeMode": 1, + "autoContinue": true, + "command": 16, + "doJumpId": 5, + "frame": 3, + "params": [ + 0, + 0, + 0, + null, + 47.39827842, + 8.54560824, + 50 + ], + "type": "SimpleItem" + }, + { + "autoContinue": true, + "command": 20, + "doJumpId": 6, + "frame": 2, + "params": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "type": "SimpleItem" + } + ], + "plannedHomePosition": [ + 47.3977507, + 8.5456075, + 488.93101752001763 + ], + "vehicleType": 2, + "version": 2 + }, + "rallyPoints": { + "points": [ + ], + "version": 2 + }, + "version": 1 +} diff --git a/src/plugins/mission_raw/test_plans/qgroundcontrol_sample_with_structured_scan.plan b/src/plugins/mission_raw/test_plans/qgroundcontrol_sample_with_structured_scan.plan new file mode 100644 index 0000000000..57f7f31404 --- /dev/null +++ b/src/plugins/mission_raw/test_plans/qgroundcontrol_sample_with_structured_scan.plan @@ -0,0 +1,85 @@ +{ + "fileType": "Plan", + "geoFence": { + "circles": [ + ], + "polygons": [ + ], + "version": 2 + }, + "groundStation": "QGroundControl", + "mission": { + "cruiseSpeed": 15, + "firmwareType": 12, + "globalPlanAltitudeMode": 1, + "hoverSpeed": 5, + "items": [ + { + "autoContinue": true, + "command": 530, + "doJumpId": 1, + "frame": 2, + "params": [ + 0, + 2, + null, + null, + null, + null, + null + ], + "type": "SimpleItem" + }, + { + "CameraCalc": { + "AdjustedFootprintFrontal": 25, + "AdjustedFootprintSide": 25, + "CameraName": "Manual (no camera specs)", + "DistanceToSurface": 50, + "DistanceToSurfaceRelative": true, + "version": 1 + }, + "EntranceAltitude": 50, + "GimbalPitch": 0, + "Layers": 2, + "ScanBottomAlt": 50, + "StartFromTop": true, + "StructureHeight": 100, + "complexItemType": "StructureScan", + "polygon": [ + [ + 47.39817545923646, + 8.546361558007561 + ], + [ + 47.398093903224094, + 8.546896356125728 + ], + [ + 47.39753072646259, + 8.546657108174259 + ], + [ + 47.39763558527823, + 8.546187715955966 + ] + ], + "type": "ComplexItem", + "version": 3 + } + ], + "plannedHomePosition": [ + 47.39802707617687, + 8.54612034, + 488.2445356057833 + ], + "vehicleType": 2, + "version": 2 + }, + "rallyPoints": { + "points": [ + ], + "version": 2 + }, + "version": 1 +} diff --git a/src/plugins/mission_raw/test_plans/qgroundcontrol_sample_with_survey.plan b/src/plugins/mission_raw/test_plans/qgroundcontrol_sample_with_survey.plan new file mode 100644 index 0000000000..73fb41b246 --- /dev/null +++ b/src/plugins/mission_raw/test_plans/qgroundcontrol_sample_with_survey.plan @@ -0,0 +1,320 @@ +{ + "fileType": "Plan", + "geoFence": { + "circles": [ + ], + "polygons": [ + ], + "version": 2 + }, + "groundStation": "QGroundControl", + "mission": { + "cruiseSpeed": 15, + "firmwareType": 12, + "globalPlanAltitudeMode": 1, + "hoverSpeed": 5, + "items": [ + { + "autoContinue": true, + "command": 530, + "doJumpId": 1, + "frame": 2, + "params": [ + 0, + 2, + null, + null, + null, + null, + null + ], + "type": "SimpleItem" + }, + { + "TransectStyleComplexItem": { + "CameraCalc": { + "AdjustedFootprintFrontal": 25, + "AdjustedFootprintSide": 25, + "CameraName": "Manual (no camera specs)", + "DistanceToSurface": 50, + "DistanceToSurfaceRelative": true, + "version": 1 + }, + "CameraShots": 6, + "CameraTriggerInTurnAround": true, + "FollowTerrain": false, + "HoverAndCapture": false, + "Items": [ + { + "autoContinue": true, + "command": 16, + "doJumpId": 2, + "frame": 3, + "params": [ + 0, + 0, + 0, + null, + 47.397705960554916, + 8.546339694155481, + 50 + ], + "type": "SimpleItem" + }, + { + "autoContinue": true, + "command": 206, + "doJumpId": 3, + "frame": 2, + "params": [ + 25, + 0, + 1, + 0, + 0, + 0, + 0 + ], + "type": "SimpleItem" + }, + { + "autoContinue": true, + "command": 16, + "doJumpId": 4, + "frame": 3, + "params": [ + 0, + 0, + 0, + null, + 47.39770596118868, + 8.546206836516207, + 50 + ], + "type": "SimpleItem" + }, + { + "autoContinue": true, + "command": 206, + "doJumpId": 5, + "frame": 2, + "params": [ + 25, + 0, + 1, + 0, + 0, + 0, + 0 + ], + "type": "SimpleItem" + }, + { + "autoContinue": true, + "command": 16, + "doJumpId": 6, + "frame": 3, + "params": [ + 0, + 0, + 0, + null, + 47.39770596219769, + 8.545744326765641, + 50 + ], + "type": "SimpleItem" + }, + { + "autoContinue": true, + "command": 16, + "doJumpId": 7, + "frame": 3, + "params": [ + 0, + 0, + 0, + null, + 47.39770596214361, + 8.54561146912636, + 50 + ], + "type": "SimpleItem" + }, + { + "autoContinue": true, + "command": 16, + "doJumpId": 8, + "frame": 3, + "params": [ + 0, + 0, + 0, + null, + 47.397481131760195, + 8.545631605677352, + 50 + ], + "type": "SimpleItem" + }, + { + "autoContinue": true, + "command": 16, + "doJumpId": 9, + "frame": 3, + "params": [ + 0, + 0, + 0, + null, + 47.39748113179102, + 8.545764462749732, + 50 + ], + "type": "SimpleItem" + }, + { + "autoContinue": true, + "command": 206, + "doJumpId": 10, + "frame": 2, + "params": [ + 25, + 0, + 1, + 0, + 0, + 0, + 0 + ], + "type": "SimpleItem" + }, + { + "autoContinue": true, + "command": 16, + "doJumpId": 11, + "frame": 3, + "params": [ + 0, + 0, + 0, + null, + 47.3974811307771, + 8.54620924114824, + 50 + ], + "type": "SimpleItem" + }, + { + "autoContinue": true, + "command": 16, + "doJumpId": 12, + "frame": 3, + "params": [ + 0, + 0, + 0, + null, + 47.39748113014056, + 8.546342098220613, + 50 + ], + "type": "SimpleItem" + }, + { + "autoContinue": true, + "command": 206, + "doJumpId": 13, + "frame": 2, + "params": [ + 0, + 0, + 1, + 0, + 0, + 0, + 0 + ], + "type": "SimpleItem" + } + ], + "Refly90Degrees": false, + "TurnAroundDistance": 10, + "VisualTransectPoints": [ + [ + 47.397705960554916, + 8.546339694155481 + ], + [ + 47.39770596118868, + 8.546206836516207 + ], + [ + 47.39770596219769, + 8.545744326765641 + ], + [ + 47.39770596214361, + 8.54561146912636 + ], + [ + 47.397481131760195, + 8.545631605677352 + ], + [ + 47.39748113179102, + 8.545764462749732 + ], + [ + 47.3974811307771, + 8.54620924114824 + ], + [ + 47.39748113014056, + 8.546342098220613 + ] + ], + "version": 1 + }, + "angle": 90, + "complexItemType": "survey", + "entryLocation": 0, + "flyAlternateTransects": false, + "polygon": [ + [ + 47.397924966150924, + 8.545724712437675 + ], + [ + 47.397930791600224, + 8.546204431863657 + ], + [ + 47.397448005093175, + 8.546209595436125 + ], + [ + 47.39744450980439, + 8.545767742626708 + ] + ], + "splitConcavePolygons": false, + "type": "ComplexItem", + "version": 5 + } + ], + "plannedHomePosition": [ + 47.39801775617688, + 8.545149580000002, + 483.4261075265049 + ], + "vehicleType": 2, + "version": 2 + }, + "rallyPoints": { + "points": [ + ], + "version": 2 + }, + "version": 1 +} diff --git a/src/plugins/mission_raw/test_plans/qgroundcontrol_sample_with_survey_missing_items.plan b/src/plugins/mission_raw/test_plans/qgroundcontrol_sample_with_survey_missing_items.plan new file mode 100644 index 0000000000..5d7e0a65fb --- /dev/null +++ b/src/plugins/mission_raw/test_plans/qgroundcontrol_sample_with_survey_missing_items.plan @@ -0,0 +1,126 @@ +{ + "fileType": "Plan", + "geoFence": { + "circles": [ + ], + "polygons": [ + ], + "version": 2 + }, + "groundStation": "QGroundControl", + "mission": { + "cruiseSpeed": 15, + "firmwareType": 12, + "globalPlanAltitudeMode": 1, + "hoverSpeed": 5, + "items": [ + { + "autoContinue": true, + "command": 530, + "doJumpId": 1, + "frame": 2, + "params": [ + 0, + 2, + null, + null, + null, + null, + null + ], + "type": "SimpleItem" + }, + { + "TransectStyleComplexItem": { + "CameraCalc": { + "AdjustedFootprintFrontal": 25, + "AdjustedFootprintSide": 25, + "CameraName": "Manual (no camera specs)", + "DistanceToSurface": 50, + "DistanceToSurfaceRelative": true, + "version": 1 + }, + "CameraShots": 6, + "CameraTriggerInTurnAround": true, + "FollowTerrain": false, + "HoverAndCapture": false, + "Refly90Degrees": false, + "TurnAroundDistance": 10, + "VisualTransectPoints": [ + [ + 47.397705960554916, + 8.546339694155481 + ], + [ + 47.39770596118868, + 8.546206836516207 + ], + [ + 47.39770596219769, + 8.545744326765641 + ], + [ + 47.39770596214361, + 8.54561146912636 + ], + [ + 47.397481131760195, + 8.545631605677352 + ], + [ + 47.39748113179102, + 8.545764462749732 + ], + [ + 47.3974811307771, + 8.54620924114824 + ], + [ + 47.39748113014056, + 8.546342098220613 + ] + ], + "version": 1 + }, + "angle": 90, + "complexItemType": "survey", + "entryLocation": 0, + "flyAlternateTransects": false, + "polygon": [ + [ + 47.397924966150924, + 8.545724712437675 + ], + [ + 47.397930791600224, + 8.546204431863657 + ], + [ + 47.397448005093175, + 8.546209595436125 + ], + [ + 47.39744450980439, + 8.545767742626708 + ] + ], + "splitConcavePolygons": false, + "type": "ComplexItem", + "version": 5 + } + ], + "plannedHomePosition": [ + 47.39801775617688, + 8.545149580000002, + 483.4261075265049 + ], + "vehicleType": 2, + "version": 2 + }, + "rallyPoints": { + "points": [ + ], + "version": 2 + }, + "version": 1 +} diff --git a/src/plugins/mission_raw/test_plans/qgroundcontrol_sample_with_survey_wrong_version.plan b/src/plugins/mission_raw/test_plans/qgroundcontrol_sample_with_survey_wrong_version.plan new file mode 100644 index 0000000000..7d9c74c582 --- /dev/null +++ b/src/plugins/mission_raw/test_plans/qgroundcontrol_sample_with_survey_wrong_version.plan @@ -0,0 +1,320 @@ +{ + "fileType": "Plan", + "geoFence": { + "circles": [ + ], + "polygons": [ + ], + "version": 2 + }, + "groundStation": "QGroundControl", + "mission": { + "cruiseSpeed": 15, + "firmwareType": 12, + "globalPlanAltitudeMode": 1, + "hoverSpeed": 5, + "items": [ + { + "autoContinue": true, + "command": 530, + "doJumpId": 1, + "frame": 2, + "params": [ + 0, + 2, + null, + null, + null, + null, + null + ], + "type": "SimpleItem" + }, + { + "TransectStyleComplexItem": { + "CameraCalc": { + "AdjustedFootprintFrontal": 25, + "AdjustedFootprintSide": 25, + "CameraName": "Manual (no camera specs)", + "DistanceToSurface": 50, + "DistanceToSurfaceRelative": true, + "version": 1 + }, + "CameraShots": 6, + "CameraTriggerInTurnAround": true, + "FollowTerrain": false, + "HoverAndCapture": false, + "Items": [ + { + "autoContinue": true, + "command": 16, + "doJumpId": 2, + "frame": 3, + "params": [ + 0, + 0, + 0, + null, + 47.397705960554916, + 8.546339694155481, + 50 + ], + "type": "SimpleItem" + }, + { + "autoContinue": true, + "command": 206, + "doJumpId": 3, + "frame": 2, + "params": [ + 25, + 0, + 1, + 0, + 0, + 0, + 0 + ], + "type": "SimpleItem" + }, + { + "autoContinue": true, + "command": 16, + "doJumpId": 4, + "frame": 3, + "params": [ + 0, + 0, + 0, + null, + 47.39770596118868, + 8.546206836516207, + 50 + ], + "type": "SimpleItem" + }, + { + "autoContinue": true, + "command": 206, + "doJumpId": 5, + "frame": 2, + "params": [ + 25, + 0, + 1, + 0, + 0, + 0, + 0 + ], + "type": "SimpleItem" + }, + { + "autoContinue": true, + "command": 16, + "doJumpId": 6, + "frame": 3, + "params": [ + 0, + 0, + 0, + null, + 47.39770596219769, + 8.545744326765641, + 50 + ], + "type": "SimpleItem" + }, + { + "autoContinue": true, + "command": 16, + "doJumpId": 7, + "frame": 3, + "params": [ + 0, + 0, + 0, + null, + 47.39770596214361, + 8.54561146912636, + 50 + ], + "type": "SimpleItem" + }, + { + "autoContinue": true, + "command": 16, + "doJumpId": 8, + "frame": 3, + "params": [ + 0, + 0, + 0, + null, + 47.397481131760195, + 8.545631605677352, + 50 + ], + "type": "SimpleItem" + }, + { + "autoContinue": true, + "command": 16, + "doJumpId": 9, + "frame": 3, + "params": [ + 0, + 0, + 0, + null, + 47.39748113179102, + 8.545764462749732, + 50 + ], + "type": "SimpleItem" + }, + { + "autoContinue": true, + "command": 206, + "doJumpId": 10, + "frame": 2, + "params": [ + 25, + 0, + 1, + 0, + 0, + 0, + 0 + ], + "type": "SimpleItem" + }, + { + "autoContinue": true, + "command": 16, + "doJumpId": 11, + "frame": 3, + "params": [ + 0, + 0, + 0, + null, + 47.3974811307771, + 8.54620924114824, + 50 + ], + "type": "SimpleItem" + }, + { + "autoContinue": true, + "command": 16, + "doJumpId": 12, + "frame": 3, + "params": [ + 0, + 0, + 0, + null, + 47.39748113014056, + 8.546342098220613, + 50 + ], + "type": "SimpleItem" + }, + { + "autoContinue": true, + "command": 206, + "doJumpId": 13, + "frame": 2, + "params": [ + 0, + 0, + 1, + 0, + 0, + 0, + 0 + ], + "type": "SimpleItem" + } + ], + "Refly90Degrees": false, + "TurnAroundDistance": 10, + "VisualTransectPoints": [ + [ + 47.397705960554916, + 8.546339694155481 + ], + [ + 47.39770596118868, + 8.546206836516207 + ], + [ + 47.39770596219769, + 8.545744326765641 + ], + [ + 47.39770596214361, + 8.54561146912636 + ], + [ + 47.397481131760195, + 8.545631605677352 + ], + [ + 47.39748113179102, + 8.545764462749732 + ], + [ + 47.3974811307771, + 8.54620924114824 + ], + [ + 47.39748113014056, + 8.546342098220613 + ] + ], + "version": 1 + }, + "angle": 90, + "complexItemType": "survey", + "entryLocation": 0, + "flyAlternateTransects": false, + "polygon": [ + [ + 47.397924966150924, + 8.545724712437675 + ], + [ + 47.397930791600224, + 8.546204431863657 + ], + [ + 47.397448005093175, + 8.546209595436125 + ], + [ + 47.39744450980439, + 8.545767742626708 + ] + ], + "splitConcavePolygons": false, + "type": "ComplexItem", + "version": 9 + } + ], + "plannedHomePosition": [ + 47.39801775617688, + 8.545149580000002, + 483.4261075265049 + ], + "vehicleType": 2, + "version": 2 + }, + "rallyPoints": { + "points": [ + ], + "version": 2 + }, + "version": 1 +} diff --git a/src/plugins/mission_raw/test_plans/qgroundcontrol_sample_without_mission.plan b/src/plugins/mission_raw/test_plans/qgroundcontrol_sample_without_mission.plan new file mode 100644 index 0000000000..b067ef4b8f --- /dev/null +++ b/src/plugins/mission_raw/test_plans/qgroundcontrol_sample_without_mission.plan @@ -0,0 +1,10 @@ +{ + "fileType": "Plan", + "geoFence": { + "polygon": [ + ], + "version": 1 + }, + "groundStation": "QGroundControl", + "version": 1 +} diff --git a/src/plugins/mission_raw/test_plans/qgroundcontrol_sample_wrong_mission_version.plan b/src/plugins/mission_raw/test_plans/qgroundcontrol_sample_wrong_mission_version.plan new file mode 100644 index 0000000000..774a8e263d --- /dev/null +++ b/src/plugins/mission_raw/test_plans/qgroundcontrol_sample_wrong_mission_version.plan @@ -0,0 +1,61 @@ +{ + "fileType": "Plan", + "geoFence": { + "polygon": [ + ], + "version": 1 + }, + "groundStation": "QGroundControl", + "mission": { + "cruiseSpeed": 15, + "firmwareType": 12, + "hoverSpeed": 5, + "items": [ + { + "autoContinue": true, + "command": 22, + "doJumpId": 1, + "frame": 3, + "params": [ + 0, + 0, + 0, + null, + 47.39781011, + 8.54553801, + 15 + ], + "type": "SimpleItem" + }, + { + "autoContinue": true, + "command": 16, + "doJumpId": 2, + "frame": 3, + "params": [ + 0, + 0, + 0, + null, + 47.39779921, + 8.54546693, + 15 + ], + "type": "SimpleItem" + } + ], + "plannedHomePosition": [ + 47.3977424, + 8.545599, + 488.103 + ], + "vehicleType": 2, + "version": 7 + }, + "rallyPoints": { + "points": [ + ], + "version": 1 + }, + "version": 1 +} diff --git a/src/plugins/mission_raw/test_plans/qgroundcontrol_sample_wrong_overall_version.plan b/src/plugins/mission_raw/test_plans/qgroundcontrol_sample_wrong_overall_version.plan new file mode 100644 index 0000000000..285b3d46b5 --- /dev/null +++ b/src/plugins/mission_raw/test_plans/qgroundcontrol_sample_wrong_overall_version.plan @@ -0,0 +1,61 @@ +{ + "fileType": "Plan", + "geoFence": { + "polygon": [ + ], + "version": 1 + }, + "groundStation": "QGroundControl", + "mission": { + "cruiseSpeed": 15, + "firmwareType": 12, + "hoverSpeed": 5, + "items": [ + { + "autoContinue": true, + "command": 22, + "doJumpId": 1, + "frame": 3, + "params": [ + 0, + 0, + 0, + null, + 47.39781011, + 8.54553801, + 15 + ], + "type": "SimpleItem" + }, + { + "autoContinue": true, + "command": 16, + "doJumpId": 2, + "frame": 3, + "params": [ + 0, + 0, + 0, + null, + 47.39779921, + 8.54546693, + 15 + ], + "type": "SimpleItem" + } + ], + "plannedHomePosition": [ + 47.3977424, + 8.545599, + 488.103 + ], + "vehicleType": 2, + "version": 2 + }, + "rallyPoints": { + "points": [ + ], + "version": 1 + }, + "version": 42 +} From 42c4ed1d0d9548062bc466618743ac858253d1f5 Mon Sep 17 00:00:00 2001 From: Julian Oes Date: Fri, 5 Mar 2021 13:46:02 +0100 Subject: [PATCH 2/2] examples: use new MissionRaw import --- examples/fly_multiple_drones/CMakeLists.txt | 2 +- .../fly_multiple_drones.cpp | 158 +++++++----------- examples/fly_qgc_mission/CMakeLists.txt | 2 +- examples/fly_qgc_mission/fly_qgc_mission.cpp | 76 +++------ src/plugins/mission/mission_impl.cpp | 51 ------ 5 files changed, 91 insertions(+), 198 deletions(-) diff --git a/examples/fly_multiple_drones/CMakeLists.txt b/examples/fly_multiple_drones/CMakeLists.txt index c8df1141f6..4699d20c02 100644 --- a/examples/fly_multiple_drones/CMakeLists.txt +++ b/examples/fly_multiple_drones/CMakeLists.txt @@ -22,7 +22,7 @@ add_executable(fly_multiple_drones target_link_libraries(fly_multiple_drones MAVSDK::mavsdk MAVSDK::mavsdk_telemetry - MAVSDK::mavsdk_mission + MAVSDK::mavsdk_mission_raw MAVSDK::mavsdk_action ${CMAKE_THREAD_LIBS_INIT} ) diff --git a/examples/fly_multiple_drones/fly_multiple_drones.cpp b/examples/fly_multiple_drones/fly_multiple_drones.cpp index d8a940b719..fb45ab24df 100644 --- a/examples/fly_multiple_drones/fly_multiple_drones.cpp +++ b/examples/fly_multiple_drones/fly_multiple_drones.cpp @@ -1,17 +1,12 @@ -/* -Example to connect multiple vehicles and make them follow their own separate plan file. Also -saves the telemetry information to csv files -./fly_multiple_drones udp://:14540 udp://:14541 ../../../plugins/mission/test.plan -../../../plugins/mission/test2.plan - -Author: Julian Oes -Author: Shayaan Haider (via Slack) -Author: Shusil Shapkota (Air Matrix) -*/ +/** + * Example to connect multiple vehicles and make them follow their own separate + * plan file. Also saves the telemetry information to csv files + * ./fly_multiple_drones udp://:14540 udp://:14541 test1.plan test2.plan + */ #include #include -#include +#include #include #include @@ -30,43 +25,44 @@ using namespace std::this_thread; using namespace std::chrono; /* -How to Start Multiple Instances (for jMAVSim) - -Note: The following instructions to start multiple vehicles in simulations are for Firmware -Version 1.9.0. If you have other versions running on your machine, please visit this site and select -appropriate version for the instructions: ---> https://dev.px4.io/en/simulation/multi_vehicle_jmavsim.html - -To start multiple instances (on separate ports): - -Build PX4 - make px4_sitl_default - -Run sitl_multiple_run.sh, specifying the number of instances to start (e.g. 2): - ./Tools/sitl_multiple_run.sh 2 - -Start the first instance: - ./Tools/jmavsim_run.sh -l - -Start subsequent instances, specifying the simulation TCP port for the instance: - ./Tools/jmavsim_run.sh -p 4561 -l - -The port should be set to 4560+i for i in [0, N-1]. - - -Steps to run this example: -1. Run multiple simulations with different drones following the steps explained above -2. build the executable -3. (a) Create a Mission in QGroundControl and save them to a file (.plan) (OR) - (b) Use a pre-created sample mission plan. -4. Run the executable by passing the connection urls (ex. udp://:14540) and path of QGC mission plan -as arguments Example: If you have test.plan and test2.plan in "../../../plugins/mission/" and you -are running two drones in udp://:14540 and udp://:14541 then you run the example as: - -./fly_multiple_drones udp://:14540 udp://:14541 ../../../src/plugins/mission/test.plan -../../../src/plugins/mission/test2.plan - -*/ + * How to Start Multiple Instances (for jMAVSim) + * + * Note: The following instructions to start multiple vehicles in simulations + * are last tested for Firmware Version 1.9.0. + * + * To start multiple instances (on separate ports): + * + * Build PX4 + * make px4_sitl_default + * + * Run sitl_multiple_run.sh, specifying the number of instances to start (e.g. 2): + * ./Tools/sitl_multiple_run.sh 2 + * + * Start the first instance: + * ./Tools/jmavsim_run.sh -l + * + * Start subsequent instances, specifying the simulation TCP port for the instance: + * ./Tools/jmavsim_run.sh -p 4561 -l + * + * The port should be set to 4560+i for i in [0, N-1]. + * + * + * Steps to run this example: + * 1. Run multiple simulations with different drones following the steps above + * 2. Build the executable + * 3. (a) Create a Mission in QGroundControl and save them to a file (.plan), or + * (b) Use a pre-created sample mission plan. + * 4. Run the executable by passing the connection urls (ex. udp://:14540) and + * path of QGC mission plan as arguments Example: If you have test1.plan and + * test2.plan in "../../../plugins/mission/" and you are running two drones + * in udp://:14540 and udp://:14541 then you run the example as: + * + * ./fly_multiple_drones udp://:14540 udp://:14541 test1.plan test2.plan + * + * + * Note: The mission needs to end with RTL or land, otherwise it will get stuck + * waiting for the system to be disarmed. + */ #define ERROR_CONSOLE_TEXT "\033[31m" // Turn text on console red #define TELEMETRY_CONSOLE_TEXT "\033[34m" // Turn text on console blue @@ -76,7 +72,7 @@ static void complete_mission(std::string qgc_plan, std::shared_ptr syste static void handle_action_err_exit(Action::Result result, const std::string& message); -static void handle_mission_err_exit(Mission::Result result, const std::string& message); +static void handle_mission_err_exit(MissionRaw::Result result, const std::string& message); std::string getCurrentTimeString() { @@ -159,7 +155,7 @@ void complete_mission(std::string qgc_plan, std::shared_ptr system) { auto telemetry = Telemetry{system}; auto action = Action{system}; - auto mission = Mission{system}; + auto mission_raw = MissionRaw{system}; // We want to listen to the telemetry data at 1 Hz. const Telemetry::Result set_rate_result = telemetry.set_rate_position(1.0); @@ -192,8 +188,8 @@ void complete_mission(std::string qgc_plan, std::shared_ptr system) } // Import Mission items from QGC plan - std::pair import_res = - mission.import_qgroundcontrol_mission(qgc_plan); + std::pair import_res = + mission_raw.import_qgroundcontrol_mission(qgc_plan); handle_mission_err_exit(import_res.first, "Failed to import mission items: "); if (import_res.second.mission_items.size() == 0) { @@ -203,18 +199,11 @@ void complete_mission(std::string qgc_plan, std::shared_ptr system) std::cout << "Found " << import_res.second.mission_items.size() << " mission items in the given QGC plan." << std::endl; - { - std::cout << "Uploading mission..." << std::endl; - // Wrap the asynchronous upload_mission function using std::future. - auto prom = std::make_shared>(); - auto future_result = prom->get_future(); - mission.upload_mission_async( - import_res.second, [prom](Mission::Result result) { prom->set_value(result); }); - - const Mission::Result result = future_result.get(); - handle_mission_err_exit(result, "Mission upload failed: "); - std::cout << "Mission uploaded." << std::endl; - } + std::cout << "Uploading mission..." << std::endl; + const MissionRaw::Result upload_result = + mission_raw.upload_mission(import_res.second.mission_items); + handle_mission_err_exit(upload_result, "MissionRaw upload failed: "); + std::cout << "MissionRaw uploaded." << std::endl; std::cout << "Arming..." << std::endl; const Action::Result arm_result = action.arm(); @@ -222,41 +211,20 @@ void complete_mission(std::string qgc_plan, std::shared_ptr system) std::cout << "Armed." << std::endl; // Before starting the mission subscribe to the mission progress. - mission.subscribe_mission_progress([&](Mission::MissionProgress mission_progress) { - std::cout << "Mission status update, VehicleID: " << system->get_system_id() << " --> " + mission_raw.subscribe_mission_progress([&](MissionRaw::MissionProgress mission_progress) { + std::cout << "Mission progress update, VehicleID: " << system->get_system_id() << " --> " << mission_progress.current << " / " << mission_progress.total << std::endl; }); - { - std::cout << "Starting mission." << std::endl; - auto prom = std::make_shared>(); - auto future_result = prom->get_future(); - mission.start_mission_async([prom](Mission::Result result) { - prom->set_value(result); - std::cout << "Started mission." << std::endl; - }); - - const Mission::Result result = future_result.get(); - handle_mission_err_exit(result, "Mission start failed: "); - } + std::cout << "Starting mission." << std::endl; + const MissionRaw::Result start_result = mission_raw.start_mission(); + handle_mission_err_exit(start_result, "Mission start failed: "); + std::cout << "Started mission." << std::endl; - while (!mission.is_mission_finished().second) { + // This only works if the mission ends with an automatic RTL. + while (telemetry.armed()) { sleep_for(seconds(1)); } - - // Wait for some time. - sleep_for(seconds(5)); - - { - // Mission complete. Command RTL to go home. - std::cout << "Commanding RTL..." << std::endl; - const Action::Result result = action.return_to_launch(); - if (result != Action::Result::Success) { - std::cout << "Failed to command RTL (" << result << ")" << std::endl; - } else { - std::cout << "Commanded RTL." << std::endl; - } - } } static void handle_action_err_exit(Action::Result result, const std::string& message) @@ -267,9 +235,9 @@ static void handle_action_err_exit(Action::Result result, const std::string& mes } } -static void handle_mission_err_exit(Mission::Result result, const std::string& message) +static void handle_mission_err_exit(MissionRaw::Result result, const std::string& message) { - if (result != Mission::Result::Success) { + if (result != MissionRaw::Result::Success) { std::cerr << ERROR_CONSOLE_TEXT << message << result << NORMAL_CONSOLE_TEXT << std::endl; exit(EXIT_FAILURE); } diff --git a/examples/fly_qgc_mission/CMakeLists.txt b/examples/fly_qgc_mission/CMakeLists.txt index 1fa50b83c8..d56d094760 100644 --- a/examples/fly_qgc_mission/CMakeLists.txt +++ b/examples/fly_qgc_mission/CMakeLists.txt @@ -19,7 +19,7 @@ add_executable(fly_qgc_mission target_link_libraries(fly_qgc_mission MAVSDK::mavsdk_action - MAVSDK::mavsdk_mission + MAVSDK::mavsdk_mission_raw MAVSDK::mavsdk_telemetry MAVSDK::mavsdk ) diff --git a/examples/fly_qgc_mission/fly_qgc_mission.cpp b/examples/fly_qgc_mission/fly_qgc_mission.cpp index 0e8310e792..e462d8598b 100644 --- a/examples/fly_qgc_mission/fly_qgc_mission.cpp +++ b/examples/fly_qgc_mission/fly_qgc_mission.cpp @@ -5,28 +5,22 @@ * and fly them using the MAVSDK. * * Steps to run this example: - * 1. (a) Create a Mission in QGroundControl and save them to a file (.plan) (OR) - * (b) Use a pre-created sample mission plan in "plugins/mission/qgroundcontrol_sample.plan". - * Click - * [here](https://user-images.githubusercontent.com/26615772/31763673-972c5bb6-b4dc-11e7-8ff0-f8b39b6b88c3.png) - * to see what sample mission plan in QGroundControl looks like. - * 2. Run the example by passing path of the QGC mission plan as argument (By default, sample - * mission plan is imported). + * 1.(a) Create a Mission in QGroundControl and save them to a file (.plan), or + * (b) Use a pre-created sample mission plan in + * "src/plugins/mission_raw/test_plans/qgroundcontrol_sample.plan". + * 2. Run the example by passing the path of the QGC mission plan as argument + * (By default, sample mission plan is imported). * * Example description: * 1. Imports QGC mission items from .plan file. * 2. Uploads mission items to vehicle. * 3. Starts mission from first mission item. * 4. Commands RTL once QGC Mission is accomplished. - * - * @author Shakthi Prashanth M , - * Julian Oes - * @date 2018-02-04 */ #include #include -#include +#include #include #include @@ -43,11 +37,11 @@ using namespace std::chrono; // for seconds(), milliseconds() using namespace std::this_thread; // for sleep_for() // Handles Action's result -inline void handle_action_err_exit(Action::Result result, const std::string& message); +static void handle_action_err_exit(Action::Result result, const std::string& message); // Handles Mission's result -inline void handle_mission_err_exit(Mission::Result result, const std::string& message); +static void handle_mission_err_exit(MissionRaw::Result result, const std::string& message); // Handles Connection result -inline void handle_connection_err_exit(ConnectionResult result, const std::string& message); +static void handle_connection_err_exit(ConnectionResult result, const std::string& message); void usage(std::string bin_name) { @@ -67,7 +61,7 @@ int main(int argc, char** argv) ConnectionResult connection_result; // Locate path of QGC Sample plan - std::string qgc_plan = "../../../plugins/mission/qgroundcontrol_sample.plan"; + std::string qgc_plan = "src/plugins/mission_raw/test_plans/qgroundcontrol_sample.plan"; if (argc != 2 && argc != 3) { usage(argv[0]); @@ -108,7 +102,7 @@ int main(int argc, char** argv) auto system = mavsdk.systems().at(0); auto action = Action{system}; - auto mission = Mission{system}; + auto mission_raw = MissionRaw{system}; auto telemetry = Telemetry{system}; while (!telemetry.health_all_ok()) { @@ -119,8 +113,8 @@ int main(int argc, char** argv) std::cout << "System ready" << std::endl; // Import Mission items from QGC plan - std::pair import_res = - mission.import_qgroundcontrol_mission(qgc_plan); + std::pair import_res = + mission_raw.import_qgroundcontrol_mission(qgc_plan); handle_mission_err_exit(import_res.first, "Failed to import mission items: "); if (import_res.second.mission_items.size() == 0) { @@ -130,18 +124,10 @@ int main(int argc, char** argv) std::cout << "Found " << import_res.second.mission_items.size() << " mission items in the given QGC plan." << std::endl; - { - std::cout << "Uploading mission..." << std::endl; - // Wrap the asynchronous upload_mission function using std::future. - auto prom = std::make_shared>(); - auto future_result = prom->get_future(); - mission.upload_mission_async( - import_res.second, [prom](Mission::Result result) { prom->set_value(result); }); - - const Mission::Result result = future_result.get(); - handle_mission_err_exit(result, "Mission upload failed: "); - std::cout << "Mission uploaded." << std::endl; - } + std::cout << "Uploading mission..." << std::endl; + MissionRaw::Result result = mission_raw.upload_mission(import_res.second.mission_items); + handle_mission_err_exit(result, "Mission upload failed: "); + std::cout << "Mission uploaded." << std::endl; std::cout << "Arming..." << std::endl; const Action::Result arm_result = action.arm(); @@ -149,25 +135,15 @@ int main(int argc, char** argv) std::cout << "Armed." << std::endl; // Before starting the mission subscribe to the mission progress. - mission.subscribe_mission_progress([](Mission::MissionProgress mission_progress) { - std::cout << "Mission status update: " << mission_progress.current << " / " + mission_raw.subscribe_mission_progress([](MissionRaw::MissionProgress mission_progress) { + std::cout << "Mission progress update: " << mission_progress.current << " / " << mission_progress.total << std::endl; }); - { - std::cout << "Starting mission." << std::endl; - auto prom = std::make_shared>(); - auto future_result = prom->get_future(); - mission.start_mission_async([prom](Mission::Result result) { - prom->set_value(result); - std::cout << "Started mission." << std::endl; - }); - - const Mission::Result result = future_result.get(); - handle_mission_err_exit(result, "Mission start failed: "); - } + result = mission_raw.start_mission(); + handle_mission_err_exit(result, "Mission start failed: "); - while (!mission.is_mission_finished().second) { + while (telemetry.armed()) { sleep_for(seconds(1)); } @@ -188,7 +164,7 @@ int main(int argc, char** argv) return 0; } -inline void handle_action_err_exit(Action::Result result, const std::string& message) +void handle_action_err_exit(Action::Result result, const std::string& message) { if (result != Action::Result::Success) { std::cerr << ERROR_CONSOLE_TEXT << message << result << NORMAL_CONSOLE_TEXT << std::endl; @@ -196,16 +172,16 @@ inline void handle_action_err_exit(Action::Result result, const std::string& mes } } -inline void handle_mission_err_exit(Mission::Result result, const std::string& message) +void handle_mission_err_exit(MissionRaw::Result result, const std::string& message) { - if (result != Mission::Result::Success) { + if (result != MissionRaw::Result::Success) { std::cerr << ERROR_CONSOLE_TEXT << message << result << NORMAL_CONSOLE_TEXT << std::endl; exit(EXIT_FAILURE); } } // Handles connection result -inline void handle_connection_err_exit(ConnectionResult result, const std::string& message) +void handle_connection_err_exit(ConnectionResult result, const std::string& message) { if (result != ConnectionResult::Success) { std::cerr << ERROR_CONSOLE_TEXT << message << result << NORMAL_CONSOLE_TEXT << std::endl; diff --git a/src/plugins/mission/mission_impl.cpp b/src/plugins/mission/mission_impl.cpp index 9063f82d2e..00e3c4f374 100644 --- a/src/plugins/mission/mission_impl.cpp +++ b/src/plugins/mission/mission_impl.cpp @@ -931,57 +931,6 @@ Mission::Result MissionImpl::convert_result(MAVLinkMissionTransfer::Result resul } } -#if 0 -std::pair -MissionImpl::import_qgroundcontrol_mission(const std::string& qgc_plan_file) -{ - Mission::MissionPlan mission_plan; - auto result = - std::pair(Mission::Result::Unknown, mission_plan); - - std::ifstream file(qgc_plan_file); - if (!file) { - result.first = Mission::Result::FailedToOpenQgcPlan; - return result; - } - - std::stringstream ss; - ss << file.rdbuf(); - file.close(); - const auto raw_json = ss.str(); - - Json::CharReaderBuilder builder; - const std::unique_ptr reader(builder.newCharReader()); - Json::Value root; - JSONCPP_STRING err; - const bool ok = - reader->parse(raw_json.c_str(), raw_json.c_str() + raw_json.length(), &root, &err); - if (!ok) { - LogErr() << "Parse error: " << err; - result.first = Mission::Result::FailedToParseQgcPlan; - return result; - } - - result.first = import_mission_items(result.second.mission_items, root); - return result; -} - -void MissionImpl::import_qgroundcontrol_mission_async( - std::string qgc_plan_path, const Mission::ImportQgroundcontrolMissionCallback callback) -{ - auto fut = std::async([this, callback, qgc_plan_path]() { - auto result = MissionImpl::import_qgroundcontrol_mission(qgc_plan_path); - _parent->call_user_callback([&result, callback]() { - if (callback) { - callback(result.first, result.second); - } - }); - }); - - UNUSED(fut); -} -#endif - // Build a mission item out of command, params and add them to the mission vector. Mission::Result MissionImpl::build_mission_items( MAV_CMD command,