Commit 24535879 authored by Jakob Moser's avatar Jakob Moser
Browse files

Return card UID as single int

parent 46797454
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
from __future__ import annotations

from collections.abc import Callable, Sequence
from collections.abc import Callable
from typing import Protocol


class CardReader(Protocol):
    def read_id(self) -> Sequence[int]:
    def read_id(self) -> int:
        """
        Read the UID of the MIFARE Ultralight card that is presented.

+2 −2
Original line number Diff line number Diff line
@@ -32,10 +32,10 @@ class Mfrc522CardReader(CardReader):
    def __init__(self) -> None:
        self._reader = SimpleMFRC522()

    def read_id(self) -> Sequence[int]:
    def read_id(self) -> int:
        card_id, content = self._reader.read()

        return split_to_bytes(card_id)
        return card_id

    def on_card_presented(self, handle_card: Callable[[CardReader], None]) -> None:
        raise NotImplementedError()
+4 −2
Original line number Diff line number Diff line
@@ -9,7 +9,7 @@ class Pirc522CardReader(CardReader):
    def __init__(self) -> None:
        self._reader = RFID(pin_irq=None)

    def read_id(self) -> Sequence[int]:
    def read_id(self) -> int:
        # TODO Cleanup implementation
        (error, anticoll_uid) = self._reader.anticoll()
        uid = tuple(self._reader.read_id())
@@ -19,7 +19,9 @@ class Pirc522CardReader(CardReader):
        print("Anticoll UID: ", [hex(i) for i in anticoll_uid])
        print("Anticoll successful: ", not error)

        return uid
        # Merge list of bytes together into one single (big-endian) byte, by shifting
        # the bytes the appropriate amount of positions, and adding this all up.
        return sum(byte << 8*index for index, byte in enumerate(reversed(uid)))

        # TODO See if we can do something with this code
        r = self._reader.select_tag(anticoll_uid)