Prusa-MMU-Private
PrusaMultiMaterialUpgradev3firmwareforMK3SMK4
load_filament.h
Go to the documentation of this file.
1 #pragma once
3 #include <stdint.h>
4 #include "command_base.h"
5 #include "feed_to_finda.h"
6 #include "retract_from_finda.h"
7 
8 namespace logic {
9 
11 class LoadFilament : public CommandBase {
12 public:
13  inline constexpr LoadFilament()
14  : CommandBase()
15  , verifyLoadedFilament(0)
16  , result(ResultCode::OK) {}
17 
20  bool Reset(uint8_t param) override;
21 
24  void ResetLimited(uint8_t param);
25 
27  bool StepInner() override;
28 
29  virtual ResultCode Result() const override { return result; }
30 
31 private:
32  void GoToRetractingFromFinda();
33  void Reset2(bool feedPhaseLimited);
34 
36  void LoadFinishedCorrectly();
37 
38  FeedToFinda feed;
39  RetractFromFinda retract;
40 
45  uint8_t verifyLoadedFilament;
46 
48  ResultCode result;
49 };
50 
52 extern LoadFilament loadFilament;
53 
54 } // namespace logic
Base class defining common API for high-level operations/commands/state machines.
Definition: command_base.h:29
A high-level command state machine - handles the complex logic of loading filament into a filament sl...
Definition: load_filament.h:11
virtual ResultCode Result() const override
Definition: load_filament.h:29
void ResetLimited(uint8_t param)
Definition: load_filament.cpp:38
bool Reset(uint8_t param) override
Definition: load_filament.cpp:18
bool StepInner() override
Definition: load_filament.cpp:70
The logic namespace handles the application logic on top of the modules.
Definition: application.h:8
LoadFilament loadFilament
The one and only instance of LoadFilament state machine in the FW.
Definition: load_filament.cpp:16
ResultCode
Definition: result_codes.h:10
Feed filament to FINDA.
Definition: feed_to_finda.h:13
Retract filament from FINDA to PTFE.
Definition: retract_from_finda.h:14