blob: 23a2e31dc81fb151cb1892b72535947fabbe0ecd [file] [log] [blame]
Kevin Schoedel89af70b2017-03-03 18:11:37 -05001#include "VirtualTouchpadClient.h"
2
3#include <android/dvr/IVirtualTouchpadService.h>
4#include <binder/IServiceManager.h>
5
6namespace android {
7namespace dvr {
8
9namespace {
10
11class VirtualTouchpadClientImpl : public VirtualTouchpadClient {
12 public:
13 VirtualTouchpadClientImpl(sp<IVirtualTouchpadService> service)
14 : service_(service) {}
15 ~VirtualTouchpadClientImpl() {}
16
17 status_t Touch(float x, float y, float pressure) override {
18 if (service_ == nullptr) {
19 return NO_INIT;
20 }
21 return service_->touch(x, y, pressure).transactionError();
22 }
23 status_t ButtonState(int buttons) override {
24 if (service_ == nullptr) {
25 return NO_INIT;
26 }
27 return service_->buttonState(buttons).transactionError();
28 }
29
30 private:
31 sp<IVirtualTouchpadService> service_;
32};
33
34} // anonymous namespace
35
36sp<VirtualTouchpad> VirtualTouchpadClient::Create() {
37 sp<IServiceManager> sm = defaultServiceManager();
38 if (sm == nullptr) {
39 ALOGE("no service manager");
40 return sp<VirtualTouchpad>();
41 }
42 sp<IVirtualTouchpadService> service = interface_cast<IVirtualTouchpadService>(
43 sm->getService(IVirtualTouchpadService::SERVICE_NAME()));
44 if (service == nullptr) {
45 ALOGE("failed to get service");
46 return sp<VirtualTouchpad>();
47 }
48 return new VirtualTouchpadClientImpl(service);
49}
50
51} // namespace dvr
52} // namespace android