109 lines
3.7 KiB
Markdown
109 lines
3.7 KiB
Markdown
# 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.
|