drone_config/
config.rs

1#![allow(missing_docs)]
2
3use crate::deserialize_size;
4use serde::{Deserialize, Serialize};
5use std::collections::HashMap;
6
7/// Config object.
8#[non_exhaustive]
9#[derive(Clone, Debug, Serialize, Deserialize)]
10#[serde(rename_all = "kebab-case")]
11pub struct Config {
12    pub memory: Memory,
13    pub heap: Heap,
14    pub linker: Linker,
15    pub probe: Option<Probe>,
16    pub log: Option<Log>,
17}
18
19#[non_exhaustive]
20#[derive(Clone, Debug, Serialize, Deserialize)]
21#[serde(rename_all = "kebab-case")]
22pub struct Memory {
23    pub flash: MemoryBlock,
24    pub ram: MemoryBlock,
25    #[serde(flatten)]
26    pub extra: HashMap<String, MemoryBlock>,
27}
28
29#[non_exhaustive]
30#[derive(Clone, Debug, Serialize, Deserialize)]
31#[serde(rename_all = "kebab-case")]
32pub struct MemoryBlock {
33    #[serde(deserialize_with = "deserialize_size")]
34    pub size: u32,
35    pub origin: u32,
36}
37
38#[non_exhaustive]
39#[derive(Clone, Debug, Serialize, Deserialize)]
40#[serde(rename_all = "kebab-case")]
41pub struct Heap {
42    pub main: HeapBlock,
43    #[serde(flatten)]
44    pub extra: HashMap<String, HeapExtra>,
45}
46
47#[non_exhaustive]
48#[derive(Clone, Debug, Serialize, Deserialize)]
49#[serde(rename_all = "kebab-case")]
50pub struct HeapBlock {
51    #[serde(deserialize_with = "deserialize_size")]
52    pub size: u32,
53    pub pools: Vec<HeapPool>,
54}
55
56#[non_exhaustive]
57#[derive(Clone, Debug, Serialize, Deserialize)]
58#[serde(rename_all = "kebab-case")]
59pub struct HeapExtra {
60    pub origin: u32,
61    #[serde(flatten)]
62    pub block: HeapBlock,
63}
64
65#[non_exhaustive]
66#[derive(Clone, Debug, Serialize, Deserialize)]
67#[serde(rename_all = "kebab-case")]
68pub struct HeapPool {
69    #[serde(deserialize_with = "deserialize_size")]
70    pub block: u32,
71    pub capacity: u32,
72}
73
74#[non_exhaustive]
75#[derive(Clone, Debug, Serialize, Deserialize)]
76#[serde(rename_all = "kebab-case")]
77pub struct Linker {
78    pub platform: String,
79    #[serde(default)]
80    pub include: Vec<String>,
81}
82
83#[non_exhaustive]
84#[derive(Clone, Debug, Serialize, Deserialize)]
85#[serde(rename_all = "kebab-case")]
86pub struct Probe {
87    pub gdb_client_command: String,
88    pub bmp: Option<ProbeBmp>,
89    pub jlink: Option<ProbeJlink>,
90    pub openocd: Option<ProbeOpenocd>,
91}
92
93#[non_exhaustive]
94#[derive(Clone, Debug, Serialize, Deserialize)]
95#[serde(rename_all = "kebab-case")]
96pub struct ProbeBmp {
97    pub device: String,
98    pub gdb_endpoint: String,
99}
100
101#[non_exhaustive]
102#[derive(Clone, Debug, Serialize, Deserialize)]
103#[serde(rename_all = "kebab-case")]
104pub struct ProbeJlink {
105    pub gdb_server_command: String,
106    pub commander_command: String,
107    pub device: String,
108    pub interface: String,
109    pub speed: u32,
110    pub port: u32,
111}
112
113#[non_exhaustive]
114#[derive(Clone, Debug, Serialize, Deserialize)]
115#[serde(rename_all = "kebab-case")]
116pub struct ProbeOpenocd {
117    pub command: String,
118    pub port: u32,
119    pub arguments: Vec<String>,
120}
121
122#[non_exhaustive]
123#[derive(Clone, Debug, Serialize, Deserialize)]
124#[serde(rename_all = "kebab-case")]
125pub struct Log {
126    pub swo: Option<LogSwo>,
127    pub dso: Option<LogDso>,
128}
129
130#[non_exhaustive]
131#[derive(Clone, Debug, Serialize, Deserialize)]
132#[serde(rename_all = "kebab-case")]
133pub struct LogSwo {
134    pub reset_freq: u32,
135    pub baud_rate: u32,
136    pub serial_endpoint: Option<String>,
137}
138
139#[non_exhaustive]
140#[derive(Clone, Debug, Serialize, Deserialize)]
141#[serde(rename_all = "kebab-case")]
142pub struct LogDso {
143    pub baud_rate: u32,
144    pub serial_endpoint: String,
145}