rs2322tcp/CHANGELOG.md
2026-08-12 12:42:24 +02:00

264 lines
9 KiB
Markdown

# Changelog
Alle wesentlichen Änderungen am Projekt werden in dieser Datei dokumentiert.
## [0.0.7] - 2026-08-12
### Added
- Pflege der Gerätezuordnung über die grafische Benutzeroberfläche
- Zuordnung der vom Server angebotenen Geräte zu den konfigurierten
virtuellen seriellen Schnittstellen
- Unterstützung des Zustands „nicht verbunden“
- Freie virtuelle Schnittstellen werden bei der Gerätezuordnung automatisch
neu angeboten
- Verhinderung der gleichzeitigen Zuordnung einer virtuellen Schnittstelle
zu mehreren Geräten
- Bereits zugeordnete Geräte können nur auf ihre aktuelle Schnittstelle oder
„nicht verbunden“ gesetzt werden
- Ungespeicherte Änderungen werden beim Schließen des Hauptfensters erkannt
und dem Anwender angezeigt
- Änderungen werden beim Schließen des Gerätezuordnungsfensters in der
Client-Konfiguration gespeichert
- Virtuelle Schnittstellen bleiben auch ohne Gerätezuordnung in der
Client-Konfiguration erhalten
- Ein leerer Wert für `remote_device` kennzeichnet eine freie virtuelle
Schnittstelle
- `Application.SaveConfig()` zum zentralen Speichern der Client-Konfiguration
### Changed
- Validierung der Client-Konfiguration erlaubt nun virtuelle Schnittstellen
ohne aktuelle Gerätezuordnung
- Die Gerätezuordnung arbeitet auf Basis der vorhandenen virtuellen
Schnittstellen und verändert bei einer Trennung nur deren
`remote_device`-Zuordnung
### Tests
- Gerätezuordnung mit mehreren Server-Geräten praktisch getestet
- Freigabe einer virtuellen Schnittstelle und anschließende erneute Auswahl
erfolgreich getestet
- Speicherung einer Gerätezuordnung über die GUI erfolgreich getestet
- Speicherung einer getrennten Gerätezuordnung mit leerem
`remote_device` erfolgreich getestet
- `go test ./internal/config` erfolgreich
- `go test ./internal/gui` erfolgreich
- `go test -race ./internal/gui` erfolgreich
- `git diff --check` erfolgreich
## [0.0.6] - 2026-08-10
### Added
- Clientseitige Runtime zur Verwaltung mehrerer virtueller serieller Ports
- Verbindung konfigurierter virtueller Ports mit den vom Server bereitgestellten
Remote-Geräten
- Clientseitige TCP-Data-Connections zu den dynamischen Data-Ports des Servers
- Bidirektionale Datenübertragung über eine `Bridge`
- Verwaltung des Lebenszyklus von virtuellen Ports, Bridges und Client-Verbindung
- Integrationstest für den vollständigen Datenweg zwischen virtuellem seriellen
Port und Server
- Tests für Verbindungsaufbau, Gerätezuordnung und Runtime-Lebenszyklus
### Tests
- `go test ./...` erfolgreich
- `go test -race ./...` erfolgreich
- Bidirektionale Übertragung über Runtime, Bridge, TCP und PTY erfolgreich
- Race Conditions in Client-Control-Verbindung, PTY und virtuellen Ports behoben
## [0.0.5] - 2026-08-10
### Added
- Konfigurierbarer Bereich für lokale virtuelle serielle Schnittstellen
- Standardbereich für virtuelle Ports von `/dev/ttyUSB100` bis
`/dev/ttyUSB199`
- Abweichender Portbereich kann über `virtual_port_range` in der
Client-Konfiguration festgelegt werden
- Rückwärtskompatibilität für bestehende Client-Konfigurationen ohne
`virtual_port_range`
- Verwaltung virtueller Ports über `VirtualPortManager`
- Automatische Auswahl des nächsten freien virtuellen Ports
- Freigabe reservierter Ports bei deren Schließen
- Linux-spezifische Verwaltung der virtuellen Port-Symlinks unter
`~/.rs2322tcp/virtual/`
- Verknüpfung der virtuellen `/dev/ttyUSBxxx`-Schnittstellen mit den
vom Client erzeugten PTYs
- Einführung von `VirtualPort` und `ManagedVirtualPort`
- Umfangreiche Tests für Portauswahl, Portfreigabe, Symlink-Verwaltung
und Linux-PTY-Integration
### Tests
- `go test ./...` erfolgreich
- `go test -race ./...` erfolgreich
- Bidirektionale Kommunikation über `/dev/ttyUSB100` erfolgreich getestet
- Externe Software kann ausschließlich `/dev/ttyUSB100` verwenden
- Übertragung vom virtuellen `/dev/ttyUSB100` zum Client erfolgreich getestet
- Übertragung vom Client zum virtuellen `/dev/ttyUSB100` erfolgreich getestet
- Zweistufige Symlink-Kette von `/dev/ttyUSB100` über
`~/.rs2322tcp/virtual/ttyUSB100` bis zum PTY erfolgreich getestet
---
## [0.0.4] - 2026-08-10
### Added
- Interaktiver Geräte-Simulator `rs2322tcp-device-sim`
- Senden beliebiger Bytefolgen über eine interaktive Hex-Eingabe
- Ausgabe empfangener Daten als Hex-Dump
- Unterstützung von Hex-Eingaben mit und ohne Leerzeichen
- Fehlerbehandlung für ungültige Hex-Eingaben
- Automatisierte Tests für die Hex-Konvertierung
- Erweiterte Dokumentation des Geräte-Simulators und des PTY-Testaufbaus
- Möglichkeit, den Simulator als virtuelle serielle Gegenstelle für
externe Software zu verwenden
### Tests
- Byte-orientierte Übertragung mit beliebigen Binärdaten getestet
- Übertragung aller Bytewerte `00` bis `FF` getestet
- Übertragung vom PTY-Slave zum PTY-Master getestet
- Übertragung vom PTY-Master zum PTY-Slave getestet
- `go test ./...` erfolgreich
- `go test -race ./...` erfolgreich
---
## [0.0.3] - 2026-08-10
### Added
- Linux-PTY-Unterstützung für die clientseitige virtuelle serielle
Schnittstelle
- Abstraktion der virtuellen seriellen Schnittstelle über `VirtualSerial`
- Automatisierter bidirektionaler PTY-Test mit allen 256 möglichen Bytewerten
- Eigenständiges Programm `rs2322tcp-device-sim` als Simulator für ein
angeschlossenes serielles Gerät
- Hexadezimale Darstellung der vom Geräte-Simulator empfangenen Rohdaten
### Tests
- PTY-Slave und PTY-Master erfolgreich miteinander getestet
- Bidirektionale Übertragung von Binärdaten getestet
- Bytefolgen mit Werten von `00` bis `FF` erfolgreich übertragen
- Empfang beliebiger Datenblöcke über den PTY-Master getestet
---
## [0.0.2] - 2026-08-09
### 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
- Serielle Geräte können über Konfiguration definiert werden
- Server-Control-Verbindung
- Session-Verwaltung
- Dynamische Data-Ports pro Gerät
- Serverseitiger Aufbau der TCP-Data-Verbindung
- `DataConnection` für die bidirektionale Datenübertragung
- `DataListener` zur Annahme von Data-Verbindungen
- TCP → RS232 Datenübertragung
- RS232 → TCP Datenübertragung
- Client-Control-Verbindung unter `internal/client`
- Clientseitige Verarbeitung von `HELLO`
- Clientseitige Abfrage der konfigurierten Geräte über `GET_DEVICES`
- Clientseitige Verarbeitung der vom Server gelieferten Geräteinformationen
einschließlich dynamischem Data-Port
- Clientseitiger Aufbau der TCP-Data-Verbindung
- Integrationstest für die vollständige Client-/Server-Kommunikation
- End-to-End-Test der TCP-/RS232-Datenübertragung in beide Richtungen
### Changed
- Serial-Kommunikation vollständig über `go.bug.st/serial`
- Server öffnet serielle Schnittstellen erst bei aktiver Data-Verbindung
- Pro Gerät wird nur eine aktive Data-Verbindung zugelassen
- Session- und Ressourcenverwaltung überarbeitet
- Race Condition im `DataListener` behoben
### Tests
- Unit-Tests für Serial
- Unit-Tests für Session
- Unit-Tests für DataConnection
- Unit-Tests für DataListener
- Integrationstest mit virtuellen seriellen Schnittstellen über `socat`
- Tests für TCP → RS232 und RS232 → TCP
- Tests für Session-Reconnect und Ressourcenverwaltung
- Client-/Server-Integrationstest erfolgreich
- Race-Test des Client-/Server-Integrationstests erfolgreich
### Status
Die grundlegende TCP-/RS232-Datenübertragung ist serverseitig implementiert
und der Client kann die Control-Verbindung sowie die zugehörige
Data-Verbindung aufbauen.
Der aktuelle Datenpfad ist:
```text
Client
├── TCP-Control-Verbindung
│ │
│ ▼
│ Session
│ │
│ ▼
│ GET_DEVICES
│ │
│ ▼
│ Geräteinformationen
│ │
│ ▼
│ dynamischer Data-Port
│ │
└── TCP-Data-Verbindung
DataListener
DataConnection
internal/serial
RS232-Gerät
```
Die Datenübertragung wurde bereits in beide Richtungen erfolgreich getestet:
```text
TCP → RS232
RS232 → TCP
```
Die clientseitige Linux-PTY-Grundlage für eine virtuelle serielle Schnittstelle
ist implementiert und durch automatisierte Tests abgesichert.
Der Geräte-Simulator ist als eigenständiges Testprogramm vorhanden und kann
eine serielle Schnittstelle öffnen und empfangene Rohdaten hexadezimal
anzeigen.
Die interaktive TX-Funktion des Geräte-Simulators sowie die vollständige
Integration der virtuellen seriellen Schnittstelle in den produktiven
Client-Datenpfad sind noch nicht abgeschlossen.
---
## [0.0.1] - 2026-08-09
### Added
- Initiale Projektstruktur
- Go-Modul und Build-Grundlagen
- Basis für Server und Client
- Konfigurationsgrundlagen
- Versionsverwaltung und Build-Metadaten
- Erste Dokumentation