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, Debug, Default, PartialEq, Eq)]
8pub struct TelemetryConfig {
9    pub enable_connect_disconnect: bool,
10    pub enable_iface_logger: bool,
11    pub enable_power_logger: bool,
12    pub enable_recovery_logger: bool,
13    pub enable_scan_logger: bool,
14    pub enable_pno_scan_logger: bool,
15    pub enable_sme_timeout_logger: bool,
16    pub enable_toggle_logger: bool,
17    pub enable_tx_power_scenario_logger: bool,
18    pub enable_client_iface_counters_logger: bool,
19}
20
21impl TelemetryConfig {
22    pub fn all() -> Self {
23        Self {
24            enable_connect_disconnect: true,
25            enable_iface_logger: true,
26            enable_power_logger: true,
27            enable_recovery_logger: true,
28            enable_scan_logger: true,
29            enable_pno_scan_logger: true,
30            enable_sme_timeout_logger: true,
31            enable_toggle_logger: true,
32            enable_tx_power_scenario_logger: true,
33            enable_client_iface_counters_logger: true,
34        }
35    }
36}
37
38#[derive(Clone, Debug, PartialEq, Eq)]
39pub enum CobaltAllowlist {
40    All,
41    Only(HashSet<u32>),
42}
43
44impl CobaltAllowlist {
45    pub fn contains(&self, metric_id: u32) -> bool {
46        match self {
47            CobaltAllowlist::All => true,
48            CobaltAllowlist::Only(set) => set.contains(&metric_id),
49        }
50    }
51}