Source code for ekfsm.devices.smbios

from pathlib import Path

from ekfsm.core.components import HWModule
from ekfsm.core.sysfs import SysfsDevice, sysfs_root
from ekfsm.log import ekfsm_logger

from .generic import Device

logger = ekfsm_logger(__name__)


[docs] class SMBIOS(Device): """ A class to represent the SMBIOS device. A SMBIOS device is a virtual device that is used to read system configuration values from the DMI table. Note: Currently, only the board version / revision is read from the DMI table. """ def __init__( self, name: str, parent: HWModule | None = None, children: list["Device"] | None = None, abort: bool = False, *args, **kwargs, ): logger.debug(f"Initializing SMBIOS device '{name}'") try: dmi_path = sysfs_root() / Path("devices/virtual/dmi/id") self.sysfs_device: SysfsDevice | None = SysfsDevice(dmi_path, False) logger.info(f"SMBIOS '{name}' initialized with DMI table at {dmi_path}") except Exception as e: logger.error(f"Failed to initialize SMBIOS '{name}' with DMI table: {e}") raise super().__init__(name, parent, None, abort, *args, **kwargs)
[docs] def revision(self) -> str: """ Get the board revision from the DMI table. Returns ------- str The board revision. """ logger.debug(f"Reading board revision for SMBIOS '{self.name}'") try: revision = self.sysfs.read_utf8("board_version") logger.debug(f"SMBIOS '{self.name}' board revision: {revision}") return revision except Exception as e: logger.error(f"Failed to read board revision for SMBIOS '{self.name}': {e}") raise