v3.5.1
3.5.1 ist ein Release zur Stabilisierung und Qualitätsverbesserung. Die wichtigsten Neuerungen sind: Automatisches Pairing von 1:1- Inverse3 - und Grip-Konfigurationen, auch wenn keine offenen WebSocket-Sitzungen vorhanden sind GET /devices/{id}Bereitstellung des aktuellen Bewegungsstatus, Beseitigung des Quietschens (screech), das beim Wechsel zwischen Kraft- und Positionsmodus auftrat, sowie ein Service-Tick-Scheduler, der sich unter Dauerbelastung selbst anpasst.
Highlights
- 1↔1 Inverse3 + Automatisches Pairing bei der Montage des Griffs. Inverse3 Sobald ein Gerät und ein Griff bereitstehen, registriert das SDK die Kopplung automatisch. Bei einer Konfiguration mit mehreren Geräten
pen_attachedDas Problem, dass die Kalibrierungssperre bei „ Minverse “ falsch weitergeleitet wurde, wurde behoben. - Auch ohne offene Sitzung auf dem neuesten Stand
GET /devices/{id}Snapshot bereitgestellt. Inverse3 , Inverse3x und Minverse mit Firmware-Version 7.5 oder höher fragen nun unabhängig von WebSocket-Aktivitäten den Bewegungsstatus mit einer Frequenz von 20 Hz ab. Firmware-Versionen vor 7.5 überspringen die Abfrage und geben einmalig eine Warnung aus. - Beseitigung von Quietschgeräuschen beim Umschalten zwischen Kraft- und Positionsmodus.
set_cursor_force↔set_cursor_positionDa die Umschaltung im Slot-Exklusivmodus erfolgt, bleibt zwischen den Ticks für jedes Gerät nur der aktuellste Wert erhalten. Die Umgehung des 200-ms-Leerlaufintervalls von HARP ist nicht mehr erforderlich. - Selbstregulierender Tick-Scheduler. Da die Hauptschleife die Ausführungsgeschwindigkeit je nach Auslastung anpasst, wächst die Befehlswarteschlange auch bei langsamen Ticks nicht unbegrenzt an.
- 1-in-1-out-Streaming-Verhalten unter Last. Die Anzahl der Streaming-Antworten pro WS-Nachricht ist auf 1/ms pro Sitzung begrenzt. Wird diese Grenze erreicht, wird der vorherige Puffer wiedergegeben, sodass die SIM-Schleife
recv()wird dort nicht blockiert.
Interne Verbesserungen
Gerät
- Gerätebezogene „ Inverse3 “ ↔ „VerseGrip“-Kopplungsregister.
GET|POST|DELETE /devices/{sel}/paired_withEs handelt sich um eine 1:1-Zuordnung pro Gerät.POSTentfernt (evict) einen der beiden vorhandenen Einträge, der mit dem neuen kollidiert, undDELETElöscht den ausgewählten Eintrag, wobei der Selektor zwingend als eine ID interpretiert werden muss. - Abfrage des 20-Hz-Bewegungsstatus bei Firmware ab Version 7.5.
GET /devices/{id}wird alle 50 ms aktualisiertcursor_position,cursor_velocity,angular_position,angular_velocityGibt einen Wert zurück und hat keine Auswirkungen auf aktive Sitzungen. - Kabelloser VerseGrip
set_extension_dataGeschwindigkeitsregelung. Die Pipeline, die veraltete Werte verwirft und im Leerlauf wiederholt überträgt, wird im Service-Tick verarbeitet. Selbst bei übermäßiger Übertragung wird die Funkverbindung nicht überlastet, und selbst bei unzureichender Übertragung bleiben keine veralteten Werte zurück.
Sitzung
- Es wurde ein neuer Hochgeschwindigkeitspfad für WS-Empfang für reine Steuerungsanweisungen (Kraft/Position) hinzugefügt, der die Konfigurationserkennungspipeline umgeht.
configure/set_profile/ Benutzerdefinierte Befehle durchlaufen weiterhin den Korrekturpfad für Race-Bedingungen.
Beobachtbarkeit (Observability)
- Die Häufigkeit der Erfassungsprotokolle wird für jeden Port separat verwaltet, wobei berücksichtigt wird, ob die Ereignisse fortlaufend auftreten. Jeder auf der Blacklist eingetragene Port wird unabhängig gesteuert. Wiederholte
"...blacklisted: skipping"In der Protokollezeile wird nun die Anzahl der zwischen den Ausführungen unterdrückten Ticks angezeigt.(×N)Dies wird angezeigt. - Bei der Erkennung von Nicht-WVG-Geräten füllt die drahtlose VerseGrip-Erkennung das Protokoll nicht mehr übermäßig mit Einträgen.
Änderungen
POST /device.config.presetindefaultsoderarm_frontWenn man … festlegt, Das Gerät wird nun auf die Werkseinstellungen zurückgesetzt (ein Vorgang, der zuvor stillschweigend ignoriert wurde).basisDa dies beibehalten wird, bleibt die in der App festgelegte Basis auch dann erhalten, wenn die Mount-Voreinstellung geändert wird.force_render_full_stateWenn eine WS-Nachricht wie beispielsweise eine passende „configure“-Anfrage eintrifft, dann nicht mehrconfigEs werden keine Snapshots mit fehlenden Blöcken zurückgegeben. — Der Pfad „configure“ wird vor dem Snapshot synchron verarbeitet.- Parallelsitzungen
force_render_full_stategibt einen vollständigen Snapshot des Objekts zurück. Nun erhalten sowohl A als auch B die gesamte Nutzlast (zuvor hatte A nur die Streaming-Daten empfangen). - Unbekannt
target_session_idBefehle mit übergreifenden Sitzungen unterbrechen den Anfrage-Antwort-Zyklus nicht mehr. Der Antragsteller muss seinen Screenshot undsession-command-droppedVeranstaltung (cross-session-unknown-target) erhält. - Minverse Die Freigabe der Kalibrierung für mehrere Geräte wird nicht falsch weitergeleitet. Minverse Selbst wenn A kalibriert wird, wird Minverse B nicht freigeschaltet; dieselbe Korrektur wurde auch auf den „inkwell-success“-Heading-Broadcast angewendet.
- HTTP-Geräteauswahlals Geräte-ID
#1234Wow1234werden alle zugelassen. Selektor-Klassen (inverse3,verse_grip) kann ebenfalls zusammen mit Indizes verwendet werden, und in 404-Meldungen wird der ursprüngliche Selektorausdruck unverändert angezeigt. - Kabelloser VerseGrip
readyDas Flag wird nun erst nach dem anfänglichen Handshake zur Erfassung der Geräteinformationen gesetzt. Früher konnte sich dieses Flag ändern, bevor sich ein Gerät auf einem bestimmten Wiederverbindungsweg vollständig identifiziert hatte. - Änderungen an den Laufzeiteinstellungen für die Schlüsselbasierten Rate-Gates werden ab dem nächsten Hit wirksam(zuvor wurden sie beim ersten „Emplace“ festgelegt, sodass Änderungen erst in einer neuen Sitzung berücksichtigt wurden).
Mögliche Änderungen, die die Kompatibilität beeinträchtigen (Breaking Changes)
- Vereinheitlichung der HTTP-404-Fehlermeldungen —
basis,preset,mount,transform,force_gateIn der ersten Halbzeit"{type} device #{id} not found"→"no device matches selector '{expr}'"wurde geändert. Auch die Sitzung 404 wurde entsprechend angepasst. - Einstellungen glob
devices/inverse*/...→devices/*inverse/...Gilt für: Kraftskalierungsverstärkung, Kraftgate-Verstärkung, Steuerungs-Timeout,safeties/expose_in_snapshot. Konfigurationsdateien der Version 3.5.0, die bestehende Literale verwenden, schlagen bei der Einbindung fehl. - Einstellungen: Der globale Eintrag „Serialisierung“
session/serialization/*wurde dorthin verschoben(explicit_fields,force_complete_transforms,preview/*). Bisherigeserialization/*Der Pfad wird weiterhin über den nicht mehr unterstützten Alias aufgelöst und soll in Version 4.0 entfernt werden. - Verhaltensänderung: Bei anhaltendem Datenverkehr erhalten Clients, die WS-Antworten pro Nachricht als tick-synchronisierten Handshake verwenden, maximal eine Antwort pro 1 ms und Sitzung. Der vollständige Snapshot bei Konfigurationsänderungen bleibt davon unberührt.
Einstellung der Unterstützung (Deprecations)
In Version 3.5.1 gibt es keine Auslauf-Elemente. Der „Preview Master“-Schalter bildet die Grundlage für die Umstellung von „Silent“ auf „Warning“ in der kommenden Version 3.6, wobei die erste Auslauf-Maßnahme für Version 3.5.2 geplant ist.