140c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown/* 240c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown * Copyright (C) 2013 The Android Open Source Project 340c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown * 440c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown * Licensed under the Apache License, Version 2.0 (the "License"); 540c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown * you may not use this file except in compliance with the License. 640c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown * You may obtain a copy of the License at 740c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown * 840c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown * http://www.apache.org/licenses/LICENSE-2.0 940c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown * 1040c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown * Unless required by applicable law or agreed to in writing, software 1140c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown * distributed under the License is distributed on an "AS IS" BASIS, 1240c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1340c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown * See the License for the specific language governing permissions and 1440c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown * limitations under the License. 1540c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown */ 1640c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown 1740c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown#include <stdint.h> 1840c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown#include <sys/types.h> 1940c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown 2040c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown#include <binder/Parcel.h> 2140c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown#include <binder/IPCThreadState.h> 2240c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown#include <binder/IServiceManager.h> 2340c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown 2440c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown#include <input/IInputFlinger.h> 2540c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown 2640c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown 2740c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brownnamespace android { 2840c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown 2940c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brownclass BpInputFlinger : public BpInterface<IInputFlinger> { 3040c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brownpublic: 31e2347b7953f70232541bdc1b392230d6231aaeb9Chih-Hung Hsieh explicit BpInputFlinger(const sp<IBinder>& impl) : 3240c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown BpInterface<IInputFlinger>(impl) { } 3340c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown 3440c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown virtual status_t doSomething() { 3540c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown Parcel data, reply; 3640c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown data.writeInterfaceToken(IInputFlinger::getInterfaceDescriptor()); 3740c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown remote()->transact(BnInputFlinger::DO_SOMETHING_TRANSACTION, data, &reply); 3840c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown return reply.readInt32(); 3940c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown } 4040c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown}; 4140c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown 4240c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff BrownIMPLEMENT_META_INTERFACE(InputFlinger, "android.input.IInputFlinger"); 4340c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown 4440c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown 4540c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brownstatus_t BnInputFlinger::onTransact( 4640c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags) { 4740c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown switch(code) { 4840c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown case DO_SOMETHING_TRANSACTION: { 4940c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown CHECK_INTERFACE(IInputFlinger, data, reply); 5040c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown reply->writeInt32(0); 5140c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown break; 5240c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown } 5340c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown default: 5440c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown return BBinder::onTransact(code, data, reply, flags); 5540c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown } 5640c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown return NO_ERROR; 5740c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown} 5840c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown 5940c9e0a3989222b4c27c88f54b6acf67b58a68cfJeff Brown}; 60