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