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