From f4bae95eab8eeedd00c2bbb1e471864a430af7c7 Mon Sep 17 00:00:00 2001 From: Tomasz Wasilczyk Date: Mon, 7 Aug 2017 17:05:14 -0700 Subject: [PATCH] Move Broadcast Radio HAL to a separate binary. Bug: 63600413 Test: VTS, instrumentation Change-Id: I34a779a6608f52bcadaca1dc159bcee02186b49f --- audio/2.0/default/service.cpp | 7 +--- broadcastradio/1.1/default/Android.bp | 15 ++++---- ...oid.hardware.broadcastradio@1.1-service.rc | 4 +++ broadcastradio/1.1/default/service.cpp | 36 +++++++++++++++++++ 4 files changed, 50 insertions(+), 12 deletions(-) create mode 100644 broadcastradio/1.1/default/android.hardware.broadcastradio@1.1-service.rc create mode 100644 broadcastradio/1.1/default/service.cpp diff --git a/audio/2.0/default/service.cpp b/audio/2.0/default/service.cpp index f71f1b4735..a215108e95 100644 --- a/audio/2.0/default/service.cpp +++ b/audio/2.0/default/service.cpp @@ -21,8 +21,6 @@ #include #include #include -#include -#include using android::hardware::configureRpcThreadpool; using android::hardware::joinRpcThreadpool; @@ -32,7 +30,6 @@ using android::hardware::audio::effect::V2_0::IEffectsFactory; using android::hardware::audio::V2_0::IDevicesFactory; using android::hardware::soundtrigger::V2_0::ISoundTriggerHw; using android::hardware::registerPassthroughServiceImplementation; -using android::hardware::broadcastradio::V1_1::IBroadcastRadioFactory; using android::OK; @@ -43,11 +40,9 @@ int main(int /* argc */, char* /* argv */ []) { LOG_ALWAYS_FATAL_IF(status != OK, "Error while registering audio service: %d", status); status = registerPassthroughServiceImplementation(); LOG_ALWAYS_FATAL_IF(status != OK, "Error while registering audio effects service: %d", status); - // Soundtrigger and FM radio might be not present. + // Soundtrigger might be not present. status = registerPassthroughServiceImplementation(); ALOGE_IF(status != OK, "Error while registering soundtrigger service: %d", status); - status = registerPassthroughServiceImplementation(); - ALOGE_IF(status != OK, "Error while registering fm radio service: %d", status); joinRpcThreadpool(); return status; } diff --git a/broadcastradio/1.1/default/Android.bp b/broadcastradio/1.1/default/Android.bp index bec8524a0b..6d26b11bd8 100644 --- a/broadcastradio/1.1/default/Android.bp +++ b/broadcastradio/1.1/default/Android.bp @@ -14,8 +14,9 @@ // limitations under the License. // -cc_library_shared { - name: "android.hardware.broadcastradio@1.1-impl", +cc_binary { + name: "android.hardware.broadcastradio@1.1-service", + init_rc: ["android.hardware.broadcastradio@1.1-service.rc"], vendor: true, relative_install_path: "hw", cflags: [ @@ -29,16 +30,18 @@ cc_library_shared { "Tuner.cpp", "VirtualProgram.cpp", "VirtualRadio.cpp", + "service.cpp" ], static_libs: [ "android.hardware.broadcastradio@1.1-utils-lib", ], shared_libs: [ - "libhidlbase", - "libhidltransport", - "libutils", - "liblog", "android.hardware.broadcastradio@1.0", "android.hardware.broadcastradio@1.1", + "libbase", + "libhidlbase", + "libhidltransport", + "liblog", + "libutils", ], } diff --git a/broadcastradio/1.1/default/android.hardware.broadcastradio@1.1-service.rc b/broadcastradio/1.1/default/android.hardware.broadcastradio@1.1-service.rc new file mode 100644 index 0000000000..7c57135fc2 --- /dev/null +++ b/broadcastradio/1.1/default/android.hardware.broadcastradio@1.1-service.rc @@ -0,0 +1,4 @@ +service broadcastradio-hal /vendor/bin/hw/android.hardware.broadcastradio@1.1-service + class hal + user audioserver + group audio diff --git a/broadcastradio/1.1/default/service.cpp b/broadcastradio/1.1/default/service.cpp new file mode 100644 index 0000000000..f8af0b78cb --- /dev/null +++ b/broadcastradio/1.1/default/service.cpp @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#define LOG_TAG "BroadcastRadioDefault.service" + +#include +#include + +#include "BroadcastRadioFactory.h" + +using android::hardware::configureRpcThreadpool; +using android::hardware::joinRpcThreadpool; +using android::hardware::broadcastradio::V1_1::implementation::BroadcastRadioFactory; + +int main(int /* argc */, char** /* argv */) { + configureRpcThreadpool(4, true); + + BroadcastRadioFactory broadcastRadioFactory; + auto status = broadcastRadioFactory.registerAsService(); + CHECK_EQ(status, android::OK) << "Failed to register Broadcast Radio HAL implementation"; + + joinRpcThreadpool(); + return 1; // joinRpcThreadpool shouldn't exit +}