rs2322tcp/CHANGELOG.md

413 lines
14 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.
## [0.0.11] - 2026-08-25
### Hinzugefügt
- Windows-Client erfolgreich mit Fyne-GUI gestartet.
- Übertragung der konfigurierten `startup_bytes` an das zugeordnete
Remote-Gerät beim Verbindungsaufbau getestet.
### Geändert
- Windows-spezifische Behandlung virtueller serieller Ports angepasst.
- Öffnen und Verwaltung virtueller serieller Schnittstellen unter Windows
überarbeitet.
### Getestet
- Minimaler Fyne-Test unter Windows erfolgreich gestartet.
- `rs2322tcp-client` unter Windows erfolgreich mit Fyne-GUI gestartet.
- Verbindung des Windows-Clients zum `rs2322tcp-server` erfolgreich aufgebaut.
- Rotor-Startcode erfolgreich vom Windows-Client bis zum Server übertragen.
## [0.0.10] - 2026-08-21
### Behoben
- Linux-Portverwaltung nach der Windows-Client-Erweiterung korrigiert.
- Doppelte Linux-Definitionen der virtuellen Portverwaltung entfernt.
- Plattformübergreifende Trennung der virtuellen Port-Erzeugung korrigiert.
- Dauerhafte Installations-Symlinks für virtuelle Linux-Ports bleiben beim Schließen eines Ports erhalten.
- Gesamter Go-Testlauf unter Linux erfolgreich.
## [0.0.9] - 2026-08-21
### Added
- Windows-Unterstützung für den rs2322tcp-Client
- Plattformabhängige Verwaltung virtueller serieller Schnittstellen
- Windows-COM-Port-Unterstützung über `go.bug.st/serial`
- Unterstützung des virtuellen Windows-Portbereichs COM100 bis COM199
- Windows-spezifische Portvalidierung und Portpfadverwaltung
- Technischer Windows-Client unter `cmd/rs2322tcp-client-test`
- Plattformabhängige Implementierungen für das Öffnen und Verwalten
virtueller serieller Schnittstellen
- Windows-spezifische Implementierung von `VirtualSerial`
### Changed
- Virtuelle Portverwaltung für Linux und Windows auf eine gemeinsame
Schnittstelle umgestellt
- Clientseitige Portvalidierung für die unterschiedlichen Plattformen
erweitert
- Client-Konfiguration für den Windows-Betrieb angepasst
### Tests
- Windows 11 / amd64 erfolgreich getestet
- Windows-COM-Port COM100 über com0com erfolgreich geöffnet
- com0com-Portpaar `COM10 ↔ COM100` erfolgreich getestet
- Verbindung des Windows-Clients über Tailscale zum Raspberry-Pi-Server
erfolgreich getestet
- Bidirektionale Datenübertragung zwischen Windows-Client und
Raspberry-Pi-Server erfolgreich getestet
- Bidirektionale Datenübertragung mit einem realen SPID Rot2Prog
erfolgreich getestet
- Rot2Prog mit `P5 = 59` (SPID) und Function Mode `A` (Auto) erfolgreich
betrieben
- Tatsächliche Antwort des Rot2Prog erfolgreich über den vollständigen
Datenweg übertragen:
```text
57 07 01 06 00 01 03 06 02 00 01 20
```
- `go test ./internal/client` erfolgreich
### Status
Der Windows-Client kann über einen virtuellen Windows-COM-Port mit dem
rs2322tcp-Server auf einem Raspberry Pi kommunizieren.
Der vollständige Datenweg wurde mit einem realen SPID Rot2Prog
bidirektional erfolgreich getestet:
```text
COM10
com0com
COM100
rs2322tcp-client (Windows)
TCP / Tailscale
rs2322tcp-server (Raspberry Pi)
RS232 / SPID Rot2Prog
```
Der technische Windows-Client bleibt als separates Testprogramm erhalten.
Die grafische Fyne-Oberfläche des Windows-Clients ist noch nicht
vollständig abgeschlossen.
## [0.0.8] - 2026-08-12
### Added
- Prüfung der lokal vorhandenen virtuellen Ports beim Client-Start
- Abgleich der vorhandenen symbolischen Links mit den in `client.json`
definierten virtuellen Schnittstellen
- Erkennung von in `client.json` definierten, aber lokal nicht vorhandenen
virtuellen Ports
- Erkennung von lokal vorhandenen, aber nicht in `client.json` definierten
virtuellen Ports
- Verständlicher Fehlerdialog bei einer abweichenden virtuellen
Portkonfiguration
- Beenden des Clients nach Bestätigung einer fehlerhaften
Portkonfiguration
### Changed
- Virtuelle Ports werden entsprechend der in `client.json` festgelegten
Portnummern gezielt geöffnet
- Die Verwaltung virtueller Ports arbeitet weiterhin ohne Root-Rechte
- Der Fehlerdialog verwendet einen einzelnen OK-Button
- Allgemeine Schriftgröße der grafischen Benutzeroberfläche auf 22 erhöht
- Hauptfenster des Clients auf 800 × 600 Pixel vergrößert
### Tests
- Prüfung vorhandener und konfigurierter virtueller Ports erfolgreich getestet
- Fehlender virtueller Port erfolgreich erkannt und im Fehlerdialog angezeigt
- Zusätzlicher, nicht konfigurierter virtueller Port erfolgreich erkannt
- Clientstart nach Korrektur der virtuellen Portkonfiguration erfolgreich getestet
- Gerätezuordnung nach Neustart des Clients erfolgreich aus `client.json`
geladen
- `go test ./...` erfolgreich
- `go test -race ./internal/client` erfolgreich
- `go test -race ./internal/gui` erfolgreich
- `git diff --check` erfolgreich
## [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