use super::*;
const DEFAULT_BLE_PSM: u16 = 0x0085;
const DEFAULT_BLE_MTU: u16 = 2048;
const DEFAULT_BLE_MAX_CONNECTIONS: usize = 7;
const DEFAULT_BLE_CONNECT_TIMEOUT_MS: u64 = 10_000;
const DEFAULT_BLE_PROBE_COOLDOWN_SECS: u64 = 30;
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct BleConfig {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub adapter: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub psm: Option<u16>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mtu: Option<u16>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_connections: Option<usize>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub connect_timeout_ms: Option<u64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub advertise: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub scan: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub auto_connect: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub accept_connections: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub probe_cooldown_secs: Option<u64>,
}
impl BleConfig {
pub fn adapter(&self) -> &str {
self.adapter.as_deref().unwrap_or("hci0")
}
pub fn psm(&self) -> u16 {
self.psm.unwrap_or(DEFAULT_BLE_PSM)
}
pub fn mtu(&self) -> u16 {
self.mtu.unwrap_or(DEFAULT_BLE_MTU)
}
pub fn max_connections(&self) -> usize {
self.max_connections.unwrap_or(DEFAULT_BLE_MAX_CONNECTIONS)
}
pub fn connect_timeout_ms(&self) -> u64 {
self.connect_timeout_ms
.unwrap_or(DEFAULT_BLE_CONNECT_TIMEOUT_MS)
}
pub fn advertise(&self) -> bool {
self.advertise.unwrap_or(true)
}
pub fn scan(&self) -> bool {
self.scan.unwrap_or(true)
}
pub fn auto_connect(&self) -> bool {
self.auto_connect.unwrap_or(false)
}
pub fn accept_connections(&self) -> bool {
self.accept_connections.unwrap_or(true)
}
pub fn probe_cooldown_secs(&self) -> u64 {
self.probe_cooldown_secs
.unwrap_or(DEFAULT_BLE_PROBE_COOLDOWN_SECS)
}
}