DASP: drop the P-ION resend overrides, use standard 512-byte packets
The save and file-open requests used their own fixed resend intervals (5 s / 15 s) and the hello asked for 256-byte packets. Ontrol's Sedona Java stack does neither and works with the P-ION: the standard backoff (1, 2, 4, 8 s) sends a busy device a few copies with the same seqNum, which its receive window drops. Both are removed. Also fixes a race in SendWindow.send(): the packet entered the window before its payload and sent_time were set, so housekeeping could resend it with an empty payload, and the device would then drop the real one as a duplicate. Tested on a P-ION at 192.168.1.252, App > Get with File: save 3.2 s (2 resends), app.sab + kits.scode in 11.3 s with 500-byte chunks (was 14.6 s at 256), device stayed up, files identical to a 256-byte backup. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+1
-3
@@ -10,7 +10,6 @@ import xml.etree.ElementTree as ET
|
||||
|
||||
import app_state
|
||||
import schema
|
||||
import sox
|
||||
from sox import SoxClient, SoxComponent, TREE, CONFIG, RUNTIME, LINKS, ALL
|
||||
|
||||
|
||||
@@ -44,8 +43,7 @@ class DeviceSession:
|
||||
|
||||
def connect(self, host, port, user, password):
|
||||
"""DASP connect → read schema → load root. Called from background thread."""
|
||||
self.sox_client = SoxClient(host, int(port), user, password,
|
||||
ideal_max=sox.IDEAL_MAX, abs_max=sox.ABS_MAX)
|
||||
self.sox_client = SoxClient(host, int(port), user, password)
|
||||
self.sox_client.on_event = self._on_sox_event
|
||||
self.sox_client.checksum_resolver = schema.resolve_truncated_checksum
|
||||
self.sox_client.connect()
|
||||
|
||||
Reference in New Issue
Block a user