|
@@ -113,7 +113,7 @@ void _EEPROM_readData(int &pos, uint8_t* value, uint8_t size) {
|
113
|
113
|
// wrong data being written to the variables.
|
114
|
114
|
// ALSO: always make sure the variables in the Store and retrieve sections are in the same order.
|
115
|
115
|
|
116
|
|
-#define EEPROM_VERSION "V16"
|
|
116
|
+#define EEPROM_VERSION "V17"
|
117
|
117
|
|
118
|
118
|
#ifdef EEPROM_SETTINGS
|
119
|
119
|
|
|
@@ -136,9 +136,26 @@ void Config_StoreSettings() {
|
136
|
136
|
EEPROM_WRITE_VAR(i, max_e_jerk);
|
137
|
137
|
EEPROM_WRITE_VAR(i, add_homing);
|
138
|
138
|
|
|
139
|
+ uint8_t mesh_num_x = 3;
|
|
140
|
+ uint8_t mesh_num_y = 3;
|
139
|
141
|
#if defined(MESH_BED_LEVELING)
|
|
142
|
+ // Compile time test that sizeof(mbl.z_values) is as expected
|
|
143
|
+ typedef char c_assert[(sizeof(mbl.z_values) == MESH_NUM_X_POINTS*MESH_NUM_Y_POINTS*sizeof(dummy)) ? 1 : -1];
|
|
144
|
+ mesh_num_x = MESH_NUM_X_POINTS;
|
|
145
|
+ mesh_num_y = MESH_NUM_Y_POINTS;
|
140
|
146
|
EEPROM_WRITE_VAR(i, mbl.active);
|
|
147
|
+ EEPROM_WRITE_VAR(i, mesh_num_x);
|
|
148
|
+ EEPROM_WRITE_VAR(i, mesh_num_y);
|
141
|
149
|
EEPROM_WRITE_VAR(i, mbl.z_values);
|
|
150
|
+ #else
|
|
151
|
+ uint8_t dummy_uint8 = 0;
|
|
152
|
+ EEPROM_WRITE_VAR(i, dummy_uint8);
|
|
153
|
+ EEPROM_WRITE_VAR(i, mesh_num_x);
|
|
154
|
+ EEPROM_WRITE_VAR(i, mesh_num_y);
|
|
155
|
+ dummy = 0.0f;
|
|
156
|
+ for (int q=0; q<mesh_num_x*mesh_num_y; q++) {
|
|
157
|
+ EEPROM_WRITE_VAR(i, dummy);
|
|
158
|
+ }
|
142
|
159
|
#endif // MESH_BED_LEVELING
|
143
|
160
|
|
144
|
161
|
#ifdef DELTA
|
|
@@ -277,9 +294,29 @@ void Config_RetrieveSettings() {
|
277
|
294
|
EEPROM_READ_VAR(i, max_e_jerk);
|
278
|
295
|
EEPROM_READ_VAR(i, add_homing);
|
279
|
296
|
|
|
297
|
+ uint8_t mesh_num_x = 0;
|
|
298
|
+ uint8_t mesh_num_y = 0;
|
280
|
299
|
#if defined(MESH_BED_LEVELING)
|
281
|
300
|
EEPROM_READ_VAR(i, mbl.active);
|
282
|
|
- EEPROM_READ_VAR(i, mbl.z_values);
|
|
301
|
+ EEPROM_READ_VAR(i, mesh_num_x);
|
|
302
|
+ EEPROM_READ_VAR(i, mesh_num_y);
|
|
303
|
+ if (mesh_num_x != MESH_NUM_X_POINTS ||
|
|
304
|
+ mesh_num_y != MESH_NUM_Y_POINTS) {
|
|
305
|
+ mbl.reset();
|
|
306
|
+ for (int q=0; q<mesh_num_x*mesh_num_y; q++) {
|
|
307
|
+ EEPROM_READ_VAR(i, dummy);
|
|
308
|
+ }
|
|
309
|
+ } else {
|
|
310
|
+ EEPROM_READ_VAR(i, mbl.z_values);
|
|
311
|
+ }
|
|
312
|
+ #else
|
|
313
|
+ uint8_t dummy_uint8 = 0;
|
|
314
|
+ EEPROM_READ_VAR(i, dummy_uint8);
|
|
315
|
+ EEPROM_READ_VAR(i, mesh_num_x);
|
|
316
|
+ EEPROM_READ_VAR(i, mesh_num_y);
|
|
317
|
+ for (int q=0; q<mesh_num_x*mesh_num_y; q++) {
|
|
318
|
+ EEPROM_READ_VAR(i, dummy);
|
|
319
|
+ }
|
283
|
320
|
#endif // MESH_BED_LEVELING
|
284
|
321
|
|
285
|
322
|
#ifdef DELTA
|