11917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker/*
21917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker * Copyright 2018 The Android Open Source Project
31917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker *
41917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker * Licensed under the Apache License, Version 2.0 (the "License");
51917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker * you may not use this file except in compliance with the License.
61917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker * You may obtain a copy of the License at
71917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker *
81917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker *      http://www.apache.org/licenses/LICENSE-2.0
91917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker *
101917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker * Unless required by applicable law or agreed to in writing, software
111917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker * distributed under the License is distributed on an "AS IS" BASIS,
121917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
131917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker * See the License for the specific language governing permissions and
141917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker * limitations under the License.
151917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker */
161917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker#define LOG_TAG "android.hardware.drm@1.1-service.clearkey"
171917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker
181917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker#include <CryptoFactory.h>
191917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker#include <DrmFactory.h>
201917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker
211917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker#include <android-base/logging.h>
221917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker#include <binder/ProcessState.h>
231917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker#include <hidl/HidlTransportSupport.h>
241917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker
251917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinkerusing ::android::hardware::configureRpcThreadpool;
261917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinkerusing ::android::hardware::joinRpcThreadpool;
271917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinkerusing ::android::sp;
281917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker
291917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinkerusing android::hardware::drm::V1_1::ICryptoFactory;
301917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinkerusing android::hardware::drm::V1_1::IDrmFactory;
311917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinkerusing android::hardware::drm::V1_1::clearkey::CryptoFactory;
321917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinkerusing android::hardware::drm::V1_1::clearkey::DrmFactory;
331917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker
341917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker
351917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinkerint main(int /* argc */, char** /* argv */) {
361917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker    ALOGD("android.hardware.drm@1.1-service.clearkey starting...");
371917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker
381917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker    // The DRM HAL may communicate to other vendor components via
391917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker    // /dev/vndbinder
401917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker    android::ProcessState::initWithDriver("/dev/vndbinder");
411917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker
421917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker    sp<IDrmFactory> drmFactory = new DrmFactory;
431917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker    sp<ICryptoFactory> cryptoFactory = new CryptoFactory;
441917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker
451917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker    configureRpcThreadpool(8, true /* callerWillJoin */);
461917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker
471917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker    // Setup hwbinder service
481917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker    CHECK_EQ(drmFactory->registerAsService("clearkey"), android::NO_ERROR)
491917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker        << "Failed to register Clearkey Factory HAL";
501917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker    CHECK_EQ(cryptoFactory->registerAsService("clearkey"), android::NO_ERROR)
511917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker        << "Failed to register Clearkey Crypto  HAL";
521917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker
531917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker    joinRpcThreadpool();
541917fac1e41f57e547df7dcdebf57dd8483e7f61Jeff Tinker}
55