include "mem_config.fbs"; include "clock.fbs"; namespace hmmmm.config; // Configuration for a single base device (leaf node in the device tree). // Equivalent to a standalone device TOML (e.g. AVRrc.toml, gpio.toml). table BaseDeviceConfig { libpath: string; mem_segments: [MemSegment]; } // Override for one memory segment within a child device. // Only fields that need changing from the base config must be set. table MemSegOverride { segment: string; start: uint32; len: uint32; word_len: uint8; executable: bool; } // One device entry in a composite configuration. table DeviceEntry { // Local identifier, unique within this composite (e.g. "core", "gpio_a"). id: string; // Exactly one of config or config_path must be set. // config: inline base device configuration. // config_path: path to a serialised BaseDeviceConfig FlatBuffer file. config: BaseDeviceConfig; config_path: string; clock: DeviceClockConfig; overrides: [MemSegOverride]; } // Root type when serialising a standalone device config to a binary file. root_type BaseDeviceConfig;