1use 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}