Skip to main content

wlan_telemetry/
config.rs

1// Copyright 2026 The Fuchsia Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5use std::collections::HashSet;
6
7#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
8pub enum DeviceMobility {
9    #[default]
10    Mobile,
11    Stationary,
12}
13
14#[derive(Clone, Debug, Default, PartialEq, Eq)]
15pub struct TelemetryConfig {
16    pub enable_connect_disconnect: bool,
17    pub enable_iface_logger: bool,
18    pub enable_power_logger: bool,
19    pub enable_recovery_logger: bool,
20    pub enable_scan_logger: bool,
21    pub enable_pno_scan_logger: bool,
22    pub enable_sme_timeout_logger: bool,
23    pub enable_toggle_logger: bool,
24    pub enable_tx_power_scenario_logger: bool,
25    pub enable_client_iface_counters_logger: bool,
26    pub device_mobility: DeviceMobility,
27}
28
29impl TelemetryConfig {
30    pub fn all() -> Self {
31        Self {
32            enable_connect_disconnect: true,
33            enable_iface_logger: true,
34            enable_power_logger: true,
35            enable_recovery_logger: true,
36            enable_scan_logger: true,
37            enable_pno_scan_logger: true,
38            enable_sme_timeout_logger: true,
39            enable_toggle_logger: true,
40            enable_tx_power_scenario_logger: true,
41            enable_client_iface_counters_logger: true,
42            device_mobility: DeviceMobility::Mobile,
43        }
44    }
45}
46
47#[derive(Clone, Debug, PartialEq, Eq)]
48pub enum CobaltAllowlist {
49    All,
50    Only(HashSet<u32>),
51}
52
53impl CobaltAllowlist {
54    pub fn contains(&self, metric_id: u32) -> bool {
55        match self {
56            CobaltAllowlist::All => true,
57            CobaltAllowlist::Only(set) => set.contains(&metric_id),
58        }
59    }
60}
61
62#[cfg(test)]
63mod tests {
64    use super::*;
65
66    #[fuchsia::test]
67    fn test_telemetry_config_default() {
68        let config = TelemetryConfig::default();
69        assert_eq!(config.device_mobility, DeviceMobility::Mobile);
70    }
71
72    #[fuchsia::test]
73    fn test_telemetry_config_all() {
74        let config = TelemetryConfig::all();
75        assert_eq!(config.device_mobility, DeviceMobility::Mobile);
76    }
77}