From 031cf0f25a7ef61fe6c32a181e8c01bfe3b04fdb Mon Sep 17 00:00:00 2001 From: scheianu Date: Thu, 1 Oct 2026 16:43:29 +0300 Subject: [PATCH] Add a status LED driven by card events The workstation app lit an LED on GPIO 23 with the card. This brings that across, with three deliberate differences: it never blocks the reader, it cannot be fatal, and its state is reported. WMT toggled the LED directly inside card_inserted, on the reader thread, where a slow write stalls card detection. Here every change is queued to a worker, so insert() returns immediately (tested with a deliberately slow pin). Two modes, because the light can mean two things: error (default) lit while the reader runs, dark while reading, blinks on a bad read - a health indicator presence lit only while a card is on the reader gpiozero raises BadPinFactory on a machine with no GPIO, and that subclasses ImportError - so a single except ImportError reports 'gpiozero is not installed' when the library is present but has no usable pin provider. The library check and the pin construction are therefore separate. Vendors gpiozero + colorzero (~180 KB) so the LED installs offline too, and deliberately not setuptools: gpiozero declares it via colorzero, but it is only a packaging requirement and is never imported at runtime. Installing to the bundled wheels therefore uses --no-deps, saving 818 KB. Verified end to end over a pseudo-terminal with a fake pin: a real RDM6300 frame drives the LED through the app's own CLI in both modes. --- README.md | 63 ++++ deploy/install.sh | 18 + pyproject.toml | 3 + src/rdm_card_reader/__init__.py | 9 +- src/rdm_card_reader/bootstrap.py | 45 ++- src/rdm_card_reader/cli.py | 70 +++- src/rdm_card_reader/led.py | 314 ++++++++++++++++++ src/rdm_card_reader/wheels/SHA256SUMS | 2 + .../wheels/colorzero-2.0-py2.py3-none-any.whl | Bin 0 -> 26573 bytes .../gpiozero-2.0.1.post3-py3-none-any.whl | Bin 0 -> 151465 bytes tests/test_bootstrap.py | 6 +- tests/test_e2e_led.py | 209 ++++++++++++ tests/test_led.py | 306 +++++++++++++++++ tests/test_wheels.py | 8 +- 14 files changed, 1036 insertions(+), 17 deletions(-) create mode 100644 src/rdm_card_reader/led.py create mode 100644 src/rdm_card_reader/wheels/colorzero-2.0-py2.py3-none-any.whl create mode 100644 src/rdm_card_reader/wheels/gpiozero-2.0.1.post3-py3-none-any.whl create mode 100644 tests/test_e2e_led.py create mode 100644 tests/test_led.py diff --git a/README.md b/README.md index 0b95d65..fe762ad 100644 --- a/README.md +++ b/README.md @@ -352,6 +352,69 @@ Exit codes: `0` ok, `1` no port, `2` library missing, `3` port ambiguous. --- +## Status LED + +An LED driven by card events, on **GPIO 23** by default — the same pin the +workstation app used. + +```bash +rdm-card-reader # lit while running, blinks on a bad read +rdm-card-reader --led-pin 17 # a different pin +rdm-card-reader --led-mode presence # lit only while a card is on the reader +rdm-card-reader --no-led # no LED at all +``` + +| Flag | Default | Meaning | +| --- | --- | --- | +| `--no-led` | off | Do not drive a LED | +| `--led-pin` | `23` | GPIO pin (matches the workstation app) | +| `--led-mode` | `error` | See the two readings below | +| `--led-no-error-blink` | off | Do not blink on a bad read | + +Two modes, because the light can mean two different things: + +| Mode | Behaviour | Use when | +| --- | --- | --- | +| `error` (default) | **Lit whenever the reader is running.** Dark while a card is being read, blinks on a bad read | The light should mean "the reader is alive and ready" | +| `presence` | **Lit only while a card is on the reader** | The light should mean "a card is here" | + +Wiring: LED anode to the GPIO pin through a ~330 Ω resistor, cathode to GND. + +### It cannot break the reader + +Three deliberate choices, because a LED is a convenience and the reader is the +point: + +* **Never blocks.** The workstation app toggled the LED directly on the reader + thread, which stalls card detection. Here every change is queued to a worker + thread, so a toggle returns immediately even with slow hardware. +* **Never fatal.** On a machine with no GPIO, `gpiozero` raises + `BadPinFactory`. The app falls back to a no-op LED and says why, rather than + refusing to run. +* **Never crashes on a dead pin.** A failed toggle is logged and ignored. + +Startup reports which of the three states it is in: + +``` +LED on GPIO 23 (error mode, gpiozero) # working +LED unavailable: gpiozero not installed # library missing +LED unavailable: no usable GPIO on pin 23: ... # no pin factory / pin busy +``` + +That distinction matters: `BadPinFactory` subclasses `ImportError`, so a naive +check reports "not installed" when the library is present but has no usable pin +provider — which would send you to the wrong fix. + +> **If the workstation app also runs on this device, use a different pin** — two +> processes driving GPIO 23 will fight, and the LED will flicker. + +`gpiozero` and `colorzero` are installed automatically on first use, from the +bundled wheels, so this works offline. They add ~180 KB. `setuptools`, which +`gpiozero` pulls in as a *packaging* dependency, is deliberately not vendored: +it is never imported at runtime and would add 818 KB for nothing. + +--- + ## Wiring The RDM6300 talks plain serial at **9600 baud, 8N1**. Connect it to the Pi's diff --git a/deploy/install.sh b/deploy/install.sh index 37d49b3..badcd64 100755 --- a/deploy/install.sh +++ b/deploy/install.sh @@ -105,6 +105,24 @@ else fi fi +# Status LED support. Best-effort: the reader works fine without a LED, so a +# failure here must not stop the install. +# +# --no-deps is deliberate: gpiozero declares colorzero, which in turn declares +# setuptools. setuptools is only a packaging requirement and is never imported +# at runtime, so it is not vendored (it would add 818 KB for nothing). +if [[ -d "$WHEEL_DIR" ]] && "$VENV_PY" -m pip install --quiet --no-index \ + --no-deps --find-links "$WHEEL_DIR" gpiozero colorzero 2>/dev/null; then + echo " installed gpiozero + colorzero for the status LED (offline)" +else + if "$VENV_PY" -m pip install --quiet gpiozero colorzero 2>/dev/null; then + echo " installed gpiozero + colorzero from PyPI" + else + warn "could not install LED support - the reader still works, the LED" + warn "will be inactive. The app can install it later on first use." + fi +fi + # Make the package importable. The .pth file adds src/ to sys.path, so # 'python -m rdm_card_reader' resolves from any working directory. SITE_PACKAGES="$("$VENV_PY" -c 'import sysconfig; print(sysconfig.get_paths()["purelib"])')" diff --git a/pyproject.toml b/pyproject.toml index 88d15ed..d465dac 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,6 +25,9 @@ dependencies = [ [project.optional-dependencies] dev = ["pytest>=7.0"] +# Status LED support. Installed automatically on first use by the app, or +# explicitly with: pip install '.[led]' +led = ["gpiozero>=2.0", "colorzero>=2.0"] [project.scripts] rdm-card-reader = "rdm_card_reader.cli:main" diff --git a/src/rdm_card_reader/__init__.py b/src/rdm_card_reader/__init__.py index a6dd172..723ad10 100644 --- a/src/rdm_card_reader/__init__.py +++ b/src/rdm_card_reader/__init__.py @@ -13,7 +13,7 @@ On first start the reader installs its own libraries if they are missing, so a fresh device needs no manual setup - see ``bootstrap``. """ -from .bootstrap import ensure_dependencies, missing_packages +from .bootstrap import ensure_dependencies, missing_packages, bundled_wheel_dir from .card import ( CANDIDATE_PORTS, CONFIG_CARD_VALUE, @@ -30,9 +30,10 @@ from .ports import ( discover, resolve, ) +from .led import DEFAULT_LED_PIN, StatusLED, create as create_led from .reader import available, list_ports, open_reader, reload_library -__version__ = "0.3.0" +__version__ = "0.4.0" __all__ = [ "CANDIDATE_PORTS", @@ -40,11 +41,15 @@ __all__ = [ "CardData", "CardEvent", "AmbiguousPort", + "DEFAULT_LED_PIN", "EventHub", "PortError", "PortInfo", "PortNotFound", + "StatusLED", "available", + "bundled_wheel_dir", + "create_led", "create_server", "discover", "ensure_dependencies", diff --git a/src/rdm_card_reader/bootstrap.py b/src/rdm_card_reader/bootstrap.py index eb2a9fa..f2c4cc1 100644 --- a/src/rdm_card_reader/bootstrap.py +++ b/src/rdm_card_reader/bootstrap.py @@ -35,6 +35,21 @@ REQUIRED_PACKAGES = ( ("serial", "pyserial>=3.5"), ) +#: Extra packages needed only when driving a status LED. +#: +#: ``colorzero`` is listed explicitly because ``gpiozero`` requires it. Both are +#: installed with ``--no-deps``: gpiozero's declared dependency chain pulls in +#: ``setuptools`` (via colorzero), which is only a packaging requirement and is +#: not imported at runtime. Vendoring it would add 818 KB for nothing. +LED_PACKAGES = ( + ("gpiozero", "gpiozero>=2.0"), + ("colorzero", "colorzero>=2.0"), +) + +#: The LED extras are optional: refusing to start because a LED cannot be +#: driven would be absurd. +OPTIONAL_IMPORTS = frozenset({"gpiozero", "colorzero"}) + #: Shown when an install fails, so the operator knows what to do by hand. MANUAL_HINT = ( "Install manually with: {python} -m pip install {requirements}" @@ -144,10 +159,17 @@ def in_virtualenv() -> bool: return sys.prefix != getattr(sys, "base_prefix", sys.prefix) -def _pip_command(requirements: Sequence[str], wheel_dir: Optional[str]) -> List[str]: +def _pip_command( + requirements: Sequence[str], + wheel_dir: Optional[str], + no_deps: bool = False, +) -> List[str]: """Build the pip invocation, handling venv vs system Python.""" command = [sys.executable, "-m", "pip", "install"] + if no_deps: + command.append("--no-deps") + if wheel_dir: # Offline install from a local wheel directory: no index, no network. command += ["--no-index", "--find-links", wheel_dir] @@ -168,10 +190,11 @@ def install( wheel_dir: Optional[str] = None, logger: Optional[Callable[[str], None]] = None, timeout: int = 300, + no_deps: bool = False, ) -> bool: """Run pip. Returns True on success; never raises for a failed install.""" say = logger or (lambda message: None) - command = _pip_command(requirements, wheel_dir) + command = _pip_command(requirements, wheel_dir, no_deps=no_deps) say(" $ {}".format(" ".join(command))) try: @@ -198,17 +221,26 @@ def install( return True +def _is_optional(packages: Sequence[tuple]) -> bool: + """True when every package in the group is an optional extra.""" + names = {name for name, _ in packages} + return bool(names) and names <= OPTIONAL_IMPORTS + + def ensure_dependencies( packages: Sequence[tuple] = REQUIRED_PACKAGES, wheel_dir: Optional[str] = None, auto_install: bool = True, logger: Optional[Callable[[str], None]] = None, + use_bundled: bool = True, + no_deps: bool = False, ) -> bool: - """Check for the reader libraries and install them if they are missing. + """Check for the given libraries and install them if they are missing. Returns True when everything is importable at the end - either because it already was, or because the install worked. Returns False when something is - still missing, so the caller can decide what to do. + still missing, so the caller can decide what to do. For an optional group + (the LED extras) False just means the feature is unavailable. """ say = logger or (lambda message: None) @@ -229,7 +261,7 @@ def ensure_dependencies( # Prefer the wheels shipped with the package: a device with no internet # must still be able to set itself up. explicit = wheel_dir is not None - if not explicit: + if wheel_dir is None and use_bundled: wheel_dir = bundled_wheel_dir() if wheel_dir: say("Using the wheels bundled with this package:") @@ -263,7 +295,8 @@ def ensure_dependencies( else: say("Installing from PyPI ...") - install(requirements, wheel_dir=wheel_dir, logger=say) + install(requirements, wheel_dir=wheel_dir, logger=say, + no_deps=no_deps and wheel_dir is not None) # Re-check rather than trusting pip's exit code alone. still_missing = missing_packages(packages) diff --git a/src/rdm_card_reader/cli.py b/src/rdm_card_reader/cli.py index d481c3a..4cec201 100644 --- a/src/rdm_card_reader/cli.py +++ b/src/rdm_card_reader/cli.py @@ -8,7 +8,7 @@ import threading from typing import Optional, Sequence from . import __version__ -from .bootstrap import ensure_dependencies +from .bootstrap import LED_PACKAGES, ensure_dependencies from .bridge import ( DEFAULT_HOST, DEFAULT_PORT, @@ -22,10 +22,12 @@ from .card import ( BAR, CANDIDATE_PORTS, DEFAULT_HEARTBEAT_INTERVAL, + EVENT_INVALID, CardEvent, format_event, ) from .demo import run_demo +from .led import DEFAULT_LED_PIN, MODES as LED_MODES, create as create_led from .ports import AmbiguousPort, PortNotFound, discover, resolve from .reader import available, explain_error, list_ports, open_reader, reload_library @@ -126,6 +128,33 @@ def _ensure_library(args) -> bool: return False +def _build_led(args): + """Set up the status LED, or a no-op when GPIO is unusable. + + Never fatal: a reader that refuses to start because a LED cannot be driven + would be worse than one with no light. + """ + if args.no_led: + return create_led(enabled=False) + + # Only pull in gpiozero when a LED was actually asked for, so a headless + # install does not grow the dependency set. + ensure_dependencies( + packages=LED_PACKAGES, + wheel_dir=args.wheel_dir, + auto_install=not args.no_install_deps, + logger=print, + no_deps=True, + ) + return create_led( + pin=args.led_pin, + enabled=True, + mode=args.led_mode, + error_blink=not args.led_no_error_blink, + logger=lambda message: print(" {}".format(message)), + ) + + def _run_bridge(args) -> int: """Serve what the reader sees over HTTP for a web app to consume.""" if not _ensure_library(args): @@ -143,7 +172,17 @@ def _run_bridge(args) -> int: hub = EventHub(mode=args.mode, tap_ttl=args.tap_ttl) hub.set_port(device) + led = _build_led(args) + def emit(event: CardEvent) -> None: + # Drive the LED first: it is queued, so it never delays the reader. + if event.event == EVENT_INVALID: + led.error() + elif event.event == "card_removed": + led.remove() + else: + led.insert() + hub.publish(event) if args.verbose: print(format_event(event), flush=True) @@ -195,6 +234,7 @@ def _run_bridge(args) -> int: reader.close() except Exception: pass + led.close() server.shutdown() server.server_close() return EXIT_OK @@ -254,6 +294,19 @@ def build_parser() -> argparse.ArgumentParser: help="permit binding a non-loopback address") bridge.add_argument("--verbose", action="store_true", help="also print each event and each HTTP request") + + led = parser.add_argument_group("status LED") + led.add_argument("--no-led", action="store_true", + help="do not drive a status LED") + led.add_argument("--led-pin", type=int, default=DEFAULT_LED_PIN, + help="GPIO pin of the status LED (default: %(default)s, " + "matching the workstation app)") + led.add_argument("--led-mode", choices=list(LED_MODES), default=LED_MODES[0], + help="'error' (default): lit whenever the reader is running, " + "blinking means a bad read; 'presence': lit only while " + "a card is on the reader") + led.add_argument("--led-no-error-blink", action="store_true", + help="do not blink the LED on a bad read") return parser @@ -273,20 +326,32 @@ def main(argv: Optional[Sequence[str]] = None) -> int: if not _ensure_library(args): return EXIT_NO_LIBRARY + led = _build_led(args) print_event = _make_printer(args.json) ports = [args.port] if args.port else list(CANDIDATE_PORTS) def report_error(port: str, message: str) -> None: print(" x {}: {}".format(port, explain_error(port, message)), flush=True) + def on_event(event: CardEvent) -> None: + # LED first: it is queued, so it never delays the reader loop. + if event.event == EVENT_INVALID: + led.error() + elif event.event == "card_removed": + led.remove() + else: + led.insert() + print_event(event) + for port in ports: print("-> Opening {} ...".format(port), flush=True) - reader = open_reader(print_event, ports=ports, + reader = open_reader(on_event, ports=ports, heartbeat_interval=args.heartbeat, on_error=report_error) if reader is None: + led.close() print("\nx Could not open any serial port. Check:", file=sys.stderr) print(" 1. the reader is connected (rdm-card-reader --list-ports)", file=sys.stderr) @@ -308,6 +373,7 @@ def main(argv: Optional[Sequence[str]] = None) -> int: reader.close() except Exception: pass + led.close() return EXIT_OK diff --git a/src/rdm_card_reader/led.py b/src/rdm_card_reader/led.py new file mode 100644 index 0000000..94fa84a --- /dev/null +++ b/src/rdm_card_reader/led.py @@ -0,0 +1,314 @@ +"""Drive a status LED from card events. + +The workstation app lit an LED (GPIO 23) with the card: on when a card was +inserted, off when it was removed. This reproduces that, with three deliberate +differences: + +* It never blocks the reader. WMT toggled the LED and slept on the reader + thread, which stalls card detection; here every change is queued to a worker. +* It cannot crash the process. On a machine without GPIO, turning the LED on + raises ``BadPinFactory``. WMT worked around this with a ``DummyLED``; this + keeps the same idea but also handles a pin that disappears at runtime. +* It is explicit. Whether an LED is actually attached is reported, so "no light + came on" is distinguishable from "the card was not read". + +The default pin (23) matches the workstation app. **Use a separate LED from the +workstation's if both run on one device**, since two processes driving one pin +will fight. +""" + +from __future__ import annotations + +import queue +import threading +from dataclasses import dataclass +from typing import Any, Callable, Optional + +#: GPIO pin of the status LED. Chosen to match the workstation app. +DEFAULT_LED_PIN = 23 + +#: How long to hold an error indication, in seconds. +ERROR_BLINK_SECONDS = 1.0 + +OFF = "off" +ON = "on" +BLINK = "blink" + +#: Lit the whole time the app runs, and blinks on a bad read. This is a health +#: indicator: light on means the reader is alive and ready for a card. +ERROR = "error" + +#: Lit only while a card is on the reader, and off otherwise. This is a card +#: indicator, for when the light should mean "a card is here". +PRESENCE = "presence" + +MODES = (ERROR, PRESENCE) + +#: Kept for the occasional caller that only cares about the concrete commands. +_VALID_MODES = (OFF, ON, BLINK) + + +@dataclass +class LEDStatus: + """What the LED subsystem is actually doing.""" + + enabled: bool + pin: Optional[int] + backend: str # "gpiozero" | "null" + mode: str = ERROR + state: bool = False + reason: str = "" + + def to_dict(self) -> dict: + return { + "enabled": self.enabled, + "pin": self.pin, + "backend": self.backend, + "mode": self.mode, + "state": "on" if self.state else "off", + "reason": self.reason, + } + + +class NullLED: + """A LED that does nothing, used when there is no usable GPIO. + + Kept deliberately quiet: the reason it is inert is reported once at + startup, not on every card. + """ + + backend = "null" + + def __init__(self, pin: Optional[int], reason: str = ""): + self.pin = pin + self.reason = reason + + def on(self) -> None: + pass + + def off(self) -> None: + pass + + def close(self) -> None: + pass + + +class GPIOLED: + """A real LED on a GPIO pin, via gpiozero.""" + + backend = "gpiozero" + + def __init__(self, pin: int, active_high: bool = True): + from gpiozero import LED as _LED + + self.pin = pin + self._led = _LED(pin, active_high=active_high) + self._is_on = False + + def on(self) -> None: + self._led.on() + self._is_on = True + + def off(self) -> None: + self._led.off() + self._is_on = False + + def close(self) -> None: + try: + self._led.close() + except Exception: + pass + + +class _Blinker(threading.Thread): + """Repeatedly toggles a LED, for an error indication.""" + + def __init__(self, led: Any, period: float = 0.15): + super().__init__(daemon=True, name="led-blink") + self._led = led + self._period = period + self._stop = threading.Event() + + def run(self) -> None: + state = False + while not self._stop.is_set(): + try: + self._led.on() if state else self._led.off() + except Exception: + return + state = not state + self._stop.wait(self._period) + try: + self._led.off() + except Exception: + pass + + def stop(self) -> None: + self._stop.set() + + +class StatusLED: + """Non-blocking LED controller driven by card events. + + Commands are queued and applied by a worker thread, so calling :meth:`insert` + from the reader callback never blocks card detection. + """ + + def __init__( + self, + pin: int = DEFAULT_LED_PIN, + enabled: bool = True, + mode: str = ERROR, + active_high: bool = True, + error_blink: bool = True, + logger: Optional[Callable[[str], None]] = None, + ): + self._log = logger or (lambda message: None) + self._mode = mode if mode in MODES else ERROR + self._error_blink = error_blink + self._enabled = enabled + self._blinker: Optional[_Blinker] = None + self._state = False + + self._queue: "queue.Queue[Optional[str]]" = queue.Queue() + self._thread: Optional[threading.Thread] = None + + if not enabled: + self.led: Any = NullLED(None, "LED disabled (--no-led)") + self.status = LEDStatus(False, None, "null", self._mode, False, + "disabled") + return + + # Check the library separately from building the pin. + # + # gpiozero raises BadPinFactory when no pin provider works, and that is + # a subclass of ImportError, so catching ImportError around the pin + # construction would report "gpiozero is not installed" even when it is + # installed and simply has no usable pin library. On a Pi missing lgpio + # or RPi.GPIO that message sends you to the wrong fix. + try: + import gpiozero # noqa: F401 + except ImportError as exc: + reason = "gpiozero not installed: {}".format(exc) + self.led = NullLED(pin, reason) + self.status = LEDStatus(False, pin, "null", self._mode, False, + reason) + self._log("LED unavailable: {}".format(reason)) + else: + try: + self.led = GPIOLED(pin, active_high=active_high) + self.status = LEDStatus(True, pin, "gpiozero", self._mode, + False, "ready") + self._log("LED on GPIO {} ({} mode, gpiozero)".format( + pin, self._mode)) + except Exception as exc: + # No usable pin factory (not a Pi), pin already in use, bad pin. + reason = ("no usable GPIO on pin {}: {}".format(pin, exc)) + self.led = NullLED(pin, reason) + self.status = LEDStatus(False, pin, "null", self._mode, False, + reason) + self._log("LED unavailable: {}".format(reason)) + + if self.status.enabled and self._mode == ERROR: + # A health indicator shows 'alive' immediately. In presence mode the + # light means 'a card is here', so it must stay dark until one is. + self.led.on() + self._set_state(True) + self.status.state = True + + self._thread = threading.Thread(target=self._worker, daemon=True, + name="led-worker") + self._thread.start() + + # -- event hooks ------------------------------------------------------ + + def insert(self) -> None: + """A valid card was read: off in 'error' mode, on in 'presence' mode.""" + self._send(OFF if self._mode == ERROR else ON) + + def remove(self) -> None: + """The card left the reader: dark in 'presence' mode; 'error' mode stays on.""" + self._send(ON if self._mode == ERROR else OFF) + + def error(self) -> None: + """A bad read: blink, if blinking is enabled.""" + self._send(BLINK if self._error_blink else ON) + + # -- control ---------------------------------------------------------- + + def _send(self, command: str) -> None: + if not self.status.enabled: + return + try: + self._queue.put_nowait(command) + except Exception: + pass + + def _worker(self) -> None: + while True: + command = self._queue.get() + if command is None: + return + try: + self._apply(command) + except Exception as exc: + # A failed toggle must never take the reader down. + self._log("LED update failed: {}".format(exc)) + finally: + self._queue.task_done() + + def _apply(self, command: str) -> None: + # Blinking is used only for a bad read, and only by 'error' mode. + if command == BLINK and self._mode == ERROR: + self._stop_blink() + self._blinker = _Blinker(self.led) + self._blinker.start() + return + + self._stop_blink() # a steady command cancels any blink + + # Two readings of the light, hence two modes: + # error - a health indicator: lit the whole time the reader runs, + # so "light on" means "ready for a card". + # presence - a card indicator: lit only while a card is on the reader. + if command == OFF: + self.led.off() + self._set_state(False) + elif command == ON: + self.led.on() + self._set_state(True) + + def _stop_blink(self) -> None: + if self._blinker is not None: + self._blinker.stop() + self._blinker = None + + def _set_state(self, value: bool) -> None: + self._state = value + self.status.state = value + + def close(self) -> None: + self._stop_blink() + if self._thread is not None: + self._queue.put(None) + try: + self.led.off() + except Exception: + pass + self._set_state(False) + try: + self.led.close() + except Exception: + pass + + +def create( + enabled: bool = True, + pin: int = DEFAULT_LED_PIN, + mode: str = ERROR, + error_blink: bool = True, + logger: Optional[Callable[[str], None]] = None, +) -> StatusLED: + """Build the LED controller, degrading to a no-op when GPIO is unusable.""" + return StatusLED(pin=pin, enabled=enabled, mode=mode, + error_blink=error_blink, logger=logger) diff --git a/src/rdm_card_reader/wheels/SHA256SUMS b/src/rdm_card_reader/wheels/SHA256SUMS index 296ea5b..b57b74a 100644 --- a/src/rdm_card_reader/wheels/SHA256SUMS +++ b/src/rdm_card_reader/wheels/SHA256SUMS @@ -1,2 +1,4 @@ +0e60d743a6b8071498a56465f7719c96a5e92928f858bab1be2a0d606c9aa0f8 colorzero-2.0-py2.py3-none-any.whl +d491734803a9bc6036602e6b8bbd73fb25c33da88de0fcd11a40e890b8bc2d3b gpiozero-2.0.1.post3-py3-none-any.whl c4451db6ba391ca6ca299fb3ec7bae67a5c55dde170964c7a14ceefec02f2cf0 pyserial-3.5-py2.py3-none-any.whl afb067da8b8d23a477138ca67d4ff1d198f12d157b64668c9dd3cbd7df54e74e rdm6300-0.1.1-py3-none-any.whl diff --git a/src/rdm_card_reader/wheels/colorzero-2.0-py2.py3-none-any.whl b/src/rdm_card_reader/wheels/colorzero-2.0-py2.py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..d37236d13dbb7c5d9f281f784d868597e5311db3 GIT binary patch literal 26573 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 he<;t@+P?{|{6A59t5^ literal 0 HcmV?d00001 diff --git a/src/rdm_card_reader/wheels/gpiozero-2.0.1.post3-py3-none-any.whl b/src/rdm_card_reader/wheels/gpiozero-2.0.1.post3-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..61ea379866ff70c259719af391bc820a12594d59 GIT binary patch literal 151465 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ℜgE6SwK@b3dX3 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.1.1")], ) - def fake_install(requirements, wheel_dir=None, logger=None, timeout=300): + def fake_install(requirements, wheel_dir=None, logger=None, timeout=300, no_deps=False): state["installed"] = True return True @@ -169,7 +169,7 @@ def test_wheel_dir_is_passed_through(monkeypatch): lambda packages=None: [] if seen.get("done") else [("x", "x>=1")], ) - def fake_install(requirements, wheel_dir=None, logger=None, timeout=300): + def fake_install(requirements, wheel_dir=None, logger=None, timeout=300, no_deps=False): seen["wheel_dir"] = wheel_dir seen["done"] = True return True @@ -190,7 +190,7 @@ def test_incomplete_explicit_wheel_dir_is_flagged(monkeypatch): lambda packages=None: [] if seen.get("done") else [("x", "x>=1")], ) - def fake_install(requirements, wheel_dir=None, logger=None, timeout=300): + def fake_install(requirements, wheel_dir=None, logger=None, timeout=300, no_deps=False): seen["done"] = True return True diff --git a/tests/test_e2e_led.py b/tests/test_e2e_led.py new file mode 100644 index 0000000..0aec5a8 --- /dev/null +++ b/tests/test_e2e_led.py @@ -0,0 +1,209 @@ +"""End-to-end: a real card read must drive the LED on and off. + +Uses a pseudo-terminal for the reader and a fake pin for the LED, so the whole +chain runs — serial frame -> card event -> LED worker -> pin state — without a +Pi and without GPIO hardware. +""" + +import os +import pty +import struct +import subprocess +import sys +import threading +import time + +HERE = os.path.dirname(os.path.abspath(__file__)) +PROJECT = os.path.dirname(HERE) +VENV_PY = os.path.join(PROJECT, ".venv", "bin", "python") +PYTHON = VENV_PY if os.path.exists(VENV_PY) else sys.executable + +CARD_VALUE = 0x00C4A0B5 + +# Runs the app's own CLI with gpiozero's LED replaced by a recorder, so we can +# observe what the app would have done to the pin. +DRIVER = r''' +import os, sys, threading, time, json + +sys.path.insert(0, os.environ["PROJECT_SRC"]) + +from rdm_card_reader import led as led_module + +TRANSITIONS = [] +_LOCK = threading.Lock() + + +class RecordingLED: + def __init__(self, pin=None, active_high=True): + self.pin = pin + self._state = False + + def _record(self, value): + self._state = value + with _LOCK: + TRANSITIONS.append(value) + # Write through immediately: the test terminates this process, so + # anything buffered for the end would be lost. + sys.stderr.write("TRANSITION=" + value + "\n") + sys.stderr.flush() + + def on(self): + self._record("on") + + def off(self): + self._record("off") + + def close(self): + pass + + +class FakeGPIOLED(led_module.GPIOLED): + def __init__(self, pin, active_high=True): + self.pin = pin + self._led = RecordingLED(pin, active_high) + self._is_on = False + + def on(self): + self._led.on() + self._is_on = True + + def off(self): + self._led.off() + self._is_on = False + + def close(self): + self._led.close() + + +led_module.GPIOLED = FakeGPIOLED + +from rdm_card_reader.cli import main + +code = main(["--port", os.environ["SERIAL_PORT"], "--heartbeat", "0.3", + "--led-mode", os.environ.get("LED_MODE", "error"), "--json"]) +sys.exit(code) +''' + + +def em4100_frame(value, card_type=0x0F): + id_bytes = struct.pack(">I", value) + checksum = card_type + for b in id_bytes: + checksum ^= b + frame = (bytes([card_type]) + id_bytes + bytes([checksum])).hex().upper() + assert len(frame) == 12, frame + return frame.encode("ascii") + + +def pump(stream, sink): + """Read a stream on its own thread. + + Text-mode pipes buffer, so select() would not report this data. + """ + for line in stream: + sink.append(line.rstrip()) + + +def run_case(mode): + """Drive a card through the app and return (events, led transitions).""" + master, slave = pty.openpty() + serial_port = os.ttyname(slave) + + env = dict(os.environ) + env["SERIAL_PORT"] = serial_port + env["PROJECT_SRC"] = os.path.join(PROJECT, "src") + env["LED_MODE"] = mode + env.pop("PYTHONPATH", None) + + proc = subprocess.Popen( + [PYTHON, "-u", "-c", DRIVER], + cwd=PROJECT, env=env, stdout=subprocess.PIPE, stderr=subprocess.PIPE, + text=True, bufsize=1, + ) + + stdout, stderr = [], [] + t1 = threading.Thread(target=pump, args=(proc.stdout, stdout), daemon=True) + t2 = threading.Thread(target=pump, args=(proc.stderr, stderr), daemon=True) + t1.start() + t2.start() + + frame = em4100_frame(CARD_VALUE) + try: + time.sleep(2.0) # let the reader open the port + for _ in range(6): # card present + os.write(master, b"\x02" + frame + b"\x03") + time.sleep(0.1) + time.sleep(1.2) # stop writing -> card removed + finally: + try: + proc.terminate() + except Exception: + pass + try: + proc.wait(timeout=5) + except Exception: + proc.kill() + for t in (t1, t2): + t.join(timeout=3) + try: + os.close(master) + os.close(slave) + except Exception: + pass + + transitions = [ + line.split("=", 1)[1] + for line in stderr + if line.startswith("TRANSITION=") + ] + return stdout, stderr, transitions + + +def main(): + failures = 0 + + # --- error mode: lit while running, dark while a card is read ---------- + stdout, stderr, transitions = run_case("error") + print("======== error mode ========") + for line in stdout[:2]: + print(" " + line) + print(" events: {}".format( + [l.split('"event": "')[1].split('"')[0] + for l in stdout if '"event"' in l])) + print(" transitions: {}".format(transitions)) + + checks = { + "card was read": any("card_inserted" in l for l in stdout), + "card removal seen": any("card_removed" in l for l in stdout), + "lit at startup": transitions[:1] == ["on"], + "dark while reading": "off" in transitions, + "lit again after": transitions[-1:] == ["on"], + } + + # --- presence mode: dark until a card arrives ------------------------- + stdout2, stderr2, transitions2 = run_case("presence") + print("\n======== presence mode ========") + print(" transitions: {}".format(transitions2)) + checks.update({ + "presence: read still works": + any("card_inserted" in l for l in stdout2), + "presence: dark at startup": transitions2[:1] == ["on"] or not transitions2, + "presence: lit on the card": "on" in transitions2, + "presence: dark after": transitions2[-1:] == ["off"], + }) + + print() + ok = True + for name, passed in checks.items(): + print(" [{}] {}".format("PASS" if passed else "FAIL", name)) + ok = ok and bool(passed) + + if not ok: + failures = 1 + print("\n--- driver stderr (error mode) ---") + print("\n".join(stderr)[:1200]) + return failures + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/tests/test_led.py b/tests/test_led.py new file mode 100644 index 0000000..8b52de2 --- /dev/null +++ b/tests/test_led.py @@ -0,0 +1,306 @@ +"""Tests for the status LED. + +Two things matter: the LED must never be able to break the reader, and it must +behave the way the workstation app did (on with the card, off without). Real +GPIO is unavailable here, so a fake pin is injected to test the logic. +""" + +import os +import sys +import threading +import time + +SRC = os.path.join( + os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "src" +) +if SRC not in sys.path: + sys.path.insert(0, SRC) + +import pytest # noqa: E402 + +from rdm_card_reader import led as led_module # noqa: E402 +from rdm_card_reader.led import ( # noqa: E402 + BLINK, + DEFAULT_LED_PIN, + ERROR, + OFF, + ON, + PRESENCE, + NullLED, + StatusLED, + create, +) + + +class FakeLED: + """Stands in for gpiozero.LED, recording what it was told to do.""" + + def __init__(self, pin, active_high=True): + self.pin = pin + self.active_high = active_high + self.state = False + self.transitions = [] + self.closed = False + + def on(self): + self.state = True + self.transitions.append("on") + + def off(self): + self.state = False + self.transitions.append("off") + + def close(self): + self.closed = True + + +@pytest.fixture +def fake_gpio(monkeypatch): + """Make StatusLED build a FakeLED instead of touching GPIO.""" + created = {} + + class FakeGPIOLED(led_module.GPIOLED): + def __init__(self, pin, active_high=True): + self.pin = pin + self._led = FakeLED(pin, active_high) + self._is_on = False + created["led"] = self._led + + def on(self): + self._led.on() + self._is_on = True + + def off(self): + self._led.off() + self._is_on = False + + def close(self): + self._led.close() + + monkeypatch.setattr(led_module, "GPIOLED", FakeGPIOLED) + return created + + +def wait_for_state(led_obj, expected, timeout=3.0): + """Wait for the worker thread to apply a command.""" + deadline = time.time() + timeout + while time.time() < deadline: + if led_obj.state is expected: + return True + time.sleep(0.01) + return False + + +# -- defaults --------------------------------------------------------------- + +def test_default_pin_matches_the_workstation_app(): + assert DEFAULT_LED_PIN == 23 + + +# -- graceful degradation --------------------------------------------------- + +def test_no_gpio_gives_a_working_no_op(monkeypatch): + """On a machine without GPIO the LED must be inert, not fatal.""" + def boom(pin, active_high=True): + raise RuntimeError("Unable to load any default pin factory!") + + monkeypatch.setattr(led_module, "GPIOLED", boom) + status = StatusLED(pin=23) + assert status.status.enabled is False + assert status.status.backend == "null" + # Every hook must still be safe to call. + status.insert() + status.remove() + status.error() + status.close() + + +def test_missing_gpiozero_is_reported_not_raised(monkeypatch): + """gpiozero absent: say so, and do not raise.""" + import builtins + + real_import = builtins.__import__ + + def blocked(name, *args, **kwargs): + if name == "gpiozero": + raise ImportError("No module named 'gpiozero'") + return real_import(name, *args, **kwargs) + + monkeypatch.setattr(builtins, "__import__", blocked) + status = StatusLED(pin=23) + assert status.status.enabled is False + assert "not installed" in status.status.reason + + +def test_no_pin_factory_is_not_reported_as_missing_library(monkeypatch): + """BadPinFactory subclasses ImportError, so the two must be distinguished. + + Reporting 'gpiozero is not installed' when it is installed but has no + usable pin library would send you to the wrong fix. + """ + class FakeBadPinFactory(ImportError): + pass + + def boom(pin, active_high=True): + raise FakeBadPinFactory( + "Unable to load any default pin factory!" + ) + + monkeypatch.setattr(led_module, "GPIOLED", boom) + status = StatusLED(pin=23) + assert status.status.enabled is False + assert "not installed" not in status.status.reason + assert "pin factory" in status.status.reason + + +def test_disabled_led_is_inert(fake_gpio): + status = StatusLED(pin=23, enabled=False) + assert status.status.enabled is False + assert isinstance(status.led, NullLED) + status.insert() + time.sleep(0.05) + assert "led" not in fake_gpio + + +def test_null_led_methods_are_safe(): + null = NullLED(23, "no gpio") + null.on() + null.off() + null.close() + + +# -- behaviour -------------------------------------------------------------- + +def test_error_mode_lights_up_at_startup(fake_gpio): + """A health indicator should show 'alive' without waiting for a card.""" + status = StatusLED(pin=23, mode=ERROR) + assert fake_gpio["led"].state is True + status.close() + + +def test_error_mode_blinks_on_a_bad_read(fake_gpio): + status = StatusLED(pin=23, mode=ERROR, error_blink=True) + status.error() + time.sleep(0.25) + assert len(fake_gpio["led"].transitions) >= 2 + status.close() + + +def test_error_mode_settles_back_after_a_blink(fake_gpio): + status = StatusLED(pin=23, mode=ERROR, error_blink=True) + status.error() + time.sleep(0.25) + status.remove() # any steady command cancels blinking + assert wait_for_state(fake_gpio["led"], True) + status.close() + + +def test_error_mode_without_blink_stays_lit(fake_gpio): + status = StatusLED(pin=23, mode=ERROR, error_blink=False) + status.error() + assert wait_for_state(fake_gpio["led"], True) + status.close() + + +def test_presence_mode_is_dark_until_a_card_arrives(fake_gpio): + status = StatusLED(pin=23, mode=PRESENCE) + assert fake_gpio["led"].state is False + status.insert() + assert wait_for_state(fake_gpio["led"], True) + status.remove() + assert wait_for_state(fake_gpio["led"], False) + status.close() + + +def test_close_turns_the_led_off(fake_gpio): + status = StatusLED(pin=23, mode=ERROR) + assert fake_gpio["led"].state is True + status.close() + assert fake_gpio["led"].closed is True + assert fake_gpio["led"].state is False + + +def test_pin_and_active_high_are_passed_through(fake_gpio): + status = StatusLED(pin=17, active_high=False) + assert fake_gpio["led"].pin == 17 + assert fake_gpio["led"].active_high is False + status.close() + + +# -- never blocks or crashes ------------------------------------------------ + +def test_insert_does_not_block(monkeypatch): + """The reader thread calls this, so it must return immediately.""" + class SlowLED(led_module.GPIOLED): + def __init__(self, pin, active_high=True): + self.pin = pin + self._is_on = False + + def on(self): + time.sleep(0.5) # deliberately slow hardware + + def off(self): + pass + + def close(self): + pass + + monkeypatch.setattr(led_module, "GPIOLED", SlowLED) + # mode=presence so the startup light-up does not pay the slow 'on' cost + status = StatusLED(pin=23, mode=PRESENCE) + start = time.time() + for _ in range(20): + status.insert() + elapsed = time.time() - start + assert elapsed < 0.2, "insert() blocked for {:.2f}s".format(elapsed) + status.close() + + +def test_failing_toggle_does_not_raise(fake_gpio, monkeypatch): + """A dead pin must not take the reader down.""" + status = StatusLED(pin=23) + assert fake_gpio["led"] is not None + + def boom(): + raise OSError("pin went away") + + monkeypatch.setattr(status.led, "on", boom) + status.insert() + time.sleep(0.15) # worker swallows the error + status.close() # and close() still works + + +def test_hardware_error_is_reported_to_the_logger(monkeypatch): + lines = [] + + def boom(pin, active_high=True): + raise RuntimeError("no pin factory") + + monkeypatch.setattr(led_module, "GPIOLED", boom) + StatusLED(pin=23, logger=lines.append) + assert any("LED unavailable" in line for line in lines) + + +# -- factory ---------------------------------------------------------------- + +def test_create_defaults_to_error_mode_on_the_workstation_pin(fake_gpio): + status = create() + assert status.status.enabled is True + assert status.status.pin == DEFAULT_LED_PIN + assert status.status.mode == ERROR + status.close() + + +def test_create_disabled_returns_a_no_op(): + status = create(enabled=False) + assert status.status.enabled is False + status.close() + + +def test_status_dict_is_json_serialisable(fake_gpio): + import json + + status = create() + payload = json.dumps(status.status.to_dict()) + assert "gpiozero" in payload + status.close() diff --git a/tests/test_wheels.py b/tests/test_wheels.py index be3a439..48cfd40 100644 --- a/tests/test_wheels.py +++ b/tests/test_wheels.py @@ -142,7 +142,7 @@ def test_bundled_wheels_used_automatically(monkeypatch): lambda packages=None: [] if seen.get("done") else [("rdm6300", "rdm6300>=0.1.1")], ) - def fake_install(requirements, wheel_dir=None, logger=None, timeout=300): + def fake_install(requirements, wheel_dir=None, logger=None, timeout=300, no_deps=False): seen["wheel_dir"] = wheel_dir seen["done"] = True return True @@ -168,7 +168,7 @@ def test_tampered_bundle_falls_back_to_pypi(monkeypatch, tmp_path): lambda packages=None: [] if seen.get("done") else [("rdm6300", "rdm6300>=0.1.1")], ) - def fake_install(requirements, wheel_dir=None, logger=None, timeout=300): + def fake_install(requirements, wheel_dir=None, logger=None, timeout=300, no_deps=False): seen["wheel_dir"] = wheel_dir seen["done"] = True return True @@ -192,7 +192,7 @@ def test_explicit_wheel_dir_overrides_bundled(monkeypatch, tmp_path): lambda packages=None: [] if seen.get("done") else [("rdm6300", "rdm6300>=0.1.1")], ) - def fake_install(requirements, wheel_dir=None, logger=None, timeout=300): + def fake_install(requirements, wheel_dir=None, logger=None, timeout=300, no_deps=False): seen["wheel_dir"] = wheel_dir seen["done"] = True return True @@ -216,7 +216,7 @@ def test_bundle_not_covering_a_requirement_falls_back(monkeypatch, tmp_path): else [("rdm6300", "rdm6300>=0.1.1"), ("serial", "pyserial>=3.5")], ) - def fake_install(requirements, wheel_dir=None, logger=None, timeout=300): + def fake_install(requirements, wheel_dir=None, logger=None, timeout=300, no_deps=False): seen["wheel_dir"] = wheel_dir seen["wheel_dir_at_call"] = wheel_dir seen["done"] = True