IAudioFlingerClient.cpp revision 89fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5
189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project/* 289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * Copyright (C) 2009 The Android Open Source Project 389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * 489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * you may not use this file except in compliance with the License. 689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * You may obtain a copy of the License at 789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * 889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * 1089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 1189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 1289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * See the License for the specific language governing permissions and 1489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project * limitations under the License. 1589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project */ 1689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 1789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project#define LOG_TAG "IAudioFlingerClient" 1889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project#include <utils/Log.h> 1989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 2089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project#include <stdint.h> 2189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project#include <sys/types.h> 2289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 2389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project#include <utils/Parcel.h> 2489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 2589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project#include <media/IAudioFlingerClient.h> 2689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 2789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectnamespace android { 2889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 2989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectenum { 3089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project AUDIO_OUTPUT_CHANGED = IBinder::FIRST_CALL_TRANSACTION 3189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project}; 3289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 3389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectclass BpAudioFlingerClient : public BpInterface<IAudioFlingerClient> 3489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project{ 3589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectpublic: 3689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project BpAudioFlingerClient(const sp<IBinder>& impl) 3789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project : BpInterface<IAudioFlingerClient>(impl) 3889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project { 3989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } 4089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 4189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project void a2dpEnabledChanged(bool enabled) 4289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project { 4389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project Parcel data, reply; 4489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInterfaceToken(IAudioFlingerClient::getInterfaceDescriptor()); 4589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project data.writeInt32((int)enabled); 4689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project remote()->transact(AUDIO_OUTPUT_CHANGED, data, &reply); 4789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } 4889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project}; 4989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 5089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source ProjectIMPLEMENT_META_INTERFACE(AudioFlingerClient, "android.media.IAudioFlingerClient"); 5189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 5289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project// ---------------------------------------------------------------------- 5389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 5489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project#define CHECK_INTERFACE(interface, data, reply) \ 5589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project do { if (!data.enforceInterface(interface::getInterfaceDescriptor())) { \ 5689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project LOGW("Call incorrectly routed to " #interface); \ 5789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return PERMISSION_DENIED; \ 5889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } } while (0) 5989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 6089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Projectstatus_t BnAudioFlingerClient::onTransact( 6189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags) 6289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project{ 6389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project switch(code) { 6489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project case AUDIO_OUTPUT_CHANGED: { 6589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project CHECK_INTERFACE(IAudioFlingerClient, data, reply); 6689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project bool enabled = (bool)data.readInt32(); 6789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project a2dpEnabledChanged(enabled); 6889fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return NO_ERROR; 6989fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } break; 7089fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project default: 7189fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project return BBinder::onTransact(code, data, reply, flags); 7289fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project } 7389fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project} 7489fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 7589fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project// ---------------------------------------------------------------------------- 7689fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project 7789fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5The Android Open Source Project}; // namespace android 78