use std::collections::{BTreeMap, HashMap};
pub type Remoteproc = HashMap<String, RemoteprocCore>;
#[derive(Debug, Clone, Default, serde::Serialize, serde::Deserialize)]
#[serde(deny_unknown_fields)]
pub struct RemoteprocCore {
#[serde(default)]
pub vector: RemoteprocWindowOverride,
#[serde(default)]
pub flash: RemoteprocWindowOverride,
#[serde(default)]
pub shmem: RemoteprocWindowOverride,
#[serde(default)]
pub ram: RemoteprocWindowOverride,
#[serde(default)]
pub regions: BTreeMap<String, RemoteprocRegion>,
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
#[serde(deny_unknown_fields)]
pub struct RemoteprocRegion {
pub origin: u64,
pub length: u64,
#[serde(default = "default_true")]
pub reserve: bool,
#[serde(default = "default_true")]
pub read: bool,
#[serde(default)]
pub write: bool,
#[serde(default)]
pub execute: bool,
#[serde(default)]
pub sections: Vec<RemoteprocSection>,
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
#[serde(deny_unknown_fields)]
pub struct RemoteprocSection {
pub output: String,
pub inputs: Vec<String>,
#[serde(default)]
pub keep: bool,
pub insert_after: String,
}
const fn default_true() -> bool {
true
}
#[derive(Debug, Clone, Default, serde::Serialize, serde::Deserialize)]
#[serde(deny_unknown_fields)]
pub struct RemoteprocWindowOverride {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub origin: Option<u64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub length: Option<u64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub reserve: Option<bool>,
}