Prusa-MMU-Private
PrusaMultiMaterialUpgradev3firmwareforMK3SMK4
Classes | Functions | Variables
modules::permanent_storage Namespace Reference

The permanent_storage namespace provides all necessary facilities related to permanently storing data (into EEPROM) on the MMU unit. More...

Classes

struct  eeprom_t
 EEPROM data layout. More...
 
class  BowdenLength
 Read and store bowden length. More...
 
class  FilamentLoaded
 Read and store last filament loaded to nozzle. More...
 
class  DriveError
 Read and increment drive errors. More...
 
class  AxisTMCSetup
 Axis TMC persistent setup. More...
 

Functions

struct modules::permanent_storage::eeprom_t __attribute__ ((packed))
 
void Init ()
 Initialization of the permanent storage hive.
 
void EraseAll ()
 Erase the whole EEPROM.
 
static constexpr bool validBowdenLen (const uint16_t BowdenLength)
 Is bowden length in valid range? More...
 

Variables

static const uint8_t layoutVersion = 0xff
 EEPROM layout version.
 
static eeprom_t *const eepromBase = reinterpret_cast<eeprom_t *>(0)
 First EEPROM address.
 
constexpr const uint16_t eepromEmpty = 0xffffU
 EEPROM content when erased.
 
constexpr const uint16_t eepromBowdenLenDefault = config::defaultBowdenLength.v
 Default bowden length (~360 mm)
 
constexpr const uint16_t eepromBowdenLenMinimum = config::minimumBowdenLength.v
 Minimum bowden length (~341 mm)
 
constexpr const uint16_t eepromBowdenLenMaximum = config::maximumBowdenLength.v
 Maximum bowden length (~1000 mm)
 

Detailed Description

The permanent_storage namespace provides all necessary facilities related to permanently storing data (into EEPROM) on the MMU unit.

It uses some clever logic/wear levelling/data structure on top of the raw EEPROM API. The code was originally written by Marek Bel for the previous MMU firmware.

Function Documentation

◆ validBowdenLen()

static constexpr bool modules::permanent_storage::validBowdenLen ( const uint16_t  BowdenLength)
staticconstexpr

Is bowden length in valid range?

Parameters
BowdenLengthbowden length
Return values
truevalid
falseinvalid