1b166940edca6e312463461438e2aa66e9852c26aBenoit Goby/* 2b166940edca6e312463461438e2aa66e9852c26aBenoit Goby * Copyright (C) 2010 The Android Open Source Project 3b166940edca6e312463461438e2aa66e9852c26aBenoit Goby * Copyright (C) 2012-2013, The Linux Foundation. All rights reserved. 4b166940edca6e312463461438e2aa66e9852c26aBenoit Goby * 5b166940edca6e312463461438e2aa66e9852c26aBenoit Goby * Not a Contribution, Apache license notifications and license are 6b166940edca6e312463461438e2aa66e9852c26aBenoit Goby * retained for attribution purposes only. 7b166940edca6e312463461438e2aa66e9852c26aBenoit Goby 8b166940edca6e312463461438e2aa66e9852c26aBenoit Goby * Licensed under the Apache License, Version 2.0 (the "License"); 9b166940edca6e312463461438e2aa66e9852c26aBenoit Goby * you may not use this file except in compliance with the License. 10b166940edca6e312463461438e2aa66e9852c26aBenoit Goby * You may obtain a copy of the License at 11b166940edca6e312463461438e2aa66e9852c26aBenoit Goby * 12b166940edca6e312463461438e2aa66e9852c26aBenoit Goby * http://www.apache.org/licenses/LICENSE-2.0 13b166940edca6e312463461438e2aa66e9852c26aBenoit Goby * 14b166940edca6e312463461438e2aa66e9852c26aBenoit Goby * Unless required by applicable law or agreed to in writing, software 15b166940edca6e312463461438e2aa66e9852c26aBenoit Goby * distributed under the License is distributed on an "AS IS" BASIS, 16b166940edca6e312463461438e2aa66e9852c26aBenoit Goby * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17b166940edca6e312463461438e2aa66e9852c26aBenoit Goby * See the License for the specific language governing permissions and 18b166940edca6e312463461438e2aa66e9852c26aBenoit Goby * limitations under the License. 19b166940edca6e312463461438e2aa66e9852c26aBenoit Goby */ 20b166940edca6e312463461438e2aa66e9852c26aBenoit Goby 21b166940edca6e312463461438e2aa66e9852c26aBenoit Goby#include <sys/types.h> 22b166940edca6e312463461438e2aa66e9852c26aBenoit Goby#include <binder/Parcel.h> 23b166940edca6e312463461438e2aa66e9852c26aBenoit Goby#include <binder/IBinder.h> 24b166940edca6e312463461438e2aa66e9852c26aBenoit Goby#include <binder/IInterface.h> 25b166940edca6e312463461438e2aa66e9852c26aBenoit Goby#include <utils/Errors.h> 26b166940edca6e312463461438e2aa66e9852c26aBenoit Goby#include <IQClient.h> 27b166940edca6e312463461438e2aa66e9852c26aBenoit Goby 28b166940edca6e312463461438e2aa66e9852c26aBenoit Gobyusing namespace android; 29b166940edca6e312463461438e2aa66e9852c26aBenoit Goby 30b166940edca6e312463461438e2aa66e9852c26aBenoit Goby// --------------------------------------------------------------------------- 31b166940edca6e312463461438e2aa66e9852c26aBenoit Goby 32b166940edca6e312463461438e2aa66e9852c26aBenoit Gobynamespace qClient { 33b166940edca6e312463461438e2aa66e9852c26aBenoit Goby 34b166940edca6e312463461438e2aa66e9852c26aBenoit Gobyenum { 35b166940edca6e312463461438e2aa66e9852c26aBenoit Goby NOTIFY_CALLBACK = IBinder::FIRST_CALL_TRANSACTION, 36b166940edca6e312463461438e2aa66e9852c26aBenoit Goby}; 37b166940edca6e312463461438e2aa66e9852c26aBenoit Goby 38b166940edca6e312463461438e2aa66e9852c26aBenoit Gobyclass BpQClient : public BpInterface<IQClient> 39b166940edca6e312463461438e2aa66e9852c26aBenoit Goby{ 40b166940edca6e312463461438e2aa66e9852c26aBenoit Gobypublic: 41b166940edca6e312463461438e2aa66e9852c26aBenoit Goby BpQClient(const sp<IBinder>& impl) 42b166940edca6e312463461438e2aa66e9852c26aBenoit Goby : BpInterface<IQClient>(impl) {} 43b166940edca6e312463461438e2aa66e9852c26aBenoit Goby 44b166940edca6e312463461438e2aa66e9852c26aBenoit Goby virtual status_t notifyCallback(uint32_t msg, uint32_t value) { 45b166940edca6e312463461438e2aa66e9852c26aBenoit Goby Parcel data, reply; 46b166940edca6e312463461438e2aa66e9852c26aBenoit Goby data.writeInterfaceToken(IQClient::getInterfaceDescriptor()); 47b166940edca6e312463461438e2aa66e9852c26aBenoit Goby data.writeInt32(msg); 48b166940edca6e312463461438e2aa66e9852c26aBenoit Goby data.writeInt32(value); 49b166940edca6e312463461438e2aa66e9852c26aBenoit Goby remote()->transact(NOTIFY_CALLBACK, data, &reply); 50b166940edca6e312463461438e2aa66e9852c26aBenoit Goby status_t result = reply.readInt32(); 51b166940edca6e312463461438e2aa66e9852c26aBenoit Goby return result; 52b166940edca6e312463461438e2aa66e9852c26aBenoit Goby } 53b166940edca6e312463461438e2aa66e9852c26aBenoit Goby}; 54b166940edca6e312463461438e2aa66e9852c26aBenoit Goby 55b166940edca6e312463461438e2aa66e9852c26aBenoit GobyIMPLEMENT_META_INTERFACE(QClient, "android.display.IQClient"); 56b166940edca6e312463461438e2aa66e9852c26aBenoit Goby 57b166940edca6e312463461438e2aa66e9852c26aBenoit Goby// ---------------------------------------------------------------------- 58b166940edca6e312463461438e2aa66e9852c26aBenoit Goby 59b166940edca6e312463461438e2aa66e9852c26aBenoit Gobystatus_t BnQClient::onTransact( 60b166940edca6e312463461438e2aa66e9852c26aBenoit Goby uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags) 61b166940edca6e312463461438e2aa66e9852c26aBenoit Goby{ 62b166940edca6e312463461438e2aa66e9852c26aBenoit Goby switch(code) { 63b166940edca6e312463461438e2aa66e9852c26aBenoit Goby case NOTIFY_CALLBACK: { 64b166940edca6e312463461438e2aa66e9852c26aBenoit Goby CHECK_INTERFACE(IQClient, data, reply); 65b166940edca6e312463461438e2aa66e9852c26aBenoit Goby uint32_t msg = data.readInt32(); 66b166940edca6e312463461438e2aa66e9852c26aBenoit Goby uint32_t value = data.readInt32(); 67b166940edca6e312463461438e2aa66e9852c26aBenoit Goby notifyCallback(msg, value); 68b166940edca6e312463461438e2aa66e9852c26aBenoit Goby return NO_ERROR; 69b166940edca6e312463461438e2aa66e9852c26aBenoit Goby } break; 70b166940edca6e312463461438e2aa66e9852c26aBenoit Goby default: 71b166940edca6e312463461438e2aa66e9852c26aBenoit Goby return BBinder::onTransact(code, data, reply, flags); 72b166940edca6e312463461438e2aa66e9852c26aBenoit Goby } 73b166940edca6e312463461438e2aa66e9852c26aBenoit Goby} 74b166940edca6e312463461438e2aa66e9852c26aBenoit Goby 75b166940edca6e312463461438e2aa66e9852c26aBenoit Goby}; // namespace qClient 76