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