Releases: Group3-Technology/group3lib
Release list
Version 0.3.0
v0.3.0 — Fiber-optic (G3CL loop) and echo-enabled link support
The headline: the SDK now works over a fiber-optic/FTR link, where the Group3
Communication Loop retransmits every command back to the host before its reply
(manual §4.5.1, p.4-7). Previously the first reply read back was your own
command, surfacing as an opaque parser error. Verified end to end against a
DTM-151-S on an FTR optical link.
Added
- Automatic detection of returned commands.
DTM151Serial.identify()probes
for them at connect time and configures the protocol;detect_command_echo()
exposes the probe alone.DeviceProfilegainedcommand_returnedand
loop_echo, which distinguishes a G3CL loop (topology —SE0cannot stop it)
from DIP S2-4 echo (a setting). - Self-explaining diagnostic. A reply identical to the command just sent now
raises aProtocolErrornaming both possible causes and the fix, instead of
failing two layers away in the parser. - Double-returned commands (S2-4 echo over a G3CL loop, manual §3.6
p.3-11) are handled — every returned copy is stripped, whether the copies
share a frame or split across frames. Group3Protocol.send_unvalidated()— an explicit escape hatch for repair
paths: write, drain, finalise, no validation.--echo {auto,on,off}on all seven examples, defaulting toauto.
Fixed
SM1streaming on a returning link.SM1is issued write-only, so its
returned copy stayed on the wire and the first streaming read parsed it as a
reading (Expected numeric field reply, got 'SM1'). Cleared before streaming
begins, at both stream entry andpaused()resume. Request/reply paths were
never affected —request()resets the input buffer first; a streaming read
cannot.identify()no longer trusts theSE0ack. It re-probes afterwards,
becauseSE0turns off device echo but cannot stop a loop. It also sends
SE0tolerantly: on real hardware, echo-over-loop corrupts the echoed ASCII
copy (Fcame back as|), and a strict check aborted the one command that
repairs the link.
Changed (non-breaking)
Group3Protocol.echo_enabled→expect_command_returned;
DeviceProfile.echo_enabled→command_returned. The old name conflated
a device setting with a wire topology, which is what caused theSE0bug.
Both old names still work as deprecated aliases — attribute and constructor
— and emitDeprecationWarning.DipSwitches.echo_enabledis unchanged; it
really is the S2-4 bit.- Examples call
identify()rather than the bare probe, so a link that needs
repair gets it. On an echoing device this now sendsSE0— the only
device-state change, and only when commands are being returned. - README documents
identify()as the connect-time call, and the multi-drop
snippet declaresexpect_command_returned=True(a G3CL is a loop by
construction; don't probe there — the probes are unaddressed).
Migration
None required. If you construct Group3Protocol or DeviceProfile with
echo_enabled=, switch to the new names to silence the warning. Add
dtm.identify() after connect if you don't already call it — required on
fiber-optic/G3CL links, harmless elsewhere.
Known limitations
--echo ondoes not repair. It declares a returning link without probing,
so on the loop + S2-4-echo configuration it fails. Documented in the flag's
help;autois the safe default.- Multi-drop is unverified against hardware. The
expect_command_returned=Trueguidance forG3CLSessionfollows from the
manual andFakeTransportcoverage, but needs two units on a loop to confirm.
Tests
261 → 300, including golden transcripts for loop ripple, double returns,
corrupted-echo recovery, and a smoke suite that drives the examples end to end
against a simulated loop device.
What's Changed
- Updated to support auto detect of G3 loop and/or echo set on. by @tobyerbailey in #5
Full Changelog: v0.2.1...v0.3.0
Version 0.2.1
What's Changed
- Update stale references after organisation transfer: by @tobyerbailey in #4
Full Changelog: v0.2.0...v0.2.1
What's Changed
- Update stale references after organisation transfer: by @tobyerbailey in #4
Full Changelog: v0.2.0...v0.2.1
Version 0.2.0
What's Changed
- Initial version by @tobyerbailey in #1
- Minor bug fixes by @tobyerbailey in #2
- Feature/dtm 151 manual alignment by @tobyerbailey in #3
New Contributors
- @tobyerbailey made their first contribution in #1
Full Changelog: https://github.com/Antala/group3lib/commits/v0.2.0