Documentation
use serde::{Deserialize, Serialize};

#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct Enumeration {
    pub name: String,
    pub value: u64,
}

#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct Field {
    pub name: String,
    pub lsb: u32,
    pub msb: u32,
    pub enumerations: Vec<Enumeration>,
}

#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct Register {
    pub name: String,
    pub offset: u64,
    pub is_raw: bool,
    pub fields: Vec<Field>,
}

#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct Peripheral {
    pub name: String,
    pub word_size: usize,
    pub regs: Vec<Register>,
}