Signals can be scalar or an array of scalar values. Each signal has a publisher and several subscribers. A Signal publisher is the only one that writes a specific signal, zero, one or more subscribers can receive this signal.
The node configurations specs require that all signal has a initial value; nonetheless, this initial value is valid until the signal publisher updates the signal data with new data to publish this signal to the other nodes.
The writing and reading of signals shall always be atomic operations, so the application will always have to have a complete updated signal; although no consistency can be guarantee by the signal management.
The signal packing determines that the transmission of a signal is by appending several signals into a frame, the reading and writing of a frame is always from the LSB to the MSB. The packing/unpacking procedure will be more efficient if the signals are aligned to be separated in multiples of bytes.
The signal reception and transmission are based on the Master and slave nodes timing. The master node handles the schedule and know when to send every specific frame; whereas the slave node timing is based on the reception of Master node headers.
The signal reception is acknowledged in the following way:
- The master node has no acknowledge of reception, it updates its received signals periodically based on the task level timing.
- The slave node acknowledge the reception of the signal when the checksum of the received frame is validated and the timing is based on interruption level.
The signal transmission is acknowledged in the following way:
- The master node has the latest point where application can write the signal before the frame transmission is started.
- The slave node has the latest point where application can write the signal when the frame ID is received.