Modules
Here is a list of all modules:

CANopen | CANopenNode is free and open source implementation of CANopen communication protocol
CANopen_301 | CANopen application layer and communication profile (CiA 301 v4.2.0)
Driver |
Stack configuration |
Common definitions |
NMT master/slave and HB producer/consumer |
Emergency producer/consumer |
SDO server/client |
Time producer/consumer |
SYNC and PDO producer/consumer |
CANopen LED diodes | Specified in standard CiA 303-3
Safety Related Data Objects (SRDO) | Specified in standard EN 50325-5 (CiA 304)
LSS master/slave | Specified in standard CiA 305
CANopen gateway | Specified in standard CiA 309
CRC 16 calculation | Helper object
FIFO buffer | Helper object
Trace recorder | Non standard object
Debug messages | Messages from different parts of the stack
Basic definitions | Target specific basic definitions and data types according to Misra C specification
Reception of CAN messages | Target specific definitions and description of CAN message reception
Transmission of CAN messages | Target specific definitions and description of CAN message transmission

Critical sections

CANopenNode is designed to run in different threads, as described in README.md. Threads are implemented differently in different systems. In microcontrollers threads are interrupts with different priorities, for example. It is necessary to protect sections, where different threads access to the same resource. In simple systems interrupts or scheduler may be temporary disabled between access to the shared resource. Otherwise mutexes or semaphores can be used

Emergency |
FIFO circular buffer |
Heartbeat consumer |
NMT and Heartbeat |
OD interface |
Getters and setters | Getter and setter helper functions for accessing different types of Object Dictionary variables
OD definition objects | Types and functions used only for definition of Object Dictionary
PDO |
SDO client |
SDO server |
SYNC |
TIME |
CRC 16 CCITT |
CANopen_303 | CANopen recommendation for indicator specification (CiA 303-3 v1.4.0)
LED indicators |
CANopen_304 | CANopen Safety (EN 50325-5:2010 (formerly CiA 304))
GFC |
SRDO |
CANopen_305 | CANopen layer setting services (LSS) and protocols (CiA 305 DSP v3.0.0)
LSS |
LSS Master |
LSS Slave |
CANopen_309 | CANopen access from other networks (CiA 309)
Gateway ASCII mapping |
Command syntax |
CANopen_extra | Additional non-standard objects related to CANopenNode
Trace |
socketCAN | Linux specific interface to CANopenNode
CO_driver_target.h |
Epoll interface |
CAN errors & Log |
OD storage |