2016-07-22 15:28:01 +02:00
# ifndef CONFIG_STORE_H
# define CONFIG_STORE_H
2017-03-24 19:47:50 +01:00
# define EEPROM_SETTINGS
2016-07-22 15:28:01 +02:00
# include "Configuration.h"
2018-10-08 20:24:56 +02:00
# include <stdint.h>
# include <avr/eeprom.h>
2016-07-22 15:28:01 +02:00
2018-09-24 14:34:43 +02:00
typedef struct
{
char version [ 4 ] ;
float axis_steps_per_unit [ 4 ] ;
float max_feedrate_normal [ 4 ] ;
unsigned long max_acceleration_units_per_sq_second_normal [ 4 ] ;
2018-09-24 15:47:36 +02:00
float acceleration ; //!< Normal acceleration mm/s^2 THIS IS THE DEFAULT ACCELERATION for all moves. M204 SXXXX
2018-09-24 15:53:35 +02:00
float retract_acceleration ; //!< mm/s^2 filament pull-pack and push-forward while standing still in the other axis M204 TXXXX
2018-09-24 14:34:43 +02:00
float minimumfeedrate ;
float mintravelfeedrate ;
unsigned long minsegmenttime ;
2018-09-24 16:35:33 +02:00
float max_jerk [ 4 ] ; //!< Jerk is a maximum immediate velocity change.
2018-09-24 14:34:43 +02:00
float add_homing [ 3 ] ;
float zprobe_zoffset ;
float Kp ;
float Ki ;
float Kd ;
float bedKp ;
float bedKi ;
float bedKd ;
int lcd_contrast ; //!< unused
bool autoretract_enabled ;
float retract_length ;
float retract_feedrate ;
float retract_zlift ;
float retract_recover_length ;
float retract_recover_feedrate ;
bool volumetric_enabled ;
2018-09-24 17:29:02 +02:00
float filament_size [ 1 ] ; //!< cross-sectional area of filament (in millimeters), typically around 1.75 or 2.85, 0 disables the volumetric calculations for the extruder.
2018-09-24 17:33:58 +02:00
float max_feedrate_silent [ 4 ] ; //!< max speeds for silent mode
2018-09-24 14:34:43 +02:00
unsigned long max_acceleration_units_per_sq_second_silent [ 4 ] ;
2018-09-25 16:27:20 +02:00
} M500_conf ;
2018-09-24 14:34:43 +02:00
2018-09-24 14:54:41 +02:00
extern M500_conf cs ;
2018-09-24 14:34:43 +02:00
2016-07-22 15:28:01 +02:00
void Config_ResetDefault ( ) ;
# ifndef DISABLE_M503
2017-09-21 15:20:02 +02:00
void Config_PrintSettings ( uint8_t level = 0 ) ;
2016-07-22 15:28:01 +02:00
# else
FORCE_INLINE void Config_PrintSettings ( ) { }
# endif
# ifdef EEPROM_SETTINGS
2018-10-08 20:24:56 +02:00
void Config_StoreSettings ( ) ;
bool Config_RetrieveSettings ( ) ;
2016-07-22 15:28:01 +02:00
# else
FORCE_INLINE void Config_StoreSettings ( ) { }
FORCE_INLINE void Config_RetrieveSettings ( ) { Config_ResetDefault ( ) ; Config_PrintSettings ( ) ; }
# endif
2017-03-24 19:47:50 +01:00
inline uint8_t calibration_status ( ) { return eeprom_read_byte ( ( uint8_t * ) EEPROM_CALIBRATION_STATUS ) ; }
2018-07-23 13:35:38 +02:00
inline void calibration_status_store ( uint8_t status ) { eeprom_update_byte ( ( uint8_t * ) EEPROM_CALIBRATION_STATUS , status ) ; }
2017-06-29 18:35:43 +02:00
inline bool calibration_status_pinda ( ) { return eeprom_read_byte ( ( uint8_t * ) EEPROM_CALIBRATION_STATUS_PINDA ) ; }
2017-03-24 19:47:50 +01:00
2016-07-22 15:28:01 +02:00
# endif //CONFIG_STORE_H