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