2016-07-22 13:28:01 +00:00
# ifndef CONFIG_STORE_H
# define CONFIG_STORE_H
2017-03-24 18:47:50 +00:00
# define EEPROM_SETTINGS
2016-07-22 13:28:01 +00:00
# include "Configuration.h"
2018-10-08 18:24:56 +00:00
# include <stdint.h>
# include <avr/eeprom.h>
2016-07-22 13:28:01 +00:00
2018-09-24 12:34:43 +00: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 13:47:36 +00:00
float acceleration ; //!< Normal acceleration mm/s^2 THIS IS THE DEFAULT ACCELERATION for all moves. M204 SXXXX
2018-09-24 13:53:35 +00: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 12:34:43 +00:00
float minimumfeedrate ;
float mintravelfeedrate ;
unsigned long minsegmenttime ;
2018-09-24 14:35:33 +00:00
float max_jerk [ 4 ] ; //!< Jerk is a maximum immediate velocity change.
2018-09-24 12:34:43 +00: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 15:29:02 +00: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 15:33:58 +00:00
float max_feedrate_silent [ 4 ] ; //!< max speeds for silent mode
2018-09-24 12:34:43 +00:00
unsigned long max_acceleration_units_per_sq_second_silent [ 4 ] ;
2019-03-19 20:28:31 +00:00
unsigned char axis_ustep_resolution [ 4 ] ;
2020-09-20 16:15:27 +00:00
float travel_acceleration ; //!< travel acceleration mm/s^2
2020-05-07 16:03:08 +00:00
// Arc Interpolation Settings, configurable via M214
float mm_per_arc_segment ;
float min_mm_per_arc_segment ;
2022-04-25 14:41:35 +00:00
unsigned char n_arc_correction ; // If equal to zero, this is disabled
unsigned short min_arc_segments ; // If equal to zero, this is disabled
unsigned short arc_segments_per_sec ; // If equal to zero, this is disabled
2018-09-25 14:27:20 +00:00
} M500_conf ;
2018-09-24 12:34:43 +00:00
2018-09-24 12:54:41 +00:00
extern M500_conf cs ;
2018-09-24 12:34:43 +00:00
2016-07-22 13:28:01 +00:00
void Config_ResetDefault ( ) ;
# ifndef DISABLE_M503
2017-09-21 13:20:02 +00:00
void Config_PrintSettings ( uint8_t level = 0 ) ;
2016-07-22 13:28:01 +00:00
# else
FORCE_INLINE void Config_PrintSettings ( ) { }
# endif
# ifdef EEPROM_SETTINGS
2018-10-08 18:24:56 +00:00
void Config_StoreSettings ( ) ;
bool Config_RetrieveSettings ( ) ;
2016-07-22 13:28:01 +00:00
# else
FORCE_INLINE void Config_StoreSettings ( ) { }
FORCE_INLINE void Config_RetrieveSettings ( ) { Config_ResetDefault ( ) ; Config_PrintSettings ( ) ; }
# endif
2017-03-24 18:47:50 +00:00
inline uint8_t calibration_status ( ) { return eeprom_read_byte ( ( uint8_t * ) EEPROM_CALIBRATION_STATUS ) ; }
2018-07-23 11:35:38 +00:00
inline void calibration_status_store ( uint8_t status ) { eeprom_update_byte ( ( uint8_t * ) EEPROM_CALIBRATION_STATUS , status ) ; }
2017-06-29 16:35:43 +00:00
inline bool calibration_status_pinda ( ) { return eeprom_read_byte ( ( uint8_t * ) EEPROM_CALIBRATION_STATUS_PINDA ) ; }
2016-07-22 13:28:01 +00:00
# endif //CONFIG_STORE_H