lssbi 0.0.1

List information about the active RISC-V SBI environment.
// SPDX-License-Identifier: MIT OR MulanPSL-2.0

use jep106::JEP106Code;

pub(crate) fn vendor_name(id: usize) -> Option<&'static str> {
    let bank = u8::try_from(id >> 7).ok()?;
    JEP106Code::new(bank, (id & 0x7f) as u8).get()
}

#[cfg(test)]
mod tests {
    use super::vendor_name;

    #[test]
    fn decodes_jep106_id() {
        assert_eq!(vendor_name(0x144), Some("Nordic VLSI ASA"));
    }

    #[test]
    fn rejects_unknown_or_oversized_ids() {
        assert_eq!(vendor_name(0), None);
        assert_eq!(vendor_name(usize::MAX), None);
    }
}