AB CIP PR 2 — Scaffolding: AbCipDriver skeleton + libplctag binding + parsers #109
Reference in New Issue
Block a user
Delete Branch "abcip-pr2-scaffolding"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
PR 2 of the AB CIP driver sequence. Stands up the
Driver.AbCipproject as a compiling assembly with everything needed before wire calls land in PR 3.Core types shipped:
AbCipDriver—IDriveronly (read/write/subscribe ship in PRs 3–8)AbCipDriverOptions+AbCipDeviceOptions+AbCipTagDefinitionAbCipHostAddress— parser forab://gateway[:port]/cip-pathcanonical formAbCipTagPath— full Logix symbolic tag surface (scope / member / array / bit-in-DINT)AbCipDataType+ToDriverDataTypeadapterAbCipStatusMapper— CIP general-status + libplctag status-code translationPlcTagHandle—SafeHandlearound native tag ID (lifetime guaranteed via finalizer)AbCipPlcFamilyProfile— ControlLogix / CompactLogix / Micro800 / GuardLogix defaultslibplctag: v1.5.2 (stable — 1.6.x is alpha). NuGet wrapper pulls
libplctag.NativeImporttransitively.Project shape: only
Core.Abstractionsreference (matches Modbus / OpcUaClient / S7), no dependency onCore/Configuration/Polly.Test plan
AbCipHostAddressTests— 20+ cases (valid / invalid / round-trip)AbCipTagPathTests— 18 cases (scope / member / array / bit / rejected shapes)AbCipStatusMapperTests— 20 cases (CIP + libplctag codes)AbCipDriverTests— IDriver lifecycle + multi-device + profile lookup + SafeHandleUnblocks
IReadableagainstab_server(first wire-level integration)IWritable(same wire layer)ITagDiscovery(@tags + Template Object)Merges to
v2.