[wlan][policy] Log network selection decisions
Bug: 67605
Test: fx test wlancfg-tests
Change-Id: Iba531dcb06f778cad8f1393d8d938495e068fcf8
diff --git a/src/connectivity/wlan/wlancfg/src/client/network_selection.rs b/src/connectivity/wlan/wlancfg/src/client/network_selection.rs
index f98acb1..f5d7676 100644
--- a/src/connectivity/wlan/wlancfg/src/client/network_selection.rs
+++ b/src/connectivity/wlan/wlancfg/src/client/network_selection.rs
@@ -10,6 +10,7 @@
},
config_management::{self, Credential, SavedNetworksManager},
mode_management::iface_manager_api::IfaceManagerApi,
+ util::telemetry::Telemetry,
},
async_trait::async_trait,
fidl_fuchsia_wlan_internal as fidl_internal, fidl_fuchsia_wlan_sme as fidl_sme,
@@ -45,6 +46,7 @@
saved_network_manager: Arc<SavedNetworksManager>,
scan_result_cache: Arc<Mutex<ScanResultCache>>,
cobalt_api: Arc<Mutex<CobaltSender>>,
+ telemetry: impl ConnectionTrackerApi,
}
struct ScanResultCache {
@@ -78,10 +80,24 @@
}
return rssi;
}
+
+ fn to_telemetry_candidate(&self) -> telemetry::CandidateBss {
+ let channel = Channel::from_fidl(self.bss_info.channel);
+ telemetry::CandidateBss {
+ rssi: self.bss_info.rssi,
+ recent_failure_count: self.network_info.recent_failure_count,
+ band: if channel.is_5ghz() {
+ types::Band::WlanBand5Ghz
+ } else {
+ types::Band::WlanBand2Ghz
+ },
+ score: self.score(),
+ }
+ }
}
impl NetworkSelector {
- pub fn new(saved_network_manager: Arc<SavedNetworksManager>, cobalt_api: CobaltSender) -> Self {
+ pub fn new(saved_network_manager: Arc<SavedNetworksManager>, cobalt_api: CobaltSender, telemetry: Telemetry) -> Self {
Self {
saved_network_manager,
scan_result_cache: Arc::new(Mutex::new(ScanResultCache {
@@ -89,6 +105,7 @@
results: Vec::new(),
})),
cobalt_api: Arc::new(Mutex::new(cobalt_api)),
+ telemetry
}
}
diff --git a/src/connectivity/wlan/wlancfg/src/main.rs b/src/connectivity/wlan/wlancfg/src/main.rs
index 7a9a5ad..e325ff3 100644
--- a/src/connectivity/wlan/wlancfg/src/main.rs
+++ b/src/connectivity/wlan/wlancfg/src/main.rs
@@ -21,6 +21,7 @@
create_iface_manager, iface_manager_api::IfaceManagerApi, phy_manager::PhyManager,
},
regulatory_manager::RegulatoryManager,
+ util::telemetry::Telemetry,
},
anyhow::{format_err, Context as _, Error},
fidl_fuchsia_location_namedplace::RegulatoryRegionWatcherMarker,
@@ -214,11 +215,15 @@
.context("failed to connect to device service")?;
let (cobalt_api, cobalt_fut) =
CobaltConnector::default().serve(ConnectionType::project_id(metrics::PROJECT_ID));
+ let telemetry = Telemetry::new(component::inspector().root());
let saved_networks =
Arc::new(executor.run_singlethreaded(SavedNetworksManager::new(cobalt_api.clone()))?);
- let network_selector =
- Arc::new(NetworkSelector::new(Arc::clone(&saved_networks), cobalt_api.clone()));
+ let network_selector = Arc::new(NetworkSelector::new(
+ Arc::clone(&saved_networks),
+ cobalt_api.clone(),
+ telemetry.clone(),
+ ));
let phy_manager = Arc::new(Mutex::new(PhyManager::new(
wlan_svc.clone(),
diff --git a/src/connectivity/wlan/wlancfg/src/util/telemetry/mod.rs b/src/connectivity/wlan/wlancfg/src/util/telemetry/mod.rs
index b347a98..74edcce 100644
--- a/src/connectivity/wlan/wlancfg/src/util/telemetry/mod.rs
+++ b/src/connectivity/wlan/wlancfg/src/util/telemetry/mod.rs
@@ -2,10 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#![allow(unused_variables)]
-#![allow(unused_imports)]
-#![allow(dead_code)]
-
use {
crate::client::types,
fuchsia_inspect::{self as inspect},