UBL no longer needs ubl_state
This commit is contained in:
parent
8dd08425fd
commit
1344ca4b2f
|
@ -65,10 +65,9 @@
|
||||||
safe_delay(10);
|
safe_delay(10);
|
||||||
}
|
}
|
||||||
|
|
||||||
ubl_state unified_bed_leveling::state;
|
int8_t unified_bed_leveling::storage_slot;
|
||||||
|
|
||||||
float unified_bed_leveling::z_values[GRID_MAX_POINTS_X][GRID_MAX_POINTS_Y],
|
float unified_bed_leveling::z_values[GRID_MAX_POINTS_X][GRID_MAX_POINTS_Y];
|
||||||
unified_bed_leveling::last_specified_z;
|
|
||||||
|
|
||||||
// 15 is the maximum nubmer of grid points supported + 1 safety margin for now,
|
// 15 is the maximum nubmer of grid points supported + 1 safety margin for now,
|
||||||
// until determinism prevails
|
// until determinism prevails
|
||||||
|
@ -91,12 +90,11 @@
|
||||||
|
|
||||||
void unified_bed_leveling::reset() {
|
void unified_bed_leveling::reset() {
|
||||||
set_bed_leveling_enabled(false);
|
set_bed_leveling_enabled(false);
|
||||||
state.storage_slot = -1;
|
storage_slot = -1;
|
||||||
#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
|
#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
|
||||||
planner.set_z_fade_height(10.0);
|
planner.set_z_fade_height(10.0);
|
||||||
#endif
|
#endif
|
||||||
ZERO(z_values);
|
ZERO(z_values);
|
||||||
last_specified_z = -999.9;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void unified_bed_leveling::invalidate() {
|
void unified_bed_leveling::invalidate() {
|
||||||
|
|
|
@ -70,16 +70,9 @@ extern uint8_t ubl_cnt;
|
||||||
#define MESH_X_DIST (float(UBL_MESH_MAX_X - (UBL_MESH_MIN_X)) / float(GRID_MAX_POINTS_X - 1))
|
#define MESH_X_DIST (float(UBL_MESH_MAX_X - (UBL_MESH_MIN_X)) / float(GRID_MAX_POINTS_X - 1))
|
||||||
#define MESH_Y_DIST (float(UBL_MESH_MAX_Y - (UBL_MESH_MIN_Y)) / float(GRID_MAX_POINTS_Y - 1))
|
#define MESH_Y_DIST (float(UBL_MESH_MAX_Y - (UBL_MESH_MIN_Y)) / float(GRID_MAX_POINTS_Y - 1))
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
bool active = false;
|
|
||||||
int8_t storage_slot = -1;
|
|
||||||
} ubl_state;
|
|
||||||
|
|
||||||
class unified_bed_leveling {
|
class unified_bed_leveling {
|
||||||
private:
|
private:
|
||||||
|
|
||||||
static float last_specified_z;
|
|
||||||
|
|
||||||
static int g29_verbose_level,
|
static int g29_verbose_level,
|
||||||
g29_phase_value,
|
g29_phase_value,
|
||||||
g29_repetition_cnt,
|
g29_repetition_cnt,
|
||||||
|
@ -161,7 +154,7 @@ class unified_bed_leveling {
|
||||||
static void G26();
|
static void G26();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static ubl_state state;
|
static int8_t storage_slot;
|
||||||
|
|
||||||
static float z_values[GRID_MAX_POINTS_X][GRID_MAX_POINTS_Y];
|
static float z_values[GRID_MAX_POINTS_X][GRID_MAX_POINTS_Y];
|
||||||
|
|
||||||
|
|
|
@ -424,8 +424,8 @@
|
||||||
#endif // HAS_BED_PROBE
|
#endif // HAS_BED_PROBE
|
||||||
|
|
||||||
if (parser.seen('P')) {
|
if (parser.seen('P')) {
|
||||||
if (WITHIN(g29_phase_value, 0, 1) && state.storage_slot == -1) {
|
if (WITHIN(g29_phase_value, 0, 1) && storage_slot == -1) {
|
||||||
state.storage_slot = 0;
|
storage_slot = 0;
|
||||||
SERIAL_PROTOCOLLNPGM("Default storage slot 0 selected.");
|
SERIAL_PROTOCOLLNPGM("Default storage slot 0 selected.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -604,7 +604,7 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
if (parser.seen('L')) { // Load Current Mesh Data
|
if (parser.seen('L')) { // Load Current Mesh Data
|
||||||
g29_storage_slot = parser.has_value() ? parser.value_int() : state.storage_slot;
|
g29_storage_slot = parser.has_value() ? parser.value_int() : storage_slot;
|
||||||
|
|
||||||
int16_t a = settings.calc_num_meshes();
|
int16_t a = settings.calc_num_meshes();
|
||||||
|
|
||||||
|
@ -620,7 +620,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
settings.load_mesh(g29_storage_slot);
|
settings.load_mesh(g29_storage_slot);
|
||||||
state.storage_slot = g29_storage_slot;
|
storage_slot = g29_storage_slot;
|
||||||
|
|
||||||
SERIAL_PROTOCOLLNPGM("Done.");
|
SERIAL_PROTOCOLLNPGM("Done.");
|
||||||
}
|
}
|
||||||
|
@ -630,7 +630,7 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
if (parser.seen('S')) { // Store (or Save) Current Mesh Data
|
if (parser.seen('S')) { // Store (or Save) Current Mesh Data
|
||||||
g29_storage_slot = parser.has_value() ? parser.value_int() : state.storage_slot;
|
g29_storage_slot = parser.has_value() ? parser.value_int() : storage_slot;
|
||||||
|
|
||||||
if (g29_storage_slot == -1) { // Special case, we are going to 'Export' the mesh to the
|
if (g29_storage_slot == -1) { // Special case, we are going to 'Export' the mesh to the
|
||||||
SERIAL_ECHOLNPGM("G29 I 999"); // host in a form it can be reconstructed on a different machine
|
SERIAL_ECHOLNPGM("G29 I 999"); // host in a form it can be reconstructed on a different machine
|
||||||
|
@ -662,7 +662,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
settings.store_mesh(g29_storage_slot);
|
settings.store_mesh(g29_storage_slot);
|
||||||
state.storage_slot = g29_storage_slot;
|
storage_slot = g29_storage_slot;
|
||||||
|
|
||||||
SERIAL_PROTOCOLLNPGM("Done.");
|
SERIAL_PROTOCOLLNPGM("Done.");
|
||||||
}
|
}
|
||||||
|
@ -1195,10 +1195,10 @@
|
||||||
void unified_bed_leveling::g29_what_command() {
|
void unified_bed_leveling::g29_what_command() {
|
||||||
report_state();
|
report_state();
|
||||||
|
|
||||||
if (state.storage_slot == -1)
|
if (storage_slot == -1)
|
||||||
SERIAL_PROTOCOLPGM("No Mesh Loaded.");
|
SERIAL_PROTOCOLPGM("No Mesh Loaded.");
|
||||||
else {
|
else {
|
||||||
SERIAL_PROTOCOLPAIR("Mesh ", state.storage_slot);
|
SERIAL_PROTOCOLPAIR("Mesh ", storage_slot);
|
||||||
SERIAL_PROTOCOLPGM(" Loaded.");
|
SERIAL_PROTOCOLPGM(" Loaded.");
|
||||||
}
|
}
|
||||||
SERIAL_EOL();
|
SERIAL_EOL();
|
||||||
|
|
|
@ -51,7 +51,7 @@ void GcodeSuite::M420() {
|
||||||
if (parser.seen('L')) {
|
if (parser.seen('L')) {
|
||||||
|
|
||||||
#if ENABLED(EEPROM_SETTINGS)
|
#if ENABLED(EEPROM_SETTINGS)
|
||||||
const int8_t storage_slot = parser.has_value() ? parser.value_int() : ubl.state.storage_slot;
|
const int8_t storage_slot = parser.has_value() ? parser.value_int() : ubl.storage_slot;
|
||||||
const int16_t a = settings.calc_num_meshes();
|
const int16_t a = settings.calc_num_meshes();
|
||||||
|
|
||||||
if (!a) {
|
if (!a) {
|
||||||
|
@ -66,7 +66,7 @@ void GcodeSuite::M420() {
|
||||||
}
|
}
|
||||||
|
|
||||||
settings.load_mesh(storage_slot);
|
settings.load_mesh(storage_slot);
|
||||||
ubl.state.storage_slot = storage_slot;
|
ubl.storage_slot = storage_slot;
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ void GcodeSuite::M420() {
|
||||||
if (parser.seen('L') || parser.seen('V')) {
|
if (parser.seen('L') || parser.seen('V')) {
|
||||||
ubl.display_map(0); // Currently only supports one map type
|
ubl.display_map(0); // Currently only supports one map type
|
||||||
SERIAL_ECHOLNPAIR("ubl.mesh_is_valid = ", ubl.mesh_is_valid());
|
SERIAL_ECHOLNPAIR("ubl.mesh_is_valid = ", ubl.mesh_is_valid());
|
||||||
SERIAL_ECHOLNPAIR("ubl.state.storage_slot = ", ubl.state.storage_slot);
|
SERIAL_ECHOLNPAIR("ubl.storage_slot = ", ubl.storage_slot);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // AUTO_BED_LEVELING_UBL
|
#endif // AUTO_BED_LEVELING_UBL
|
||||||
|
|
|
@ -89,7 +89,7 @@
|
||||||
*
|
*
|
||||||
* AUTO_BED_LEVELING_UBL: 2 bytes
|
* AUTO_BED_LEVELING_UBL: 2 bytes
|
||||||
* 324 G29 A planner.leveling_active (bool)
|
* 324 G29 A planner.leveling_active (bool)
|
||||||
* 325 G29 S ubl.state.storage_slot (int8_t)
|
* 325 G29 S ubl.storage_slot (int8_t)
|
||||||
*
|
*
|
||||||
* DELTA: 48 bytes
|
* DELTA: 48 bytes
|
||||||
* 344 M666 XYZ delta_endstop_adj (float x3)
|
* 344 M666 XYZ delta_endstop_adj (float x3)
|
||||||
|
@ -411,7 +411,7 @@ void MarlinSettings::postprocess() {
|
||||||
|
|
||||||
#if ENABLED(AUTO_BED_LEVELING_UBL)
|
#if ENABLED(AUTO_BED_LEVELING_UBL)
|
||||||
EEPROM_WRITE(planner.leveling_active);
|
EEPROM_WRITE(planner.leveling_active);
|
||||||
EEPROM_WRITE(ubl.state.storage_slot);
|
EEPROM_WRITE(ubl.storage_slot);
|
||||||
#else
|
#else
|
||||||
const bool ubl_active = false;
|
const bool ubl_active = false;
|
||||||
const int8_t storage_slot = -1;
|
const int8_t storage_slot = -1;
|
||||||
|
@ -634,8 +634,8 @@ void MarlinSettings::postprocess() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ENABLED(UBL_SAVE_ACTIVE_ON_M500)
|
#if ENABLED(UBL_SAVE_ACTIVE_ON_M500)
|
||||||
if (ubl.state.storage_slot >= 0)
|
if (ubl.storage_slot >= 0)
|
||||||
store_mesh(ubl.state.storage_slot);
|
store_mesh(ubl.storage_slot);
|
||||||
#endif
|
#endif
|
||||||
EEPROM_FINISH();
|
EEPROM_FINISH();
|
||||||
return !eeprom_error;
|
return !eeprom_error;
|
||||||
|
@ -798,7 +798,7 @@ void MarlinSettings::postprocess() {
|
||||||
|
|
||||||
#if ENABLED(AUTO_BED_LEVELING_UBL)
|
#if ENABLED(AUTO_BED_LEVELING_UBL)
|
||||||
EEPROM_READ(planner.leveling_active);
|
EEPROM_READ(planner.leveling_active);
|
||||||
EEPROM_READ(ubl.state.storage_slot);
|
EEPROM_READ(ubl.storage_slot);
|
||||||
#else
|
#else
|
||||||
uint8_t dummyui8;
|
uint8_t dummyui8;
|
||||||
EEPROM_READ(dummyb);
|
EEPROM_READ(dummyb);
|
||||||
|
@ -1015,10 +1015,10 @@ void MarlinSettings::postprocess() {
|
||||||
ubl.reset();
|
ubl.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ubl.state.storage_slot >= 0) {
|
if (ubl.storage_slot >= 0) {
|
||||||
load_mesh(ubl.state.storage_slot);
|
load_mesh(ubl.storage_slot);
|
||||||
#if ENABLED(EEPROM_CHITCHAT)
|
#if ENABLED(EEPROM_CHITCHAT)
|
||||||
SERIAL_ECHOPAIR("Mesh ", ubl.state.storage_slot);
|
SERIAL_ECHOPAIR("Mesh ", ubl.storage_slot);
|
||||||
SERIAL_ECHOLNPGM(" loaded from storage.");
|
SERIAL_ECHOLNPGM(" loaded from storage.");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -1570,7 +1570,7 @@ void MarlinSettings::reset() {
|
||||||
SERIAL_EOL();
|
SERIAL_EOL();
|
||||||
ubl.report_state();
|
ubl.report_state();
|
||||||
|
|
||||||
SERIAL_ECHOLNPAIR("\nActive Mesh Slot: ", ubl.state.storage_slot);
|
SERIAL_ECHOLNPAIR("\nActive Mesh Slot: ", ubl.storage_slot);
|
||||||
SERIAL_ECHOPAIR("EEPROM can hold ", calc_num_meshes());
|
SERIAL_ECHOPAIR("EEPROM can hold ", calc_num_meshes());
|
||||||
SERIAL_ECHOLNPGM(" meshes.\n");
|
SERIAL_ECHOLNPGM(" meshes.\n");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue