Skip to main content

mavkit/params/
types.rs

1use serde::{Deserialize, Serialize};
2use std::collections::HashMap;
3
4/// MAVLink parameter value type.
5#[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/// A single vehicle parameter with name, value, type, and index.
18#[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/// In-memory store of all downloaded vehicle parameters.
27#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
28pub struct ParamStore {
29    pub params: HashMap<String, Param>,
30    pub expected_count: u16,
31}
32
33/// Current phase of a parameter download or write operation.
34#[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/// Snapshot of parameter transfer progress.
46#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
47pub struct ParamProgress {
48    pub phase: ParamTransferPhase,
49    pub received: u16,
50    pub expected: u16,
51}
52
53/// Result of a single parameter write, with requested and confirmed values.
54#[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}