VirtualTouchpadClient.cpp revision 89af70bce420f011adfeb0f80984b3895c4d7d9b
1#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
53