From 89157a4baad6ea1457db522ba63841627bba202d Mon Sep 17 00:00:00 2001 From: Sunil Ravi Date: Thu, 31 Oct 2019 15:28:47 -0700 Subject: [PATCH] Wifi: MBO-OCE feature support (phase 1) 1. Added hidl API to return MBO and OCE feature capability. 2. Added hidl API to update the cellular data status. Bug: 139474288 Test: Manual Test: VTS test Change-Id: I4fe1c2ff054f5cc7288e9ed234d29a8ffcca7456 --- current.txt | 4 +-- wifi/supplicant/1.3/ISupplicantStaIface.hal | 22 ++++++++++++ wifi/supplicant/1.3/types.hal | 14 ++++++++ .../supplicant_sta_iface_hidl_test.cpp | 36 +++++++++++++++++++ 4 files changed, 74 insertions(+), 2 deletions(-) diff --git a/current.txt b/current.txt index e22db18e2f..28277ed8a9 100644 --- a/current.txt +++ b/current.txt @@ -597,10 +597,10 @@ b74fe72cfe438f50e772e6a307657ff449d5bde83c15dd1f140ff2edbe73499c android.hardwar 033eae03c09ebc75e82db37bc39995dfaa9086745577b44d9e14e9ccb48bd8cc android.hardware.vibrator@1.4::types 3e01d4446cd69fd1c48f8572efd97487bc179564b32bd795800b97bbe10be37b android.hardware.wifi@1.4::IWifi a64467bae843569f0d465c5be7f0c7a5b987985b55a3ef4794dd5afc68538650 android.hardware.wifi.supplicant@1.3::ISupplicant -0a7ff83fd0326b82232e1609da98f34960be11335df72fc407ad238d7bd0e081 android.hardware.wifi.supplicant@1.3::ISupplicantStaIface +44445b8a03d7b9e68b2fbd954672c18a8fce9e32851b0692f4f4ab3407f86ecb android.hardware.wifi.supplicant@1.3::ISupplicantStaIface 619fc9839ec6e369cfa9b28e3e9412e6885720ff8f9b5750c1b6ffb905120391 android.hardware.wifi.supplicant@1.3::ISupplicantStaIfaceCallback c9273429fcf98d797d3bb07fdba6f1be95bf960f9255cde169fd1ca4db85f856 android.hardware.wifi.supplicant@1.3::ISupplicantStaNetwork -b0f8c9cd61a45a8c1b4a8e40913ecaea0921011cbe2305a6fa5a2feaa0d36c30 android.hardware.wifi.supplicant@1.3::types +9b0a3ab6f4f74b971ed094426d8a443e29b512ff03e1ab50c07156396cdb2483 android.hardware.wifi.supplicant@1.3::types 41c602462ccd1b19cfd645994be4de4c07fc197ff58a54e84476b31908e61e21 android.hardware.radio@1.5::types a8691c71747c3f14f7a043598e856425077f755e55990507a9132ad62f8ab3f7 android.hardware.radio@1.5::IRadio a62a93faf173b14a6175b683ebf61ffa568dc61f81e369d2dce7b1265e86cf2f android.hardware.radio@1.5::IRadioIndication diff --git a/wifi/supplicant/1.3/ISupplicantStaIface.hal b/wifi/supplicant/1.3/ISupplicantStaIface.hal index cb207d836e..bfd8946251 100644 --- a/wifi/supplicant/1.3/ISupplicantStaIface.hal +++ b/wifi/supplicant/1.3/ISupplicantStaIface.hal @@ -54,4 +54,26 @@ interface ISupplicantStaIface extends @1.2::ISupplicantStaIface { */ getConnectionCapabilities() generates (SupplicantStatus status, ConnectionCapabilities capabilities); + + /** + * Get wpa driver capabilities. + * + * @return status Status of the operation, and a bitmap of wpa driver features. + * Possible status codes: + * |SupplicantStatusCode.SUCCESS|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + */ + getWpaDriverCapabilities() generates (SupplicantStatus status, + bitfield driverCapabilitiesMask); + + /** + * Set MBO cellular data status. + * + * @param available true means cellular data available, false otherwise. + * @return status Status of the operation. + * Possible status codes: + * |SupplicantStatusCode.SUCCESS|, + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + setMboCellularDataStatus(bool available) generates (SupplicantStatus status); }; diff --git a/wifi/supplicant/1.3/types.hal b/wifi/supplicant/1.3/types.hal index 787439984b..4e01ab1df8 100644 --- a/wifi/supplicant/1.3/types.hal +++ b/wifi/supplicant/1.3/types.hal @@ -58,3 +58,17 @@ struct ConnectionCapabilities { */ WifiTechnology technology; }; + +/** + * WPA Driver capability. + */ +enum WpaDriverCapabilitiesMask : uint32_t { + /** + * Multi Band Operation. + */ + MBO = 1 << 0, + /** + * Optimized Connectivity Experience. + */ + OCE = 1 << 1, +}; diff --git a/wifi/supplicant/1.3/vts/functional/supplicant_sta_iface_hidl_test.cpp b/wifi/supplicant/1.3/vts/functional/supplicant_sta_iface_hidl_test.cpp index 62f3228c40..2cf58813ad 100644 --- a/wifi/supplicant/1.3/vts/functional/supplicant_sta_iface_hidl_test.cpp +++ b/wifi/supplicant/1.3/vts/functional/supplicant_sta_iface_hidl_test.cpp @@ -41,6 +41,7 @@ using ::android::hardware::wifi::supplicant::V1_3::ConnectionCapabilities; using ::android::hardware::wifi::supplicant::V1_3::ISupplicantStaIface; using ::android::hardware::wifi::supplicant::V1_3::ISupplicantStaIfaceCallback; using ::android::hardware::wifi::supplicant::V1_3::ISupplicantStaNetwork; +using ::android::hardware::wifi::supplicant::V1_3::WpaDriverCapabilitiesMask; class SupplicantStaIfaceHidlTest : public ::testing::VtsHalHidlTargetTestBase { public: @@ -191,3 +192,38 @@ TEST_F(SupplicantStaIfaceHidlTest, GetConnectionCapabilities) { EXPECT_EQ(SupplicantStatusCode::SUCCESS, status.code); }); } + +/* + * GetWpaDriverCapabilities + */ +TEST_F(SupplicantStaIfaceHidlTest, GetWpaDriverCapabilities) { + sta_iface_->getWpaDriverCapabilities( + [&](const SupplicantStatus& status, uint32_t) { + EXPECT_EQ(SupplicantStatusCode::SUCCESS, status.code); + }); +} + +/* + * SetMboCellularDataStatus + */ +TEST_F(SupplicantStaIfaceHidlTest, SetMboCellularDataStatus) { + uint32_t driverCapMask = 0; + + // Get MBO support from the device. + sta_iface_->getWpaDriverCapabilities( + [&](const SupplicantStatus& status, uint32_t driverCapMaskInternal) { + EXPECT_EQ(SupplicantStatusCode::SUCCESS, status.code); + + driverCapMask = driverCapMaskInternal; + }); + + SupplicantStatusCode expectedStatusCode = + (driverCapMask & WpaDriverCapabilitiesMask::MBO) + ? SupplicantStatusCode::SUCCESS + : SupplicantStatusCode::FAILURE_UNKNOWN; + + sta_iface_->setMboCellularDataStatus( + true, [expectedStatusCode](const SupplicantStatus& status) { + EXPECT_EQ(expectedStatusCode, status.code); + }); +}