Verified Commit 388f5d46 authored by Jakob Moser's avatar Jakob Moser
Browse files

Add --mock option to main script

parent 5654e8ce
Loading
Loading
Loading
Loading
Loading
+32 −6
Changes for poolpay/__main__.py: 32 added lines, 6 removed lines.
Original line number Diff line number Diff line
import argparse
import logging
import signal
from pathlib import Path
@@ -6,11 +7,8 @@ from types import FrameType

from poolpay import db, paths
from poolpay.card.CardReaderException import CardReaderException
from poolpay.card.Pirc522CardReader import Pirc522CardReader
from poolpay.director.Director import Director
from poolpay.display.PygameDisplay import PygameDisplay
from poolpay.model.messages.decode import decode
from poolpay.touch.EvdevTouchScreen import EvdevTouchScreen
from poolpay.ui.pygame.play import play
from poolpay.wire.Packet import Packet
from poolpay.wire.Server import Server
@@ -19,16 +17,44 @@ logging.basicConfig(
    level=logging.DEBUG, format="[%(levelname)s] <%(module)s.%(funcName)s> %(message)s"
)


def _get_args() -> argparse.Namespace:
    parser = argparse.ArgumentParser(prog="uv run -m poolpay")
    parser.add_argument(
        "--mock",
        action="store_true",
        help="Simulate display, touch screen and card reader",
    )
    return parser.parse_args()


args = _get_args()

logging.info("Starting PoolPay")
logging.info("Creating Vault, Display and Director")
logging.info("Creating Display, Touch Screen and Director")

if args.mock:
    from poolpay.card.MockCardReader import MockCardReader
    from poolpay.display.PygameMockDisplay import PygameMockDisplay
    from poolpay.touch.MockTouchScreen import MockTouchScreen

    display = PygameMockDisplay(Path("/dev/null"), width=480, height=320)
    touch_screen = MockTouchScreen()
else:
    from poolpay.card.Pirc522CardReader import Pirc522CardReader
    from poolpay.display.PygameDisplay import PygameDisplay
    from poolpay.touch.EvdevTouchScreen import EvdevTouchScreen

    display = PygameDisplay(Path("/dev/fb1"), width=480, height=320)
    touch_screen = EvdevTouchScreen(Path("/dev/input/event0"))

director = Director(play, display)


def _initialize_card_reader_and_run() -> None:
    logging.info("Initializing Pirc522CardReader")
    with Pirc522CardReader() as card_reader:
    CardReader = MockCardReader if args.mock else Pirc522CardReader
    logging.info(f"Initializing {CardReader.__name__}")
    with CardReader() as card_reader:
        logging.info("Registering card removal handler")
        card_reader.on_card_removed(lambda reader: director.card_removed())