Merge "Hostapd-AIDL: add OWE-Transition configuration support."
diff --git a/wpa_supplicant/aidl/p2p_iface.cpp b/wpa_supplicant/aidl/p2p_iface.cpp
index 8dcaad5..3dcfec8 100644
--- a/wpa_supplicant/aidl/p2p_iface.cpp
+++ b/wpa_supplicant/aidl/p2p_iface.cpp
@@ -1018,6 +1018,32 @@
&P2pIface::setWfdR2DeviceInfoInternal, in_info);
}
+::ndk::ScopedAStatus P2pIface::removeClient(
+ const std::vector<uint8_t>& peer_address, bool isLegacyClient)
+{
+ return validateAndCall(
+ this, SupplicantStatusCode::FAILURE_IFACE_INVALID,
+ &P2pIface::removeClientInternal, peer_address, isLegacyClient);
+}
+
+::ndk::ScopedAStatus P2pIface::findOnSocialChannels(
+ int32_t in_timeoutInSec)
+{
+ return validateAndCall(
+ this, SupplicantStatusCode::FAILURE_IFACE_INVALID,
+ &P2pIface::findOnSocialChannelsInternal, in_timeoutInSec);
+}
+
+::ndk::ScopedAStatus P2pIface::findOnSpecificFrequency(
+ int32_t in_freq,
+ int32_t in_timeoutInSec)
+{
+ return validateAndCall(
+ this, SupplicantStatusCode::FAILURE_IFACE_INVALID,
+ &P2pIface::findOnSpecificFrequencyInternal,
+ in_freq, in_timeoutInSec);
+}
+
std::pair<std::string, ndk::ScopedAStatus> P2pIface::getNameInternal()
{
return {ifname_, ndk::ScopedAStatus::ok()};
@@ -2001,6 +2027,45 @@
return ndk::ScopedAStatus::ok();
}
+ndk::ScopedAStatus P2pIface::removeClientInternal(
+ const std::vector<uint8_t>& peer_address, bool isLegacyClient)
+{
+ struct wpa_supplicant* wpa_s = retrieveIfacePtr();
+ wpas_p2p_remove_client(wpa_s, peer_address.data(), isLegacyClient? 1 : 0);
+ return ndk::ScopedAStatus::ok();
+}
+
+ndk::ScopedAStatus P2pIface::findOnSocialChannelsInternal(uint32_t timeout_in_sec)
+{
+ struct wpa_supplicant* wpa_s = retrieveIfacePtr();
+ if (wpa_s->wpa_state == WPA_INTERFACE_DISABLED) {
+ return createStatus(SupplicantStatusCode::FAILURE_IFACE_DISABLED);
+ }
+ uint32_t search_delay = wpas_p2p_search_delay(wpa_s);
+ if (wpas_p2p_find(
+ wpa_s, timeout_in_sec, P2P_FIND_ONLY_SOCIAL, 0, nullptr,
+ nullptr, search_delay, 0, nullptr, 0)) {
+ return createStatus(SupplicantStatusCode::FAILURE_UNKNOWN);
+ }
+ return ndk::ScopedAStatus::ok();
+}
+
+ndk::ScopedAStatus P2pIface::findOnSpecificFrequencyInternal(
+ uint32_t freq, uint32_t timeout_in_sec)
+{
+ struct wpa_supplicant* wpa_s = retrieveIfacePtr();
+ if (wpa_s->wpa_state == WPA_INTERFACE_DISABLED) {
+ return createStatus(SupplicantStatusCode::FAILURE_IFACE_DISABLED);
+ }
+ uint32_t search_delay = wpas_p2p_search_delay(wpa_s);
+ if (wpas_p2p_find(
+ wpa_s, timeout_in_sec, P2P_FIND_START_WITH_FULL, 0, nullptr,
+ nullptr, search_delay, 0, nullptr, freq)) {
+ return createStatus(SupplicantStatusCode::FAILURE_UNKNOWN);
+ }
+ return ndk::ScopedAStatus::ok();
+}
+
/**
* Retrieve the underlying |wpa_supplicant| struct
* pointer for this iface.
diff --git a/wpa_supplicant/aidl/p2p_iface.h b/wpa_supplicant/aidl/p2p_iface.h
index d24645c..4cb86b6 100644
--- a/wpa_supplicant/aidl/p2p_iface.h
+++ b/wpa_supplicant/aidl/p2p_iface.h
@@ -164,6 +164,11 @@
::ndk::ScopedAStatus getEdmg(bool* _aidl_return) override;
::ndk::ScopedAStatus setWfdR2DeviceInfo(
const std::vector<uint8_t>& in_info) override;
+ ::ndk::ScopedAStatus removeClient(
+ const std::vector<uint8_t>& peer_address, bool isLegacyClient) override;
+ ::ndk::ScopedAStatus findOnSocialChannels(int32_t in_timeoutInSec) override;
+ ::ndk::ScopedAStatus findOnSpecificFrequency(
+ int32_t in_freq, int32_t in_timeoutInSec) override;
private:
// Corresponding worker functions for the AIDL methods.
@@ -276,6 +281,11 @@
std::pair<bool, ndk::ScopedAStatus> getEdmgInternal();
ndk::ScopedAStatus setWfdR2DeviceInfoInternal(
const std::vector<uint8_t>& info);
+ ndk::ScopedAStatus removeClientInternal(
+ const std::vector<uint8_t>& peer_address, bool isLegacyClient);
+ ndk::ScopedAStatus findOnSocialChannelsInternal(uint32_t timeout_in_sec);
+ ndk::ScopedAStatus findOnSpecificFrequencyInternal(
+ uint32_t freq, uint32_t timeout_in_sec);
struct wpa_supplicant* retrieveIfacePtr();
struct wpa_supplicant* retrieveGroupIfacePtr(