UBL able to generate mesh and save and load it on 32-bit platforms (#8015)

* Get UBL Mesh Generation, Mesh Save & Mesh Load working with 32-Bit platforms

* clean up read_data() and write_data() for non-LPC1768 HAL's

* Get read_data() and write_data() return codes consistent

All HAL's read_data() and write_data() return false if they succeed.

* Get read_data() and write_data() return codes to be consistent

Make read_data() and write_data() return true if an error happens.

* Say UBL is now checked out on machine types in default Configuration.h file.
2.0.x
Roxy-3D 7 years ago committed by GitHub
parent 67cc29cd3c
commit 572cf0ec95

@ -854,12 +854,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -28,17 +28,17 @@ bool write_data(int &pos, const uint8_t *value, uint16_t size, uint16_t *crc) {
if (eeprom_read_byte(p) != v) {
SERIAL_ECHO_START();
SERIAL_ECHOLNPGM(MSG_ERR_EEPROM_WRITE);
return false;
return true;
}
}
crc16(crc, &v, 1);
pos++;
value++;
};
return true;
return false;
}
void read_data(int &pos, uint8_t* value, uint16_t size, uint16_t *crc) {
bool read_data(int &pos, uint8_t* value, uint16_t size, uint16_t *crc) {
do {
uint8_t c = eeprom_read_byte((unsigned char*)pos);
*value = c;
@ -46,6 +46,7 @@ void read_data(int &pos, uint8_t* value, uint16_t size, uint16_t *crc) {
pos++;
value++;
} while (--size);
return false; // always assume success for AVR's
}
}

@ -28,17 +28,17 @@ bool write_data(int &pos, const uint8_t *value, uint16_t size, uint16_t *crc) {
if (eeprom_read_byte(p) != v) {
SERIAL_ECHO_START();
SERIAL_ECHOLNPGM(MSG_ERR_EEPROM_WRITE);
return false;
return true;
}
}
crc16(crc, &v, 1);
pos++;
value++;
};
return true;
return false;
}
void read_data(int &pos, uint8_t* value, uint16_t size, uint16_t *crc) {
bool read_data(int &pos, uint8_t* value, uint16_t size, uint16_t *crc) {
do {
uint8_t c = eeprom_read_byte((unsigned char*)pos);
*value = c;
@ -46,6 +46,7 @@ void read_data(int &pos, uint8_t* value, uint16_t size, uint16_t *crc) {
pos++;
value++;
} while (--size);
return false;
}
}

@ -34,7 +34,7 @@ bool access_start() {
if (res == FR_OK) {
f_lseek(&eeprom_file, file_size);
while (file_size < E2END && res == FR_OK) {
while (file_size <= E2END && res == FR_OK) {
res = f_write(&eeprom_file, &eeprom_zero, 1, &bytes_written);
file_size++;
}
@ -53,21 +53,92 @@ bool access_finish() {
return true;
}
// File function return codes for type FRESULT This goes away soon. But it is helpful right now to see
// the different errors the read_data() and write_data() functions are seeing.
//
//typedef enum {
// FR_OK = 0, /* (0) Succeeded */
// FR_DISK_ERR, /* (1) A hard error occurred in the low level disk I/O layer */
// FR_INT_ERR, /* (2) Assertion failed */
// FR_NOT_READY, /* (3) The physical drive cannot work */
// FR_NO_FILE, /* (4) Could not find the file */
// FR_NO_PATH, /* (5) Could not find the path */
// FR_INVALID_NAME, /* (6) The path name format is invalid */
// FR_DENIED, /* (7) Access denied due to prohibited access or directory full */
// FR_EXIST, /* (8) Access denied due to prohibited access */
// FR_INVALID_OBJECT, /* (9) The file/directory object is invalid */
// FR_WRITE_PROTECTED, /* (10) The physical drive is write protected */
// FR_INVALID_DRIVE, /* (11) The logical drive number is invalid */
// FR_NOT_ENABLED, /* (12) The volume has no work area */
// FR_NO_FILESYSTEM, /* (13) There is no valid FAT volume */
// FR_MKFS_ABORTED, /* (14) The f_mkfs() aborted due to any problem */
// FR_TIMEOUT, /* (15) Could not get a grant to access the volume within defined period */
// FR_LOCKED, /* (16) The operation is rejected according to the file sharing policy */
// FR_NOT_ENOUGH_CORE, /* (17) LFN working buffer could not be allocated */
// FR_TOO_MANY_OPEN_FILES, /* (18) Number of open files > FF_FS_LOCK */
// FR_INVALID_PARAMETER /* (19) Given parameter is invalid */
//} FRESULT;
bool write_data(int &pos, const uint8_t *value, uint16_t size, uint16_t *crc) {
FRESULT s;
UINT bytes_written = 0;
f_lseek(&eeprom_file, pos);
f_write(&eeprom_file, (void *)value, size, &bytes_written);
s = f_lseek(&eeprom_file, pos);
if ( s ) {
SERIAL_PROTOCOLPAIR(" write_data(", pos); // This extra chit-chat goes away soon. But it is helpful
SERIAL_PROTOCOLPAIR(",", (int) value); // right now to see errors that are happening in the
SERIAL_PROTOCOLPAIR(",", (int) size); // read_data() and write_data() functions
SERIAL_PROTOCOL("...)\n");
SERIAL_PROTOCOLPAIR(" f_lseek()=", (int) s);
SERIAL_PROTOCOL("\n");
return s;
}
s = f_write(&eeprom_file, (void *)value, size, &bytes_written);
if ( s ) {
SERIAL_PROTOCOLPAIR(" write_data(", pos); // This extra chit-chat goes away soon. But it is helpful
SERIAL_PROTOCOLPAIR(",", (int) value); // right now to see errors that are happening in the
SERIAL_PROTOCOLPAIR(",", (int) size); // read_data() and write_data() functions
SERIAL_PROTOCOL("...)\n");
SERIAL_PROTOCOLPAIR(" f_write()=", (int) s);
SERIAL_PROTOCOL("\n");
SERIAL_PROTOCOLPAIR(" size=", (int) size);
SERIAL_PROTOCOLPAIR("\n bytes_written=", (int) bytes_written);
SERIAL_PROTOCOL("\n");
return s;
}
crc16(crc, value, size);
pos = pos + size;
return (bytes_written == size);
return (bytes_written != size); // return true for any error
}
void read_data(int &pos, uint8_t* value, uint16_t size, uint16_t *crc) {
bool read_data(int &pos, uint8_t* value, uint16_t size, uint16_t *crc) {
UINT bytes_read = 0;
f_lseek(&eeprom_file, pos);
f_read(&eeprom_file, (void *)value, size, &bytes_read);
FRESULT s;
s = f_lseek(&eeprom_file, pos);
if ( s ) {
SERIAL_PROTOCOLPAIR(" read_data(", pos); // This extra chit-chat goes away soon. But it is helpful
SERIAL_PROTOCOLPAIR(",", (int) value); // right now to see errors that are happening in the
SERIAL_PROTOCOLPAIR(",", (int) size); // read_data() and write_data() functions
SERIAL_PROTOCOL("...)\n");
SERIAL_PROTOCOLPAIR(" f_lseek()=", (int) s);
SERIAL_PROTOCOL("\n");
return true;
}
s = f_read(&eeprom_file, (void *)value, size, &bytes_read);
if ( s ) {
SERIAL_PROTOCOLPAIR(" read_data(", pos); // This extra chit-chat goes away soon. But it is helpful
SERIAL_PROTOCOLPAIR(",", (int) value); // right now to see errors that are happening in the
SERIAL_PROTOCOLPAIR(",", (int) size); // read_data() and write_data() functions
SERIAL_PROTOCOL("...)\n");
SERIAL_PROTOCOLPAIR(" f_write()=", (int) s);
SERIAL_PROTOCOL("\n");
SERIAL_PROTOCOLPAIR(" size=", (int) size);
SERIAL_PROTOCOLPAIR("\n bytes_read=", (int) bytes_read);
SERIAL_PROTOCOL("\n");
return true;
}
crc16(crc, value, size);
pos = pos + size;
return bytes_read != size; // return true for any error
}
} // PersistentStore

@ -78,15 +78,16 @@ bool write_data(int &pos, const uint8_t *value, uint16_t size, uint16_t *crc) {
}
crc16(crc, value, size);
pos += size;
return true;
return false;
}
void read_data(int &pos, uint8_t* value, uint16_t size, uint16_t *crc) {
bool read_data(int &pos, uint8_t* value, uint16_t size, uint16_t *crc) {
for (int i = 0; i < size; i++) {
value[i] = HAL_STM32F1_eeprom_content [pos + i];
}
crc16(crc, value, size);
pos += size;
return false;
}
} // PersistentStore::

@ -28,17 +28,17 @@ bool write_data(int &pos, const uint8_t *value, uint16_t size, uint16_t *crc) {
if (eeprom_read_byte(p) != v) {
SERIAL_ECHO_START();
SERIAL_ECHOLNPGM(MSG_ERR_EEPROM_WRITE);
return false;
return true;
}
}
crc16(crc, &v, 1);
pos++;
value++;
};
return true;
return false;
}
void read_data(int &pos, uint8_t* value, uint16_t size, uint16_t *crc) {
bool read_data(int &pos, uint8_t* value, uint16_t size, uint16_t *crc) {
do {
uint8_t c = eeprom_read_byte((unsigned char*)pos);
*value = c;
@ -46,6 +46,7 @@ void read_data(int &pos, uint8_t* value, uint16_t size, uint16_t *crc) {
pos++;
value++;
} while (--size);
return false;
}
} // PersistentStore

@ -10,7 +10,7 @@ namespace PersistentStore {
bool access_start();
bool access_finish();
bool write_data(int &pos, const uint8_t *value, uint16_t size, uint16_t *crc);
void read_data(int &pos, uint8_t* value, uint16_t size, uint16_t *crc);
bool read_data(int &pos, uint8_t* value, uint16_t size, uint16_t *crc);
} // PersistentStore
} // HAL

@ -854,12 +854,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -874,12 +874,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -854,12 +854,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -973,12 +973,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -860,12 +860,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -845,12 +845,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -855,12 +855,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -845,12 +845,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -853,12 +853,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -864,12 +864,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -836,12 +836,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -836,12 +836,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -634,7 +634,7 @@
* Z Servo Probe, such as an endstop switch on a rotating arm.
*/
#define Z_ENDSTOP_SERVO_NR 0 // Defaults to SERVO 0 connector.
#define Z_SERVO_ANGLES {40,85} // Z Servo Deploy and Stow angles
#define Z_SERVO_ANGLES {40,95} // Z Servo Deploy and Stow angles
/**
* The BLTouch probe uses a Hall effect sensor and emulates a servo.
@ -851,12 +851,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -869,12 +869,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -854,12 +854,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -858,12 +858,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -878,12 +878,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -853,12 +853,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -853,12 +853,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -856,12 +856,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -854,12 +854,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -852,12 +852,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -866,12 +866,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -885,12 +885,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -910,12 +910,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -884,12 +884,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -854,12 +854,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -854,12 +854,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -854,12 +854,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -978,12 +978,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -978,12 +978,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -965,12 +965,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -968,12 +968,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -968,12 +968,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -977,12 +977,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -868,12 +868,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -857,12 +857,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -841,12 +841,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -849,12 +849,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -859,12 +859,7 @@
* - AUTO_BED_LEVELING_UBL (Unified Bed Leveling)
* A comprehensive bed leveling system combining the features and benefits
* of other systems. UBL also includes integrated Mesh Generation, Mesh
* Validation and Mesh Editing systems. Currently, UBL is only checked out
* for Cartesian Printers. That said, it was primarily designed to correct
* poor quality Delta Printers. If you feel adventurous and have a Delta,
* please post an issue if something doesn't work correctly. Initially,
* you will need to set a reduced bed size so you have a rectangular area
* to test on.
* Validation and Mesh Editing systems.
*
* - MESH_BED_LEVELING
* Probe a grid manually

@ -668,7 +668,7 @@
}
if (parser.seen('T'))
display_map(parser.has_value() ? parser.value_int() : 0);
display_map(g29_map_type);
LEAVE:

@ -632,12 +632,12 @@ void MarlinSettings::postprocess() {
SERIAL_ECHOLNPGM(")");
#endif
}
EEPROM_FINISH();
#if ENABLED(UBL_SAVE_ACTIVE_ON_M500)
if (ubl.storage_slot >= 0)
store_mesh(ubl.storage_slot);
#endif
EEPROM_FINISH();
return !eeprom_error;
}
@ -1073,13 +1073,20 @@ void MarlinSettings::postprocess() {
}
uint16_t crc = 0;
bool status;
int pos = meshes_end - (slot + 1) * sizeof(ubl.z_values);
HAL::PersistentStore::write_data(pos, (uint8_t *)&ubl.z_values, sizeof(ubl.z_values), &crc);
HAL::PersistentStore::access_start();
status = HAL::PersistentStore::write_data(pos, (uint8_t *)&ubl.z_values, sizeof(ubl.z_values), &crc);
HAL::PersistentStore::access_finish();
if (status)
SERIAL_PROTOCOL("?Unable to save mesh data.\n");
// Write crc to MAT along with other data, or just tack on to the beginning or end
#if ENABLED(EEPROM_CHITCHAT)
if (!status)
SERIAL_PROTOCOLLNPAIR("Mesh saved in slot ", slot);
#endif
@ -1106,13 +1113,20 @@ void MarlinSettings::postprocess() {
uint16_t crc = 0;
int pos = meshes_end - (slot + 1) * sizeof(ubl.z_values);
uint8_t * const dest = into ? (uint8_t*)into : (uint8_t*)&ubl.z_values;
HAL::PersistentStore::read_data(pos, dest, sizeof(ubl.z_values), &crc);
uint16_t status;
// Compare crc with crc from MAT, or read from end
HAL::PersistentStore::access_start();
status = HAL::PersistentStore::read_data(pos, dest, sizeof(ubl.z_values), &crc);
HAL::PersistentStore::access_finish();
if (status)
SERIAL_PROTOCOL("?Unable to load mesh data.\n");
#if ENABLED(EEPROM_CHITCHAT)
else
SERIAL_PROTOCOLLNPAIR("Mesh loaded from slot ", slot);
#endif
EEPROM_FINISH();
#else

Loading…
Cancel
Save