16b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov/* 26b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov * Copyright (C) 2017 The Android Open Source Project 36b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov * 46b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov * Licensed under the Apache License, Version 2.0 (the "License"); 56b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov * you may not use this file except in compliance with the License. 66b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov * You may obtain a copy of the License at 76b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov * 86b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov * http://www.apache.org/licenses/LICENSE-2.0 96b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov * 106b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov * Unless required by applicable law or agreed to in writing, software 116b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov * distributed under the License is distributed on an "AS IS" BASIS, 126b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov * See the License for the specific language governing permissions and 146b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov * limitations under the License. 156b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov */ 166b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov 176b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov#define LOG_TAG "DevicesFactoryHalHybrid" 186b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov//#define LOG_NDEBUG 0 196b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov 206b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov#include "DevicesFactoryHalHybrid.h" 216b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov#include "DevicesFactoryHalLocal.h" 226b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov#ifndef USE_LEGACY_LOCAL_AUDIO_HAL 236b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov#include "DevicesFactoryHalHidl.h" 246b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov#endif 256b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov 266b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganovnamespace android { 276b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov 286b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov// static 296b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganovsp<DevicesFactoryHalInterface> DevicesFactoryHalInterface::create() { 306b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov return new DevicesFactoryHalHybrid(); 316b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov} 326b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov 336b111f32247800dccd34dd396e731b9e7888b185Mikhail NaganovDevicesFactoryHalHybrid::DevicesFactoryHalHybrid() 346b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov : mLocalFactory(new DevicesFactoryHalLocal()), 356b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov mHidlFactory( 366b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov#ifdef USE_LEGACY_LOCAL_AUDIO_HAL 376b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov nullptr 386b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov#else 396b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov new DevicesFactoryHalHidl() 406b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov#endif 416b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov ) { 426b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov} 436b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov 446b111f32247800dccd34dd396e731b9e7888b185Mikhail NaganovDevicesFactoryHalHybrid::~DevicesFactoryHalHybrid() { 456b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov} 466b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov 476b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganovstatus_t DevicesFactoryHalHybrid::openDevice(const char *name, sp<DeviceHalInterface> *device) { 486b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov if (mHidlFactory != 0 && strcmp(AUDIO_HARDWARE_MODULE_ID_A2DP, name) != 0) { 496b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov return mHidlFactory->openDevice(name, device); 506b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov } 516b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov return mLocalFactory->openDevice(name, device); 526b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov} 536b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov 546b111f32247800dccd34dd396e731b9e7888b185Mikhail Naganov} // namespace android 55