From e5ad97060dbce0e3c421f6c02dfbaeb5e77502ee Mon Sep 17 00:00:00 2001 From: Sunil Ravi Date: Thu, 16 Nov 2023 02:53:41 +0000 Subject: [PATCH] wifi: Modified API for P2pProvisionDiscoveryCompleted event Deprecated the existing onProvisionDiscoveryCompleted API which is used to indicate the completion of a P2P provision discovery request. Added a new modified API called onProvisionDiscoveryCompletedEvent to include the P2P group interface name. This is for framework to know which group owner interface received the provision discovery request, when the Peer device tries to join the existing P2P group owner. Bug: 296063280 Test: vts test Test: Ran P2P negotiated connection tests via Wi-Fi Direct settings window. Change-Id: If349ed600f2a474d50c0b05d58331b5b8ba9e94d --- .../ISupplicantP2pIfaceCallback.aidl | 4 ++ ...rovisionDiscoveryCompletedEventParams.aidl | 43 +++++++++++++++++ .../ISupplicantP2pIfaceCallback.aidl | 13 +++++ ...rovisionDiscoveryCompletedEventParams.aidl | 48 +++++++++++++++++++ .../supplicant_p2p_iface_aidl_test.cpp | 6 +++ 5 files changed, 114 insertions(+) create mode 100644 wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/P2pProvisionDiscoveryCompletedEventParams.aidl create mode 100644 wifi/supplicant/aidl/android/hardware/wifi/supplicant/P2pProvisionDiscoveryCompletedEventParams.aidl diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantP2pIfaceCallback.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantP2pIfaceCallback.aidl index 80d8546706..8aa593fdb8 100644 --- a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantP2pIfaceCallback.aidl +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/ISupplicantP2pIfaceCallback.aidl @@ -45,6 +45,9 @@ interface ISupplicantP2pIfaceCallback { oneway void onGroupStarted(in String groupIfname, in boolean isGroupOwner, in byte[] ssid, in int frequency, in byte[] psk, in String passphrase, in byte[] goDeviceAddress, in boolean isPersistent); oneway void onInvitationReceived(in byte[] srcAddress, in byte[] goDeviceAddress, in byte[] bssid, in int persistentNetworkId, in int operatingFrequency); oneway void onInvitationResult(in byte[] bssid, in android.hardware.wifi.supplicant.P2pStatusCode status); + /** + * @deprecated This callback is deprecated from AIDL v3, newer HAL should call onProvisionDiscoveryCompletedEvent. + */ oneway void onProvisionDiscoveryCompleted(in byte[] p2pDeviceAddress, in boolean isRequest, in android.hardware.wifi.supplicant.P2pProvDiscStatusCode status, in android.hardware.wifi.supplicant.WpsConfigMethods configMethods, in String generatedPin); oneway void onR2DeviceFound(in byte[] srcAddress, in byte[] p2pDeviceAddress, in byte[] primaryDeviceType, in String deviceName, in android.hardware.wifi.supplicant.WpsConfigMethods configMethods, in byte deviceCapabilities, in android.hardware.wifi.supplicant.P2pGroupCapabilityMask groupCapabilities, in byte[] wfdDeviceInfo, in byte[] wfdR2DeviceInfo); oneway void onServiceDiscoveryResponse(in byte[] srcAddress, in char updateIndicator, in byte[] tlvs); @@ -61,4 +64,5 @@ interface ISupplicantP2pIfaceCallback { oneway void onGroupStartedWithParams(in android.hardware.wifi.supplicant.P2pGroupStartedEventParams groupStartedEventParams); oneway void onPeerClientJoined(in android.hardware.wifi.supplicant.P2pPeerClientJoinedEventParams clientJoinedEventParams); oneway void onPeerClientDisconnected(in android.hardware.wifi.supplicant.P2pPeerClientDisconnectedEventParams clientDisconnectedEventParams); + oneway void onProvisionDiscoveryCompletedEvent(in android.hardware.wifi.supplicant.P2pProvisionDiscoveryCompletedEventParams provisionDiscoveryCompletedEventParams); } diff --git a/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/P2pProvisionDiscoveryCompletedEventParams.aidl b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/P2pProvisionDiscoveryCompletedEventParams.aidl new file mode 100644 index 0000000000..587c7c670c --- /dev/null +++ b/wifi/supplicant/aidl/aidl_api/android.hardware.wifi.supplicant/current/android/hardware/wifi/supplicant/P2pProvisionDiscoveryCompletedEventParams.aidl @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2023 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m -update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.hardware.wifi.supplicant; +@VintfStability +parcelable P2pProvisionDiscoveryCompletedEventParams { + byte[6] p2pDeviceAddress; + boolean isRequest; + android.hardware.wifi.supplicant.P2pProvDiscStatusCode status; + android.hardware.wifi.supplicant.WpsConfigMethods configMethods; + String generatedPin; + String groupInterfaceName; +} diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantP2pIfaceCallback.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantP2pIfaceCallback.aidl index 810fe483a2..8befc0db09 100644 --- a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantP2pIfaceCallback.aidl +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantP2pIfaceCallback.aidl @@ -21,6 +21,7 @@ import android.hardware.wifi.supplicant.P2pGroupStartedEventParams; import android.hardware.wifi.supplicant.P2pPeerClientDisconnectedEventParams; import android.hardware.wifi.supplicant.P2pPeerClientJoinedEventParams; import android.hardware.wifi.supplicant.P2pProvDiscStatusCode; +import android.hardware.wifi.supplicant.P2pProvisionDiscoveryCompletedEventParams; import android.hardware.wifi.supplicant.P2pStatusCode; import android.hardware.wifi.supplicant.WpsConfigMethods; import android.hardware.wifi.supplicant.WpsDevPasswordId; @@ -144,6 +145,9 @@ oneway interface ISupplicantP2pIfaceCallback { /** * Used to indicate the completion of a P2P provision discovery request. + *

+ * @deprecated This callback is deprecated from AIDL v3, newer HAL should call + * onProvisionDiscoveryCompletedEvent. * * @param p2pDeviceAddress P2P device address. * @param isRequest Whether we received or sent the provision discovery. @@ -275,4 +279,13 @@ oneway interface ISupplicantP2pIfaceCallback { */ void onPeerClientDisconnected( in P2pPeerClientDisconnectedEventParams clientDisconnectedEventParams); + + /** + * Used to indicate the completion of a P2P provision discovery request. + * + * @param provisionDiscoveryCompletedEventParams Parameters associated with + * P2P provision discovery frame notification. + */ + void onProvisionDiscoveryCompletedEvent( + in P2pProvisionDiscoveryCompletedEventParams provisionDiscoveryCompletedEventParams); } diff --git a/wifi/supplicant/aidl/android/hardware/wifi/supplicant/P2pProvisionDiscoveryCompletedEventParams.aidl b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/P2pProvisionDiscoveryCompletedEventParams.aidl new file mode 100644 index 0000000000..7fa7f226ac --- /dev/null +++ b/wifi/supplicant/aidl/android/hardware/wifi/supplicant/P2pProvisionDiscoveryCompletedEventParams.aidl @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2023 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. + */ + +package android.hardware.wifi.supplicant; + +import android.hardware.wifi.supplicant.P2pProvDiscStatusCode; +import android.hardware.wifi.supplicant.WpsConfigMethods; + +/** + * Parameters passed as a part of P2P provision discovery frame notification. + */ +@VintfStability +parcelable P2pProvisionDiscoveryCompletedEventParams { + /** + * P2P device interface MAC address of the device who sent the request or responded to our + * request. + */ + byte[6] p2pDeviceAddress; + /** True if this is a request, false if this is a response. */ + boolean isRequest; + /** Status of the provision discovery */ + P2pProvDiscStatusCode status; + /** Mask of WPS configuration methods supported */ + WpsConfigMethods configMethods; + /** 8-digit pin generated */ + String generatedPin; + /** + * Interface name of this device group owner. (For ex: p2p-p2p0-1) + * This field is filled only when the provision discovery request is received + * with P2P Group ID attribute. i.e., when the peer device is joining this + * device operating P2P group. + * Refer to WFA Wi-Fi_Direct_Specification_v1.9 section 3.2.1 for more details. + */ + String groupInterfaceName; +} 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 d3dd2e026d..0db1653099 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 @@ -41,6 +41,7 @@ using aidl::android::hardware::wifi::supplicant::P2pGroupStartedEventParams; using aidl::android::hardware::wifi::supplicant::P2pPeerClientDisconnectedEventParams; using aidl::android::hardware::wifi::supplicant::P2pPeerClientJoinedEventParams; using aidl::android::hardware::wifi::supplicant::P2pProvDiscStatusCode; +using aidl::android::hardware::wifi::supplicant::P2pProvisionDiscoveryCompletedEventParams; using aidl::android::hardware::wifi::supplicant::P2pStatusCode; using aidl::android::hardware::wifi::supplicant::SupplicantStatusCode; using aidl::android::hardware::wifi::supplicant::WpsConfigMethods; @@ -193,6 +194,11 @@ class SupplicantP2pIfaceCallback : public BnSupplicantP2pIfaceCallback { override { return ndk::ScopedAStatus::ok(); } + ::ndk::ScopedAStatus onProvisionDiscoveryCompletedEvent( + const P2pProvisionDiscoveryCompletedEventParams& + /* provisionDiscoveryCompletedEventParams */) override { + return ndk::ScopedAStatus::ok(); + } }; class SupplicantP2pIfaceAidlTest : public testing::TestWithParam {