Prusa-MMU-Private
PrusaMultiMaterialUpgradev3firmwareforMK3SMK4
selector.h
Go to the documentation of this file.
1 #pragma once
3 #include "../config/config.h"
4 #include "axisunit.h"
5 #include "movable_base.h"
6 
7 namespace modules {
8 
10 namespace selector {
11 
12 namespace mm = modules::motion;
13 
15 class Selector : public mm::MovableBase {
16 public:
17  inline constexpr Selector()
18  : MovableBase(mm::Selector) {}
19 
24  OperationResult MoveToSlot(uint8_t slot);
25 
28  bool Step();
29 
31  static constexpr mm::S_pos_t SlotPosition(uint8_t slot) {
32  return mm::unitToAxisUnit<mm::S_pos_t>(config::selectorSlotPositions[slot]);
33  }
34 
36  inline static constexpr uint8_t IdleSlotIndex() { return config::toolCount; }
37 
42  void Init();
43 
44 protected:
45  virtual void PrepareMoveToPlannedSlot() override;
46  virtual void PlanHomingMoveForward() override;
47  virtual void PlanHomingMoveBack() override;
48  virtual bool FinishHomingAndPlanMoveToParkPos() override;
49  virtual void FinishMove() override;
50 
51 private:
52 };
53 
55 extern Selector selector;
56 
57 } // namespace selector
58 } // namespace modules
59 
60 namespace ms = modules::selector;
Base class for movable modules - modules::idler::Idler and modules::selector::Selector contains the c...
Definition: movable_base.h:11
OperationResult
Operation (Engage/Disengage/MoveToSlot) return values.
Definition: movable_base.h:26
The selector model - handles asynchronnous move operations between filament individual slots and keep...
Definition: selector.h:15
virtual bool FinishHomingAndPlanMoveToParkPos() override
Definition: selector.cpp:36
static constexpr uint8_t IdleSlotIndex()
Definition: selector.h:36
static constexpr mm::S_pos_t SlotPosition(uint8_t slot)
Definition: selector.h:31
void Init()
Definition: selector.cpp:135
bool Step()
Definition: selector.cpp:91
OperationResult MoveToSlot(uint8_t slot)
Definition: selector.cpp:57
static constexpr U_mm selectorSlotPositions[toolCount+1]
Selector offset from home min to slot 0.
Definition: config.h:162
static constexpr AxisConfig selector
End: Pulley axis configuration.
Definition: config.h:136
static constexpr const uint8_t toolCount
Definition: config.h:24
Definition: command_base.h:9
The selector namespace provides all necessary facilities related to the logical model of the selector...
Definition: selector.cpp:13
Selector selector
The one and only instance of Selector in the FW.
Definition: selector.cpp:15
The modules namespace contains models of MMU's components.
Definition: command_base.h:8
Definition: axisunit.h:68