Skip to content

w1ne/iolinki-master

Repository files navigation

iolinki-master

iolinki-master is a standalone IO-Link master stack. It is intentionally split from the device-oriented iolinki repository and reuses only the narrow shared pieces needed for CRC, frame handling, PHY contracts, and IO-Link constants.

The master API is built around caller-owned opaque storage. Public users allocate iolink_master_port_t or iolink_master_controller_t; private state lives in src/ and is not exposed through the public header.

Status: v0.1.0 — protocol-core, simulation-validated. The stack is exercised against a co-designed simulated device and an on-wire firmware model, not yet against real IO-Link silicon. It is not a conformant hardware master yet (open: wake-response baud detection, physical wake-pulse timing, official conformance). See docs/IMPLEMENTATION_STATUS.md and CHANGELOG.md.

Documentation:

The build needs a local checkout of the iolinki device repository for the shared CRC/frame helpers (and, for tests, the real device stack). By default it is expected as a sibling of this repository:

git clone -b develop git@github.com:w1ne/iolinki.git ../iolinki

Build and test:

cmake -S . -B build
cmake --build build
ctest --test-dir build --output-on-failure

The build compiles only the narrow shared helper sources from the local iolinki checkout into the master build. It should not link or expose the full device stack.

Public APIs return named integer-compatible result constants such as IOLINK_MASTER_STATUS_OK, IOLINK_MASTER_STATUS_PENDING, and IOLINK_MASTER_ERR_INVALID_ARG.

Runnable examples are built by default:

  • master_loopback_demo: one IO-Link port startup and cyclic process-data flow.
  • master_4port_controller_demo: mixed 4-port controller setup with IO-Link, DI, DQ, and deactivated ports.

To point at another local iolinki checkout:

cmake -S . -B build -DIOLINKI_DEVICE_DIR=/path/to/iolinki

Related Projects

  • iolinki — the companion IO-Link device stack. This repository builds against it for the shared CRC/frame/PHY helpers, and CI runs both stacks against each other over a simulated wire (real firmware, multi-port station) in LabWired.

Security

This repository has its own coordinated-disclosure policy in SECURITY.md — use GitHub private vulnerability reporting. It ships a master-specific STRIDE threat model, a CRA overview, and per-release SBOMs (CycloneDX 1.6 + SPDX 2.3) attached to each tagged release.

License

iolinki-master follows the same licensing model as iolinki: dual-licensed under the GPLv3 (free, for open-source/GPLv3 use) and a commercial license (for closed-source / proprietary products that cannot accept the GPLv3 copyleft). Shipping a proprietary product? Email andrii@shylenko.com. See LICENSE and LICENSE.COMMERCIAL.

About

Open-source, hardware-agnostic IO-Link (IEC 61131-9 / SDCI) master stack in C — companion to the iolinki device stack. Caller-owned storage, multi-port controller, CI-validated against real firmware in LabWired simulation.

Topics

Resources

License

Unknown, Unknown licenses found

Licenses found

Unknown
LICENSE
Unknown
LICENSE.COMMERCIAL

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors