Buttplug sex toy control library
1use std::collections::HashMap;
2
3use getset::Getters;
4use serde::{Deserialize, Serialize};
5
6use crate::device_config_file::{
7 ConfigVersion,
8 ConfigVersionGetter,
9 get_internal_config_version,
10 protocol::ProtocolDefinition,
11};
12
13#[derive(Deserialize, Serialize, Debug, Getters)]
14#[getset(get_mut = "pub", set = "pub")]
15pub struct BaseConfigFile {
16 #[getset(get_copy = "pub")]
17 version: ConfigVersion,
18 #[getset(get = "pub")]
19 #[serde(default, skip_serializing_if = "Option::is_none")]
20 protocols: Option<HashMap<String, ProtocolDefinition>>,
21}
22
23impl Default for BaseConfigFile {
24 fn default() -> Self {
25 Self {
26 version: get_internal_config_version(),
27 protocols: Some(HashMap::new()),
28 }
29 }
30}
31
32impl ConfigVersionGetter for BaseConfigFile {
33 fn version(&self) -> ConfigVersion {
34 self.version
35 }
36}