2
17
Fork
You've already forked gatorcat
2
EtherCAT MainDevice for Zig
  • Zig 99.5%
  • Nix 0.3%
  • Shell 0.2%
Jeff Anderson bc57ad7480
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
improve error log statements for wkc mismatches, delete std.debug.prints
2026年07月11日 21:04:12 -07:00
.woodpecker target musl in ci 2026年05月08日 23:04:58 -07:00
doc fix ci step 2026年06月24日 22:03:04 -07:00
src improve error log statements for wkc mismatches, delete std.debug.prints 2026年07月11日 21:04:12 -07:00
test add test leak TODO 2026年07月05日 16:50:29 -07:00
.gitignore add dc support information to eni 2026年07月05日 16:07:33 -07:00
build.zig fix ci step 2026年06月24日 22:03:04 -07:00
build.zig.zon update oci dep 2026年05月07日 21:57:31 -07:00
LICENSE use Eclipse Public License 2.0 (EPL-2.0) 2025年12月06日 15:09:09 -08:00
README.md wip dc propagation delay measurement 2026年07月08日 01:25:42 -07:00

 /\_/\
 / o o \ gatorcat
 (_. ^ ._)=^=====^===^===^\\ 
 ~~~ //~~~~~~~\\~~~ \\
 v v v

Gatorcat is an EtherCAT maindevice written in the Zig programming language.

Warning

Gatorcat is alpha software. Using it today means participating in its development. You may find bugs or need features implemented before you can use Gatorcat effectively.

Gatorcat provides the following:

  • CLI: a pre-built executable for running and scanning ethercat networks.
  • module: zig module for writing applications that interact with ethercat networks.

Documentation

See doc.

Notably Working Features

  • automatic configuration via SII and CoE
  • process data published on zenoh
  • network operation and topology verification against a config file
  • multi-OS support (Linux and Windows)

Notably Missing Features

  • distributed clocks
  • cable redundancy
  • Ethernet Over EtherCAT (EoE), also AoE, FoE, SoE, VoE
  • user configurable processing of CoE emergency messages
  • mapping the mailbox status into the process data
  • async / event loop frames, multi-threading friendly API
  • linux XDP, mac-os, embedded support
  • Segmented SDO transfer
  • EEPROM write access
  • Network diagnosis in the CLI (CRC counters etc.)
  • resilient mailbox state machine

TODO

  • change deserialization of embedded protocols to do zero backtracking
  • tech debt
    • arbitrary maximum mailbox size
    • simulator should use simulated time (std.Io eventually)
  • fix release script
  • use std.io in port
  • make npcap integration suck less
  • use XDP
  • add watchdog functionality
  • publish performance metrics on zenoh
  • change docker build script to use build system correctly with addFileArg etc
  • change how ci build step determines if release should occur, perhaps build option
  • improve simulator
  • validate eni: junction subdevices must support distributed clocks
  • configurable dc reference clock
  • validate eni: topology (non-recursively?)
  • use of dl status and unreachable topology configurations is questionable, not fuzz resistant
  • be smart and consider if dc.entryPort is actually necessary...
  • do averaging on propagation delay measurement

Breaking changes made to the ENI since last release:

  • DC field is required
  • topology field is required

Contributing

Please open an issue before contributing so we can discuss. PRs without an open issue will be rejected.

AI contributions will be an insta-ban.