diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantP2pIface.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantP2pIface.aidl index 0b068e001f..0462fd34ba 100644 --- a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantP2pIface.aidl +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantP2pIface.aidl @@ -123,4 +123,7 @@ interface ISupplicantP2pIface { void configureExtListenWithParams(in android.hardware.wifi.supplicant.P2pExtListenInfo extListenInfo); void addGroupWithConfigurationParams(in android.hardware.wifi.supplicant.P2pAddGroupConfigurationParams groupConfigurationParams); void createGroupOwner(in android.hardware.wifi.supplicant.P2pCreateGroupOwnerInfo groupOwnerInfo); + long getFeatureSet(); + const long P2P_FEATURE_V2 = (1 << 0) /* 1 */; + const long P2P_FEATURE_PCC_MODE_WPA3_COMPATIBILITY = (1 << 1) /* 2 */; } diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/P2pGroupStartedEventParams.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/P2pGroupStartedEventParams.aidl index e19ae4460d..227626c9d1 100644 --- a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/P2pGroupStartedEventParams.aidl +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/P2pGroupStartedEventParams.aidl @@ -46,4 +46,5 @@ parcelable P2pGroupStartedEventParams { boolean isP2pClientEapolIpAddressInfoPresent; android.hardware.wifi.supplicant.P2pClientEapolIpAddressInfo p2pClientIpInfo; @nullable android.hardware.wifi.common.OuiKeyedData[] vendorData; + int keyMgmtMask; } diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/P2pPeerClientJoinedEventParams.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/P2pPeerClientJoinedEventParams.aidl index 40c8ff6d8a..578176a40a 100644 --- a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/P2pPeerClientJoinedEventParams.aidl +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/P2pPeerClientJoinedEventParams.aidl @@ -39,4 +39,5 @@ parcelable P2pPeerClientJoinedEventParams { byte[6] clientDeviceAddress; int clientIpAddress; @nullable android.hardware.wifi.common.OuiKeyedData[] vendorData; + int keyMgmtMask; } diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantP2pIface.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantP2pIface.aidl index 12307935ac..6a9406a561 100644 --- a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantP2pIface.aidl +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantP2pIface.aidl @@ -38,6 +38,15 @@ import android.hardware.wifi.supplicant.WpsProvisionMethod; */ @VintfStability interface ISupplicantP2pIface { + /** + * P2P features exposed by wpa_supplicant/chip. + */ + /* Support for P2P2 (Wi-Fi Alliance P2P v2.0) */ + const long P2P_FEATURE_V2 = 1 << 0; + + /* Support for WPA3 Compatibility Mode in PCC Mode */ + const long P2P_FEATURE_PCC_MODE_WPA3_COMPATIBILITY = 1 << 1; + /** * This command can be used to add a bonjour service. * @@ -938,4 +947,14 @@ interface ISupplicantP2pIface { * |SupplicantStatusCode.FAILURE_IFACE_INVALID| */ void createGroupOwner(in P2pCreateGroupOwnerInfo groupOwnerInfo); + + /** + * Get the features supported by P2P interface. + * + * @return The bitmask of ISupplicantP2pIface.P2P_FEATURE_* values. + * + * @throws ServiceSpecificException with one of the following values: + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + long getFeatureSet(); } diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/P2pGroupStartedEventParams.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/P2pGroupStartedEventParams.aidl index 9db7a1eeda..55e2b2393c 100644 --- a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/P2pGroupStartedEventParams.aidl +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/P2pGroupStartedEventParams.aidl @@ -70,4 +70,10 @@ parcelable P2pGroupStartedEventParams { * that no vendor data is provided. */ @nullable OuiKeyedData[] vendorData; + + /** + * Authentication key management protocol used to secure the group. + * This is a bitmask of |KeyMgmtMask| values. + */ + int keyMgmtMask; } diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/P2pPeerClientJoinedEventParams.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/P2pPeerClientJoinedEventParams.aidl index 4f46d705a0..2b04461c0b 100644 --- a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/P2pPeerClientJoinedEventParams.aidl +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/P2pPeerClientJoinedEventParams.aidl @@ -47,4 +47,10 @@ parcelable P2pPeerClientJoinedEventParams { * that no vendor data is provided. */ @nullable OuiKeyedData[] vendorData; + + /** + * Authentication key management protocol used in connection. + * This is a bitmask of |KeyMgmtMask| values. + */ + int keyMgmtMask; } diff --git a/wifi/supplicant/aidl/vts/functional/supplicant_p2p_iface_aidl_test.cpp b/wifi/supplicant/aidl/vts/functional/supplicant_p2p_iface_aidl_test.cpp index 8f1c4bdee5..a8132aa52c 100644 --- a/wifi/supplicant/aidl/vts/functional/supplicant_p2p_iface_aidl_test.cpp +++ b/wifi/supplicant/aidl/vts/functional/supplicant_p2p_iface_aidl_test.cpp @@ -814,6 +814,17 @@ TEST_P(SupplicantP2pIfaceAidlTest, SetVendorElements) { LOG(INFO) << "SupplicantP2pIfaceAidlTest::SetVendorElements end"; } +/* + * getFeatureSet + */ +TEST_P(SupplicantP2pIfaceAidlTest, getFeatureSet) { + if (interface_version_ < 4) { + GTEST_SKIP() << "getFeatureSet is available as of Supplicant V4"; + } + int64_t featureSet; + EXPECT_TRUE(p2p_iface_->getFeatureSet(&featureSet).isOk()); +} + GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(SupplicantP2pIfaceAidlTest); INSTANTIATE_TEST_SUITE_P(Supplicant, SupplicantP2pIfaceAidlTest, testing::ValuesIn(android::getAidlHalInstanceNames(