pub struct NmtStateMachine { /* private fields */ }Expand description
The node-side NMT state machine (CiA 301 §7.3.2).
Holds only the current state and applies the guarded transitions of the
diagram above. It performs no I/O: feed it decoded NmtCommands and read
back the resulting NmtState to drive heartbeat production and to gate
which services (e.g. PDOs) are active.
Implementations§
Source§impl NmtStateMachine
impl NmtStateMachine
Sourcepub const fn new() -> Self
pub const fn new() -> Self
A freshly powered node, in NmtState::Initialising.
Sourcepub fn boot(&mut self) -> NmtState
pub fn boot(&mut self) -> NmtState
Complete initialisation: the node enters pre-operational (CiA 301
§7.3.2.1). The caller emits BOOTUP_FRAME alongside this transition.
A no-op unless currently initialising.
Sourcepub fn apply(&mut self, command: NmtCommand) -> NmtState
pub fn apply(&mut self, command: NmtCommand) -> NmtState
Apply an NMT master command, returning the resulting state.
Transitions are guarded: a reset returns to Initialising from any state, while start/stop/enter-pre-operational are ignored during initialisation (the node is not yet a network participant) and otherwise move between the operational states. Repeating a command that matches the current state is a harmless no-op.