| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 | 
							- /// @file
 
- #pragma once
 
- #include <stdint.h>
 
- #include "eeprom.h"
 
- // See documentation here: https://help.prusa3d.com/article/spooljoin-mmu2s_134252
 
- namespace SpoolJoin {
 
- class SpoolJoin {
 
- public:
 
-     SpoolJoin();
 
-     enum class EEPROM : uint8_t {
 
-         Unknown, ///< SpoolJoin is unknown while printer is booting up
 
-         Enabled, ///< SpoolJoin is enabled in EEPROM
 
-         Disabled, ///< SpoolJoin is disabled in EEPROM
 
-         Empty = 0xFF ///< EEPROM has not been set before and all bits are 1 (0xFF) - either a new printer or user erased the memory
 
-     };
 
-     /// @brief Called when EEPROM is ready to be read
 
-     void initSpoolJoinStatus();
 
-     /// @brief Enable SpoolJoin
 
-     inline void enableSpoolJoin() { updateSpoolJoinStatus(EEPROM::Enabled); };
 
-     /// @brief Disable SpoolJoin
 
-     inline void disableSpoolJoin() { updateSpoolJoinStatus(EEPROM::Disabled); };
 
-     /// @brief Toggle SpoolJoin
 
-     static void toggleSpoolJoin();
 
-     /// @brief Check if SpoolJoin is enabled
 
-     /// @returns true if enabled, false if disabled
 
-     bool isSpoolJoinEnabled();
 
-     /// @brief Update the saved MMU slot number so SpoolJoin can determine the next slot to use
 
-     /// @param slot number of the slot to set
 
-     void setSlot(uint8_t slot);
 
-     /// @brief Fetch the next slot number should count from 0 to 4.
 
-     /// When filament slot 4 is depleted, the next slot should be 0.
 
-     /// @returns the next slot, ranges from 0 to 4
 
-     uint8_t nextSlot();
 
- private:
 
-     /// @brief Update EEPROM
 
-     /// @param newStatus Status to write into EEPROM
 
-     void updateSpoolJoinStatus(EEPROM newStatus);
 
-     /// @brief SpoolJoin status
 
-     enum EEPROM status;
 
-     /// @brief Currently used slot, ranges from 0 to 4
 
-     uint8_t currentMMUSlot;
 
- };
 
- extern SpoolJoin spooljoin;
 
- } // namespace SpoolJoin
 
 
  |