Bug fix of HE cap parsing for HE device capability am: d057297e3a am: 8b1f606fe8
Original change: https://googleplex-android-review.googlesource.com/c/platform/system/connectivity/wificond/+/11818901
Change-Id: Id539e9a41444d9b9556217f77680d908687f1dc7
diff --git a/METADATA b/METADATA
new file mode 100644
index 0000000..d97975c
--- /dev/null
+++ b/METADATA
@@ -0,0 +1,3 @@
+third_party {
+ license_type: NOTICE
+}
diff --git a/server.cpp b/server.cpp
index 97fbd1e..2f7104b 100644
--- a/server.cpp
+++ b/server.cpp
@@ -39,6 +39,7 @@
using android::wifi_system::InterfaceTool;
using std::endl;
+using std::optional;
using std::placeholders::_1;
using std::string;
using std::stringstream;
@@ -241,7 +242,7 @@
}
Status Server::getAvailable2gChannels(
- std::unique_ptr<vector<int32_t>>* out_frequencies) {
+ std::optional<vector<int32_t>>* out_frequencies) {
BandInfo band_info;
ScanCapabilities scan_capabilities_ignored;
WiphyFeatures wiphy_features_ignored;
@@ -250,17 +251,16 @@
&scan_capabilities_ignored,
&wiphy_features_ignored)) {
LOG(ERROR) << "Failed to get wiphy info from kernel";
- out_frequencies->reset(nullptr);
+ out_frequencies->reset();
return Status::ok();
}
- out_frequencies->reset(
- new vector<int32_t>(band_info.band_2g.begin(), band_info.band_2g.end()));
+ out_frequencies->emplace(band_info.band_2g.begin(), band_info.band_2g.end());
return Status::ok();
}
Status Server::getAvailable5gNonDFSChannels(
- std::unique_ptr<vector<int32_t>>* out_frequencies) {
+ std::optional<vector<int32_t>>* out_frequencies) {
BandInfo band_info;
ScanCapabilities scan_capabilities_ignored;
WiphyFeatures wiphy_features_ignored;
@@ -269,17 +269,16 @@
&scan_capabilities_ignored,
&wiphy_features_ignored)) {
LOG(ERROR) << "Failed to get wiphy info from kernel";
- out_frequencies->reset(nullptr);
+ out_frequencies->reset();
return Status::ok();
}
- out_frequencies->reset(
- new vector<int32_t>(band_info.band_5g.begin(), band_info.band_5g.end()));
+ out_frequencies->emplace(band_info.band_5g.begin(), band_info.band_5g.end());
return Status::ok();
}
Status Server::getAvailableDFSChannels(
- std::unique_ptr<vector<int32_t>>* out_frequencies) {
+ std::optional<vector<int32_t>>* out_frequencies) {
BandInfo band_info;
ScanCapabilities scan_capabilities_ignored;
WiphyFeatures wiphy_features_ignored;
@@ -288,17 +287,17 @@
&scan_capabilities_ignored,
&wiphy_features_ignored)) {
LOG(ERROR) << "Failed to get wiphy info from kernel";
- out_frequencies->reset(nullptr);
+ out_frequencies->reset();
return Status::ok();
}
- out_frequencies->reset(new vector<int32_t>(band_info.band_dfs.begin(),
- band_info.band_dfs.end()));
+ out_frequencies->emplace(band_info.band_dfs.begin(),
+ band_info.band_dfs.end());
return Status::ok();
}
Status Server::getAvailable6gChannels(
- std::unique_ptr<vector<int32_t>>* out_frequencies) {
+ std::optional<vector<int32_t>>* out_frequencies) {
BandInfo band_info;
ScanCapabilities scan_capabilities_ignored;
WiphyFeatures wiphy_features_ignored;
@@ -307,18 +306,17 @@
&scan_capabilities_ignored,
&wiphy_features_ignored)) {
LOG(ERROR) << "Failed to get wiphy info from kernel";
- out_frequencies->reset(nullptr);
+ out_frequencies->reset();
return Status::ok();
}
- out_frequencies->reset(
- new vector<int32_t>(band_info.band_6g.begin(), band_info.band_6g.end()));
+ out_frequencies->emplace(band_info.band_6g.begin(), band_info.band_6g.end());
return Status::ok();
}
Status Server::getDeviceWiphyCapabilities(
const std::string& iface_name,
- std::unique_ptr<DeviceWiphyCapabilities>* capabilities) {
+ std::optional<DeviceWiphyCapabilities>* capabilities) {
if (!RefreshWiphyIndex(iface_name)) {
capabilities = nullptr;
return Status::ok();
@@ -336,15 +334,15 @@
return Status::ok();
}
- capabilities->reset(new DeviceWiphyCapabilities());
+ capabilities->emplace();
- capabilities->get()->is80211nSupported_ = band_info.is_80211n_supported;
- capabilities->get()->is80211acSupported_ = band_info.is_80211ac_supported;
- capabilities->get()->is80211axSupported_ = band_info.is_80211ax_supported;
- capabilities->get()->is160MhzSupported_ = band_info.is_160_mhz_supported;
- capabilities->get()->is80p80MhzSupported_ = band_info.is_80p80_mhz_supported;
- capabilities->get()->maxTxStreams_ = band_info.max_tx_streams;
- capabilities->get()->maxRxStreams_ = band_info.max_rx_streams;
+ capabilities->value().is80211nSupported_ = band_info.is_80211n_supported;
+ capabilities->value().is80211acSupported_ = band_info.is_80211ac_supported;
+ capabilities->value().is80211axSupported_ = band_info.is_80211ax_supported;
+ capabilities->value().is160MhzSupported_ = band_info.is_160_mhz_supported;
+ capabilities->value().is80p80MhzSupported_ = band_info.is_80p80_mhz_supported;
+ capabilities->value().maxTxStreams_ = band_info.max_tx_streams;
+ capabilities->value().maxRxStreams_ = band_info.max_rx_streams;
return Status::ok();
}
diff --git a/server.h b/server.h
index 982bf12..8477671 100644
--- a/server.h
+++ b/server.h
@@ -56,16 +56,16 @@
callback) override;
// Returns a vector of available frequencies for 2.4GHz channels.
android::binder::Status getAvailable2gChannels(
- ::std::unique_ptr<::std::vector<int32_t>>* out_frequencies) override;
+ ::std::optional<::std::vector<int32_t>>* out_frequencies) override;
// Returns a vector of available frequencies for 5GHz non-DFS channels.
android::binder::Status getAvailable5gNonDFSChannels(
- ::std::unique_ptr<::std::vector<int32_t>>* out_frequencies) override;
+ ::std::optional<::std::vector<int32_t>>* out_frequencies) override;
// Returns a vector of available frequencies for DFS channels.
android::binder::Status getAvailableDFSChannels(
- ::std::unique_ptr<::std::vector<int32_t>>* out_frequencies) override;
+ ::std::optional<::std::vector<int32_t>>* out_frequencies) override;
// Returns a vector of available frequencies for 6GHz channels.
android::binder::Status getAvailable6gChannels(
- ::std::unique_ptr<::std::vector<int32_t>>* out_frequencies) override;
+ ::std::optional<::std::vector<int32_t>>* out_frequencies) override;
android::binder::Status createApInterface(
const std::string& iface_name,
@@ -96,7 +96,7 @@
// Returns device wiphy capabilities for an interface
android::binder::Status getDeviceWiphyCapabilities(
const std::string& iface_name,
- ::std::unique_ptr<net::wifi::nl80211::DeviceWiphyCapabilities>* capabilities) override;
+ ::std::optional<net::wifi::nl80211::DeviceWiphyCapabilities>* capabilities) override;
private:
// Request interface information from kernel and setup local interface object.