fips_core/config/transport/
ble.rs1use super::*;
2
3const DEFAULT_BLE_PSM: u16 = 0x0085;
9
10const DEFAULT_BLE_MTU: u16 = 2048;
12
13const DEFAULT_BLE_MAX_CONNECTIONS: usize = 7;
15
16const DEFAULT_BLE_CONNECT_TIMEOUT_MS: u64 = 10_000;
18
19const DEFAULT_BLE_PROBE_COOLDOWN_SECS: u64 = 30;
22
23#[derive(Debug, Clone, Default, Serialize, Deserialize)]
28#[serde(deny_unknown_fields)]
29pub struct BleConfig {
30 #[serde(default, skip_serializing_if = "Option::is_none")]
32 pub adapter: Option<String>,
33
34 #[serde(default, skip_serializing_if = "Option::is_none")]
36 pub psm: Option<u16>,
37
38 #[serde(default, skip_serializing_if = "Option::is_none")]
40 pub mtu: Option<u16>,
41
42 #[serde(default, skip_serializing_if = "Option::is_none")]
44 pub max_connections: Option<usize>,
45
46 #[serde(default, skip_serializing_if = "Option::is_none")]
48 pub connect_timeout_ms: Option<u64>,
49
50 #[serde(default, skip_serializing_if = "Option::is_none")]
52 pub advertise: Option<bool>,
53
54 #[serde(default, skip_serializing_if = "Option::is_none")]
56 pub scan: Option<bool>,
57
58 #[serde(default, skip_serializing_if = "Option::is_none")]
60 pub auto_connect: Option<bool>,
61
62 #[serde(default, skip_serializing_if = "Option::is_none")]
64 pub accept_connections: Option<bool>,
65
66 #[serde(default, skip_serializing_if = "Option::is_none")]
69 pub probe_cooldown_secs: Option<u64>,
70}
71
72impl BleConfig {
73 pub fn adapter(&self) -> &str {
75 self.adapter.as_deref().unwrap_or("hci0")
76 }
77
78 pub fn psm(&self) -> u16 {
80 self.psm.unwrap_or(DEFAULT_BLE_PSM)
81 }
82
83 pub fn mtu(&self) -> u16 {
85 self.mtu.unwrap_or(DEFAULT_BLE_MTU)
86 }
87
88 pub fn max_connections(&self) -> usize {
90 self.max_connections.unwrap_or(DEFAULT_BLE_MAX_CONNECTIONS)
91 }
92
93 pub fn connect_timeout_ms(&self) -> u64 {
95 self.connect_timeout_ms
96 .unwrap_or(DEFAULT_BLE_CONNECT_TIMEOUT_MS)
97 }
98
99 pub fn advertise(&self) -> bool {
101 self.advertise.unwrap_or(true)
102 }
103
104 pub fn scan(&self) -> bool {
106 self.scan.unwrap_or(true)
107 }
108
109 pub fn auto_connect(&self) -> bool {
111 self.auto_connect.unwrap_or(false)
112 }
113
114 pub fn accept_connections(&self) -> bool {
116 self.accept_connections.unwrap_or(true)
117 }
118
119 pub fn probe_cooldown_secs(&self) -> u64 {
121 self.probe_cooldown_secs
122 .unwrap_or(DEFAULT_BLE_PROBE_COOLDOWN_SECS)
123 }
124}