use indexmap::IndexMap;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
pub struct Ir {
pub mcu: String,
pub package: String,
pub clocks: Clocks,
pub pinctrl: Vec<Pin>,
pub peripherals: IndexMap<String, Peripheral>,
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Default)]
pub struct Clocks {
#[serde(default)]
pub pll: IndexMap<String, Pll>,
#[serde(default)]
pub kernels: IndexMap<String, String>,
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
pub struct Pll {
pub m: u8,
pub n: u16,
pub p: u8,
pub q: u8,
pub r: u8,
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
pub struct Pin {
pub pin: String,
pub func: String,
pub af: u8,
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
pub struct Peripheral {
pub class: String,
#[serde(default)]
pub signals: IndexMap<String, String>,
}