1231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu/* 2231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu** 3231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu** Copyright 2015, The Android Open Source Project 4231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu** 5231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu** Licensed under the Apache License, Version 2.0 (the "License"); 6231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu** you may not use this file except in compliance with the License. 7231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu** You may obtain a copy of the License at 8231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu** 9231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu** http://www.apache.org/licenses/LICENSE-2.0 10231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu** 11231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu** Unless required by applicable law or agreed to in writing, software 12231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu** distributed under the License is distributed on an "AS IS" BASIS, 13231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu** See the License for the specific language governing permissions and 15231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu** limitations under the License. 16231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu*/ 17231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu 18231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu#include <utils/RefBase.h> 19231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu#include <binder/IInterface.h> 20231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu#include <binder/Parcel.h> 21231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu 22231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu#include <media/IResourceManagerClient.h> 23231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu 24231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wunamespace android { 25231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu 26231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wuenum { 27231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu RECLAIM_RESOURCE = IBinder::FIRST_CALL_TRANSACTION, 288f9dd872366f54b6260506c75c3d0cc3f9f73f81Ronghua Wu GET_NAME, 29231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu}; 30231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu 31231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wuclass BpResourceManagerClient: public BpInterface<IResourceManagerClient> 32231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu{ 33231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wupublic: 34090ef604f81447eab4aa0a5b45d6307482573560Chih-Hung Hsieh explicit BpResourceManagerClient(const sp<IBinder> &impl) 35231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu : BpInterface<IResourceManagerClient>(impl) 36231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu { 37231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu } 38231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu 39231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu virtual bool reclaimResource() { 40231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu Parcel data, reply; 41231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu data.writeInterfaceToken(IResourceManagerClient::getInterfaceDescriptor()); 42231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu 43231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu bool ret = false; 44231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu status_t status = remote()->transact(RECLAIM_RESOURCE, data, &reply); 45231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu if (status == NO_ERROR) { 46231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu ret = (bool)reply.readInt32(); 47231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu } 48231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu return ret; 49231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu } 508f9dd872366f54b6260506c75c3d0cc3f9f73f81Ronghua Wu 518f9dd872366f54b6260506c75c3d0cc3f9f73f81Ronghua Wu virtual String8 getName() { 528f9dd872366f54b6260506c75c3d0cc3f9f73f81Ronghua Wu Parcel data, reply; 538f9dd872366f54b6260506c75c3d0cc3f9f73f81Ronghua Wu data.writeInterfaceToken(IResourceManagerClient::getInterfaceDescriptor()); 548f9dd872366f54b6260506c75c3d0cc3f9f73f81Ronghua Wu 558f9dd872366f54b6260506c75c3d0cc3f9f73f81Ronghua Wu String8 ret; 568f9dd872366f54b6260506c75c3d0cc3f9f73f81Ronghua Wu status_t status = remote()->transact(GET_NAME, data, &reply); 578f9dd872366f54b6260506c75c3d0cc3f9f73f81Ronghua Wu if (status == NO_ERROR) { 588f9dd872366f54b6260506c75c3d0cc3f9f73f81Ronghua Wu ret = reply.readString8(); 598f9dd872366f54b6260506c75c3d0cc3f9f73f81Ronghua Wu } 608f9dd872366f54b6260506c75c3d0cc3f9f73f81Ronghua Wu return ret; 618f9dd872366f54b6260506c75c3d0cc3f9f73f81Ronghua Wu } 628f9dd872366f54b6260506c75c3d0cc3f9f73f81Ronghua Wu 63231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu}; 64231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu 65231c3d169ad029689f9d688b68179af7e96b8d78Ronghua WuIMPLEMENT_META_INTERFACE(ResourceManagerClient, "android.media.IResourceManagerClient"); 66231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu 67231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu// ---------------------------------------------------------------------- 68231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu 69231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wustatus_t BnResourceManagerClient::onTransact( 70231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu uint32_t code, const Parcel &data, Parcel *reply, uint32_t flags) 71231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu{ 72231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu switch (code) { 73231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu case RECLAIM_RESOURCE: { 74231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu CHECK_INTERFACE(IResourceManagerClient, data, reply); 75231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu bool ret = reclaimResource(); 76231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu reply->writeInt32(ret); 77231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu return NO_ERROR; 78231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu } break; 798f9dd872366f54b6260506c75c3d0cc3f9f73f81Ronghua Wu case GET_NAME: { 808f9dd872366f54b6260506c75c3d0cc3f9f73f81Ronghua Wu CHECK_INTERFACE(IResourceManagerClient, data, reply); 818f9dd872366f54b6260506c75c3d0cc3f9f73f81Ronghua Wu String8 ret = getName(); 828f9dd872366f54b6260506c75c3d0cc3f9f73f81Ronghua Wu reply->writeString8(ret); 838f9dd872366f54b6260506c75c3d0cc3f9f73f81Ronghua Wu return NO_ERROR; 848f9dd872366f54b6260506c75c3d0cc3f9f73f81Ronghua Wu } break; 85231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu default: 86231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu return BBinder::onTransact(code, data, reply, flags); 87231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu } 88231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu} 89231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu 90231c3d169ad029689f9d688b68179af7e96b8d78Ronghua Wu}; // namespace android 91