From 2bc926ed05da5f44221262ce5a900f1fb6feb8ce Mon Sep 17 00:00:00 2001 From: Kangping Dong Date: Mon, 29 Jul 2024 22:56:07 +0800 Subject: [PATCH] [Thread] add an override_apex for Thread HAL with simulation RCP This commit adds a new apex override for the Thread HAL which uses a simulation RCP. This will be used by goldfish emulators. Note that this can't be defined in /device/generic/goldfish because of below error: ``` [100% 1/1] analyzing Android.bp files and generating ninja file at out/soong/build.sdk_phone64_x86_64.ninja FAILED: out/soong/build.sdk_phone64_x86_64.ninja cd "$(dirname "out/host/linux-x86/bin/soong_build")" && BUILDER="$PWD/$(basename "out/host/linux-x86/bin/soong_build")" && cd / && env -i "$BUILDER" --top "$TOP" --soong_out "out/soong" --out "out" --soong_variables out/soong/soong.sdk_phone64_x86_64.variables -o o ut/soong/build.sdk_phone64_x86_64.ninja --globListDir sdk_phone64_x86_64 --globFile out/soong/globs-sdk_phone64_x86_64.ninja -l out/.module_paths/Android.bp.list --available_env out/soong/soong.environment.available --used_env out/soong/soong.environment.used.sdk_phone64_x86_64.bui ld Android.bp Warning: Module 'androidx.wear_wear' depends on non-existing optional_uses_libs 'wear-sdk' Warning: Module 'androidx.wear.compose_compose-foundation' depends on non-existing optional_uses_libs 'wear-sdk' error: hardware/interfaces/threadnetwork/aidl/default/Android.bp:103:1: "com.android.hardware.threadnetwork" depends on undefined module "goldfish-threadnetwork-service.rc". Module "com.android.hardware.threadnetwork" is defined in namespace "." which can read these 1 namespaces: ["."] Module "goldfish-threadnetwork-service.rc" can be found in these namespaces: ["device/generic/goldfish"] ``` Bug: 356079409 Test: verified that "adb shell cmd thread_network join" works Change-Id: I5356df53486fe9555ab34a0c8402e7be1b31309f --- threadnetwork/aidl/default/Android.bp | 32 +++++++++++++++++-- .../threadnetwork-service-simulation-rcp.rc | 3 ++ 2 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 threadnetwork/aidl/default/threadnetwork-service-simulation-rcp.rc diff --git a/threadnetwork/aidl/default/Android.bp b/threadnetwork/aidl/default/Android.bp index 82a76e0669..51e5c25eec 100644 --- a/threadnetwork/aidl/default/Android.bp +++ b/threadnetwork/aidl/default/Android.bp @@ -90,10 +90,20 @@ prebuilt_etc { installable: false, } +filegroup { + name: "com.android.hardware.threadnetwork_manifest", + srcs: ["manifest.json"], +} + +filegroup { + name: "com.android.hardware.threadnetwork_file_contexts", + srcs: ["file_contexts"], +} + apex { name: "com.android.hardware.threadnetwork", - manifest: "manifest.json", - file_contexts: "file_contexts", + manifest: ":com.android.hardware.threadnetwork_manifest", + file_contexts: ":com.android.hardware.threadnetwork_file_contexts", key: "com.android.hardware.key", certificate: ":com.android.hardware.certificate", updatable: false, @@ -110,3 +120,21 @@ apex { "android.hardware.thread_network.prebuilt.xml", // permission ], } + +prebuilt_etc { + name: "threadnetwork-service-simulation-rcp.rc", + src: "threadnetwork-service-simulation-rcp.rc", + installable: false, +} + +// Thread HAL service which uses a simulation RCP (i.e. ot-rcp), +// typically used in emulator devices. +override_apex { + name: "com.android.hardware.threadnetwork-simulation-rcp", + base: "com.android.hardware.threadnetwork", + prebuilts: [ + "threadnetwork-service-simulation-rcp.rc", + "threadnetwork-default.xml", + "android.hardware.thread_network.prebuilt.xml", + ], +} diff --git a/threadnetwork/aidl/default/threadnetwork-service-simulation-rcp.rc b/threadnetwork/aidl/default/threadnetwork-service-simulation-rcp.rc new file mode 100644 index 0000000000..3b889eb23a --- /dev/null +++ b/threadnetwork/aidl/default/threadnetwork-service-simulation-rcp.rc @@ -0,0 +1,3 @@ +service vendor.threadnetwork_hal /apex/com.android.hardware.threadnetwork/bin/hw/android.hardware.threadnetwork-service spinel+hdlc+forkpty:///apex/com.android.hardware.threadnetwork/bin/ot-rcp?forkpty-arg=1 + class hal + user thread_network