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