rs2322tcp/CHANGELOG.md
2026-08-10 16:20:28 +02:00

6.4 KiB

Changelog

Alle wesentlichen Änderungen am Projekt werden in dieser Datei dokumentiert.

[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:

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:

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