fundamentum_sdk_mqtt/models/commands/
custom_configuration_update.rs1use std::hash::{Hash, Hasher};
5
6use serde::{Deserialize, Serialize};
7
8#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
11pub struct ConfigUpdateParameters {
12 pub deep_update: bool,
14 pub retry_timeout: u32,
16 target_device: TargetDeviceConfig,
18}
19
20#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
22struct TargetDeviceConfig {
23 serial_number: String,
25 actual_configuration: serde_json::Value,
27 new_configuration: serde_json::Value,
29}
30
31impl Hash for TargetDeviceConfig {
32 fn hash<H: Hasher>(&self, state: &mut H) {
33 self.serial_number.hash(state);
34 self.actual_configuration.to_string().hash(state);
35 self.new_configuration.to_string().hash(state);
36 }
37}
38
39impl ConfigUpdateParameters {
40 #[must_use]
42 #[expect(clippy::missing_const_for_fn, reason = "False positive")]
43 pub fn target_serial_number(&self) -> &str {
44 &self.target_device.serial_number
45 }
46
47 #[must_use]
49 pub const fn current_config(&self) -> &serde_json::Value {
50 &self.target_device.actual_configuration
51 }
52
53 #[must_use]
55 pub const fn new_config(&self) -> &serde_json::Value {
56 &self.target_device.new_configuration
57 }
58}