1use serde::{Deserialize, Serialize};
2use std::collections::HashMap;
3
4#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
6#[serde(rename_all = "snake_case")]
7pub enum ParamType {
8 Uint8,
9 Int8,
10 Uint16,
11 Int16,
12 Uint32,
13 Int32,
14 Real32,
15}
16
17#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
19pub struct Param {
20 pub name: String,
21 pub value: f32,
22 pub param_type: ParamType,
23 pub index: u16,
24}
25
26#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
28pub struct ParamStore {
29 pub params: HashMap<String, Param>,
30 pub expected_count: u16,
31}
32
33#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize)]
35#[serde(rename_all = "snake_case")]
36pub enum ParamTransferPhase {
37 #[default]
38 Idle,
39 Downloading,
40 Writing,
41 Completed,
42 Failed,
43}
44
45#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
47pub struct ParamProgress {
48 pub phase: ParamTransferPhase,
49 pub received: u16,
50 pub expected: u16,
51}
52
53#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
55pub struct ParamWriteResult {
56 pub name: String,
57 pub requested_value: f32,
58 pub confirmed_value: f32,
59 pub success: bool,
60}
61
62impl Default for ParamProgress {
63 fn default() -> Self {
64 ParamProgress {
65 phase: ParamTransferPhase::Idle,
66 received: 0,
67 expected: 0,
68 }
69 }
70}