IMediaPlayerClient.cpp revision 89fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5
1a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten/* 2a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten** 3a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten** Copyright 2008, The Android Open Source Project 4a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten** 5a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten** Licensed under the Apache License, Version 2.0 (the "License"); 6a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten** you may not use this file except in compliance with the License. 7a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten** You may obtain a copy of the License at 8a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten** 9a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten** http://www.apache.org/licenses/LICENSE-2.0 10a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten** 11a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten** Unless required by applicable law or agreed to in writing, software 12a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten** distributed under the License is distributed on an "AS IS" BASIS, 13a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten** See the License for the specific language governing permissions and 15a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten** limitations under the License. 16a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten*/ 17a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten 18a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten#include <utils/RefBase.h> 19a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten#include <utils/IInterface.h> 2063c002ab68761be0eace98f28320d8eb2f3f7695Jean-Michel Trivi#include <utils/Parcel.h> 21ea429ee1007c36ade812199ad365c0e659e8053fEric Laurent 2263c002ab68761be0eace98f28320d8eb2f3f7695Jean-Michel Trivi#include <media/IMediaPlayerClient.h> 23a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten 249cd3c9e7a2395647b92c32f33c06cf9fd546b22fJean-Michel Trivinamespace android { 259cd3c9e7a2395647b92c32f33c06cf9fd546b22fJean-Michel Trivi 26ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kastenenum { 27cfe5b1c6f0b65499d9aed2cf4b2a7e805fb02758Jean-Michel Trivi NOTIFY = IBinder::FIRST_CALL_TRANSACTION, 28faf90312d2156acbf27c62e114fd180708aa7654Glenn Kasten}; 29cfe5b1c6f0b65499d9aed2cf4b2a7e805fb02758Jean-Michel Trivi 30cfe5b1c6f0b65499d9aed2cf4b2a7e805fb02758Jean-Michel Triviclass BpMediaPlayerClient: public BpInterface<IMediaPlayerClient> 31cfe5b1c6f0b65499d9aed2cf4b2a7e805fb02758Jean-Michel Trivi{ 32cfe5b1c6f0b65499d9aed2cf4b2a7e805fb02758Jean-Michel Trivipublic: 33cfe5b1c6f0b65499d9aed2cf4b2a7e805fb02758Jean-Michel Trivi BpMediaPlayerClient(const sp<IBinder>& impl) 34cfe5b1c6f0b65499d9aed2cf4b2a7e805fb02758Jean-Michel Trivi : BpInterface<IMediaPlayerClient>(impl) 35768edbc2a8e7f197548cf1141689dd237d19c455Glenn Kasten { 36cfe5b1c6f0b65499d9aed2cf4b2a7e805fb02758Jean-Michel Trivi } 37cfe5b1c6f0b65499d9aed2cf4b2a7e805fb02758Jean-Michel Trivi 38a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten virtual void notify(int msg, int ext1, int ext2) 39a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten { 40ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten Parcel data, reply; 41ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten data.writeInterfaceToken(IMediaPlayerClient::getInterfaceDescriptor()); 42bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten data.writeInt32(msg); 43bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten data.writeInt32(ext1); 44bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten data.writeInt32(ext2); 45faf90312d2156acbf27c62e114fd180708aa7654Glenn Kasten remote()->transact(NOTIFY, data, &reply, IBinder::FLAG_ONEWAY); 46ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten } 479cd3c9e7a2395647b92c32f33c06cf9fd546b22fJean-Michel Trivi}; 48bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten 499cd3c9e7a2395647b92c32f33c06cf9fd546b22fJean-Michel TriviIMPLEMENT_META_INTERFACE(MediaPlayerClient, "android.hardware.IMediaPlayerClient"); 509cd3c9e7a2395647b92c32f33c06cf9fd546b22fJean-Michel Trivi 51bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten// ---------------------------------------------------------------------- 529cd3c9e7a2395647b92c32f33c06cf9fd546b22fJean-Michel Trivi 539cd3c9e7a2395647b92c32f33c06cf9fd546b22fJean-Michel Trivi#define CHECK_INTERFACE(interface, data, reply) \ 549cd3c9e7a2395647b92c32f33c06cf9fd546b22fJean-Michel Trivi do { if (!data.enforceInterface(interface::getInterfaceDescriptor())) { \ 55bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten LOGW("Call incorrectly routed to " #interface); \ 56ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten return PERMISSION_DENIED; \ 57ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten } } while (0) 58a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten 59a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kastenstatus_t BnMediaPlayerClient::onTransact( 60ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags) 61a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten{ 62a6d984c32855a239f7f79a3d3b7f2ddfb8cb9697Glenn Kasten switch(code) { 63ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten case NOTIFY: { 64ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten CHECK_INTERFACE(IMediaPlayerClient, data, reply); 65ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten int msg = data.readInt32(); 66ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten int ext1 = data.readInt32(); 67ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten int ext2 = data.readInt32(); 68bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten notify(msg, ext1, ext2); 69bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten return NO_ERROR; 70bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten } break; 71faf90312d2156acbf27c62e114fd180708aa7654Glenn Kasten default: 72ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten return BBinder::onTransact(code, data, reply, flags); 73ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten } 749cd3c9e7a2395647b92c32f33c06cf9fd546b22fJean-Michel Trivi} 75bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten 769cd3c9e7a2395647b92c32f33c06cf9fd546b22fJean-Michel Trivi}; // namespace android 779cd3c9e7a2395647b92c32f33c06cf9fd546b22fJean-Michel Trivi 78bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten