Nice Work
This commit is contained in:
@@ -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
|
||||
@@ -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
|
||||
@@ -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()
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user