Merge "Add skeleton USD implementation in the vendor supplicant." into main
diff --git a/hostapd/aidl/hostapd.cpp b/hostapd/aidl/hostapd.cpp
index b5118b3..cee626a 100644
--- a/hostapd/aidl/hostapd.cpp
+++ b/hostapd/aidl/hostapd.cpp
@@ -1048,6 +1048,12 @@
return setDebugParamsInternal(level);
}
+::ndk::ScopedAStatus Hostapd::removeLinkFromMultipleLinkBridgedApIface(
+ const std::string& iface_name, const std::string& linkIdentity)
+{
+ return removeLinkFromMultipleLinkBridgedApIfaceInternal(iface_name, linkIdentity);
+}
+
::ndk::ScopedAStatus Hostapd::addAccessPointInternal(
const IfaceParams& iface_params,
const NetworkParams& nw_params)
@@ -1492,6 +1498,23 @@
return ndk::ScopedAStatus::ok();
}
+::ndk::ScopedAStatus Hostapd::removeLinkFromMultipleLinkBridgedApIfaceInternal(
+const std::string& iface_name, const std::string& linkIdentity)
+{
+ if (!hostapd_get_iface(interfaces_, iface_name.c_str())) {
+ wpa_printf(MSG_ERROR, "Interface %s doesn't exist", iface_name.c_str());
+ return createStatus(HostapdStatusCode::FAILURE_IFACE_UNKNOWN);
+ }
+ struct hostapd_data* iface_hapd =
+ hostapd_get_iface_by_link_id(interfaces_, (size_t) linkIdentity.c_str());
+ if (iface_hapd) {
+ if (0 == hostapd_link_remove(iface_hapd, 1)) {
+ return ndk::ScopedAStatus::ok();
+ }
+ }
+ return createStatus(HostapdStatusCode::FAILURE_ARGS_INVALID);
+}
+
} // namespace hostapd
} // namespace wifi
} // namespace hardware
diff --git a/hostapd/aidl/hostapd.h b/hostapd/aidl/hostapd.h
index ffdbd8e..ba47810 100644
--- a/hostapd/aidl/hostapd.h
+++ b/hostapd/aidl/hostapd.h
@@ -55,6 +55,8 @@
const std::vector<uint8_t>& client_address,
Ieee80211ReasonCode reason_code) override;
::ndk::ScopedAStatus setDebugParams(DebugLevel level) override;
+ ::ndk::ScopedAStatus removeLinkFromMultipleLinkBridgedApIface(
+ const std::string& iface_name, const std::string& linkIdentity) override;
private:
// Corresponding worker functions for the AIDL methods.
::ndk::ScopedAStatus addAccessPointInternal(
@@ -77,7 +79,8 @@
const std::vector<uint8_t>& client_address,
Ieee80211ReasonCode reason_code);
::ndk::ScopedAStatus setDebugParamsInternal(DebugLevel level);
-
+ ::ndk::ScopedAStatus removeLinkFromMultipleLinkBridgedApIfaceInternal(
+ const std::string& iface_name, const std::string& linkIdentity);
// Raw pointer to the global structure maintained by the core.
struct hapd_interfaces* interfaces_;
// Callbacks registered.
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(
diff --git a/wpa_supplicant/aidl/vendor/sta_iface.cpp b/wpa_supplicant/aidl/vendor/sta_iface.cpp
index e1453dd..ce873d9 100644
--- a/wpa_supplicant/aidl/vendor/sta_iface.cpp
+++ b/wpa_supplicant/aidl/vendor/sta_iface.cpp
@@ -38,23 +38,10 @@
using aidl::android::hardware::wifi::supplicant::LegacyMode;
using aidl::android::hardware::wifi::supplicant::RxFilterType;
using aidl::android::hardware::wifi::supplicant::SupplicantStatusCode;
+using aidl::android::hardware::wifi::supplicant::WifiChannelWidthInMhz;
using aidl::android::hardware::wifi::supplicant::WifiTechnology;
using aidl::android::hardware::wifi::supplicant::misc_utils::createStatus;
-// Enum definition copied from the Vendor HAL interface.
-// See android.hardware.wifi.WifiChannelWidthInMhz
-enum WifiChannelWidthInMhz {
- WIDTH_20 = 0,
- WIDTH_40 = 1,
- WIDTH_80 = 2,
- WIDTH_160 = 3,
- WIDTH_80P80 = 4,
- WIDTH_5 = 5,
- WIDTH_10 = 6,
- WIDTH_320 = 7,
- WIDTH_INVALID = -1
-};
-
constexpr uint32_t kMaxAnqpElems = 100;
constexpr char kGetMacAddress[] = "MACADDR";
constexpr char kStartRxFilter[] = "RXFILTER-START";
@@ -1903,32 +1890,32 @@
capa.technology = WifiTechnology::LEGACY;
if (wpas_freq_to_band(wpa_s->assoc_freq) == BAND_2_4_GHZ) {
capa.legacyMode = (wpa_s->connection_11b_only) ? LegacyMode::B_MODE
- : LegacyMode::G_MODE;
+ : LegacyMode::G_MODE;
} else {
capa.legacyMode = LegacyMode::A_MODE;
}
}
switch (wpa_s->connection_channel_bandwidth) {
case CHAN_WIDTH_20:
- capa.channelBandwidth = WifiChannelWidthInMhz::WIDTH_20;
+ capa.channelBandwidth = static_cast<int32_t>(WifiChannelWidthInMhz::WIDTH_20);
break;
case CHAN_WIDTH_40:
- capa.channelBandwidth = WifiChannelWidthInMhz::WIDTH_40;
+ capa.channelBandwidth = static_cast<int32_t>(WifiChannelWidthInMhz::WIDTH_40);
break;
case CHAN_WIDTH_80:
- capa.channelBandwidth = WifiChannelWidthInMhz::WIDTH_80;
+ capa.channelBandwidth = static_cast<int32_t>(WifiChannelWidthInMhz::WIDTH_80);
break;
case CHAN_WIDTH_160:
- capa.channelBandwidth = WifiChannelWidthInMhz::WIDTH_160;
+ capa.channelBandwidth = static_cast<int32_t>(WifiChannelWidthInMhz::WIDTH_160);
break;
case CHAN_WIDTH_80P80:
- capa.channelBandwidth = WifiChannelWidthInMhz::WIDTH_80P80;
+ capa.channelBandwidth = static_cast<int32_t>(WifiChannelWidthInMhz::WIDTH_80P80);
break;
case CHAN_WIDTH_320:
- capa.channelBandwidth = WifiChannelWidthInMhz::WIDTH_320;
+ capa.channelBandwidth = static_cast<int32_t>(WifiChannelWidthInMhz::WIDTH_320);
break;
default:
- capa.channelBandwidth = WifiChannelWidthInMhz::WIDTH_20;
+ capa.channelBandwidth = static_cast<int32_t>(WifiChannelWidthInMhz::WIDTH_20);
break;
}
capa.maxNumberRxSpatialStreams = wpa_s->connection_max_nss_rx;
@@ -1936,7 +1923,7 @@
capa.apTidToLinkMapNegotiationSupported = wpa_s->ap_t2lm_negotiation_support;
} else {
capa.technology = WifiTechnology::UNKNOWN;
- capa.channelBandwidth = WifiChannelWidthInMhz::WIDTH_20;
+ capa.channelBandwidth = static_cast<int32_t>(WifiChannelWidthInMhz::WIDTH_20);
capa.maxNumberTxSpatialStreams = 1;
capa.maxNumberRxSpatialStreams = 1;
capa.legacyMode = LegacyMode::UNKNOWN;