Hosam-Eldin Mostafa c6d7669b90 power: cross-platform PSU port resolver, parsed numerics, safe-off
owon_psu.py upgrades (all backward-compatible):

- SerialParams.from_config() and OwonPSU.from_config() factories that
  translate the YAML power_supply block (parity 'N', stopbits 1.0)
  into pyserial constants — eliminates the boilerplate every test
  was duplicating.

- Parsed-numeric measurement helpers: measure_voltage_v(),
  measure_current_a(), output_is_on(). Tests can now assert on
  floats / bools instead of regex-ing strings.

- safe_off_on_close=True (new ctor kwarg, default on) — close()
  sends 'output 0' before closing the port. Last-ditch protection
  against leaving the bench powered on after an aborted test.
  Keyword-only so the historical positional ctor signature is
  preserved.

- Cross-platform port resolver: windows_com_to_linux,
  linux_serial_to_windows, candidate_ports, resolve_port. The
  resolver tries the configured port verbatim, then its
  cross-platform translation (COM7 ↔ /dev/ttyS6 on WSL1), then
  Linux USB-serial paths (/dev/ttyUSB*, /dev/ttyACM*), then a full
  scan_ports() with optional idn_substr filter. One bench config
  works on Windows, WSL1, WSL2 + usbipd-win, and native Linux.

- try_idn_on_port refactored to use OwonPSU internally, removing
  ~25 lines of duplicated serial-port plumbing.

ecu_framework/power/__init__.py re-exports the new helpers so tests
can do `from ecu_framework.power import resolve_port, ...`.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 19:00:12 +02:00

31 lines
610 B
Python

"""Power control helpers for ECU tests.
Currently includes Owon PSU serial SCPI controller plus a cross-
platform port resolver so the same bench config works on Windows,
Linux, and WSL.
"""
from .owon_psu import (
SerialParams,
OwonPSU,
scan_ports,
auto_detect,
try_idn_on_port,
candidate_ports,
resolve_port,
windows_com_to_linux,
linux_serial_to_windows,
)
__all__ = [
"SerialParams",
"OwonPSU",
"scan_ports",
"auto_detect",
"try_idn_on_port",
"candidate_ports",
"resolve_port",
"windows_com_to_linux",
"linux_serial_to_windows",
]