Nice Work

This commit is contained in:
2026-01-13 19:44:02 +00:00
parent b503b372b4
commit 0718377b27
144 changed files with 15587 additions and 2132 deletions
View File
+10
View File
@@ -0,0 +1,10 @@
"""Base button interface."""
from __future__ import annotations
from typing import Protocol
class BaseButtons(Protocol):
def poll(self) -> str | None:
raise NotImplementedError
+10
View File
@@ -0,0 +1,10 @@
"""Base NFC reader interface."""
from __future__ import annotations
from typing import Protocol
class BaseNFC(Protocol):
def read_tag(self) -> str | None:
raise NotImplementedError
+20
View File
@@ -0,0 +1,20 @@
"""Mock buttons for Phase 1a."""
from __future__ import annotations
from collections import deque
from hardware.base_buttons import BaseButtons
class MockButtons(BaseButtons):
def __init__(self) -> None:
self._queue: deque[str] = deque()
def enqueue(self, button_id: str) -> None:
self._queue.append(button_id)
def poll(self) -> str | None:
if not self._queue:
return None
return self._queue.popleft()
+18
View File
@@ -0,0 +1,18 @@
"""Mock NFC reader for Phase 1a."""
from __future__ import annotations
from hardware.base_nfc import BaseNFC
class MockNFC(BaseNFC):
def __init__(self) -> None:
self._next_uid: str | None = None
def set_next_uid(self, uid: str | None) -> None:
self._next_uid = uid
def read_tag(self) -> str | None:
uid = self._next_uid
self._next_uid = None
return uid