1use serde::Deserialize;
2
3#[derive(Clone, Debug, Deserialize, PartialEq)]
8pub struct Eagle {
9 pub drawing: Drawing,
10}
11
12#[derive(Clone, Debug, Deserialize, PartialEq)]
13pub struct Drawing {
14 pub schematic: Schematic,
15}
16
17#[derive(Clone, Debug, Deserialize, PartialEq)]
18pub struct VariantDef {
19 pub name: String,
20 pub current: Option<String>,
21}
22
23#[derive(Clone, Debug, Deserialize, PartialEq)]
24pub struct VariantDefs {
25 pub variantdef: Vec<VariantDef>,
26}
27
28#[derive(Clone, Debug, Deserialize, PartialEq)]
29pub struct Schematic {
30 pub parts: Parts,
31 pub attributes: Attributes,
32 pub variantdefs: VariantDefs,
33 pub libraries: Libraries,
34}
35
36#[derive(Clone, Debug, Deserialize, PartialEq)]
37pub struct Libraries {
38 pub library: Vec<Library>,
39}
40
41#[derive(Clone, Debug, Deserialize, PartialEq)]
42pub struct Library {
43 pub name: String,
44 pub devicesets: DeviceSets,
45}
46
47#[derive(Clone, Debug, Deserialize, PartialEq)]
48pub struct DeviceSets {
49 pub deviceset: Vec<DeviceSet>,
50}
51
52#[derive(Clone, Debug, Deserialize, PartialEq)]
53pub struct DeviceSet {
54 pub name: String,
55 pub devices: Devices,
56}
57
58#[derive(Clone, Debug, Deserialize, PartialEq)]
59pub struct Devices {
60 pub device: Vec<Device>,
61}
62
63#[derive(Clone, Debug, Deserialize, PartialEq)]
64pub struct Device {
65 pub name: String,
66 pub technologies: Technologies,
67}
68
69#[derive(Clone, Debug, Deserialize, PartialEq)]
70pub struct Technologies {
71 pub technology: Vec<Technology>,
72}
73
74#[derive(Clone, Debug, Deserialize, PartialEq)]
75pub struct Technology {
76 pub name: String,
77 pub attribute: Option<Vec<Attribute>>,
78}
79
80#[derive(Clone, Debug, Deserialize, PartialEq)]
81pub struct Attributes {
82 pub attribute: Vec<Attribute>,
83}
84
85#[derive(Clone, Debug, Deserialize, PartialEq)]
86pub struct Attribute {
87 pub name: String,
88 pub value: String,
89}
90
91#[derive(Clone, Debug, Deserialize, PartialEq)]
92pub struct Parts {
93 pub part: Vec<Part>,
94}
95
96#[derive(Clone, Debug, Deserialize, PartialEq)]
97pub struct Part {
98 pub name: String,
99 pub deviceset: String,
100 pub technology: Option<String>,
101 pub device: String,
102 #[serde(rename = "variant", default)]
103 pub variants: Vec<Variant>,
104}
105
106#[derive(Clone, Debug, Deserialize, PartialEq)]
107pub struct Variant {
108 pub name: String,
109 pub populate: Option<String>,
110 pub value: Option<String>,
111 pub technology: Option<String>,
112}