agent_can/daemon/
config.rs1use crate::types::BusConfig;
2use serde::{Deserialize, Serialize};
3use std::path::Path;
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
6pub struct DaemonConfig {
7 pub bus: String,
8 pub adapter: String,
9 pub dbc_path: String,
10 pub bitrate: u32,
11 pub bitrate_data: u32,
12 pub fd_capable: bool,
13}
14
15impl DaemonConfig {
16 pub fn bus_config(&self) -> BusConfig {
17 BusConfig {
18 bus: self.bus.clone(),
19 adapter: self.adapter.clone(),
20 dbc_path: self.dbc_path.clone(),
21 bitrate: self.bitrate,
22 bitrate_data: self.bitrate_data,
23 fd_capable: self.fd_capable,
24 }
25 }
26}
27
28pub fn write_daemon_config(path: &Path, config: &DaemonConfig) -> Result<(), String> {
29 let payload =
30 serde_json::to_vec(config).map_err(|err| format!("failed to serialize config: {err}"))?;
31 std::fs::write(path, payload)
32 .map_err(|err| format!("failed to write daemon config '{}': {err}", path.display()))
33}
34
35pub fn read_daemon_config(path: &Path) -> Result<DaemonConfig, String> {
36 let payload = std::fs::read(path)
37 .map_err(|err| format!("failed to read daemon config '{}': {err}", path.display()))?;
38 serde_json::from_slice(&payload)
39 .map_err(|err| format!("failed to decode daemon config '{}': {err}", path.display()))
40}