C library for programming GOcontroll Moduline controllers. Two build flavours share the same public API:
| Define | Target |
|---|---|
GOCONTROLL_LINUX |
Moduline L4 / Moduline M1 (IMX8 ARM64) |
GOCONTROLL_IOT |
Moduline S1 (STM32H5 + FreeRTOS) |
The S1 platform is selected by the legacy
GOCONTROLL_IOTdefine and lives undercode/iot/. Source identifiers are kept for compatibility with the previous product naming.
code/ Public C library — board, communication, modules, XCP, S1 subtree
examples/ One per topic — Linux main()s, plus S1 subsystems in *_s1/ directories
make/ Generic Moduline S1 build layer (include from a thin application Makefile)
AGENTS.md Index for AI coding tools (hard rules + conventions)
make led_blink # build the smallest example
sudo build/app # run on targetFor a working module program, see
examples/input_module_10ch/input_module_10ch.c
or
examples/input_module_6ch/input_module_6ch.c
(the latter has the most thorough inline documentation, including the
required initialisation order).
On a Moduline S1, start from
examples/output_module_6ch_s1/output_module_6ch_s1.md
before writing module-output code. It is the canonical bring-up procedure —
including the timings, how to verify that a configuration actually reached the
module, and the diagnosis table for a module that communicates perfectly but
drives nothing.
GOcontroll controllers expose pluggable modules in physical slots. Supported module types:
- Input modules — 6-channel, 10-channel, and 4–20 mA variants.
- Output modules — 6-channel and 10-channel high-side drivers.
- Bridge modules — 2-channel half-bridge drivers. The two channels can be wired together as an H-bridge; that is a wiring arrangement, not a selectable mode.
- Load cell modules — 4-channel strain gauge interface with configurable ADC gain, data rate, and mV/V sensitivity scaling.
Module communication runs at 10 ms cycle minimum; output modules trip a fail-safe watchdog if no frame arrives within 400 ms.
AGENTS.md— index for AI coding tools: hard rules, pitfalls, and conventions.examples/examples.md— one-line description per example.- File-level doc-blocks at the top of each
code/**/*.hheader and each example.cfile.
Library code: see header doc-blocks (MIT-style). Vendored libraries under
code/iot/Drivers/ retain their original licenses.