diff options
-rw-r--r-- | Android.bp | 1 | ||||
-rw-r--r-- | adapter/Android.bp | 33 | ||||
-rw-r--r-- | adapter/HidlBinderAdapter.cpp | 122 | ||||
-rw-r--r-- | adapter/include/hidladapter/HidlBinderAdapter.h | 52 | ||||
-rw-r--r-- | base/include/hidl/Status.h | 5 | ||||
-rw-r--r-- | transport/allocator/1.0/Android.bp | 73 | ||||
-rw-r--r-- | transport/base/1.0/Android.bp | 68 | ||||
-rw-r--r-- | transport/manager/1.0/Android.bp | 72 | ||||
-rw-r--r-- | transport/manager/1.1/Android.bp | 72 | ||||
-rw-r--r-- | transport/memory/1.0/Android.bp | 75 | ||||
-rw-r--r-- | transport/token/1.0/Android.bp | 73 |
11 files changed, 646 insertions, 0 deletions
@@ -13,6 +13,7 @@ // limitations under the License. subdirs = [ + "adapter", "base", // libhidlbase "libhidlmemory", // libhidlmemory "transport", // libhidltransport diff --git a/adapter/Android.bp b/adapter/Android.bp new file mode 100644 index 0000000..d89b216 --- /dev/null +++ b/adapter/Android.bp @@ -0,0 +1,33 @@ +// 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. + +cc_library_shared { + name: "libhidladapter", + srcs: [ + "HidlBinderAdapter.cpp" + ], + export_include_dirs: ["include"], + shared_libs: [ + "libhidlbase", + "libhidltransport", + "libhwbinder", + "libutils", + ], + export_shared_lib_headers: [ + "libhidlbase", + "libhidltransport", + "libutils", + ], +} + diff --git a/adapter/HidlBinderAdapter.cpp b/adapter/HidlBinderAdapter.cpp new file mode 100644 index 0000000..e769cb5 --- /dev/null +++ b/adapter/HidlBinderAdapter.cpp @@ -0,0 +1,122 @@ +/* + * 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. + */ + +#include <hidladapter/HidlBinderAdapter.h> + +#include <android/hidl/base/1.0/IBase.h> +#include <android/hidl/manager/1.0/IServiceManager.h> +#include <hidl/HidlTransportSupport.h> + +#include <iostream> +#include <map> +#include <string> + +namespace android { +namespace hardware { +namespace details { + +int adapterMain(const std::string& package, int argc, char** argv, + const AdaptersFactory& adapters) { + using android::hardware::configureRpcThreadpool; + using android::hidl::base::V1_0::IBase; + using android::hidl::manager::V1_0::IServiceManager; + + if (argc != 4) { + std::cerr << "usage: " << argv[0] << " interface-name instance-name number-of-threads." + << std::endl; + return 1; + } + + std::string interfaceName = package + "::" + argv[1]; + std::string instanceName = argv[2]; + int threadNumber = std::stoi(argv[3]); + + if (threadNumber <= 0) { + std::cerr << "ERROR: invalid thread number " << threadNumber + << " must be a positive integer."; + } + + auto it = adapters.find(interfaceName); + if (it == adapters.end()) { + std::cerr << "ERROR: could not resolve " << interfaceName << "." << std::endl; + return 1; + } + + std::cout << "Trying to adapt down " << interfaceName << "/" << instanceName << std::endl; + + configureRpcThreadpool(threadNumber, false /* callerWillJoin */); + + sp<IServiceManager> manager = IServiceManager::getService(); + if (manager == nullptr) { + std::cerr << "ERROR: could not retrieve service manager." << std::endl; + return 1; + } + + sp<IBase> implementation = manager->get(interfaceName, instanceName).withDefault(nullptr); + if (implementation == nullptr) { + std::cerr << "ERROR: could not retrieve desired implementation" << std::endl; + return 1; + } + + sp<IBase> adapter = it->second(implementation); + if (adapter == nullptr) { + std::cerr << "ERROR: could not create adapter." << std::endl; + return 1; + } + + bool replaced = manager->add(instanceName, adapter).withDefault(false); + if (!replaced) { + std::cerr << "ERROR: could not register the service with the service manager." << std::endl; + return 1; + } + + std::cout << "Press any key to disassociate adapter." << std::endl; + getchar(); + + bool restored = manager->add(instanceName, implementation).withDefault(false); + if (!restored) { + std::cerr << "ERROR: could not re-register interface with the service manager." + << std::endl; + return 1; + } + + std::cout << "Success." << std::endl; + + return 0; +} + +// If an interface is adapted to 1.0, it can then not be adapted to 1.1 in the same process. +// This poses a problem in the following scenario: +// auto interface = new V1_1::implementation::IFoo; +// hidlObject1_0->foo(interface) // adaptation set at 1.0 +// hidlObject1_1->bar(interface) // adaptation still is 1.0 +// This could be solved by keeping a map of IBase,fqName -> IBase, but then you end up +// with multiple names for the same interface. +sp<IBase> adaptWithDefault(const sp<IBase>& something, + const std::function<sp<IBase>()>& makeDefault) { + static std::map<sp<IBase>, sp<IBase>> sAdapterMap; + + auto it = sAdapterMap.find(something); + if (it == sAdapterMap.end()) { + it = sAdapterMap.insert(it, {something, makeDefault()}); + } + + return it->second; +} + +} // namespace details +} // namespace hardware +} // namespace android diff --git a/adapter/include/hidladapter/HidlBinderAdapter.h b/adapter/include/hidladapter/HidlBinderAdapter.h new file mode 100644 index 0000000..46df554 --- /dev/null +++ b/adapter/include/hidladapter/HidlBinderAdapter.h @@ -0,0 +1,52 @@ +/* + * 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. + */ + +#include <android/hidl/base/1.0/IBase.h> +#include <hidl/HidlSupport.h> + +#include <map> + +namespace android { +namespace hardware { + +namespace details { + +using IBase = ::android::hidl::base::V1_0::IBase; + +// AdapterFactory(impl) -> adapter +using AdapterFactory = std::function<sp<IBase>(sp<IBase>)>; +// AdaptersFactory(package@interface)(impl) -> adapter +using AdaptersFactory = std::map<std::string, AdapterFactory>; + +int adapterMain(const std::string& package, int argc, char** argv, const AdaptersFactory& adapters); + +sp<IBase> adaptWithDefault(const sp<IBase>& something, + const std::function<sp<IBase>()>& makeDefault); + +} // namespace details + +template <typename... Adapters> +int adapterMain(const std::string& package, int argc, char** argv) { + return details::adapterMain( + package, argc, argv, + {{Adapters::Pure::descriptor, [](sp<::android::hidl::base::V1_0::IBase> base) { + return details::adaptWithDefault( + base, [&] { return new Adapters(Adapters::Pure::castFrom(base)); }); + }}...}); +} + +} // namespace hardware +} // namespace android
\ No newline at end of file diff --git a/base/include/hidl/Status.h b/base/include/hidl/Status.h index e2aab3f..1a2ef6d 100644 --- a/base/include/hidl/Status.h +++ b/base/include/hidl/Status.h @@ -155,6 +155,11 @@ namespace details { ~return_status(); + bool isOkUnchecked() const { + // someone else will have to check + return mStatus.isOk(); + } + bool isOk() const { mCheckedStatus = true; return mStatus.isOk(); diff --git a/transport/allocator/1.0/Android.bp b/transport/allocator/1.0/Android.bp index c64a039..e518028 100644 --- a/transport/allocator/1.0/Android.bp +++ b/transport/allocator/1.0/Android.bp @@ -60,3 +60,76 @@ cc_library { "libutils", ], } + +genrule { + name: "android.hidl.allocator@1.0-adapter-helper_genc++", + tools: ["hidl-gen"], + cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hidl:system/libhidl/transport android.hidl.allocator@1.0", + srcs: [ + ":android.hidl.allocator@1.0_hal", + ], + out: [ + "android/hidl/allocator/1.0/AAllocator.cpp", + ], +} + +genrule { + name: "android.hidl.allocator@1.0-adapter-helper_genc++_headers", + tools: ["hidl-gen"], + cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hidl:system/libhidl/transport android.hidl.allocator@1.0", + srcs: [ + ":android.hidl.allocator@1.0_hal", + ], + out: [ + "android/hidl/allocator/1.0/AAllocator.h", + ], +} + + +cc_library { + name: "android.hidl.allocator@1.0-adapter-helper", + defaults: ["hidl-module-defaults"], + generated_sources: ["android.hidl.allocator@1.0-adapter-helper_genc++"], + generated_headers: ["android.hidl.allocator@1.0-adapter-helper_genc++_headers"], + export_generated_headers: ["android.hidl.allocator@1.0-adapter-helper_genc++_headers"], + vendor_available: true, + shared_libs: [ + "libhidlbase", + "libhidltransport", + "libhwbinder", + "liblog", + "libutils", + "libcutils", + "libhidladapter", + "android.hidl.allocator@1.0", + "android.hidl.base@1.0-adapter-helper", + ], + export_shared_lib_headers: [ + "libhidlbase", + "libhidltransport", + "libhwbinder", + "libutils", + "libhidladapter", + "android.hidl.allocator@1.0", + "android.hidl.base@1.0-adapter-helper", + ], +} + +genrule { + name: "android.hidl.allocator@1.0-adapter_genc++", + tools: ["hidl-gen"], + cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hidl:system/libhidl/transport android.hidl.allocator@1.0", + out: ["main.cpp"]} + +cc_test { + name: "android.hidl.allocator@1.0-adapter", + shared_libs: [ + "libhidladapter", + "libhidlbase", + "libhidltransport", + "libutils", + "android.hidl.allocator@1.0", + "android.hidl.allocator@1.0-adapter-helper", + ], + generated_sources: ["android.hidl.allocator@1.0-adapter_genc++"], +} diff --git a/transport/base/1.0/Android.bp b/transport/base/1.0/Android.bp index 8382824..dd4a814 100644 --- a/transport/base/1.0/Android.bp +++ b/transport/base/1.0/Android.bp @@ -40,3 +40,71 @@ genrule { } // android.hidl.base@1.0 is exported from libhidltransport + +genrule { + name: "android.hidl.base@1.0-adapter-helper_genc++", + tools: ["hidl-gen"], + cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hidl:system/libhidl/transport android.hidl.base@1.0", + srcs: [ + ":android.hidl.base@1.0_hal", + ], + out: [ + "android/hidl/base/1.0/ABase.cpp", + ], +} + +genrule { + name: "android.hidl.base@1.0-adapter-helper_genc++_headers", + tools: ["hidl-gen"], + cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hidl:system/libhidl/transport android.hidl.base@1.0", + srcs: [ + ":android.hidl.base@1.0_hal", + ], + out: [ + "android/hidl/base/1.0/ABase.h", + ], +} + + +cc_library { + name: "android.hidl.base@1.0-adapter-helper", + defaults: ["hidl-module-defaults"], + generated_sources: ["android.hidl.base@1.0-adapter-helper_genc++"], + generated_headers: ["android.hidl.base@1.0-adapter-helper_genc++_headers"], + export_generated_headers: ["android.hidl.base@1.0-adapter-helper_genc++_headers"], + vendor_available: true, + shared_libs: [ + "libhidlbase", + "libhidltransport", + "libhwbinder", + "liblog", + "libutils", + "libcutils", + "libhidladapter", + ], + export_shared_lib_headers: [ + "libhidlbase", + "libhidltransport", + "libhwbinder", + "libutils", + "libhidladapter", + ], +} + +genrule { + name: "android.hidl.base@1.0-adapter_genc++", + tools: ["hidl-gen"], + cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hidl:system/libhidl/transport android.hidl.base@1.0", + out: ["main.cpp"]} + +cc_test { + name: "android.hidl.base@1.0-adapter", + shared_libs: [ + "libhidladapter", + "libhidlbase", + "libhidltransport", + "libutils", + "android.hidl.base@1.0-adapter-helper", + ], + generated_sources: ["android.hidl.base@1.0-adapter_genc++"], +} diff --git a/transport/manager/1.0/Android.bp b/transport/manager/1.0/Android.bp index 8bdbfa5..fc5e901 100644 --- a/transport/manager/1.0/Android.bp +++ b/transport/manager/1.0/Android.bp @@ -43,3 +43,75 @@ genrule { } // android.hidl.manager@1.0 is exported from libhidltransport + +genrule { + name: "android.hidl.manager@1.0-adapter-helper_genc++", + tools: ["hidl-gen"], + cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hidl:system/libhidl/transport android.hidl.manager@1.0", + srcs: [ + ":android.hidl.manager@1.0_hal", + ], + out: [ + "android/hidl/manager/1.0/AServiceManager.cpp", + "android/hidl/manager/1.0/AServiceNotification.cpp", + ], +} + +genrule { + name: "android.hidl.manager@1.0-adapter-helper_genc++_headers", + tools: ["hidl-gen"], + cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hidl:system/libhidl/transport android.hidl.manager@1.0", + srcs: [ + ":android.hidl.manager@1.0_hal", + ], + out: [ + "android/hidl/manager/1.0/AServiceManager.h", + "android/hidl/manager/1.0/AServiceNotification.h", + ], +} + + +cc_library { + name: "android.hidl.manager@1.0-adapter-helper", + defaults: ["hidl-module-defaults"], + generated_sources: ["android.hidl.manager@1.0-adapter-helper_genc++"], + generated_headers: ["android.hidl.manager@1.0-adapter-helper_genc++_headers"], + export_generated_headers: ["android.hidl.manager@1.0-adapter-helper_genc++_headers"], + vendor_available: true, + shared_libs: [ + "libhidlbase", + "libhidltransport", + "libhwbinder", + "liblog", + "libutils", + "libcutils", + "libhidladapter", + "android.hidl.base@1.0-adapter-helper", + ], + export_shared_lib_headers: [ + "libhidlbase", + "libhidltransport", + "libhwbinder", + "libutils", + "libhidladapter", + "android.hidl.base@1.0-adapter-helper", + ], +} + +genrule { + name: "android.hidl.manager@1.0-adapter_genc++", + tools: ["hidl-gen"], + cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hidl:system/libhidl/transport android.hidl.manager@1.0", + out: ["main.cpp"]} + +cc_test { + name: "android.hidl.manager@1.0-adapter", + shared_libs: [ + "libhidladapter", + "libhidlbase", + "libhidltransport", + "libutils", + "android.hidl.manager@1.0-adapter-helper", + ], + generated_sources: ["android.hidl.manager@1.0-adapter_genc++"], +} diff --git a/transport/manager/1.1/Android.bp b/transport/manager/1.1/Android.bp index 5a1bf00..3b0682a 100644 --- a/transport/manager/1.1/Android.bp +++ b/transport/manager/1.1/Android.bp @@ -36,3 +36,75 @@ genrule { } // android.hidl.manager@1.1 is exported from libhidltransport + +genrule { + name: "android.hidl.manager@1.1-adapter-helper_genc++", + tools: ["hidl-gen"], + cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hidl:system/libhidl/transport android.hidl.manager@1.1", + srcs: [ + ":android.hidl.manager@1.1_hal", + ], + out: [ + "android/hidl/manager/1.1/AServiceManager.cpp", + ], +} + +genrule { + name: "android.hidl.manager@1.1-adapter-helper_genc++_headers", + tools: ["hidl-gen"], + cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hidl:system/libhidl/transport android.hidl.manager@1.1", + srcs: [ + ":android.hidl.manager@1.1_hal", + ], + out: [ + "android/hidl/manager/1.1/AServiceManager.h", + ], +} + + +cc_library { + name: "android.hidl.manager@1.1-adapter-helper", + defaults: ["hidl-module-defaults"], + generated_sources: ["android.hidl.manager@1.1-adapter-helper_genc++"], + generated_headers: ["android.hidl.manager@1.1-adapter-helper_genc++_headers"], + export_generated_headers: ["android.hidl.manager@1.1-adapter-helper_genc++_headers"], + vendor_available: true, + shared_libs: [ + "libhidlbase", + "libhidltransport", + "libhwbinder", + "liblog", + "libutils", + "libcutils", + "libhidladapter", + "android.hidl.base@1.0-adapter-helper", + "android.hidl.manager@1.0-adapter-helper", + ], + export_shared_lib_headers: [ + "libhidlbase", + "libhidltransport", + "libhwbinder", + "libutils", + "libhidladapter", + "android.hidl.base@1.0-adapter-helper", + "android.hidl.manager@1.0-adapter-helper", + ], +} + +genrule { + name: "android.hidl.manager@1.1-adapter_genc++", + tools: ["hidl-gen"], + cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hidl:system/libhidl/transport android.hidl.manager@1.1", + out: ["main.cpp"]} + +cc_test { + name: "android.hidl.manager@1.1-adapter", + shared_libs: [ + "libhidladapter", + "libhidlbase", + "libhidltransport", + "libutils", + "android.hidl.manager@1.1-adapter-helper", + ], + generated_sources: ["android.hidl.manager@1.1-adapter_genc++"], +} diff --git a/transport/memory/1.0/Android.bp b/transport/memory/1.0/Android.bp index b6044c2..a3be879 100644 --- a/transport/memory/1.0/Android.bp +++ b/transport/memory/1.0/Android.bp @@ -68,3 +68,78 @@ cc_library { "libutils", ], } + +genrule { + name: "android.hidl.memory@1.0-adapter-helper_genc++", + tools: ["hidl-gen"], + cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hidl:system/libhidl/transport android.hidl.memory@1.0", + srcs: [ + ":android.hidl.memory@1.0_hal", + ], + out: [ + "android/hidl/memory/1.0/AMapper.cpp", + "android/hidl/memory/1.0/AMemory.cpp", + ], +} + +genrule { + name: "android.hidl.memory@1.0-adapter-helper_genc++_headers", + tools: ["hidl-gen"], + cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hidl:system/libhidl/transport android.hidl.memory@1.0", + srcs: [ + ":android.hidl.memory@1.0_hal", + ], + out: [ + "android/hidl/memory/1.0/AMapper.h", + "android/hidl/memory/1.0/AMemory.h", + ], +} + + +cc_library { + name: "android.hidl.memory@1.0-adapter-helper", + defaults: ["hidl-module-defaults"], + generated_sources: ["android.hidl.memory@1.0-adapter-helper_genc++"], + generated_headers: ["android.hidl.memory@1.0-adapter-helper_genc++_headers"], + export_generated_headers: ["android.hidl.memory@1.0-adapter-helper_genc++_headers"], + vendor_available: true, + shared_libs: [ + "libhidlbase", + "libhidltransport", + "libhwbinder", + "liblog", + "libutils", + "libcutils", + "libhidladapter", + "android.hidl.memory@1.0", + "android.hidl.base@1.0-adapter-helper", + ], + export_shared_lib_headers: [ + "libhidlbase", + "libhidltransport", + "libhwbinder", + "libutils", + "libhidladapter", + "android.hidl.memory@1.0", + "android.hidl.base@1.0-adapter-helper", + ], +} + +genrule { + name: "android.hidl.memory@1.0-adapter_genc++", + tools: ["hidl-gen"], + cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hidl:system/libhidl/transport android.hidl.memory@1.0", + out: ["main.cpp"]} + +cc_test { + name: "android.hidl.memory@1.0-adapter", + shared_libs: [ + "libhidladapter", + "libhidlbase", + "libhidltransport", + "libutils", + "android.hidl.memory@1.0", + "android.hidl.memory@1.0-adapter-helper", + ], + generated_sources: ["android.hidl.memory@1.0-adapter_genc++"], +} diff --git a/transport/token/1.0/Android.bp b/transport/token/1.0/Android.bp index 957d1f9..3f9fbdb 100644 --- a/transport/token/1.0/Android.bp +++ b/transport/token/1.0/Android.bp @@ -60,3 +60,76 @@ cc_library { "libutils", ], } + +genrule { + name: "android.hidl.token@1.0-adapter-helper_genc++", + tools: ["hidl-gen"], + cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hidl:system/libhidl/transport android.hidl.token@1.0", + srcs: [ + ":android.hidl.token@1.0_hal", + ], + out: [ + "android/hidl/token/1.0/ATokenManager.cpp", + ], +} + +genrule { + name: "android.hidl.token@1.0-adapter-helper_genc++_headers", + tools: ["hidl-gen"], + cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hidl:system/libhidl/transport android.hidl.token@1.0", + srcs: [ + ":android.hidl.token@1.0_hal", + ], + out: [ + "android/hidl/token/1.0/ATokenManager.h", + ], +} + + +cc_library { + name: "android.hidl.token@1.0-adapter-helper", + defaults: ["hidl-module-defaults"], + generated_sources: ["android.hidl.token@1.0-adapter-helper_genc++"], + generated_headers: ["android.hidl.token@1.0-adapter-helper_genc++_headers"], + export_generated_headers: ["android.hidl.token@1.0-adapter-helper_genc++_headers"], + vendor_available: true, + shared_libs: [ + "libhidlbase", + "libhidltransport", + "libhwbinder", + "liblog", + "libutils", + "libcutils", + "libhidladapter", + "android.hidl.token@1.0", + "android.hidl.base@1.0-adapter-helper", + ], + export_shared_lib_headers: [ + "libhidlbase", + "libhidltransport", + "libhwbinder", + "libutils", + "libhidladapter", + "android.hidl.token@1.0", + "android.hidl.base@1.0-adapter-helper", + ], +} + +genrule { + name: "android.hidl.token@1.0-adapter_genc++", + tools: ["hidl-gen"], + cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hidl:system/libhidl/transport android.hidl.token@1.0", + out: ["main.cpp"]} + +cc_test { + name: "android.hidl.token@1.0-adapter", + shared_libs: [ + "libhidladapter", + "libhidlbase", + "libhidltransport", + "libutils", + "android.hidl.token@1.0", + "android.hidl.token@1.0-adapter-helper", + ], + generated_sources: ["android.hidl.token@1.0-adapter_genc++"], +} |