Skip to content

Commit b1cd5cb

Browse files
committed
WIP
Signed-off-by: Michel Hidalgo <[email protected]>
1 parent 74007e5 commit b1cd5cb

File tree

1 file changed

+52
-1
lines changed

1 file changed

+52
-1
lines changed
Lines changed: 52 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,52 @@
1-
#include "lease_service.h"
1+
// Copyright (c) 2023 Boston Dynamics AI Institute LLC. All rights reserved.
2+
3+
#include <spot_driver/lease/lease_service.hpp>
4+
5+
#include <spot_driver/interfaces/rclcpp_logger_interface.hpp>
6+
#include <spot_driver/lease/lease_middleware_handle.hpp>
7+
8+
namespace {
9+
constexpr auto kAcquireServiceName = "acquire_lease";
10+
constexpr auto kReleaseServiceName = "release_lease";
11+
}
12+
13+
namespace spot_ros2::lease {
14+
LeaseService::LeaseService(std::shared_ptr<LeaseApi> kinematic_api,
15+
std::shared_ptr<LoggerInterfaceBase> logger,
16+
std::unique_ptr<MiddlewareHandle> middleware_handle)
17+
: lease_api_{lease_api}, logger_{std::move(logger)}, middleware_handle_{std::move(middleware_handle)} {}
18+
19+
void LeaseService::initialize() {
20+
middleware_handle_->createAcquireService(kAcquireServiceName,
21+
[this](const std::shared_ptr<AcquireLease::Request> request,
22+
std::shared_ptr<AcquireLease::Response> response) {
23+
this->acquireLease(request, response);
24+
});
25+
middleware_handle_->createReleaseService(kReleaseServiceName,
26+
[this](const std::shared_ptr<ReleaseLease::Request> request,
27+
std::shared_ptr<ReleaseLease::Response> response) {
28+
this->releaseLease(request, response);
29+
});
30+
}
31+
32+
void LeaseService::acquireLease(const std::shared_ptr<AcquireLease::Request> request,
33+
std::shared_ptr<AcquireLease::Response> response) {
34+
auto ros_request = request->request;
35+
36+
bosdyn::api::spot::InverseLeasesRequest proto_request;
37+
convertToProto(ros_request, proto_request);
38+
39+
auto expected = kinematic_api_->getSolutions(proto_request);
40+
if (!expected) {
41+
logger_->logError(std::string{"Error querying the Inverse Leases service: "}.append(expected.error()));
42+
response->response.status.value = bosdyn_spot_api_msgs::msg::InverseLeasesResponseStatus::STATUS_UNKNOWN;
43+
} else {
44+
convertToRos(expected.value(), response->response);
45+
}
46+
}
47+
48+
void LeaseService::releaseLease(const std::shared_ptr<ReleaseLease::Request> request,
49+
std::shared_ptr<ReleaseLease::Response> response) {
50+
51+
}
52+
} // namespace spot_ros2::lease

0 commit comments

Comments
 (0)