From 8b1de1e5812a6e8c25ceb4e803209bcb6eabe95b Mon Sep 17 00:00:00 2001 From: douglaswsilva Date: Fri, 1 Mar 2019 17:17:42 -0800 Subject: [PATCH 1/3] Add gimbal wrapper to master. --- backend/src/CMakeLists.txt | 3 +- backend/src/core/core_service_impl.h | 4 +- backend/src/grpc_server.cpp | 3 +- backend/src/grpc_server.h | 11 +++++ .../src/plugins/gimbal/gimbal_service_impl.h | 40 +++++++++++++++++++ 5 files changed, 57 insertions(+), 4 deletions(-) create mode 100644 backend/src/plugins/gimbal/gimbal_service_impl.h diff --git a/backend/src/CMakeLists.txt b/backend/src/CMakeLists.txt index d15912d595..7c748efe5e 100644 --- a/backend/src/CMakeLists.txt +++ b/backend/src/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.1) -set(COMPONENTS_LIST core action calibration camera mission telemetry info) +set(COMPONENTS_LIST core action calibration gimbal camera mission telemetry info) include(cmake/compile_proto.cmake) @@ -38,6 +38,7 @@ target_link_libraries(backend dronecode_sdk dronecode_sdk_action dronecode_sdk_calibration + dronecode_sdk_gimbal dronecode_sdk_camera dronecode_sdk_mission dronecode_sdk_telemetry diff --git a/backend/src/core/core_service_impl.h b/backend/src/core/core_service_impl.h index c99851008c..5d92f63d9c 100644 --- a/backend/src/core/core_service_impl.h +++ b/backend/src/core/core_service_impl.h @@ -43,8 +43,8 @@ class CoreServiceImpl final : public dronecode_sdk::rpc::core::CoreService::Serv const rpc::core::ListRunningPluginsRequest * /* request */, dronecode_sdk::rpc::core::ListRunningPluginsResponse *response) override { - std::string plugin_names[7] = { - "action", "calibration", "camera", "core", "mission", "telemetry", "info"}; + std::string plugin_names[8] = { + "action", "calibration", "gimbal", "camera", "core", "mission", "telemetry", "info"}; for (const auto plugin_name : plugin_names) { auto plugin_info = response->add_plugin_info(); diff --git a/backend/src/grpc_server.cpp b/backend/src/grpc_server.cpp index 5d96b3603a..cbb3eb1a3f 100644 --- a/backend/src/grpc_server.cpp +++ b/backend/src/grpc_server.cpp @@ -15,7 +15,8 @@ void GRPCServer::run() builder.RegisterService(&_core); builder.RegisterService(&_action_service); - builder.RegisterService(&_calibration_service); + builder.RegisterService(&_calibration_service); + builder.RegisterService(&_gimbal_service); builder.RegisterService(&_camera_service); builder.RegisterService(&_mission_service); builder.RegisterService(&_telemetry_service); diff --git a/backend/src/grpc_server.h b/backend/src/grpc_server.h index 51a9d4dc5a..345d2c1de2 100644 --- a/backend/src/grpc_server.h +++ b/backend/src/grpc_server.h @@ -15,6 +15,13 @@ #include "mission/mission_service_impl.h" #include "telemetry/telemetry_service_impl.h" #include "info/info_service_impl.h" +<<<<<<< HEAD +======= +#include "plugins/param/param.h" +#include "param/param_service_impl.h" +#include "plugins/gimbal/gimbal.h" +#include "gimbal/gimbal_service_impl.h" +>>>>>>> 58e4c1a... Add gimbal support to the SDK. namespace dronecode_sdk { namespace backend { @@ -28,6 +35,8 @@ class GRPCServer { _action_service(_action), _calibration(_dc.system()), _calibration_service(_calibration), + _gimbal(_dc.system()), + _gimbal_service(_gimbal), _camera(_dc.system()), _camera_service(_camera), _mission(_dc.system()), @@ -51,6 +60,8 @@ class GRPCServer { ActionServiceImpl<> _action_service; Calibration _calibration; CalibrationServiceImpl<> _calibration_service; + Gimbal _gimbal; + GimbalServiceImpl<> _gimbal_service; Camera _camera; CameraServiceImpl<> _camera_service; Mission _mission; diff --git a/backend/src/plugins/gimbal/gimbal_service_impl.h b/backend/src/plugins/gimbal/gimbal_service_impl.h new file mode 100644 index 0000000000..6fcb4e27a2 --- /dev/null +++ b/backend/src/plugins/gimbal/gimbal_service_impl.h @@ -0,0 +1,40 @@ +#include "plugins/gimbal/gimbal.h" +#include "gimbal/gimbal.grpc.pb.h" + +namespace dronecode_sdk { +namespace backend { + +template +class GimbalServiceImpl final : public rpc::gimbal::GimbalService::Service { +public: + GimbalServiceImpl(Gimbal &gimbal) : _gimbal(gimbal) {} + + grpc::Status + SetPitchAndYaw(grpc::ServerContext * /* context */, + const rpc::gimbal::SetPitchAndYawRequest *request, + rpc::gimbal::SetPitchAndYawResponse *response) override + { + if (request != nullptr) { + const auto requested_gimbal_pitch = request->pitch_deg(); + const auto requested_gimbal_yaw = request->yaw_deg(); + + const auto gimbal_result = _gimbal.set_pitch_and_yaw(requested_gimbal_pitch, requested_gimbal_yaw); + + if (response != nullptr) { + auto *rpc_gimbal_result = new rpc::gimbal::GimbalResult(); + rpc_gimbal_result->set_result(static_cast(gimbal_result)); + rpc_gimbal_result->set_result_str(dronecode_sdk::Gimbal::result_str(gimbal_result)); + + response->set_allocated_gimbal_result(rpc_gimbal_result); + } + } + + return grpc::Status::OK; + } + +private: + Gimbal &_gimbal; +}; + +} // namespace backend +} // namespace dronecode_sdk \ No newline at end of file From 2a62cf3bf6d1895883a735aff172d66fc74e459b Mon Sep 17 00:00:00 2001 From: douglaswsilva Date: Mon, 4 Mar 2019 14:06:48 -0800 Subject: [PATCH 2/3] Resolve merge conflicts. --- backend/src/grpc_server.h | 5 ----- 1 file changed, 5 deletions(-) diff --git a/backend/src/grpc_server.h b/backend/src/grpc_server.h index 345d2c1de2..41e79e3870 100644 --- a/backend/src/grpc_server.h +++ b/backend/src/grpc_server.h @@ -15,13 +15,8 @@ #include "mission/mission_service_impl.h" #include "telemetry/telemetry_service_impl.h" #include "info/info_service_impl.h" -<<<<<<< HEAD -======= -#include "plugins/param/param.h" -#include "param/param_service_impl.h" #include "plugins/gimbal/gimbal.h" #include "gimbal/gimbal_service_impl.h" ->>>>>>> 58e4c1a... Add gimbal support to the SDK. namespace dronecode_sdk { namespace backend { From 26e19921f480a9c6bba184f46d0c4636775f11ae Mon Sep 17 00:00:00 2001 From: douglaswsilva Date: Mon, 4 Mar 2019 14:30:24 -0800 Subject: [PATCH 3/3] Fix style --- backend/src/grpc_server.cpp | 2 +- .../src/plugins/gimbal/gimbal_service_impl.h | 21 ++++++++++--------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/backend/src/grpc_server.cpp b/backend/src/grpc_server.cpp index cbb3eb1a3f..8c9a6deab0 100644 --- a/backend/src/grpc_server.cpp +++ b/backend/src/grpc_server.cpp @@ -15,7 +15,7 @@ void GRPCServer::run() builder.RegisterService(&_core); builder.RegisterService(&_action_service); - builder.RegisterService(&_calibration_service); + builder.RegisterService(&_calibration_service); builder.RegisterService(&_gimbal_service); builder.RegisterService(&_camera_service); builder.RegisterService(&_mission_service); diff --git a/backend/src/plugins/gimbal/gimbal_service_impl.h b/backend/src/plugins/gimbal/gimbal_service_impl.h index 6fcb4e27a2..b3873704c2 100644 --- a/backend/src/plugins/gimbal/gimbal_service_impl.h +++ b/backend/src/plugins/gimbal/gimbal_service_impl.h @@ -6,23 +6,24 @@ namespace backend { template class GimbalServiceImpl final : public rpc::gimbal::GimbalService::Service { -public: +public: GimbalServiceImpl(Gimbal &gimbal) : _gimbal(gimbal) {} - grpc::Status - SetPitchAndYaw(grpc::ServerContext * /* context */, - const rpc::gimbal::SetPitchAndYawRequest *request, - rpc::gimbal::SetPitchAndYawResponse *response) override + grpc::Status SetPitchAndYaw(grpc::ServerContext * /* context */, + const rpc::gimbal::SetPitchAndYawRequest *request, + rpc::gimbal::SetPitchAndYawResponse *response) override { if (request != nullptr) { const auto requested_gimbal_pitch = request->pitch_deg(); const auto requested_gimbal_yaw = request->yaw_deg(); - const auto gimbal_result = _gimbal.set_pitch_and_yaw(requested_gimbal_pitch, requested_gimbal_yaw); + const auto gimbal_result = + _gimbal.set_pitch_and_yaw(requested_gimbal_pitch, requested_gimbal_yaw); if (response != nullptr) { auto *rpc_gimbal_result = new rpc::gimbal::GimbalResult(); - rpc_gimbal_result->set_result(static_cast(gimbal_result)); + rpc_gimbal_result->set_result( + static_cast(gimbal_result)); rpc_gimbal_result->set_result_str(dronecode_sdk::Gimbal::result_str(gimbal_result)); response->set_allocated_gimbal_result(rpc_gimbal_result); @@ -33,8 +34,8 @@ class GimbalServiceImpl final : public rpc::gimbal::GimbalService::Service { } private: - Gimbal &_gimbal; + Gimbal &_gimbal; }; -} // namespace backend -} // namespace dronecode_sdk \ No newline at end of file +} // namespace backend +} // namespace dronecode_sdk \ No newline at end of file