Optimize G80 bed correction argument parsing

This commit is contained in:
Alex Voinea 2023-05-05 12:32:20 +02:00
parent 90c21425c6
commit f94bc72235
No known key found for this signature in database
GPG Key ID: 37EDFD565CB33BAD
1 changed files with 8 additions and 10 deletions

View File

@ -3004,7 +3004,7 @@ static void gcode_G80()
babystep_apply(); // Apply Z height correction aka baby stepping before mesh bed leveing gets activated. babystep_apply(); // Apply Z height correction aka baby stepping before mesh bed leveing gets activated.
bool eeprom_bed_correction_valid = eeprom_read_byte((unsigned char*)EEPROM_BED_CORRECTION_VALID) == 1; bool eeprom_bed_correction_valid = eeprom_read_byte((unsigned char*)EEPROM_BED_CORRECTION_VALID) == 1;
const constexpr uint8_t sides = 4; const constexpr uint8_t sides = 4;
int8_t correction[sides] = {0}; int8_t correction[sides];
for (uint8_t i = 0; i < sides; ++i) { for (uint8_t i = 0; i < sides; ++i) {
static const char codes[sides] PROGMEM = { 'L', 'R', 'F', 'B' }; static const char codes[sides] PROGMEM = { 'L', 'R', 'F', 'B' };
static uint8_t *const eep_addresses[sides] PROGMEM = { static uint8_t *const eep_addresses[sides] PROGMEM = {
@ -3013,23 +3013,21 @@ static void gcode_G80()
(uint8_t*)EEPROM_BED_CORRECTION_FRONT, (uint8_t*)EEPROM_BED_CORRECTION_FRONT,
(uint8_t*)EEPROM_BED_CORRECTION_REAR, (uint8_t*)EEPROM_BED_CORRECTION_REAR,
}; };
if (code_seen(pgm_read_byte(&codes[i]))) if (code_seen(pgm_read_byte(&codes[i]))) {
{ // Verify value is within allowed range // Verify value is within allowed range
int32_t temp = code_value_long(); int32_t temp = code_value_long();
if (labs(temp) > BED_ADJUSTMENT_UM_MAX) { if (labs(temp) > BED_ADJUSTMENT_UM_MAX) {
SERIAL_ERROR_START; printf_P(PSTR("%SExcessive bed leveling correction: %li microns\n"), errormagic, temp);
SERIAL_ECHOPGM("Excessive bed leveling correction: ");
SERIAL_ECHO(temp);
SERIAL_ECHOLNPGM(" microns");
correction[i] = 0; correction[i] = 0;
} else { } else {
// Value is valid, save it // Value is valid, save it
correction[i] = (int8_t)temp; correction[i] = (int8_t)temp;
} }
} else if (eeprom_bed_correction_valid) } else if (eeprom_bed_correction_valid) {
correction[i] = (int8_t)eeprom_read_byte((uint8_t*)pgm_read_ptr(&eep_addresses[i])); correction[i] = (int8_t)eeprom_read_byte((uint8_t*)pgm_read_ptr(&eep_addresses[i]));
if (correction[i] == 0) } else {
continue; correction[i] = 0;
}
} }
for (uint8_t row = 0; row < MESH_NUM_Y_POINTS; ++row) { for (uint8_t row = 0; row < MESH_NUM_Y_POINTS; ++row) {
for (uint8_t col = 0; col < MESH_NUM_X_POINTS; ++col) { for (uint8_t col = 0; col < MESH_NUM_X_POINTS; ++col) {