Source code for psj_lib.devices.nv_family.capabilities.nv_display

"""NV-specific display capability implementation."""

from ...base.capabilities import Display

[docs] class NVDisplay(Display): """Display capability for NV devices. Internally scale brightness to NV's expected 0-255 range. """
[docs] async def set( self, brightness: float | None = None, ) -> None: """Set display brightness. Args: brightness: Target brightness in percent from 0.0 to 100.0. If ``None``, no command is sent. Returns: None Raises: ValueError: If ``brightness`` is outside the range 0..100. """ if brightness is not None: if not (0.0 <= brightness <= 100.0): raise ValueError("Brightness must be between 0 and 100") nv_brightness = self._convert_brightness(brightness) await self._write(self.CMD_BRIGHTNESS, [nv_brightness])
[docs] async def get_brightness(self) -> float: """Read current display brightness. Returns: Brightness in percent from 0.0 to 100.0. """ response = await self._write(self.CMD_BRIGHTNESS) return self._parse_brightness(int(response[0]))
def _convert_brightness(self, brightness: float) -> int: """Convert percentage brightness to NV register scale. Args: brightness: Brightness in percent from 0.0 to 100.0. Returns: Brightness value mapped to NV range 0..255. """ return int((brightness / 100.0) * 255) def _parse_brightness(self, nv_brightness: int) -> float: """Convert NV register brightness to percentage. Args: nv_brightness: Raw NV brightness value in range 0..255. Returns: Brightness in percent from 0.0 to 100.0. """ return (nv_brightness / 255.0) * 100.0