Prusa-Firmware/Firmware/ConfigurationStore.h

72 lines
2.6 KiB
C
Raw Normal View History

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"
#include <stdint.h>
#include <avr/eeprom.h>
2016-07-22 13:28:01 +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];
float acceleration; //!< Normal acceleration mm/s^2 THIS IS THE DEFAULT ACCELERATION for all moves. M204 SXXXX
float retract_acceleration; //!< mm/s^2 filament pull-pack and push-forward while standing still in the other axis M204 TXXXX
float minimumfeedrate;
float mintravelfeedrate;
unsigned long minsegmenttime;
float max_jerk[4]; //!< Jerk is a maximum immediate velocity change.
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;
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.
float max_feedrate_silent[4]; //!< max speeds for silent mode
unsigned long max_acceleration_units_per_sq_second_silent[4];
unsigned char axis_ustep_resolution[4];
float travel_acceleration; //!< travel acceleration mm/s^2
// Arc Interpolation Settings, configurable via M214
float mm_per_arc_segment;
float min_mm_per_arc_segment;
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
} M500_conf;
extern M500_conf cs;
2016-07-22 13:28:01 +00:00
void Config_ResetDefault();
#ifndef DISABLE_M503
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
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); }
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