Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 696a6a14 authored by Peter Kalauskas's avatar Peter Kalauskas
Browse files

Add new lazy service target to clearkey

Test: Reboot device and make sure clearkey HAL is not running. Run gts.
Bug: 112386116
Change-Id: I8ef1c88b64cfb3a292abfd31b3dda82c6cd73ef9
parent f3f261a7
Loading
Loading
Loading
Loading
+15 −4
Original line number Diff line number Diff line
@@ -14,8 +14,8 @@
// limitations under the License.
//

cc_binary {
    name: "android.hardware.drm@1.2-service.clearkey",
cc_defaults {
    name: "clearkey_service_defaults",
    vendor: true,

    srcs: [
@@ -33,13 +33,11 @@ cc_binary {
        "MemoryFileSystem.cpp",
        "Session.cpp",
        "SessionLibrary.cpp",
        "service.cpp",
    ],

    relative_install_path: "hw",

    cflags: ["-Wall", "-Werror"],
    init_rc: ["android.hardware.drm@1.2-service.clearkey.rc"],

    shared_libs: [
        "android.hardware.drm@1.0",
@@ -80,3 +78,16 @@ cc_library_static {
    },
    srcs: ["protos/DeviceFiles.proto"],
}
cc_binary {
    name: "android.hardware.drm@1.2-service.clearkey",
    defaults: ["clearkey_service_defaults"],
    srcs: ["service.cpp"],
    init_rc: ["android.hardware.drm@1.2-service.clearkey.rc"],
}
cc_binary {
    name: "android.hardware.drm@1.2-service-lazy.clearkey",
    overrides: ["android.hardware.drm@1.2-service.clearkey"],
    defaults: ["clearkey_service_defaults"],
    srcs: ["serviceLazy.cpp"],
    init_rc: ["android.hardware.drm@1.2-service-lazy.clearkey.rc"],
}
+14 −0
Original line number Diff line number Diff line
service vendor.drm-clearkey-hal-1-2 /vendor/bin/hw/android.hardware.drm@1.2-service-lazy.clearkey
    interface android.hardware.drm@1.0::ICryptoFactory clearkey
    interface android.hardware.drm@1.0::IDrmFactory clearkey
    interface android.hardware.drm@1.1::ICryptoFactory clearkey
    interface android.hardware.drm@1.1::IDrmFactory clearkey
    interface android.hardware.drm@1.2::ICryptoFactory clearkey
    interface android.hardware.drm@1.2::IDrmFactory clearkey
    disabled
    oneshot
    class hal
    user media
    group media mediadrm
    ioprio rt 4
    writepid /dev/cpuset/foreground/tasks
+6 −0
Original line number Diff line number Diff line
service vendor.drm-clearkey-hal-1-2 /vendor/bin/hw/android.hardware.drm@1.2-service.clearkey
    interface android.hardware.drm@1.0::ICryptoFactory clearkey
    interface android.hardware.drm@1.0::IDrmFactory clearkey
    interface android.hardware.drm@1.1::ICryptoFactory clearkey
    interface android.hardware.drm@1.1::IDrmFactory clearkey
    interface android.hardware.drm@1.2::ICryptoFactory clearkey
    interface android.hardware.drm@1.2::IDrmFactory clearkey
    class hal
    user media
    group media mediadrm
+1 −9
Original line number Diff line number Diff line
@@ -13,13 +13,12 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
#define LOG_TAG "android.hardware.drm@1.2-service.clearkey"

#include <CryptoFactory.h>
#include <DrmFactory.h>

#include <android-base/logging.h>
#include <binder/ProcessState.h>
#include <hidl/HidlLazyUtils.h>
#include <hidl/HidlTransportSupport.h>

using ::android::hardware::configureRpcThreadpool;
@@ -31,14 +30,7 @@ using android::hardware::drm::V1_2::IDrmFactory;
using android::hardware::drm::V1_2::clearkey::CryptoFactory;
using android::hardware::drm::V1_2::clearkey::DrmFactory;


int main(int /* argc */, char** /* argv */) {
    ALOGD("android.hardware.drm@1.2-service.clearkey starting...");

    // The DRM HAL may communicate to other vendor components via
    // /dev/vndbinder
    android::ProcessState::initWithDriver("/dev/vndbinder");

    sp<IDrmFactory> drmFactory = new DrmFactory;
    sp<ICryptoFactory> cryptoFactory = new CryptoFactory;

+50 −0
Original line number Diff line number Diff line
/*
 * Copyright 2019 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.
 */
#include <CryptoFactory.h>
#include <DrmFactory.h>

#include <android-base/logging.h>
#include <binder/ProcessState.h>
#include <hidl/HidlLazyUtils.h>
#include <hidl/HidlTransportSupport.h>

using ::android::hardware::configureRpcThreadpool;
using ::android::hardware::joinRpcThreadpool;
using ::android::sp;

using android::hardware::drm::V1_2::ICryptoFactory;
using android::hardware::drm::V1_2::IDrmFactory;
using android::hardware::drm::V1_2::clearkey::CryptoFactory;
using android::hardware::drm::V1_2::clearkey::DrmFactory;
using android::hardware::LazyServiceRegistrar;

int main(int /* argc */, char** /* argv */) {
    sp<IDrmFactory> drmFactory = new DrmFactory;
    sp<ICryptoFactory> cryptoFactory = new CryptoFactory;

    configureRpcThreadpool(8, true /* callerWillJoin */);

    // Setup hwbinder service
    LazyServiceRegistrar serviceRegistrar;

    // Setup hwbinder service
    CHECK_EQ(serviceRegistrar.registerService(drmFactory, "clearkey"), android::NO_ERROR)
        << "Failed to register Clearkey Factory HAL";
    CHECK_EQ(serviceRegistrar.registerService(cryptoFactory, "clearkey"), android::NO_ERROR)
        << "Failed to register Clearkey Crypto  HAL";

    joinRpcThreadpool();
}