From bbc8d9824bce7bfa1a836af216c4519bb01cfc8c Mon Sep 17 00:00:00 2001 From: Luis Daniel Casais Date: Fri, 10 Jul 2026 19:29:05 +0200 Subject: [PATCH] feat(architecture): support for configuring devices Co-authored-by: ALVAROPING1 --- src/architecture.rs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/architecture.rs b/src/architecture.rs index 43be465..069b6e5 100644 --- a/src/architecture.rs +++ b/src/architecture.rs @@ -56,6 +56,9 @@ pub struct Architecture<'a> { /// Timer configuration #[serde(default)] pub timer: Option, + /// Device configuration + #[serde(default)] + pub devices: Vec>, /// Definitions of possible enumerated instruction fields #[serde(default)] pub enums: HashMap<&'a str, EnumDefinition<'a>>, @@ -526,6 +529,28 @@ pub struct Timer { pub disable: String, } +#[derive(Deserialize, JsonSchema, Debug, PartialEq, Eq, Clone, Copy)] +pub enum DeviceClasses { + ConsoleDevice, + OSDriver, +} + +#[derive(Deserialize, JsonSchema, Debug, PartialEq, Eq, Clone)] +pub struct Device<'a> { + /// Device ID + pub id: &'a str, + /// Device class + pub cls: DeviceClasses, + /// Device's control register's address + pub ctrl_addr: usize, + /// Device's status register's address + pub status_addr: usize, + /// Device's data segment + pub data: NonEmptyRangeInclusive, + /// Device's default status (default: enabled) + pub enabled: Option, +} + impl Architecture<'_> { /// Generate a `JSON` schema #[must_use]