Skip to content

Commit

Permalink
Merge pull request #911 from mavlink/fix-landed-state-backend
Browse files Browse the repository at this point in the history
backend: added missing server part for LandedState
  • Loading branch information
julianoes committed Nov 25, 2019
2 parents a95b87b + 1c4a107 commit d9c09d2
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 0 deletions.
38 changes: 38 additions & 0 deletions src/backend/src/plugins/telemetry/telemetry_service_impl.h
Expand Up @@ -113,6 +113,44 @@ class TelemetryServiceImpl final : public mavsdk::rpc::telemetry::TelemetryServi
return grpc::Status::OK;
}

grpc::Status SubscribeLandedState(
grpc::ServerContext* /* context */,
const mavsdk::rpc::telemetry::SubscribeLandedStateRequest* /* request */,
grpc::ServerWriter<rpc::telemetry::LandedStateResponse>* writer) override
{
std::mutex landed_state_mutex{};

_telemetry.landed_state_async(
[this, &writer, &landed_state_mutex](mavsdk::Telemetry::LandedState landed_state) {
mavsdk::rpc::telemetry::LandedStateResponse rpc_landed_state_response;
rpc_landed_state_response.set_landed_state(translateLandedState(landed_state));

std::lock_guard<std::mutex> lock(landed_state_mutex);
writer->Write(rpc_landed_state_response);
});

_stop_future.wait();
return grpc::Status::OK;
}

rpc::telemetry::LandedState
translateLandedState(const mavsdk::Telemetry::LandedState landed_state) const
{
switch (landed_state) {
default:
case mavsdk::Telemetry::LandedState::UNKNOWN:
return rpc::telemetry::LandedState::LANDED_STATE_UNKNOWN;
case mavsdk::Telemetry::LandedState::ON_GROUND:
return rpc::telemetry::LandedState::LANDED_STATE_ON_GROUND;
case mavsdk::Telemetry::LandedState::IN_AIR:
return rpc::telemetry::LandedState::LANDED_STATE_IN_AIR;
case mavsdk::Telemetry::LandedState::TAKING_OFF:
return rpc::telemetry::LandedState::LANDED_STATE_TAKING_OFF;
case mavsdk::Telemetry::LandedState::LANDING:
return rpc::telemetry::LandedState::LANDED_STATE_LANDING;
}
}

grpc::Status SubscribeStatusText(
grpc::ServerContext* /* context */,
const mavsdk::rpc::telemetry::SubscribeStatusTextRequest* /* request */,
Expand Down
1 change: 1 addition & 0 deletions src/plugins/telemetry/mocks/telemetry_mock.h
Expand Up @@ -16,6 +16,7 @@ class MockTelemetry {
MOCK_CONST_METHOD1(gps_info_async, void(Telemetry::gps_info_callback_t)){};
MOCK_CONST_METHOD1(battery_async, void(Telemetry::battery_callback_t)){};
MOCK_CONST_METHOD1(flight_mode_async, void(Telemetry::flight_mode_callback_t)){};
MOCK_CONST_METHOD1(landed_state_async, void(Telemetry::landed_state_callback_t)){};
MOCK_CONST_METHOD1(
attitude_quaternion_async, void(Telemetry::attitude_quaternion_callback_t)){};
MOCK_CONST_METHOD1(
Expand Down

0 comments on commit d9c09d2

Please sign in to comment.