Repository navigation
v0.3.1 — Logix STRING reads and reliable buffering
This patch fixes Logix indexed UDT and standard STRING reads, including fragmented records and buffer-dependent scalar batching.
- Resolve indexed/member/program paths from discovered root and template metadata, preserving selected-element counts and catalog membership.
- Decode validated STRING/ASCIISTRING82 templates as text, including nested strings and STRING arrays. Preserve native resolved type codes and original storage bytes; Client.DecodeUDT retains its top-level map contract.
- Assemble fragmented structures without counting repeated type/handle descriptors as payload. Preserve record-array counts and reject incomplete, inconsistent or interrupted transfers.
- Accept direct and wrapped routed fragmentation replies, accounting for the shared service code.
- Fit scalar MSP requests and replies to unconnected, 504-byte and 4002-byte connection budgets; accurately report TCP versus CIP connection mode.
Independent wire tests cover single/count/MSP/individual reads, mixed success/error batches, standard and large Forward Open, direct/routed unconnected messaging, reply payloads from 32 to 3900 bytes, large records/record arrays, native storage and nine fragmentation fault cases. Read-only Allen-Bradley checks passed connected and routed unconnected STRING/member/whole-record reads, value comparisons and cleanup. Cletus's current manager also passed against the candidate without a consumer binary decoder or raised preview limits.
Full normal/race suites on Go 1.27.1, the full Go 1.24 race suite, unfiltered vet, and Linux amd64/386, Windows amd64, Darwin amd64/arm64 build/vet checks passed. Existing public method/configuration/result layouts remain source compatible; no public APIs, dependencies or write features were added.
Review the compatibility notes and validation report. Root/template metadata is required to identify generic structure responses. Arbitrary custom string-like UDT recognition, live writes, online layout changes, Micro800 hardware, and native Windows runtime were not established by this patch. Omron hardware was unavailable and skipped.
go get github.com/yatesdr/plcio@v0.3.1