From aa9bd83dbdeef71912f777bf3380cd4ab6155900 Mon Sep 17 00:00:00 2001 From: Gabriel Biren Date: Fri, 10 Nov 2023 00:43:08 +0000 Subject: [PATCH] Update the Vendor HAL and compatibility matrix to implement V2 of the Vendor HAL interface. Also involves adding a default implementation of the new method createApOrBridgedApIface(). Bug: 296069900 Test: m Change-Id: Iea8aa0b66a23125c066d72b710004496d41defcb --- .../compatibility_matrix.9.xml | 2 +- wifi/aidl/default/Android.bp | 9 +++++---- .../default/android.hardware.wifi-service.xml | 1 + wifi/aidl/default/wifi_chip.cpp | 20 +++++++++++++++++++ wifi/aidl/default/wifi_chip.h | 7 +++++++ 5 files changed, 34 insertions(+), 5 deletions(-) diff --git a/compatibility_matrices/compatibility_matrix.9.xml b/compatibility_matrices/compatibility_matrix.9.xml index 60dbd9967e..bd383f7758 100644 --- a/compatibility_matrices/compatibility_matrix.9.xml +++ b/compatibility_matrices/compatibility_matrix.9.xml @@ -648,7 +648,7 @@ android.hardware.wifi - 1 + 1-2 IWifi default diff --git a/wifi/aidl/default/Android.bp b/wifi/aidl/default/Android.bp index 91d609ddc7..31a3531046 100644 --- a/wifi/aidl/default/Android.bp +++ b/wifi/aidl/default/Android.bp @@ -105,7 +105,7 @@ cc_library_static { "libwifi-hal", "libwifi-system-iface", "libxml2", - "android.hardware.wifi-V1-ndk", + "android.hardware.wifi-V2-ndk", ], export_include_dirs: ["."], @@ -132,7 +132,7 @@ cc_binary { "libwifi-hal", "libwifi-system-iface", "libxml2", - "android.hardware.wifi-V1-ndk", + "android.hardware.wifi-V2-ndk", ], static_libs: ["android.hardware.wifi-service-lib"], init_rc: ["android.hardware.wifi-service.rc"], @@ -161,7 +161,7 @@ cc_binary { "libwifi-hal", "libwifi-system-iface", "libxml2", - "android.hardware.wifi-V1-ndk", + "android.hardware.wifi-V2-ndk", ], static_libs: ["android.hardware.wifi-service-lib"], init_rc: ["android.hardware.wifi-service-lazy.rc"], @@ -192,7 +192,8 @@ cc_test { static_libs: [ "libgmock", "libgtest", - "android.hardware.wifi-V1-ndk", + "android.hardware.wifi-V2-ndk", + "android.hardware.wifi.common-V1-ndk", "android.hardware.wifi-service-lib", ], shared_libs: [ diff --git a/wifi/aidl/default/android.hardware.wifi-service.xml b/wifi/aidl/default/android.hardware.wifi-service.xml index 5398ee77b5..3b68c8eeb0 100644 --- a/wifi/aidl/default/android.hardware.wifi-service.xml +++ b/wifi/aidl/default/android.hardware.wifi-service.xml @@ -1,6 +1,7 @@ android.hardware.wifi + 2 IWifi/default diff --git a/wifi/aidl/default/wifi_chip.cpp b/wifi/aidl/default/wifi_chip.cpp index 41b386c531..d72775c143 100644 --- a/wifi/aidl/default/wifi_chip.cpp +++ b/wifi/aidl/default/wifi_chip.cpp @@ -369,6 +369,14 @@ ndk::ScopedAStatus WifiChip::createBridgedApIface(std::shared_ptr* &WifiChip::createBridgedApIfaceInternal, _aidl_return); } +ndk::ScopedAStatus WifiChip::createApOrBridgedApIface( + IfaceConcurrencyType in_ifaceType, const std::vector& in_vendorData, + std::shared_ptr* _aidl_return) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, + &WifiChip::createApOrBridgedApIfaceInternal, _aidl_return, in_ifaceType, + in_vendorData); +} + ndk::ScopedAStatus WifiChip::getApIfaceNames(std::vector* _aidl_return) { return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID, &WifiChip::getApIfaceNamesInternal, _aidl_return); @@ -854,6 +862,18 @@ WifiChip::createBridgedApIfaceInternal() { return {iface, ndk::ScopedAStatus::ok()}; } +std::pair, ndk::ScopedAStatus> +WifiChip::createApOrBridgedApIfaceInternal( + IfaceConcurrencyType ifaceType, const std::vector& /* vendorData */) { + if (ifaceType == IfaceConcurrencyType::AP) { + return createApIfaceInternal(); + } else if (ifaceType == IfaceConcurrencyType::AP_BRIDGED) { + return createBridgedApIfaceInternal(); + } else { + return {nullptr, createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS)}; + } +} + std::pair, ndk::ScopedAStatus> WifiChip::getApIfaceNamesInternal() { if (ap_ifaces_.empty()) { return {std::vector(), ndk::ScopedAStatus::ok()}; diff --git a/wifi/aidl/default/wifi_chip.h b/wifi/aidl/default/wifi_chip.h index 1a360320c9..c6517db6f9 100644 --- a/wifi/aidl/default/wifi_chip.h +++ b/wifi/aidl/default/wifi_chip.h @@ -19,6 +19,7 @@ #include #include +#include #include #include @@ -96,6 +97,10 @@ class WifiChip : public BnWifiChip { ndk::ScopedAStatus requestFirmwareDebugDump(std::vector* _aidl_return) override; ndk::ScopedAStatus createApIface(std::shared_ptr* _aidl_return) override; ndk::ScopedAStatus createBridgedApIface(std::shared_ptr* _aidl_return) override; + ndk::ScopedAStatus createApOrBridgedApIface( + IfaceConcurrencyType in_ifaceType, + const std::vector& in_vendorData, + std::shared_ptr* _aidl_return) override; ndk::ScopedAStatus getApIfaceNames(std::vector* _aidl_return) override; ndk::ScopedAStatus getApIface(const std::string& in_ifname, std::shared_ptr* _aidl_return) override; @@ -176,6 +181,8 @@ class WifiChip : public BnWifiChip { ndk::ScopedAStatus createVirtualApInterface(const std::string& apVirtIf); std::pair, ndk::ScopedAStatus> createApIfaceInternal(); std::pair, ndk::ScopedAStatus> createBridgedApIfaceInternal(); + std::pair, ndk::ScopedAStatus> createApOrBridgedApIfaceInternal( + IfaceConcurrencyType ifaceType, const std::vector& vendorData); std::pair, ndk::ScopedAStatus> getApIfaceNamesInternal(); std::pair, ndk::ScopedAStatus> getApIfaceInternal( const std::string& ifname);