# Changelog Alle wesentlichen Änderungen am Projekt werden in dieser Datei dokumentiert. ## [Unreleased] ### Added - Implementierung der seriellen Schnittstellenschicht unter `internal/serial` - Verwendung von `go.bug.st/serial v1.7.1` für die Ansteuerung der seriellen Schnittstellen - Konfigurationsunterstützung für Baudrate, Datenbits, Parität und Stopbits - Öffnen und Schließen serieller Schnittstellen über die interne Serial-Abstraktion - Lesen und Schreiben von RS232-Daten über die Serial-Abstraktion - Dynamische TCP-Data-Listener für konfigurierte Geräte - Session-Verwaltung für dynamische Data-Listener - Session-Verwaltung für aktive DataConnections - Bidirektionale Datenübertragung zwischen TCP und RS232 - Öffnen der seriellen Schnittstelle erst beim Aufbau einer tatsächlichen Data-Verbindung - Begrenzung auf eine aktive Data-Verbindung pro konfiguriertem Gerät - Integrationstest mit virtuellen seriellen Schnittstellen über `socat` - Tests für TCP → RS232 und RS232 → TCP - Tests für Session-Reconnect und Ressourcenverwaltung ### Changed - Go-Version des Projektes auf Go `1.25.0` aktualisiert - `go.bug.st/serial` wird in Version `v1.7.1` verwendet - `golang.org/x/sys v0.43.0` wird als indirekte Abhängigkeit verwendet - Die Serial-Bibliothek `go.bug.st/serial` wurde zusätzlich auf dem privaten Git-Server des Projektes als Ausfallsicherung gespiegelt: `git.lang-dieter.de/third-party/go-serial` - Der `DataListener` wurde nebenläufigkeitssicher implementiert - Das Schließen eines `DataListener` kann gleichzeitig mit einem laufenden `Accept()` erfolgen ### Tests - `go test ./...` erfolgreich - `go test -race ./...` erfolgreich - Race Condition im `DataListener` erkannt und behoben ### Status Die grundlegende Server-seitige TCP-/RS232-Datenübertragung ist implementiert und durch automatisierte Tests abgesichert. Der Datenpfad ist derzeit: ```text TCP-Control-Verbindung │ ▼ Session │ ▼ dynamischer Data-Port │ ▼ TCP-Data-Verbindung │ ▼ internal/serial │ ▼ RS232-Gerät ``` Die Client-seitige Bereitstellung einer virtuellen seriellen Schnittstelle ist noch nicht implementiert. --- ## [0.0.1] - 2026-08-09 ### Added - Grundstruktur des Projektes `rs2322tcp` - Go-Modul `git.lang-dieter.de/rs2322tcp` - separates Programmgerüst für `rs2322tcp-client` - separates Programmgerüst für `rs2322tcp-server` - gemeinsame Versionierungsinformationen - Git-basierte Build-Informationen - zentrales Build-Skript `scripts/build.sh` - automatische Quellcode-Formatierung beim Build - automatische Tests beim Build - SHA256-Prüfsummen der erzeugten Binärdateien - `.gitignore` für Build- und Entwicklungsdateien - erste Projekt- und Architekturdokumentation ### Build-Ziele Der erste Build unterstützt: - Linux amd64 – Client und Server - Linux arm64 – Server - Windows amd64 – Client ### Architekturentscheidungen - TCP wird für die Übertragung der RS232-Daten verwendet. - Windows und Linux werden als gleichberechtigte Client-Plattformen betrachtet. - Der Server ist zunächst für den Raspberry Pi 5 vorgesehen. - Tailscale wird als vertrauenswürdiges Netzwerk verwendet. - Eine zusätzliche TLS-Schicht ist zunächst nicht vorgesehen. - Für eine spätere Audioübertragung ist ein separates UDP-basiertes Transportkonzept vorgesehen. - `socat` kann für Entwicklung und Diagnose eingesetzt werden. - Eine Sniffer-/Logging-Funktion für den übertragenen Datenverkehr ist vorgesehen. ### Status Version `0.0.1` enthält ausschließlich die Projektgrundlage. Die eigentliche TCP-/RS232-Kommunikation und die virtuelle serielle Schnittstelle sind noch nicht implementiert.