VirtualTouchpadClient.cpp revision 3002b8a74431dd7c005269cf9306443a4b4963f1
189af70bce420f011adfeb0f80984b3895c4d7d9bKevin Schoedel#include "VirtualTouchpadClient.h" 289af70bce420f011adfeb0f80984b3895c4d7d9bKevin Schoedel 389af70bce420f011adfeb0f80984b3895c4d7d9bKevin Schoedel#include <android/dvr/IVirtualTouchpadService.h> 489af70bce420f011adfeb0f80984b3895c4d7d9bKevin Schoedel#include <binder/IServiceManager.h> 589af70bce420f011adfeb0f80984b3895c4d7d9bKevin Schoedel 689af70bce420f011adfeb0f80984b3895c4d7d9bKevin Schoedelnamespace android { 789af70bce420f011adfeb0f80984b3895c4d7d9bKevin Schoedelnamespace dvr { 889af70bce420f011adfeb0f80984b3895c4d7d9bKevin Schoedel 989af70bce420f011adfeb0f80984b3895c4d7d9bKevin Schoedelnamespace { 1089af70bce420f011adfeb0f80984b3895c4d7d9bKevin Schoedel 1189af70bce420f011adfeb0f80984b3895c4d7d9bKevin Schoedelclass VirtualTouchpadClientImpl : public VirtualTouchpadClient { 1289af70bce420f011adfeb0f80984b3895c4d7d9bKevin Schoedel public: 134b64dd48b6896d6b963f0a3a0259d3d2a7076a9eKevin Schoedel VirtualTouchpadClientImpl(sp<IVirtualTouchpadService> service) 144b64dd48b6896d6b963f0a3a0259d3d2a7076a9eKevin Schoedel : service_(service) {} 154b64dd48b6896d6b963f0a3a0259d3d2a7076a9eKevin Schoedel ~VirtualTouchpadClientImpl() override {} 164b64dd48b6896d6b963f0a3a0259d3d2a7076a9eKevin Schoedel 174b64dd48b6896d6b963f0a3a0259d3d2a7076a9eKevin Schoedel status_t Touch(int touchpad, 184b64dd48b6896d6b963f0a3a0259d3d2a7076a9eKevin Schoedel float x, float y, float pressure) override { 194b64dd48b6896d6b963f0a3a0259d3d2a7076a9eKevin Schoedel if (service_ == nullptr) { 204b64dd48b6896d6b963f0a3a0259d3d2a7076a9eKevin Schoedel return NO_INIT; 214b64dd48b6896d6b963f0a3a0259d3d2a7076a9eKevin Schoedel } 224b64dd48b6896d6b963f0a3a0259d3d2a7076a9eKevin Schoedel return service_->touch(touchpad, x, y, pressure).transactionError(); 234b64dd48b6896d6b963f0a3a0259d3d2a7076a9eKevin Schoedel } 244b64dd48b6896d6b963f0a3a0259d3d2a7076a9eKevin Schoedel status_t ButtonState(int touchpad, int buttons) override { 254b64dd48b6896d6b963f0a3a0259d3d2a7076a9eKevin Schoedel if (service_ == nullptr) { 264b64dd48b6896d6b963f0a3a0259d3d2a7076a9eKevin Schoedel return NO_INIT; 274b64dd48b6896d6b963f0a3a0259d3d2a7076a9eKevin Schoedel } 284b64dd48b6896d6b963f0a3a0259d3d2a7076a9eKevin Schoedel return service_->buttonState(touchpad, buttons).transactionError(); 294b64dd48b6896d6b963f0a3a0259d3d2a7076a9eKevin Schoedel } 304b64dd48b6896d6b963f0a3a0259d3d2a7076a9eKevin Schoedel 314b64dd48b6896d6b963f0a3a0259d3d2a7076a9eKevin Schoedel private: 324b64dd48b6896d6b963f0a3a0259d3d2a7076a9eKevin Schoedel sp<IVirtualTouchpadService> service_; 334b64dd48b6896d6b963f0a3a0259d3d2a7076a9eKevin Schoedel}; 344b64dd48b6896d6b963f0a3a0259d3d2a7076a9eKevin Schoedel 354b64dd48b6896d6b963f0a3a0259d3d2a7076a9eKevin Schoedel} // anonymous namespace 364b64dd48b6896d6b963f0a3a0259d3d2a7076a9eKevin Schoedel 374b64dd48b6896d6b963f0a3a0259d3d2a7076a9eKevin Schoedelsp<VirtualTouchpad> VirtualTouchpadClient::Create() { 384b64dd48b6896d6b963f0a3a0259d3d2a7076a9eKevin Schoedel sp<IServiceManager> sm = defaultServiceManager(); 394b64dd48b6896d6b963f0a3a0259d3d2a7076a9eKevin Schoedel if (sm == nullptr) { 404b64dd48b6896d6b963f0a3a0259d3d2a7076a9eKevin Schoedel ALOGE("no service manager"); 414b64dd48b6896d6b963f0a3a0259d3d2a7076a9eKevin Schoedel return sp<VirtualTouchpad>(); 424b64dd48b6896d6b963f0a3a0259d3d2a7076a9eKevin Schoedel } 434b64dd48b6896d6b963f0a3a0259d3d2a7076a9eKevin Schoedel sp<IVirtualTouchpadService> service = interface_cast<IVirtualTouchpadService>( 444b64dd48b6896d6b963f0a3a0259d3d2a7076a9eKevin Schoedel sm->getService(IVirtualTouchpadService::SERVICE_NAME())); 454b64dd48b6896d6b963f0a3a0259d3d2a7076a9eKevin Schoedel if (service == nullptr) { 464b64dd48b6896d6b963f0a3a0259d3d2a7076a9eKevin Schoedel ALOGE("failed to get service"); 474b64dd48b6896d6b963f0a3a0259d3d2a7076a9eKevin Schoedel return sp<VirtualTouchpad>(); 4889af70bce420f011adfeb0f80984b3895c4d7d9bKevin Schoedel } 494b64dd48b6896d6b963f0a3a0259d3d2a7076a9eKevin Schoedel return new VirtualTouchpadClientImpl(service); 5089af70bce420f011adfeb0f80984b3895c4d7d9bKevin Schoedel} 5189af70bce420f011adfeb0f80984b3895c4d7d9bKevin Schoedel 5289af70bce420f011adfeb0f80984b3895c4d7d9bKevin Schoedel} // namespace dvr 533002b8a74431dd7c005269cf9306443a4b4963f1Kevin Schoedel} // namespace android 5489af70bce420f011adfeb0f80984b3895c4d7d9bKevin Schoedel