rs2322tcp/CHANGELOG.md
2026-08-10 10:38:14 +02:00

109 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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.