gcode_D EEPROM size, cleanup
Fixes #19920 Co-Authored-By: Orel <37673727+0r31@users.noreply.github.com>
This commit is contained in:
		| @@ -59,7 +59,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui | ||||
|   return false; | ||||
| } | ||||
|  | ||||
| bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
| bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
|   do { | ||||
|     uint8_t c = eeprom_read_byte((uint8_t*)pos); | ||||
|     if (writing) *value = c; | ||||
|   | ||||
| @@ -996,7 +996,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui | ||||
|   return false; | ||||
| } | ||||
|  | ||||
| bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
| bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
|   do { | ||||
|     uint8_t c = ee_Read(uint32_t(pos)); | ||||
|     if (writing) *value = c; | ||||
|   | ||||
| @@ -62,7 +62,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui | ||||
|   return false; | ||||
| } | ||||
|  | ||||
| bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
| bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
|   do { | ||||
|     uint8_t c = eeprom_read_byte((uint8_t*)pos); | ||||
|     if (writing) *value = c; | ||||
|   | ||||
| @@ -44,7 +44,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui | ||||
|   return false; | ||||
| } | ||||
|  | ||||
| bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
| bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
|   for (size_t i = 0; i < size; i++) { | ||||
|     uint8_t c = EEPROM.read(pos++); | ||||
|     if (writing) value[i] = c; | ||||
|   | ||||
| @@ -78,7 +78,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui | ||||
|   return (bytes_written != size);  // return true for any error | ||||
| } | ||||
|  | ||||
| bool PersistentStore::read_data(int &pos, uint8_t* value, const size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
| bool PersistentStore::read_data(int &pos, uint8_t *value, const size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
|   std::size_t bytes_read = 0; | ||||
|   if (writing) { | ||||
|     for (std::size_t i = 0; i < size; i++) { | ||||
|   | ||||
| @@ -119,7 +119,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui | ||||
|   return false;  // return true for any error | ||||
| } | ||||
|  | ||||
| bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
| bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
|   const uint8_t * const buff = writing ? &value[0] : &ram_eeprom[pos]; | ||||
|   if (writing) for (size_t i = 0; i < size; i++) value[i] = ram_eeprom[pos + i]; | ||||
|   crc16(crc, buff, size); | ||||
|   | ||||
| @@ -143,7 +143,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui | ||||
|   return bytes_written != size;  // return true for any error | ||||
| } | ||||
|  | ||||
| bool PersistentStore::read_data(int &pos, uint8_t* value, const size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
| bool PersistentStore::read_data(int &pos, uint8_t *value, const size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
|   if (!eeprom_file_open) return true; | ||||
|   UINT bytes_read = 0; | ||||
|   FRESULT s; | ||||
|   | ||||
| @@ -64,7 +64,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui | ||||
|   return false; | ||||
| } | ||||
|  | ||||
| bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
| bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
|   do { | ||||
|     // Read from external EEPROM | ||||
|     const uint8_t c = eeprom_read_byte((uint8_t*)pos); | ||||
|   | ||||
| @@ -79,7 +79,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui | ||||
|   return false; | ||||
| } | ||||
|  | ||||
| bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
| bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
|   while (size--) { | ||||
|     SYNC(NVMCTRL->SEESTAT.bit.BUSY); | ||||
|     uint8_t c = ((volatile uint8_t *)SEEPROM_ADDR)[pos]; | ||||
|   | ||||
| @@ -56,7 +56,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui | ||||
|   return false; | ||||
| } | ||||
|  | ||||
| bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
| bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
|   while (size--) { | ||||
|     uint8_t c = qspi.readByte(pos); | ||||
|     if (writing) *value = c; | ||||
|   | ||||
| @@ -59,7 +59,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui | ||||
|   return false; | ||||
| } | ||||
|  | ||||
| bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
| bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
|   while (size--) { | ||||
|     uint8_t c = eeprom_read_byte((uint8_t*)pos); | ||||
|     if (writing) *value = c; | ||||
|   | ||||
| @@ -261,7 +261,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui | ||||
|   return false; | ||||
| } | ||||
|  | ||||
| bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
| bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
|   do { | ||||
|     const uint8_t c = TERN(FLASH_EEPROM_LEVELING, ram_eeprom[pos], eeprom_buffered_read_byte(pos)); | ||||
|     if (writing) *value = c; | ||||
|   | ||||
| @@ -78,7 +78,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui | ||||
|   return false; | ||||
| } | ||||
|  | ||||
| bool PersistentStore::read_data(int &pos, uint8_t* value, const size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
| bool PersistentStore::read_data(int &pos, uint8_t *value, const size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
|   for (size_t i = 0; i < size; i++) { | ||||
|     uint8_t c = HAL_eeprom_data[pos + i]; | ||||
|     if (writing) value[i] = c; | ||||
|   | ||||
| @@ -52,7 +52,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui | ||||
|   return false; | ||||
| } | ||||
|  | ||||
| bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
| bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
|   do { | ||||
|     // Read from either external EEPROM, program flash or Backup SRAM | ||||
|     const uint8_t c = ( *(__IO uint8_t *)(BKPSRAM_BASE + ((uint8_t*)pos)) ); | ||||
|   | ||||
| @@ -65,7 +65,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui | ||||
|   return false; | ||||
| } | ||||
|  | ||||
| bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
| bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
|   do { | ||||
|     // Read from either external EEPROM, program flash or Backup SRAM | ||||
|     const uint8_t c = eeprom_read_byte((uint8_t*)pos); | ||||
|   | ||||
| @@ -68,7 +68,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui | ||||
|   return false; | ||||
| } | ||||
|  | ||||
| bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
| bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
|   do { | ||||
|     uint8_t * const p = (uint8_t * const)pos; | ||||
|     uint8_t c = eeprom_read_byte(p); | ||||
|   | ||||
| @@ -101,7 +101,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui | ||||
|   return false;  // return true for any error | ||||
| } | ||||
|  | ||||
| bool PersistentStore::read_data(int &pos, uint8_t* value, const size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
| bool PersistentStore::read_data(int &pos, uint8_t *value, const size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
|   const uint8_t * const buff = writing ? &value[0] : &ram_eeprom[pos]; | ||||
|   if (writing) for (size_t i = 0; i < size; i++) value[i] = ram_eeprom[pos + i]; | ||||
|   crc16(crc, buff, size); | ||||
|   | ||||
| @@ -79,7 +79,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui | ||||
|   return false; | ||||
| } | ||||
|  | ||||
| bool PersistentStore::read_data(int &pos, uint8_t* value, const size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
| bool PersistentStore::read_data(int &pos, uint8_t *value, const size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
|   for (size_t i = 0; i < size; i++) { | ||||
|     uint8_t c = HAL_eeprom_data[pos + i]; | ||||
|     if (writing) value[i] = c; | ||||
|   | ||||
| @@ -72,7 +72,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui | ||||
|   return false; | ||||
| } | ||||
|  | ||||
| bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
| bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
|   do { | ||||
|     uint8_t c = eeprom_read_byte((uint8_t*)pos); | ||||
|     if (writing && value) *value = c; | ||||
|   | ||||
| @@ -96,7 +96,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui | ||||
|   return false; | ||||
| } | ||||
|  | ||||
| bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
| bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
|   do { | ||||
|     uint8_t c = ee_read_byte((uint8_t*)pos); | ||||
|     if (writing) *value = c; | ||||
|   | ||||
| @@ -62,7 +62,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui | ||||
|   return false; | ||||
| } | ||||
|  | ||||
| bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
| bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
|   do { | ||||
|     uint8_t c = eeprom_read_byte((uint8_t*)pos); | ||||
|     if (writing) *value = c; | ||||
|   | ||||
| @@ -57,7 +57,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui | ||||
|   return false; | ||||
| } | ||||
|  | ||||
| bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
| bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
|   do { | ||||
|     uint8_t c = eeprom_read_byte((uint8_t*)pos); | ||||
|     if (writing) *value = c; | ||||
|   | ||||
| @@ -61,7 +61,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui | ||||
|   return false; | ||||
| } | ||||
|  | ||||
| bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
| bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
|   do { | ||||
|     uint8_t c = eeprom_read_byte((uint8_t*)pos); | ||||
|     if (writing) *value = c; | ||||
|   | ||||
| @@ -61,7 +61,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui | ||||
|   return false; | ||||
| } | ||||
|  | ||||
| bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
| bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) { | ||||
|   do { | ||||
|     uint8_t c = eeprom_read_byte((uint8_t*)pos); | ||||
|     if (writing) *value = c; | ||||
|   | ||||
| @@ -54,9 +54,7 @@ | ||||
|           size_t total = persistentStore.capacity(); | ||||
|           int pos = 0; | ||||
|           const uint8_t value = 0x0; | ||||
|           while(total--) { | ||||
|             persistentStore.write_data(pos, &value, 1); | ||||
|           } | ||||
|           while (total--) persistentStore.write_data(pos, &value, 1); | ||||
|           persistentStore.access_finish(); | ||||
|         #else | ||||
|           settings.reset(); | ||||
| @@ -70,7 +68,7 @@ | ||||
|         uint8_t *pointer = parser.hex_adr_val('A'); | ||||
|         uint16_t len = parser.ushortval('C', 1); | ||||
|         uintptr_t addr = (uintptr_t)pointer; | ||||
|         NOMORE(addr, (size_t)(SRAM_SIZE - 1)); | ||||
|         NOMORE(addr, size_t(SRAM_SIZE - 1)); | ||||
|         NOMORE(len, SRAM_SIZE - addr); | ||||
|         if (parser.seenval('X')) { | ||||
|           // Write the hex bytes after the X | ||||
| @@ -91,16 +89,13 @@ | ||||
|           uint8_t *pointer = parser.hex_adr_val('A'); | ||||
|           uint16_t len = parser.ushortval('C', 1); | ||||
|           uintptr_t addr = (uintptr_t)pointer; | ||||
|           #ifndef MARLIN_EEPROM_SIZE | ||||
|             #define MARLIN_EEPROM_SIZE size_t(E2END + 1) | ||||
|           #endif | ||||
|           NOMORE(addr, (size_t)(MARLIN_EEPROM_SIZE - 1)); | ||||
|           NOMORE(len, MARLIN_EEPROM_SIZE - addr); | ||||
|           NOMORE(addr, size_t(persistentStore.capacity() - 1)); | ||||
|           NOMORE(len, persistentStore.capacity() - addr); | ||||
|           if (parser.seenval('X')) { | ||||
|             uint16_t val = parser.hex_val('X'); | ||||
|             #if ENABLED(EEPROM_SETTINGS) | ||||
|               persistentStore.access_start(); | ||||
|               while(len--) { | ||||
|               while (len--) { | ||||
|                 int pos = 0; | ||||
|                 persistentStore.write_data(pos, (uint8_t *)&val, sizeof(val)); | ||||
|               } | ||||
| @@ -111,23 +106,18 @@ | ||||
|             #endif | ||||
|           } | ||||
|           else { | ||||
|             while (len--) { | ||||
|               // Read bytes from EEPROM | ||||
|               #if ENABLED(EEPROM_SETTINGS) | ||||
|                 persistentStore.access_start(); | ||||
|                 uint8_t val; | ||||
|                 while(len--) { | ||||
|                   int pos = 0; | ||||
|                   if (!persistentStore.read_data(pos, (uint8_t *)&val, sizeof(val))) { | ||||
|                     print_hex_byte(val); | ||||
|                   } | ||||
|                 } | ||||
|                 SERIAL_EOL(); | ||||
|                 persistentStore.access_finish(); | ||||
|               #else | ||||
|                 SERIAL_ECHOLNPGM("NO EEPROM"); | ||||
|               #endif | ||||
|             } | ||||
|             // Read bytes from EEPROM | ||||
|             #if ENABLED(EEPROM_SETTINGS) | ||||
|               persistentStore.access_start(); | ||||
|               int pos = 0; | ||||
|               uint8_t val; | ||||
|               while (len--) if (!persistentStore.read_data(pos, &val, 1)) print_hex_byte(val); | ||||
|               SERIAL_EOL(); | ||||
|               persistentStore.access_finish(); | ||||
|             #else | ||||
|               SERIAL_ECHOLNPGM("NO EEPROM"); | ||||
|               len = 0; | ||||
|             #endif | ||||
|             SERIAL_EOL(); | ||||
|           } | ||||
|         } break; | ||||
| @@ -156,7 +146,7 @@ | ||||
|         uint8_t *pointer = parser.hex_adr_val('A'); | ||||
|         uint16_t len = parser.ushortval('C', 1); | ||||
|         uintptr_t addr = (uintptr_t)pointer; | ||||
|         NOMORE(addr, (size_t)(FLASH_SIZE - 1)); | ||||
|         NOMORE(addr, size_t(FLASH_SIZE - 1)); | ||||
|         NOMORE(len, FLASH_SIZE - addr); | ||||
|         if (parser.seenval('X')) { | ||||
|           // TODO: Write the hex bytes after the X | ||||
|   | ||||
		Reference in New Issue
	
	Block a user