CANOpen dispatch class. More...
#include <canopen.h>
Inherits Sink< SDO >, and Sink< Message >.
Public Member Functions | |
| void | nmt (NMT command, uint8_t nodeid) |
| send NMT command to nodeid, rsp broadcast it (id = 0) | |
| void | sync () |
| send SYNC message on network | |
| void | heartbeat (uint8_t id, STATE state) |
| send HEARTBEAT message to node id, signal own state | |
| void | guard (uint8_t id) |
| send GUARD message to node id | |
| void | process () |
| call directly after CAN interrupt handler processed | |
| bool | full () override |
| check if sink is full | |
| virtual void | push (const SDO &t) |
| copy semantics does not check for space. guard by using 'if (!full) { ... }' | |
| virtual void | push (SDO &&)=0 |
| move semantics does not check for space. guard by using 'if (!full) { ... }' | |
| void | trypush (SDO &&t) |
| use this if you don't care if it's going to be successful. data gets discarded if sink is full. | |
| virtual void | push (const Message &t) |
| copy semantics does not check for space. guard by using 'if (!full) { ... }' | |
| virtual void | push (Message &&)=0 |
| move semantics does not check for space. guard by using 'if (!full) { ... }' | |
| void | trypush (Message &&t) |
| use this if you don't care if it's going to be successful. data gets discarded if sink is full. | |
CANOpen dispatch class.
use this as a middle layer between the CAN bus and the Device devices to handle translation between the protocols. call this class' process directly after the CAN irqHandler
cf. https://www.microcontrol.net/wp-content/uploads/2021/10/td-03011e.pdf
cf. https://www.can-cia.org/fileadmin/resources/documents/brochures/co_poster.pdf