diff --git a/.gitignore b/.gitignore index 5c46ac8..9c24fab 100644 --- a/.gitignore +++ b/.gitignore @@ -130,3 +130,4 @@ dmypy.json *.swp dcc/media +arduino/CommandStation-EX/build/ diff --git a/daemons/Dockerfile b/daemons/Dockerfile new file mode 100644 index 0000000..da0fd6f --- /dev/null +++ b/daemons/Dockerfile @@ -0,0 +1,8 @@ +FROM python:3.10-alpine + +RUN mkdir /opt/dcc && pip -q install pyserial +ADD net-to-serial.py config.ini /opt/dcc + +EXPOSE 2560/tcp + +CMD ["python3", "/opt/dcc/net-to-serial.py"] diff --git a/daemons/net-to-serial.py b/daemons/net-to-serial.py old mode 100644 new mode 100755 index d97aa05..013ff7d --- a/daemons/net-to-serial.py +++ b/daemons/net-to-serial.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python3 import logging import serial import asyncio diff --git a/daemons/simulator/CommandStation-EX-uno-00e3c80.elf b/daemons/simulator/CommandStation-EX-uno-00e3c80.elf new file mode 100644 index 0000000..4ead546 Binary files /dev/null and b/daemons/simulator/CommandStation-EX-uno-00e3c80.elf differ diff --git a/daemons/simulator/Dockerfile b/daemons/simulator/Dockerfile new file mode 100644 index 0000000..0833550 --- /dev/null +++ b/daemons/simulator/Dockerfile @@ -0,0 +1,7 @@ +FROM dcc/net-to-serial + +RUN apk update && apk add qemu-system-avr && mkdir /io +ADD start.sh /opt/dcc +ADD CommandStation-EX-uno-*.elf /io + +CMD ["/bin/sh", "/opt/dcc/start.sh"] diff --git a/daemons/simulator/README.md b/daemons/simulator/README.md new file mode 100644 index 0000000..e387f74 --- /dev/null +++ b/daemons/simulator/README.md @@ -0,0 +1,6 @@ +# AVR Simulator + +```bash +$ podman build -t dcc/net-to-serial:sim . +$ podman run -d -p2560:2560 dcc/net-to-serial:sim +``` diff --git a/daemons/simulator/start.sh b/daemons/simulator/start.sh new file mode 100755 index 0000000..be9abc1 --- /dev/null +++ b/daemons/simulator/start.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +PTY=0 + +if [ -c /dev/pts/0 ]; then + PTY=1 +fi + +sed -i "s/ttyACM0/pts\/${PTY}/" /opt/dcc/config.ini + +qemu-system-avr -machine uno -bios /io/CommandStation-EX-uno-*.elf -serial pty -daemonize +/opt/dcc/net-to-serial.py