Support for BLE assisted discovery and pairing

Added stub functions to generate a DIR info and to validate a received
DIR info.

Bug: 341971059
Test: Manual - Basic P2P connect/disconnect tests
Test: TH Presubmit tests
Test: atest VtsHalWifiSupplicantStaIfaceTargetTest \
      VtsHalWifiSupplicantStaNetworkTargetTest \
      VtsHalWifiSupplicantP2pIfaceTargetTest
Change-Id: I985e9470696b21893ae9ad33174e9156a944ba3b
diff --git a/wpa_supplicant/aidl/vendor/p2p_iface.cpp b/wpa_supplicant/aidl/vendor/p2p_iface.cpp
index 81bf3f1..b1cd1cd 100644
--- a/wpa_supplicant/aidl/vendor/p2p_iface.cpp
+++ b/wpa_supplicant/aidl/vendor/p2p_iface.cpp
@@ -858,7 +858,7 @@
 ::ndk::ScopedAStatus P2pIface::getFeatureSet(int64_t* _aidl_return)
 {
 	return validateAndCall(
-		this, SupplicantStatusCode::FAILURE_UNKNOWN,
+		this, SupplicantStatusCode::FAILURE_IFACE_INVALID,
 		&P2pIface::getFeatureSetInternal, _aidl_return);
 }
 
@@ -867,7 +867,7 @@
 		int32_t* _aidl_return)
 {
 	return validateAndCall(
-		this, SupplicantStatusCode::FAILURE_UNKNOWN,
+		this, SupplicantStatusCode::FAILURE_IFACE_INVALID,
 		&P2pIface::startUsdBasedServiceDiscoveryInternal, _aidl_return,
 		in_serviceDiscoveryConfig);
 }
@@ -884,7 +884,7 @@
 		int32_t* _aidl_return)
 {
 	return validateAndCall(
-		this, SupplicantStatusCode::FAILURE_UNKNOWN,
+		this, SupplicantStatusCode::FAILURE_IFACE_INVALID,
 		&P2pIface::startUsdBasedServiceAdvertisementInternal, _aidl_return,
 		in_serviceAdvertisementConfig);
 }
@@ -904,6 +904,29 @@
 		&P2pIface::provisionDiscoveryWithParamsInternal, in_params);
 }
 
+::ndk::ScopedAStatus P2pIface::getDirInfo(P2pDirInfo* _aidl_return)
+{
+	return validateAndCall(
+		this, SupplicantStatusCode::FAILURE_IFACE_INVALID,
+		&P2pIface::getDirInfoInternal, _aidl_return);
+}
+
+::ndk::ScopedAStatus P2pIface::validateDirInfo(const P2pDirInfo& in_dirInfo,
+		int32_t* _aidl_return)
+{
+	return validateAndCall(
+		this, SupplicantStatusCode::FAILURE_IFACE_INVALID,
+		&P2pIface::validateDirInfoInternal, _aidl_return, in_dirInfo);
+}
+
+::ndk::ScopedAStatus P2pIface::reinvokePersistentGroup(
+		const P2pReinvokePersistentGroupParams& in_reinvokeGroupParams)
+{
+	return validateAndCall(
+		this, SupplicantStatusCode::FAILURE_IFACE_INVALID,
+		&P2pIface::reinvokePersistentGroupInternal, in_reinvokeGroupParams);
+}
+
 std::pair<std::string, ndk::ScopedAStatus> P2pIface::getNameInternal()
 {
 	return {ifname_, ndk::ScopedAStatus::ok()};
@@ -2045,6 +2068,27 @@
 	return ndk::ScopedAStatus::ok();
 }
 
+std::pair<P2pDirInfo, ndk::ScopedAStatus> P2pIface::getDirInfoInternal()
+{
+	// TODO Fill the field when supplicant implementation is ready
+	P2pDirInfo dirInfo = {};
+	return {dirInfo, ndk::ScopedAStatus::ok()};
+}
+
+std::pair<int32_t, ndk::ScopedAStatus> P2pIface::validateDirInfoInternal(
+	const P2pDirInfo& dirInfo)
+{
+	// TODO Fill the field when supplicant implementation is ready
+	return {0, ndk::ScopedAStatus::ok()};
+}
+
+ndk::ScopedAStatus P2pIface::reinvokePersistentGroupInternal(
+	const P2pReinvokePersistentGroupParams& reinvokeGroupParams)
+{
+	// TODO Fill the field when supplicant implementation is ready
+	return ndk::ScopedAStatus::ok();
+}
+
 /**
  * Retrieve the underlying |wpa_supplicant| struct
  * pointer for this iface.
diff --git a/wpa_supplicant/aidl/vendor/p2p_iface.h b/wpa_supplicant/aidl/vendor/p2p_iface.h
index 840878e..545a6c9 100644
--- a/wpa_supplicant/aidl/vendor/p2p_iface.h
+++ b/wpa_supplicant/aidl/vendor/p2p_iface.h
@@ -195,6 +195,11 @@
 	::ndk::ScopedAStatus stopUsdBasedServiceAdvertisement(int32_t in_sessionId) override;
 	::ndk::ScopedAStatus provisionDiscoveryWithParams(
 		const P2pProvisionDiscoveryParams& in_params) override;
+	::ndk::ScopedAStatus getDirInfo(P2pDirInfo* _aidl_return) override;
+	::ndk::ScopedAStatus validateDirInfo(const P2pDirInfo &in_dirInfo,
+		int32_t* _aidl_return) override;
+	::ndk::ScopedAStatus reinvokePersistentGroup(
+		const P2pReinvokePersistentGroupParams& in_reinvokeGroupParams) override;
 
 
 private:
@@ -336,6 +341,11 @@
 	::ndk::ScopedAStatus stopUsdBasedServiceAdvertisementInternal(uint32_t sessionId);
 	::ndk::ScopedAStatus provisionDiscoveryWithParamsInternal(
 		const P2pProvisionDiscoveryParams& params);
+	std::pair<P2pDirInfo, ndk::ScopedAStatus> getDirInfoInternal();
+	std::pair<int32_t, ndk::ScopedAStatus> validateDirInfoInternal(
+		const P2pDirInfo& dirInfo);
+	::ndk::ScopedAStatus reinvokePersistentGroupInternal(
+		const P2pReinvokePersistentGroupParams& reinvokeGroupParams);
 
 	struct wpa_supplicant* retrieveIfacePtr();
 	struct wpa_supplicant* retrieveGroupIfacePtr(