pub mod bmc;
pub mod controller;
pub mod memmap;
pub mod pccard;
pub mod pci;
pub mod vendor;
use crate::{Error, Head, Type};
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[non_exhaustive]
pub enum Hardware {
Pci(pci::Pci),
PcCard(pccard::PcCard),
MemMap(memmap::MemMap),
Vendor(vendor::Vendor),
Controller(controller::Controller),
Bmc(bmc::Bmc),
}
impl TryFrom<Head<'_>> for Hardware {
type Error = Error;
fn try_from(head: Head<'_>) -> Result<Self, Self::Error> {
match head.subkind {
0x01 => TryFrom::try_from(head).map(Hardware::Pci),
0x02 => TryFrom::try_from(head).map(Hardware::PcCard),
0x03 => TryFrom::try_from(head).map(Hardware::MemMap),
0x04 => TryFrom::try_from(head).map(Hardware::Vendor),
0x05 => TryFrom::try_from(head).map(Hardware::Controller),
0x06 => TryFrom::try_from(head).map(Hardware::Bmc),
n => Err(Error::UnknownSubType(Type::Hardware, n)),
}
}
}