diff options
| author | Xin Li <delphij@google.com> | 2020-09-08 16:57:18 -0700 |
|---|---|---|
| committer | Xin Li <delphij@google.com> | 2020-09-08 16:57:18 -0700 |
| commit | eaf7c4998d15c61360bdcd716fb02b33acd8b526 (patch) | |
| tree | 7535ac3f76cce213db2f66501107c5e68c4830e3 /server.cpp | |
| parent | 0bcc0e4488989dad285c7664b4cdaa6eaad666d4 (diff) | |
| parent | 7e90494ad7cd8b2a5f52781a636ae34af1904c97 (diff) | |
| download | platform_system_connectivity_wificond-master.tar.gz platform_system_connectivity_wificond-master.tar.bz2 platform_system_connectivity_wificond-master.zip | |
Bug: 168057903
Merged-In: I3b0a326c6381091e8721811fb5ea352e6af1031f
Change-Id: Id8a690a46c023b26372220ab8878b86b2b881eeb
Diffstat (limited to 'server.cpp')
| -rw-r--r-- | server.cpp | 63 |
1 files changed, 60 insertions, 3 deletions
@@ -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( |
