How rknall/opensafety works
openSAFETY is a safety-oriented transport-protocol stack that also manages safety-network configuration; the README describes it as an IEC 61508 reference implementation. The principal workflow is safety-node state management and process-data communication, with configuration and parameter access handled through management and SSDO services backed by the Object Dictionary. The tree also includes a CRC calculation/checking utility. Edges are conservative: the sampled excerpts show specific service-FSM behavior and Object Dictionary responsibilities, but do not expose the full runtime wiring among stack modules.
Main entry points: SNMTSsnstate.c SNMT slave · SSDOCservice.c SSDO client service · SERRmain.c Safety errors · SPDOmain.c Process data
Components 16
Safety-node control
- SNMT slave
src/eplssrc/SN/SNMTSsnstate.c - Safety errors
src/eplssrc/SN/SERRmain.c - Error API
src/eplssrc/SN/SERRapi.h - Flow monitoring
src/eplssrc/SN/SCFMmain.c
Safety data transport
- Process data
src/eplssrc/SN/SPDOmain.c - SPDO state machines
src/eplssrc/SN/SPDOrxSyncConsSm.c - SNMT master
src/eplssrc/SCM/SNMTMfsm.c
Configuration services
- SSDO server
src/eplssrc/SN/SSDOSmain.c - SSDO client service
src/eplssrc/SCM/SSDOCservice.c - SSDO transfers
src/eplssrc/SCM/SSDOCprotocol.c - Object Dictionary
src/eplssrc/SN/SODmain.c - Configuration manager
src/eplssrc/SCM/SCMmain.c
CRC utility
- CRC calculation
src/tools/oschecksum/crc_protocol.c - CRC checker
src/tools/oscrccheck/oscrccheck.c
Other components
- Application
- Safety network
Connections 16
- Application → SNMT slave: requests state change
- SNMT slave → Process data: starts activation
src/eplssrc/SN/SNMTSsnstate.c - Safety network → Process data: carries process data
- Safety network → SSDO server: carries service frames
- SNMT master → SSDO client service: coordinates services
- SSDO client service → SSDO transfers: manages transfer FSM
- SSDO transfers → Object Dictionary: accesses objects
src/eplssrc/SCM/SSDOCprotocol.c - SSDO server → Object Dictionary: serves parameters
- Configuration manager → Object Dictionary: configures entries
- SSDO client service → Safety errors: reports errors
src/eplssrc/SCM/SSDOCservice.c - SNMT slave → Safety errors: sets errors
src/eplssrc/SN/SNMTSsnstate.c - Process data → SPDO state machines: uses state machine
- CRC checker → CRC calculation: checks checksums
- Application → Configuration manager: sets configuration
- Safety errors → Error API: exposes error API
- Flow monitoring → SNMT slave: tracks execution