/// @file home.h #pragma once #include #include "command_base.h" namespace logic { /// @brief A high-level command state machine - wrapps the rehoming procedure to be used from a printer /// /// The Move-Selector operation consists of: /// - issue a new coordinate to the Selector /// /// Beware - Selector will NOT perform the move if filament sensor state is not in the right state /// This high-level command is just a way to invoke moving the Selector from the printer /// and/or from the MMU's buttons while all safety measures are kept. class MoveSelector : public CommandBase { public: inline MoveSelector() : CommandBase() {} /// Restart the automaton /// @param param target selector slot bool Reset(uint8_t param) override; /// @returns true if the state machine finished its job, false otherwise bool StepInner() override; }; /// The one and only instance of MoveSelector state machine in the FW extern MoveSelector moveSelector; } // namespace logic