36#ifndef __DRIVERS_CANBUS_CAN_MAIN_STATEMACHINE__
37#define __DRIVERS_CANBUS_CAN_MAIN_STATEMACHINE__
60 void (*lock_shared_resources)(void);
63 void (*unlock_shared_resources)(void);
84 void (*alias_mapping_unregister)(uint16_t alias);
87 uint8_t (*get_current_tick)(void);
90 bool (*handle_duplicate_aliases)(void);
93 bool (*handle_outgoing_can_message)(void);
96 bool (*handle_login_outgoing_can_message)(void);
99 bool (*handle_try_enumerate_first_node)(void);
102 bool (*handle_try_enumerate_next_node)(void);
105 bool (*handle_listener_verification)(void);
bool CanMainStatemachine_handle_try_enumerate_next_node(void)
Continues enumeration and processes the next node.
Definition can_main_statemachine.c:326
void CanMainStatemachine_initialize(const interface_can_main_statemachine_t *interface_can_main_statemachine)
Registers the dependency-injection interface and prepares internal buffers.
Definition can_main_statemachine.c:84
bool CanMainStatemachine_handle_duplicate_aliases(void)
Scans the alias table, unregisters duplicates, and resets affected nodes.
Definition can_main_statemachine.c:192
can_statemachine_info_t * CanMainStateMachine_get_can_statemachine_info(void)
Returns a pointer to the internal state machine context.
Definition can_main_statemachine.c:178
bool CanMainStatemachine_handle_outgoing_can_message(void)
Pops one message from the outgoing CAN FIFO and attempts transmission.
Definition can_main_statemachine.c:226
void CanMainStateMachine_run(void)
Executes one iteration of the main CAN state machine.
Definition can_main_statemachine.c:406
bool CanMainStatemachine_handle_listener_verification(void)
Probes one listener alias for staleness and queues an AME if due.
Definition can_main_statemachine.c:361
bool CanMainStatemachine_handle_login_outgoing_can_message(void)
Attempts to transmit the pending login frame (CID, RID, or AMD).
Definition can_main_statemachine.c:262
bool CanMainStatemachine_handle_try_enumerate_first_node(void)
Gets the first node and processes it through its appropriate state machine.
Definition can_main_statemachine.c:289
Type definitions and constants for the CAN transport layer.
Definition can_types.h:190
Definition can_types.h:118
Definition can_types.h:155
Dependency-injection interface for the CAN main state machine.
Definition can_main_statemachine.h:57
OpenLCB virtual node.
Definition openlcb_types.h:679