UBL name/state methods

2.0.x
Scott Lahteine 8 years ago
parent 7852369987
commit 7f4e4b1212

@ -3940,7 +3940,7 @@ void home_all_axes() { gcode_G28(true); }
#if ENABLED(MESH_BED_LEVELING) #if ENABLED(MESH_BED_LEVELING)
// Save 130 bytes with non-duplication of PSTR // Save 130 bytes with non-duplication of PSTR
void say_not_entered() { SERIAL_PROTOCOLLNPGM(" not entered."); } void echo_not_entered() { SERIAL_PROTOCOLLNPGM(" not entered."); }
void mbl_mesh_report() { void mbl_mesh_report() {
SERIAL_PROTOCOLLNPGM("Num X,Y: " STRINGIFY(GRID_MAX_POINTS_X) "," STRINGIFY(GRID_MAX_POINTS_Y)); SERIAL_PROTOCOLLNPGM("Num X,Y: " STRINGIFY(GRID_MAX_POINTS_X) "," STRINGIFY(GRID_MAX_POINTS_Y));
@ -4071,7 +4071,7 @@ void home_all_axes() { gcode_G28(true); }
} }
} }
else { else {
SERIAL_CHAR('X'); say_not_entered(); SERIAL_CHAR('X'); echo_not_entered();
return; return;
} }
@ -4083,7 +4083,7 @@ void home_all_axes() { gcode_G28(true); }
} }
} }
else { else {
SERIAL_CHAR('Y'); say_not_entered(); SERIAL_CHAR('Y'); echo_not_entered();
return; return;
} }
@ -4091,7 +4091,7 @@ void home_all_axes() { gcode_G28(true); }
mbl.z_values[px][py] = code_value_linear_units(); mbl.z_values[px][py] = code_value_linear_units();
} }
else { else {
SERIAL_CHAR('Z'); say_not_entered(); SERIAL_CHAR('Z'); echo_not_entered();
return; return;
} }
break; break;
@ -4101,7 +4101,7 @@ void home_all_axes() { gcode_G28(true); }
mbl.z_offset = code_value_linear_units(); mbl.z_offset = code_value_linear_units();
} }
else { else {
SERIAL_CHAR('Z'); say_not_entered(); SERIAL_CHAR('Z'); echo_not_entered();
return; return;
} }
break; break;

@ -425,7 +425,7 @@ void MarlinSettings::postprocess() {
EEPROM_WRITE(ubl.state.z_offset); EEPROM_WRITE(ubl.state.z_offset);
EEPROM_WRITE(ubl.state.storage_slot); EEPROM_WRITE(ubl.state.storage_slot);
#else #else
const bool ubl_active = 0; const bool ubl_active = false;
dummy = 0.0f; dummy = 0.0f;
const int8_t storage_slot = -1; const int8_t storage_slot = -1;
EEPROM_WRITE(ubl_active); EEPROM_WRITE(ubl_active);
@ -991,18 +991,20 @@ void MarlinSettings::postprocess() {
} }
#if ENABLED(AUTO_BED_LEVELING_UBL) #if ENABLED(AUTO_BED_LEVELING_UBL)
meshes_begin = (eeprom_index + 32) & 0xFFF8; // Pad the end of configuration data so it meshes_begin = (eeprom_index + 32) & 0xFFF8; // Pad the end of configuration data so it
// can float up or down a little bit without // can float up or down a little bit without
// disrupting the mesh data // disrupting the mesh data
SERIAL_ECHOPGM(" UBL "); ubl.report_state();
if (!ubl.state.active) SERIAL_ECHO("not ");
SERIAL_ECHOLNPGM("active!");
if (!ubl.sanity_check()) { if (!ubl.sanity_check()) {
SERIAL_ECHOLNPGM("\nUnified Bed Leveling system initialized.\n"); SERIAL_EOL;
ubl.echo_name();
SERIAL_ECHOLNPGM(" initialized.\n");
} }
else { else {
SERIAL_PROTOCOLPGM("?Unable to enable Unified Bed Leveling system.\n"); SERIAL_PROTOCOLPGM("?Can't enable ");
ubl.echo_name();
SERIAL_PROTOCOLLNPGM(".");
ubl.reset(); ubl.reset();
} }
@ -1028,6 +1030,12 @@ void MarlinSettings::postprocess() {
#if ENABLED(AUTO_BED_LEVELING_UBL) #if ENABLED(AUTO_BED_LEVELING_UBL)
void ubl_invalid_slot(const int s) {
SERIAL_PROTOCOLLNPGM("?Invalid slot.");
SERIAL_PROTOCOL(s);
SERIAL_PROTOCOLLNPGM(" mesh slots available.");
}
int MarlinSettings::calc_num_meshes() { int MarlinSettings::calc_num_meshes() {
//obviously this will get more sophisticated once we've added an actual MAT //obviously this will get more sophisticated once we've added an actual MAT
@ -1041,12 +1049,10 @@ void MarlinSettings::postprocess() {
#if ENABLED(AUTO_BED_LEVELING_UBL) #if ENABLED(AUTO_BED_LEVELING_UBL)
const int a = calc_num_meshes(); const int a = calc_num_meshes();
if (!WITHIN(slot, 0, a - 1)) { if (!WITHIN(slot, 0, a - 1)) {
SERIAL_PROTOCOLLNPGM("?Invalid slot."); ubl_invalid_slot(a);
SERIAL_PROTOCOL(a); SERIAL_PROTOCOLPAIR("E2END=", E2END);
SERIAL_PROTOCOLLNPGM(" mesh slots available."); SERIAL_PROTOCOLPAIR(" meshes_end=", (int)meshes_end);
SERIAL_PROTOCOLLNPAIR("E2END : ", E2END); SERIAL_PROTOCOLLNPAIR(" slot=", slot);
SERIAL_PROTOCOLLNPAIR("meshes_end : ", (int)meshes_end);
SERIAL_PROTOCOLLNPAIR("slot : ", slot);
SERIAL_EOL; SERIAL_EOL;
return; return;
} }
@ -1074,9 +1080,7 @@ void MarlinSettings::postprocess() {
const int16_t a = settings.calc_num_meshes(); const int16_t a = settings.calc_num_meshes();
if (!WITHIN(slot, 0, a - 1)) { if (!WITHIN(slot, 0, a - 1)) {
SERIAL_PROTOCOLLNPGM("?Invalid Slot."); ubl_invalid_slot(a);
SERIAL_PROTOCOL(a);
SERIAL_PROTOCOLLNPGM(" mesh slots available.");
return; return;
} }
@ -1538,7 +1542,8 @@ void MarlinSettings::reset() {
if (!forReplay) { if (!forReplay) {
CONFIG_ECHO_START; CONFIG_ECHO_START;
SERIAL_ECHOLNPGM("Unified Bed Leveling:"); ubl.echo_name();
SERIAL_ECHOLNPGM(":");
} }
CONFIG_ECHO_START; CONFIG_ECHO_START;
SERIAL_ECHOPAIR(" M420 S", ubl.state.active ? 1 : 0); SERIAL_ECHOPAIR(" M420 S", ubl.state.active ? 1 : 0);
@ -1548,9 +1553,10 @@ void MarlinSettings::reset() {
SERIAL_EOL; SERIAL_EOL;
if (!forReplay) { if (!forReplay) {
SERIAL_ECHOPGM("\nUBL is "); SERIAL_EOL;
ubl.state.active ? SERIAL_CHAR('A') : SERIAL_ECHOPGM("Ina"); ubl.report_state();
SERIAL_ECHOLNPAIR("ctive\n\nActive Mesh Slot: ", ubl.state.storage_slot);
SERIAL_ECHOLNPAIR("\nActive Mesh Slot: ", ubl.state.storage_slot);
SERIAL_ECHOPGM("z_offset: "); SERIAL_ECHOPGM("z_offset: ");
SERIAL_ECHO_F(ubl.state.z_offset, 6); SERIAL_ECHO_F(ubl.state.z_offset, 6);

@ -41,6 +41,16 @@
uint8_t ubl_cnt = 0; uint8_t ubl_cnt = 0;
void unified_bed_leveling::echo_name() { SERIAL_PROTOCOLPGM("Unified Bed Leveling"); }
void unified_bed_leveling::report_state() {
echo_name();
SERIAL_PROTOCOLPGM(" System v" UBL_VERSION " ");
if (!state.active) SERIAL_PROTOCOLPGM("in");
SERIAL_PROTOCOLLNPGM("active.");
safe_delay(50);
}
static void serial_echo_xy(const int16_t x, const int16_t y) { static void serial_echo_xy(const int16_t x, const int16_t y) {
SERIAL_CHAR('('); SERIAL_CHAR('(');
SERIAL_ECHO(x); SERIAL_ECHO(x);

@ -103,6 +103,8 @@
public: public:
void echo_name();
void report_state();
void find_mean_mesh_height(); void find_mean_mesh_height();
void shift_mesh_height(); void shift_mesh_height();
void probe_entire_mesh(const float &lx, const float &ly, const bool do_ubl_mesh_map, const bool stow_probe, bool do_furthest); void probe_entire_mesh(const float &lx, const float &ly, const bool do_ubl_mesh_map, const bool stow_probe, bool do_furthest);

@ -906,7 +906,7 @@
return current_position[Z_AXIS]; return current_position[Z_AXIS];
} }
static void say_and_take_a_measurement() { static void echo_and_take_a_measurement() {
SERIAL_PROTOCOLLNPGM(" and take a measurement."); SERIAL_PROTOCOLLNPGM(" and take a measurement.");
} }
@ -922,15 +922,15 @@
SERIAL_PROTOCOLPGM("Place shim under nozzle"); SERIAL_PROTOCOLPGM("Place shim under nozzle");
LCD_MESSAGEPGM("Place shim & measure"); LCD_MESSAGEPGM("Place shim & measure");
lcd_goto_screen(lcd_status_screen); lcd_goto_screen(lcd_status_screen);
say_and_take_a_measurement(); echo_and_take_a_measurement();
const float z1 = use_encoder_wheel_to_measure_point(); const float z1 = use_encoder_wheel_to_measure_point();
do_blocking_move_to_z(current_position[Z_AXIS] + SIZE_OF_LITTLE_RAISE); do_blocking_move_to_z(current_position[Z_AXIS] + SIZE_OF_LITTLE_RAISE);
stepper.synchronize(); stepper.synchronize();
SERIAL_PROTOCOLPGM("Remove shim"); SERIAL_PROTOCOLPGM("Remove shim");
LCD_MESSAGEPGM("Remove & measure bed"); LCD_MESSAGEPGM("Remove & measure bed"); // TODO: Make translatable string
say_and_take_a_measurement(); echo_and_take_a_measurement();
const float z2 = use_encoder_wheel_to_measure_point(); const float z2 = use_encoder_wheel_to_measure_point();
@ -1031,17 +1031,6 @@
do_blocking_move_to_xy(lx, ly); do_blocking_move_to_xy(lx, ly);
} }
static void say_ubl_name() {
SERIAL_PROTOCOLPGM("Unified Bed Leveling ");
}
static void report_ubl_state() {
say_ubl_name();
SERIAL_PROTOCOLPGM("System ");
if (!ubl.state.active) SERIAL_PROTOCOLPGM("de");
SERIAL_PROTOCOLLNPGM("activated.\n");
}
bool g29_parameter_parsing() { bool g29_parameter_parsing() {
bool err_flag = false; bool err_flag = false;
@ -1110,12 +1099,12 @@
SERIAL_PROTOCOLLNPGM("?Can't activate and deactivate at the same time.\n"); SERIAL_PROTOCOLLNPGM("?Can't activate and deactivate at the same time.\n");
return UBL_ERR; return UBL_ERR;
} }
ubl.state.active = 1; ubl.state.active = true;
report_ubl_state(); ubl.report_state();
} }
else if (code_seen('D')) { else if (code_seen('D')) {
ubl.state.active = 0; ubl.state.active = false;
report_ubl_state(); ubl.report_state();
} }
// Set global 'C' flag and its value // Set global 'C' flag and its value
@ -1171,14 +1160,7 @@
* good to have the extra information. Soon... we prune this to just a few items * good to have the extra information. Soon... we prune this to just a few items
*/ */
void unified_bed_leveling::g29_what_command() { void unified_bed_leveling::g29_what_command() {
say_ubl_name(); report_state();
SERIAL_PROTOCOLPGM("System Version " UBL_VERSION " ");
if (state.active)
SERIAL_PROTOCOLCHAR('A');
else
SERIAL_PROTOCOLPGM("Ina");
SERIAL_PROTOCOLLNPGM("ctive.\n");
safe_delay(50);
if (state.storage_slot == -1) if (state.storage_slot == -1)
SERIAL_PROTOCOLPGM("No Mesh Loaded."); SERIAL_PROTOCOLPGM("No Mesh Loaded.");
@ -1260,8 +1242,8 @@
safe_delay(25); safe_delay(25);
if (!sanity_check()) { if (!sanity_check()) {
say_ubl_name(); echo_name();
SERIAL_PROTOCOLLNPGM("sanity checks passed."); SERIAL_PROTOCOLLNPGM(" sanity checks passed.");
} }
} }
@ -1319,7 +1301,8 @@
float tmp_z_values[GRID_MAX_POINTS_X][GRID_MAX_POINTS_Y]; float tmp_z_values[GRID_MAX_POINTS_X][GRID_MAX_POINTS_Y];
settings.load_mesh(storage_slot, &tmp_z_values); settings.load_mesh(storage_slot, &tmp_z_values);
SERIAL_ECHOPAIR("Subtracting current mesh from mesh loaded from slot ", storage_slot); SERIAL_PROTOCOLPAIR("Subtracting mesh in slot ", storage_slot);
SERIAL_PROTOCOLLNPGM(" from current mesh.");
for (uint8_t x = 0; x < GRID_MAX_POINTS_X; x++) for (uint8_t x = 0; x < GRID_MAX_POINTS_X; x++)
for (uint8_t y = 0; y < GRID_MAX_POINTS_Y; y++) for (uint8_t y = 0; y < GRID_MAX_POINTS_Y; y++)

Loading…
Cancel
Save