46 lines
1.7 KiB
Markdown
46 lines
1.7 KiB
Markdown
# DI-CAN Net discover and redundancy
|
|
|
|
# Application usage of the Net subsystem
|
|
|
|
The application needs to configure and execute the Net subsystem
|
|
in a defined way to use the discover and redundancy functionality.
|
|
|
|
@image html images/di_can_net_app_interaction.svg
|
|
|
|
In the list below the important parts necessary for the application
|
|
are summed:
|
|
|
|
* @ref can_net_callbacks
|
|
* @ref can_net_node_events
|
|
* Set the self node role to [FOLLOWER](@ref DI_CAN_NET_NODE_ROLE_FOLLOWER) when ready with
|
|
@ref di\_can\_net\_self\_set\_node\_role.
|
|
* Periodic execute @ref di\_can\_net\_execute must be called periodicly from the application
|
|
* Discovers the network (@ref di/can/net/discover.h)
|
|
* Executes the follower/leader statemachine
|
|
* @ref di_can_net_discover_fsm_follower
|
|
* @ref di_can_net_discover_fsm_leader
|
|
|
|
# Message callbacks {#can_net_callbacks}
|
|
|
|
The application needs to register a few @ref di_can_callback message callbacks
|
|
or else they are not processed by the Net subsystem. As depicted in the list below:
|
|
|
|
* @ref DI_CAN_NET_CALLBACK_HEARTBEAT_PUBLISH_ITEM
|
|
* @ref DI_CAN_NET_DISCOVER_CALLBACK_REQUEST_ITEM
|
|
* @ref DI_CAN_NET_DISCOVER_CALLBACK_REPLY_ITEM
|
|
|
|
# Register for all node events {#can_net_node_events}
|
|
|
|
The application is able to register a callback for all events triggered
|
|
from all nodes with @ref di\_can\_net\_node\_set\_event\_callback.
|
|
|
|
@warning The application should be aware in the callback the Net context is locked!
|
|
And only certian functions may be used or else a deadlock will occur.
|
|
|
|
All the available events are decribed in the @ref di\_can\_net\_node\_events enum.
|
|
|
|
Some functions can be used inside the application defined callback:
|
|
|
|
* @ref di_can_net_node_is_self
|
|
* @ref di_can_net_node_is_same_type_as_self
|