musb 0.0.3

musb(Mentor USB) regs and `embassy-usb-driver` impl
use std::collections::HashMap;
use std::fs::File;
use std::io::Read;

use crate::Block;
use anyhow::{anyhow, Result};

pub fn extract_fieldsets_from_block(block_name: &str) -> Result<Vec<String>> {
    let path = format!("registers/blocks/{block_name}.yaml");
    let mut file = File::open(path)?;
    let mut content = String::new();
    file.read_to_string(&mut content)?;
    
    let parsed_data: HashMap<String, Block> = serde_yaml::from_str(&content)?;
    
    parsed_data.get(&format!("block/USB")).map_or_else(
        || Err(anyhow!("block/USB not found")),
        |block| Ok(block.items.iter().map(|item| item.fieldset.clone()).collect()),
    )
}