summaryrefslogtreecommitdiffstats
path: root/server.cpp
diff options
context:
space:
mode:
authorXin Li <delphij@google.com>2020-09-08 16:57:18 -0700
committerXin Li <delphij@google.com>2020-09-08 16:57:18 -0700
commiteaf7c4998d15c61360bdcd716fb02b33acd8b526 (patch)
tree7535ac3f76cce213db2f66501107c5e68c4830e3 /server.cpp
parent0bcc0e4488989dad285c7664b4cdaa6eaad666d4 (diff)
parent7e90494ad7cd8b2a5f52781a636ae34af1904c97 (diff)
downloadplatform_system_connectivity_wificond-master.tar.gz
platform_system_connectivity_wificond-master.tar.bz2
platform_system_connectivity_wificond-master.zip
Merge Android RHEADmaster
Bug: 168057903 Merged-In: I3b0a326c6381091e8721811fb5ea352e6af1031f Change-Id: Id8a690a46c023b26372220ab8878b86b2b881eeb
Diffstat (limited to 'server.cpp')
-rw-r--r--server.cpp63
1 files changed, 60 insertions, 3 deletions
diff --git a/server.cpp b/server.cpp
index f6fefa1..2f7104b 100644
--- a/server.cpp
+++ b/server.cpp
@@ -32,9 +32,10 @@ using android::base::WriteStringToFd;
using android::binder::Status;
using android::sp;
using android::IBinder;
-using android::net::wifi::IApInterface;
-using android::net::wifi::IClientInterface;
-using android::net::wifi::IInterfaceEventCallback;
+using android::net::wifi::nl80211::IApInterface;
+using android::net::wifi::nl80211::IClientInterface;
+using android::net::wifi::nl80211::IInterfaceEventCallback;
+using android::net::wifi::nl80211::DeviceWiphyCapabilities;
using android::wifi_system::InterfaceTool;
using std::endl;
@@ -295,6 +296,57 @@ Status Server::getAvailableDFSChannels(
return Status::ok();
}
+Status Server::getAvailable6gChannels(
+ std::optional<vector<int32_t>>* out_frequencies) {
+ BandInfo band_info;
+ ScanCapabilities scan_capabilities_ignored;
+ WiphyFeatures wiphy_features_ignored;
+
+ if (!netlink_utils_->GetWiphyInfo(wiphy_index_, &band_info,
+ &scan_capabilities_ignored,
+ &wiphy_features_ignored)) {
+ LOG(ERROR) << "Failed to get wiphy info from kernel";
+ out_frequencies->reset();
+ return Status::ok();
+ }
+
+ 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::optional<DeviceWiphyCapabilities>* capabilities) {
+ if (!RefreshWiphyIndex(iface_name)) {
+ capabilities = nullptr;
+ return Status::ok();
+ }
+
+ BandInfo band_info;
+ ScanCapabilities scan_capabilities_ignored;
+ WiphyFeatures wiphy_features_ignored;
+
+ if (!netlink_utils_->GetWiphyInfo(wiphy_index_, &band_info,
+ &scan_capabilities_ignored,
+ &wiphy_features_ignored)) {
+ LOG(ERROR) << "Failed to get wiphy info from kernel";
+ capabilities = nullptr;
+ return Status::ok();
+ }
+
+ capabilities->emplace();
+
+ 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();
+}
+
bool Server::SetupInterface(const std::string& iface_name,
InterfaceInfo* interface) {
if (!RefreshWiphyIndex(iface_name)) {
@@ -367,6 +419,11 @@ void Server::LogSupportedBands() {
ss << " " << band_info.band_dfs[i];
}
LOG(INFO) << "5Ghz DFS frequencies:"<< ss.str();
+
+ for (unsigned int i = 0; i < band_info.band_6g.size(); i++) {
+ ss << " " << band_info.band_6g[i];
+ }
+ LOG(INFO) << "6Ghz frequencies:"<< ss.str();
}
void Server::BroadcastClientInterfaceReady(