413 lines
14 KiB
Markdown
413 lines
14 KiB
Markdown
# 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
|