From 3c7cdcdc22f43577fbb22e64b115f9d87462b420 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 25 Dec 2017 03:42:51 -0600 Subject: [PATCH] General cleanup of config-store, reset_bed_level --- Marlin/Marlin_main.cpp | 30 +++++++++++----------- Marlin/configuration_store.cpp | 46 ++++++++++++++++------------------ Marlin/configuration_store.h | 16 ++++++------ Marlin/ubl_G29.cpp | 9 ++++--- Marlin/ultralcd.cpp | 2 +- 5 files changed, 50 insertions(+), 53 deletions(-) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index c546fc229..b58758731 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -2502,27 +2502,25 @@ static void clean_up_after_endstop_or_probe_move() { * Reset calibration results to zero. */ void reset_bed_level() { + #if ENABLED(DEBUG_LEVELING_FEATURE) + if (DEBUGGING(LEVELING)) SERIAL_ECHOLNPGM("reset_bed_level"); + #endif set_bed_leveling_enabled(false); #if ENABLED(MESH_BED_LEVELING) if (leveling_is_valid()) { mbl.reset(); mbl.has_mesh = false; } - #else - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) SERIAL_ECHOLNPGM("reset_bed_level"); - #endif - #if ABL_PLANAR - planner.bed_level_matrix.set_to_identity(); - #elif ENABLED(AUTO_BED_LEVELING_BILINEAR) - bilinear_start[X_AXIS] = bilinear_start[Y_AXIS] = - bilinear_grid_spacing[X_AXIS] = bilinear_grid_spacing[Y_AXIS] = 0; - for (uint8_t x = 0; x < GRID_MAX_POINTS_X; x++) - for (uint8_t y = 0; y < GRID_MAX_POINTS_Y; y++) - z_values[x][y] = NAN; - #elif ENABLED(AUTO_BED_LEVELING_UBL) - ubl.reset(); - #endif + #elif ENABLED(AUTO_BED_LEVELING_UBL) + ubl.reset(); + #elif ENABLED(AUTO_BED_LEVELING_BILINEAR) + bilinear_start[X_AXIS] = bilinear_start[Y_AXIS] = + bilinear_grid_spacing[X_AXIS] = bilinear_grid_spacing[Y_AXIS] = 0; + for (uint8_t x = 0; x < GRID_MAX_POINTS_X; x++) + for (uint8_t y = 0; y < GRID_MAX_POINTS_Y; y++) + z_values[x][y] = NAN; + #elif ABL_PLANAR + planner.bed_level_matrix.set_to_identity(); #endif } @@ -9643,7 +9641,7 @@ void quickstop_stepper() { #if ENABLED(EEPROM_SETTINGS) const int8_t storage_slot = parser.has_value() ? parser.value_int() : ubl.storage_slot; - const int16_t a = settings.calc_num_meshes(); + const uint16_t a = settings.calc_num_meshes(); if (!a) { SERIAL_PROTOCOLLNPGM("?EEPROM storage not available."); diff --git a/Marlin/configuration_store.cpp b/Marlin/configuration_store.cpp index 7ca91a73a..2da7cbf62 100644 --- a/Marlin/configuration_store.cpp +++ b/Marlin/configuration_store.cpp @@ -283,7 +283,7 @@ void MarlinSettings::postprocess() { bool MarlinSettings::eeprom_error; #if ENABLED(AUTO_BED_LEVELING_UBL) - int MarlinSettings::meshes_begin; + int16_t MarlinSettings::meshes_begin; #endif void MarlinSettings::write_data(int &pos, const uint8_t *value, uint16_t size, uint16_t *crc) { @@ -383,9 +383,8 @@ void MarlinSettings::postprocess() { sizeof(mbl.z_values) == GRID_MAX_POINTS * sizeof(mbl.z_values[0][0]), "MBL Z array is the wrong size." ); - const bool leveling_is_on = mbl.has_mesh; const uint8_t mesh_num_x = GRID_MAX_POINTS_X, mesh_num_y = GRID_MAX_POINTS_Y; - EEPROM_WRITE(leveling_is_on); + EEPROM_WRITE(mbl.has_mesh); EEPROM_WRITE(mbl.z_offset); EEPROM_WRITE(mesh_num_x); EEPROM_WRITE(mesh_num_y); @@ -581,7 +580,7 @@ void MarlinSettings::postprocess() { EEPROM_WRITE(dummy); } - #endif // !NO_VOLUMETRICS + #endif // Save TMC2130 or TMC2208 Configuration, and placeholder values uint16_t val; @@ -1282,7 +1281,7 @@ void MarlinSettings::postprocess() { } #endif - int MarlinSettings::calc_num_meshes() { + uint16_t MarlinSettings::calc_num_meshes() { //obviously this will get more sophisticated once we've added an actual MAT if (meshes_begin <= 0) return 0; @@ -1290,10 +1289,10 @@ void MarlinSettings::postprocess() { return (meshes_end - meshes_begin) / sizeof(ubl.z_values); } - void MarlinSettings::store_mesh(int8_t slot) { + void MarlinSettings::store_mesh(const int8_t slot) { #if ENABLED(AUTO_BED_LEVELING_UBL) - const int a = calc_num_meshes(); + const uint16_t a = calc_num_meshes(); if (!WITHIN(slot, 0, a - 1)) { #if ENABLED(EEPROM_CHITCHAT) ubl_invalid_slot(a); @@ -1323,11 +1322,11 @@ void MarlinSettings::postprocess() { #endif } - void MarlinSettings::load_mesh(int8_t slot, void *into /* = 0 */) { + void MarlinSettings::load_mesh(const int8_t slot, void * const into/*=NULL*/) { #if ENABLED(AUTO_BED_LEVELING_UBL) - const int16_t a = settings.calc_num_meshes(); + const uint16_t a = settings.calc_num_meshes(); if (!WITHIN(slot, 0, a - 1)) { #if ENABLED(EEPROM_CHITCHAT) @@ -1385,17 +1384,13 @@ void MarlinSettings::reset() { planner.retract_acceleration = DEFAULT_RETRACT_ACCELERATION; planner.travel_acceleration = DEFAULT_TRAVEL_ACCELERATION; planner.min_feedrate_mm_s = DEFAULT_MINIMUMFEEDRATE; - planner.min_segment_time_us = DEFAULT_MINSEGMENTTIME; planner.min_travel_feedrate_mm_s = DEFAULT_MINTRAVELFEEDRATE; + planner.min_segment_time_us = DEFAULT_MINSEGMENTTIME; planner.max_jerk[X_AXIS] = DEFAULT_XJERK; planner.max_jerk[Y_AXIS] = DEFAULT_YJERK; planner.max_jerk[Z_AXIS] = DEFAULT_ZJERK; planner.max_jerk[E_AXIS] = DEFAULT_EJERK; - #if ENABLED(ENABLE_LEVELING_FADE_HEIGHT) - new_z_fade_height = 10.0; - #endif - #if HAS_HOME_OFFSET ZERO(home_offset); #endif @@ -1417,7 +1412,14 @@ void MarlinSettings::reset() { LOOP_XYZ(i) HOTEND_LOOP() hotend_offset[i][e] = tmp4[i][e]; #endif - // Applies to all MBL and ABL + // + // Global Leveling + // + + #if ENABLED(ENABLE_LEVELING_FADE_HEIGHT) + new_z_fade_height = 0.0; + #endif + #if HAS_LEVELING reset_bed_level(); #endif @@ -1478,10 +1480,6 @@ void MarlinSettings::reset() { lcd_preheat_fan_speed[1] = PREHEAT_2_FAN_SPEED; #endif - #if HAS_LCD_CONTRAST - lcd_contrast = DEFAULT_LCD_CONTRAST; - #endif - #if ENABLED(PIDTEMP) #if ENABLED(PID_PARAMS_PER_HOTEND) && HOTENDS > 1 HOTEND_LOOP() @@ -1505,6 +1503,10 @@ void MarlinSettings::reset() { thermalManager.bedKd = scalePID_d(DEFAULT_bedKd); #endif + #if HAS_LCD_CONTRAST + lcd_contrast = DEFAULT_LCD_CONTRAST; + #endif + #if ENABLED(FWRETRACT) autoretract_enabled = false; retract_length = RETRACT_LENGTH; @@ -1599,10 +1601,6 @@ void MarlinSettings::reset() { stepper.digipot_current(q, (stepper.motor_current_setting[q] = tmp_motor_current_setting[q])); #endif - #if ENABLED(AUTO_BED_LEVELING_UBL) - ubl.reset(); - #endif - #if ENABLED(SKEW_CORRECTION_GCODE) planner.xy_skew_factor = XY_SKEW_FACTOR; #if ENABLED(SKEW_CORRECTION_FOR_Z) @@ -1710,7 +1708,7 @@ void MarlinSettings::reset() { SERIAL_ECHOLNPGM(" M200 D0"); } - #endif + #endif // !NO_VOLUMETRICS if (!forReplay) { CONFIG_ECHO_START; diff --git a/Marlin/configuration_store.h b/Marlin/configuration_store.h index b20a8d488..e152e48f7 100644 --- a/Marlin/configuration_store.h +++ b/Marlin/configuration_store.h @@ -37,11 +37,11 @@ class MarlinSettings { #if ENABLED(AUTO_BED_LEVELING_UBL) // Eventually make these available if any leveling system // That can store is enabled - FORCE_INLINE static int get_start_of_meshes() { return meshes_begin; } - FORCE_INLINE static int get_end_of_meshes() { return meshes_end; } - static int calc_num_meshes(); - static void store_mesh(int8_t slot); - static void load_mesh(int8_t slot, void *into = 0); + FORCE_INLINE static int16_t get_start_of_meshes() { return meshes_begin; } + FORCE_INLINE static int16_t get_end_of_meshes() { return meshes_end; } + static uint16_t calc_num_meshes(); + static void store_mesh(const int8_t slot); + static void load_mesh(const int8_t slot, void * const into=NULL); //static void delete_mesh(); // necessary if we have a MAT //static void defrag_meshes(); // " @@ -66,9 +66,9 @@ class MarlinSettings { #if ENABLED(AUTO_BED_LEVELING_UBL) // Eventually make these available if any leveling system // That can store is enabled - static int meshes_begin; - const static int meshes_end = E2END - 128; // 128 is a placeholder for the size of the MAT; the MAT will always - // live at the very end of the eeprom + static int16_t meshes_begin; + const static int16_t meshes_end = E2END - 128; // 128 is a placeholder for the size of the MAT; the MAT will always + // live at the very end of the eeprom #endif diff --git a/Marlin/ubl_G29.cpp b/Marlin/ubl_G29.cpp index 6b56ffafc..f3b2707d0 100644 --- a/Marlin/ubl_G29.cpp +++ b/Marlin/ubl_G29.cpp @@ -309,7 +309,8 @@ void unified_bed_leveling::G29() { if (!settings.calc_num_meshes()) { - SERIAL_PROTOCOLLNPGM("?Enable EEPROM and init with M502, M500.\n"); + SERIAL_PROTOCOLLNPGM("?Enable EEPROM and init with"); + SERIAL_PROTOCOLLNPGM("M502, M500, M501 in that order.\n"); return; } @@ -607,7 +608,7 @@ if (parser.seen('L')) { // Load Current Mesh Data g29_storage_slot = parser.has_value() ? parser.value_int() : storage_slot; - int16_t a = settings.calc_num_meshes(); + uint16_t a = settings.calc_num_meshes(); if (!a) { SERIAL_PROTOCOLLNPGM("?EEPROM storage not available."); @@ -649,7 +650,7 @@ return; } - int16_t a = settings.calc_num_meshes(); + uint16_t a = settings.calc_num_meshes(); if (!a) { SERIAL_PROTOCOLLNPGM("?EEPROM storage not available."); @@ -1326,7 +1327,7 @@ * use cases for the users. So we can wait and see what to do with it. */ void unified_bed_leveling::g29_compare_current_mesh_to_stored_mesh() { - int16_t a = settings.calc_num_meshes(); + uint16_t a = settings.calc_num_meshes(); if (!a) { SERIAL_PROTOCOLLNPGM("?EEPROM storage not available."); diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp index 8d78d5a50..35f034228 100644 --- a/Marlin/ultralcd.cpp +++ b/Marlin/ultralcd.cpp @@ -2279,7 +2279,7 @@ void kill_screen(const char* lcd_msg) { * Save Bed Mesh */ void _lcd_ubl_storage_mesh() { - int16_t a = settings.calc_num_meshes(); + uint16_t a = settings.calc_num_meshes(); START_MENU(); MENU_BACK(MSG_UBL_LEVEL_BED); if (!WITHIN(ubl_storage_slot, 0, a - 1)) {