AGSweeney

Adam G. Sweeney · Open Source Industrial Automation

Built from the spec.

Protocol infrastructure written from primary sources — a dual-role EtherNet/IP stack in portable C11 and a hardened, fuzz-tested OpENer fork. This is the layer underneath the adapters, gateways, and devices elsewhere on this site.

2 featured stacks C11 / C portable code Scanner + adapter both roles BSD / MIT licensed
TargetsColdFire · ARM · RISC-V · TI AM · SAME70 · Windows/POSIX StatusEarly stage — API forming LicenseBSD-3-Clause

EtherNet/IP · Scanner + adapter

Both sides of the wire.

Most open EtherNet/IP stacks — OpENer included — only play the adapter. SimpleCIP is a compact C11 library that runs scanner and adapter simultaneously in one process, so gateway-style devices can originate and serve I/O connections at once. EtherNet/IP encapsulation with session management, Common Packet Format parse and build, Class 1 implicit I/O with 10–15 ms design targets, UDP discovery, and portable host tools for validation — clear code with explicit platform boundaries over framework machinery. Deliberately scoped: no ODVA conformance claims, safety protocols, or DLR yet.

Dual roleScanner (originator) and adapter (target) in a single process — the gateway pattern
PortabilityC11 with explicit platform boundaries; MCU targets plus Windows/POSIX hosts
Cyclic I/OClass 1 implicit, 10–15 ms design targets, 50 ms default RPI, UDP device discovery
Explore SimpleCIP → github / SimpleCIP
PlatformsWindows/POSIX · ESP32 + ClearCore scaffolding StatusAdapter core mature LicenseOpENer terms + MIT modifications

EtherNet/IP · Hardened adapter stack

OpENer, hardened for the plant.

A maintained fork of the OpENer adapter stack that trades architectural purity for real-world reliability: bounds checking on malformed CPF, EPath, and Message Router requests, shared state removed from transmission paths, and regression coverage built from historical failure modes. It ships its own attack tools — a Python stress/fuzz client plus C++ cyclic benchmark and assembly-monitoring clients — and sustains 1 ms cyclic messaging with sub-millisecond service latency in Win32 testing. This is the foundation under the ESP32 and NetBurner adapters featured on this site.

HardeningBounds-checked parsing; regression suite for malformed UCMM, EPath, and GetAttributeList
Test toolingStress/fuzz client, cyclic benchmark client, assembly monitor
PerformanceSustained 1 ms cyclic messaging, sub-ms request/response latency percentiles (Win32)
Explore the fork → github / OpENer-Enhanced