# 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