diff --git a/src/config/config.h b/src/config/config.h index e7a2ee9..20da6ee 100644 --- a/src/config/config.h +++ b/src/config/config.h @@ -7,7 +7,10 @@ namespace config { static constexpr const uint8_t toolCount = 5U; ///< Max number of extruders/tools/slots // Idler's setup -//static constexpr uint16_t idlerSlotPositions[toolCount+1] = { 1, 2, 3, 4, 5, 0 }; +static constexpr uint16_t idlerSlotPositions[toolCount + 1] = { 1, 2, 3, 4, 5, 0 }; ///< slots 0-4 are the real ones, the 5th is the idle position + +// Selector's setup +static constexpr uint16_t selectorSlotPositions[toolCount + 1] = { 1, 2, 3, 4, 5, 6 }; ///< slots 0-4 are the real ones, the 5th is the farthest parking positions // Printer's filament sensor setup static constexpr const uint16_t fsensorDebounceMs = 10; diff --git a/src/modules/idler.cpp b/src/modules/idler.cpp index 11e9094..a23e1fa 100644 --- a/src/modules/idler.cpp +++ b/src/modules/idler.cpp @@ -7,9 +7,6 @@ namespace modules { namespace idler { -// @@TODO PROGMEM -uint16_t const Idler::slotPositions[slotPositionSize] = { 1, 2, 3, 4, 5, 0 }; - Idler idler; namespace mm = modules::motion; @@ -25,7 +22,7 @@ bool Idler::Disengage() { mm::motion.InitAxis(mm::Idler); // plan move to idle position - mm::motion.PlanMove(mm::Idler, slotPositions[IdleSlotIndex()] - mm::motion.CurrentPos(mm::Idler), 1000); // @@TODO + mm::motion.PlanMove(mm::Idler, config::idlerSlotPositions[IdleSlotIndex()] - mm::motion.CurrentPos(mm::Idler), 1000); // @@TODO state = Moving; return true; } @@ -41,7 +38,7 @@ bool Idler::Engage(uint8_t slot) { return true; mm::motion.InitAxis(mm::Idler); - mm::motion.PlanMove(mm::Idler, slotPositions[slot] - mm::motion.CurrentPos(mm::Idler), 1000); // @@TODO + mm::motion.PlanMove(mm::Idler, config::idlerSlotPositions[slot] - mm::motion.CurrentPos(mm::Idler), 1000); // @@TODO state = Moving; return true; } diff --git a/src/modules/idler.h b/src/modules/idler.h index 5a8d391..93e7e54 100644 --- a/src/modules/idler.h +++ b/src/modules/idler.h @@ -50,17 +50,12 @@ public: inline uint8_t Slot() const { return currentSlot; } /// @returns predefined positions of individual slots - inline static uint16_t SlotPosition(uint8_t slot) { return slotPositions[slot]; } + inline static uint16_t SlotPosition(uint8_t slot) { return config::idlerSlotPositions[slot]; } /// @returns the index of idle position of the idler, usually 5 in case of 0-4 valid indices of filament slots inline static constexpr uint8_t IdleSlotIndex() { return config::toolCount; } private: - constexpr static const uint8_t slotPositionSize = config::toolCount + 1; - - /// slots 0-4 are the real ones, the 5th is the idle position - static const uint16_t slotPositions[slotPositionSize]; - /// internal state of the automaton uint8_t state; diff --git a/src/modules/selector.cpp b/src/modules/selector.cpp index 36d74f1..fe07788 100644 --- a/src/modules/selector.cpp +++ b/src/modules/selector.cpp @@ -7,9 +7,6 @@ namespace modules { namespace selector { -// @@TODO PROGMEM -const uint16_t Selector::slotPositions[slotPositionSize] = { 1, 2, 3, 4, 5, 6 }; // @@TODO - Selector selector; namespace mm = modules::motion; @@ -24,7 +21,7 @@ bool Selector::MoveToSlot(uint8_t slot) { return true; mm::motion.InitAxis(mm::Selector); - mm::motion.PlanMove(mm::Selector, slotPositions[slot] - mm::motion.CurrentPos(mm::Selector), 1000); // @@TODO + mm::motion.PlanMove(mm::Selector, config::selectorSlotPositions[slot] - mm::motion.CurrentPos(mm::Selector), 1000); // @@TODO state = Moving; return true; } diff --git a/src/modules/selector.h b/src/modules/selector.h index 83d2427..61bc807 100644 --- a/src/modules/selector.h +++ b/src/modules/selector.h @@ -41,17 +41,12 @@ public: inline uint8_t Slot() const { return currentSlot; } /// @returns predefined positions of individual slots - inline static uint16_t SlotPosition(uint8_t slot) { return slotPositions[slot]; } + inline static uint16_t SlotPosition(uint8_t slot) { return config::selectorSlotPositions[slot]; } /// @returns the index of idle position of the selector, usually 5 in case of 0-4 valid indices of filament slots inline static constexpr uint8_t IdleSlotIndex() { return config::toolCount; } private: - constexpr static const uint8_t slotPositionSize = config::toolCount + 1; - - /// slots 0-4 are the real ones, the 5th is the farthest parking positions - static const uint16_t slotPositions[slotPositionSize]; - /// internal state of the automaton uint8_t state; uint8_t plannedSlot;