From 865ee5985f8a9253897e74ca6ee707ee887b8181 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 13 Aug 2018 20:13:59 -0500 Subject: [PATCH] Followup persistent store with heading, const --- .../HAL/HAL_AVR/persistent_store_eeprom.cpp | 37 ++++++++----- .../HAL/HAL_DUE/persistent_store_eeprom.cpp | 38 ++++++++----- .../HAL_LPC1768/persistent_store_sdcard.cpp | 55 +++++++++---------- .../HAL_STM32F1/persistent_store_flash.cpp | 21 +------ .../HAL_STM32F1/persistent_store_sdcard.cpp | 20 +------ .../HAL_STM32F4/persistent_store_eeprom.cpp | 16 +----- .../HAL_STM32F7/persistent_store_eeprom.cpp | 17 +----- .../persistent_store_eeprom.cpp | 39 ++++++++----- Marlin/src/HAL/persistent_store_api.cpp | 7 ++- Marlin/src/HAL/persistent_store_api.h | 21 +++++-- 10 files changed, 122 insertions(+), 149 deletions(-) diff --git a/Marlin/src/HAL/HAL_AVR/persistent_store_eeprom.cpp b/Marlin/src/HAL/HAL_AVR/persistent_store_eeprom.cpp index f1489e70d6..293955937f 100644 --- a/Marlin/src/HAL/HAL_AVR/persistent_store_eeprom.cpp +++ b/Marlin/src/HAL/HAL_AVR/persistent_store_eeprom.cpp @@ -1,3 +1,24 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (C) 2016, 2017 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ #ifdef __AVR__ #include "../../inc/MarlinConfig.h" @@ -41,21 +62,7 @@ bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t return false; // always assume success for AVR's } -bool PersistentStore::write_data(const int pos, uint8_t* value, size_t size) { - int data_pos = pos; - uint16_t crc = 0; - return write_data(data_pos, value, size, &crc); -} - -bool PersistentStore::read_data(const int pos, uint8_t* value, size_t size) { - int data_pos = pos; - uint16_t crc = 0; - return read_data(data_pos, value, size, &crc); -} - -const size_t PersistentStore::capacity() { - return E2END + 1; -} +const size_t PersistentStore::capacity() { return E2END + 1; } #endif // EEPROM_SETTINGS #endif // __AVR__ diff --git a/Marlin/src/HAL/HAL_DUE/persistent_store_eeprom.cpp b/Marlin/src/HAL/HAL_DUE/persistent_store_eeprom.cpp index ad66b7b920..3bf0f443b3 100644 --- a/Marlin/src/HAL/HAL_DUE/persistent_store_eeprom.cpp +++ b/Marlin/src/HAL/HAL_DUE/persistent_store_eeprom.cpp @@ -1,3 +1,25 @@ +/** + * Marlin 3D Printer Firmware + * + * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com + * Copyright (c) 2015-2016 Nico Tonnhofer wurstnase.reprap@gmail.com + * Copyright (c) 2016 Victor Perez victor_pv@hotmail.com + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ #ifdef ARDUINO_ARCH_SAM #include "../persistent_store_api.h" @@ -49,21 +71,7 @@ bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t return false; } -bool PersistentStore::write_data(const int pos, uint8_t* value, size_t size) { - int data_pos = pos; - uint16_t crc = 0; - return write_data(data_pos, value, size, &crc); -} - -bool PersistentStore::read_data(const int pos, uint8_t* value, size_t size) { - int data_pos = pos; - uint16_t crc = 0; - return read_data(data_pos, value, size, &crc); -} - -const size_t PersistentStore::capacity() { - return E2END + 1; -} +const size_t PersistentStore::capacity() { return E2END + 1; } #endif // EEPROM_SETTINGS #endif // ARDUINO_ARCH_SAM diff --git a/Marlin/src/HAL/HAL_LPC1768/persistent_store_sdcard.cpp b/Marlin/src/HAL/HAL_LPC1768/persistent_store_sdcard.cpp index 630ab073ea..42264e1ccc 100644 --- a/Marlin/src/HAL/HAL_LPC1768/persistent_store_sdcard.cpp +++ b/Marlin/src/HAL/HAL_LPC1768/persistent_store_sdcard.cpp @@ -1,9 +1,10 @@ /** * Marlin 3D Printer Firmware - * Copyright (C) 2016, 2017 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm + * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com + * Copyright (c) 2015-2016 Nico Tonnhofer wurstnase.reprap@gmail.com + * Copyright (c) 2016 Victor Perez victor_pv@hotmail.com * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -98,8 +99,8 @@ bool PersistentStore::access_finish() { // FR_INVALID_PARAMETER /* (19) Given parameter is invalid */ // } FRESULT; -bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, uint16_t *crc) { - if(!eeprom_file_open) return true; +bool PersistentStore::write_data(int &pos, const uint8_t *value, const size_t size, uint16_t *crc) { + if (!eeprom_file_open) return true; FRESULT s; UINT bytes_written = 0; @@ -113,7 +114,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui return s; } - s = f_write(&eeprom_file, (void *)value, size, &bytes_written); + 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 @@ -129,57 +130,51 @@ 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, size_t size, uint16_t *crc, const bool writing/*=true*/) { - if(!eeprom_file_open) return 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; 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(",", size); // read_data() and write_data() functions + SERIAL_PROTOCOLPAIR(" read_data(", pos); // This extra chit-chat goes away soon. But it is helpful + SERIAL_PROTOCOLCHAR(','); + SERIAL_PROTOCOL((int)value); // right now to see errors that are happening in the + SERIAL_PROTOCOLCHAR(','); + SERIAL_PROTOCOL(size); // read_data() and write_data() functions SERIAL_PROTOCOLLNPGM("...)"); SERIAL_PROTOCOLLNPAIR(" f_lseek()=", (int)s); return true; } + if (writing) { - s = f_read(&eeprom_file, (void *)value, size, &bytes_read); + s = f_read(&eeprom_file, (void*)value, size, &bytes_read); crc16(crc, value, size); } else { uint8_t temp[size]; - s = f_read(&eeprom_file, (void *)temp, size, &bytes_read); + s = f_read(&eeprom_file, (void*)temp, size, &bytes_read); crc16(crc, temp, size); } + 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(",", size); // read_data() and write_data() functions + SERIAL_PROTOCOLCHAR(','); + SERIAL_PROTOCOL((int)value); // right now to see errors that are happening in the + SERIAL_PROTOCOLCHAR(','); + SERIAL_PROTOCOL(size); // read_data() and write_data() functions SERIAL_PROTOCOLLNPGM("...)"); SERIAL_PROTOCOLLNPAIR(" f_write()=", (int)s); SERIAL_PROTOCOLPAIR(" size=", size); SERIAL_PROTOCOLLNPAIR("\n bytes_read=", bytes_read); return true; } + pos = pos + size; return bytes_read != size; // return true for any error } -bool PersistentStore::write_data(const int pos, uint8_t* value, size_t size) { - int data_pos = pos; - uint16_t crc = 0; - return write_data(data_pos, value, size, &crc); -} - -bool PersistentStore::read_data(const int pos, uint8_t* value, size_t size) { - int data_pos = pos; - uint16_t crc = 0; - return read_data(data_pos, value, size, &crc); -} - -const size_t PersistentStore::capacity() { - return 4096; //4KiB of Emulated EEPROM -} +const size_t PersistentStore::capacity() { return 4096; } // 4KiB of Emulated EEPROM #endif // EEPROM_SETTINGS #endif // TARGET_LPC1768 diff --git a/Marlin/src/HAL/HAL_STM32F1/persistent_store_flash.cpp b/Marlin/src/HAL/HAL_STM32F1/persistent_store_flash.cpp index c6be9c179d..779225d093 100644 --- a/Marlin/src/HAL/HAL_STM32F1/persistent_store_flash.cpp +++ b/Marlin/src/HAL/HAL_STM32F1/persistent_store_flash.cpp @@ -55,7 +55,7 @@ bool PersistentStore::access_finish() { return true; } -bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, uint16_t *crc) { +bool PersistentStore::write_data(int &pos, const uint8_t *value, const size_t size, uint16_t *crc) { FLASH_Status status; if (firstWrite) { @@ -90,7 +90,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, const size_t size, uint16_t *crc, const bool writing/*=true*/) { for (uint16_t i = 0; i < size; i++) { byte* accessPoint = (byte*)(pageBase + pos + i); uint8_t c = *accessPoint; @@ -101,22 +101,7 @@ bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t return false; } -bool PersistentStore::write_data(const int pos, uint8_t* value, size_t size) { - int data_pos = pos; - uint16_t crc = 0; - return write_data(data_pos, value, size, &crc); -} - -bool PersistentStore::read_data(const int pos, uint8_t* value, size_t size) { - int data_pos = pos; - uint16_t crc = 0; - return read_data(data_pos, value, size, &crc); -} - -const size_t PersistentStore::capacity() { - return E2END + 1; -} - +const size_t PersistentStore::capacity() { return E2END + 1; } #endif // EEPROM_SETTINGS && EEPROM FLASH #endif // __STM32F1__ diff --git a/Marlin/src/HAL/HAL_STM32F1/persistent_store_sdcard.cpp b/Marlin/src/HAL/HAL_STM32F1/persistent_store_sdcard.cpp index b5b4d424a6..26e011cf1d 100644 --- a/Marlin/src/HAL/HAL_STM32F1/persistent_store_sdcard.cpp +++ b/Marlin/src/HAL/HAL_STM32F1/persistent_store_sdcard.cpp @@ -60,7 +60,7 @@ bool PersistentStore::access_finish() { return (bytes_written == HAL_STM32F1_EEPROM_SIZE); } -bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, uint16_t *crc) { +bool PersistentStore::write_data(int &pos, const uint8_t *value, const size_t size, uint16_t *crc) { for (int i = 0; i < size; i++) HAL_STM32F1_eeprom_content[pos + i] = value[i]; crc16(crc, value, size); @@ -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, const size_t size, uint16_t *crc, const bool writing/*=true*/) { for (int i = 0; i < size; i++) { uint8_t c = HAL_STM32F1_eeprom_content[pos + i]; if (writing) value[i] = c; @@ -78,21 +78,7 @@ bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t return false; } -bool PersistentStore::write_data(const int pos, uint8_t* value, size_t size) { - int data_pos = pos; - uint16_t crc = 0; - return write_data(data_pos, value, size, &crc); -} - -bool PersistentStore::read_data(const int pos, uint8_t* value, size_t size) { - int data_pos = pos; - uint16_t crc = 0; - return read_data(data_pos, value, size, &crc); -} - -const size_t PersistentStore::capacity() { - return HAL_STM32F1_EEPROM_SIZE; -} +const size_t PersistentStore::capacity() { return HAL_STM32F1_EEPROM_SIZE; } #endif // EEPROM_SETTINGS diff --git a/Marlin/src/HAL/HAL_STM32F4/persistent_store_eeprom.cpp b/Marlin/src/HAL/HAL_STM32F4/persistent_store_eeprom.cpp index 6d262ae385..33a92f99d3 100644 --- a/Marlin/src/HAL/HAL_STM32F4/persistent_store_eeprom.cpp +++ b/Marlin/src/HAL/HAL_STM32F4/persistent_store_eeprom.cpp @@ -64,21 +64,7 @@ bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t return false; } -bool PersistentStore::write_data(const int pos, uint8_t* value, size_t size) { - int data_pos = pos; - uint16_t crc = 0; - return write_data(data_pos, value, size, &crc); -} - -bool PersistentStore::read_data(const int pos, uint8_t* value, size_t size) { - int data_pos = pos; - uint16_t crc = 0; - return read_data(data_pos, value, size, &crc); -} - -const size_t PersistentStore::capacity() { - return E2END + 1; -} +const size_t PersistentStore::capacity() { return E2END + 1; } #endif // EEPROM_SETTINGS #endif // STM32F4 || STM32F4xx diff --git a/Marlin/src/HAL/HAL_STM32F7/persistent_store_eeprom.cpp b/Marlin/src/HAL/HAL_STM32F7/persistent_store_eeprom.cpp index 19f61153c5..a765d2e68d 100644 --- a/Marlin/src/HAL/HAL_STM32F7/persistent_store_eeprom.cpp +++ b/Marlin/src/HAL/HAL_STM32F7/persistent_store_eeprom.cpp @@ -21,7 +21,6 @@ * */ - #ifdef STM32F7 #include "../../inc/MarlinConfig.h" @@ -65,21 +64,7 @@ bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t return false; } -bool PersistentStore::write_data(const int pos, uint8_t* value, size_t size) { - int data_pos = pos; - uint16_t crc = 0; - return write_data(data_pos, value, size, &crc); -} - -bool PersistentStore::read_data(const int pos, uint8_t* value, size_t size) { - int data_pos = pos; - uint16_t crc = 0; - return read_data(data_pos, value, size, &crc); -} - -const size_t PersistentStore::capacity() { - return E2END + 1; -} +const size_t PersistentStore::capacity() { return E2END + 1; } #endif // EEPROM_SETTINGS #endif // STM32F7 diff --git a/Marlin/src/HAL/HAL_TEENSY35_36/persistent_store_eeprom.cpp b/Marlin/src/HAL/HAL_TEENSY35_36/persistent_store_eeprom.cpp index 453287797d..871e588774 100644 --- a/Marlin/src/HAL/HAL_TEENSY35_36/persistent_store_eeprom.cpp +++ b/Marlin/src/HAL/HAL_TEENSY35_36/persistent_store_eeprom.cpp @@ -1,3 +1,26 @@ +/** + * Marlin 3D Printer Firmware + * + * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com + * Copyright (c) 2015-2016 Nico Tonnhofer wurstnase.reprap@gmail.com + * Copyright (c) 2016 Victor Perez victor_pv@hotmail.com + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + #if defined(__MK64FX512__) || defined(__MK66FX1M0__) #include "../../inc/MarlinConfig.h" @@ -42,21 +65,7 @@ bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t return false; } -bool PersistentStore::write_data(const int pos, uint8_t* value, size_t size) { - int data_pos = pos; - uint16_t crc = 0; - return write_data(data_pos, value, size, &crc); -} - -bool PersistentStore::read_data(const int pos, uint8_t* value, size_t size) { - int data_pos = pos; - uint16_t crc = 0; - return read_data(data_pos, value, size, &crc); -} - -const size_t PersistentStore::capacity() { - return E2END + 1; -} +const size_t PersistentStore::capacity() { return E2END + 1; } #endif // EEPROM_SETTINGS #endif // __MK64FX512__ || __MK66FX1M0__ diff --git a/Marlin/src/HAL/persistent_store_api.cpp b/Marlin/src/HAL/persistent_store_api.cpp index 303027b37d..68afa63620 100644 --- a/Marlin/src/HAL/persistent_store_api.cpp +++ b/Marlin/src/HAL/persistent_store_api.cpp @@ -1,9 +1,10 @@ /** * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm + * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com + * Copyright (c) 2015-2016 Nico Tonnhofer wurstnase.reprap@gmail.com + * Copyright (c) 2016 Victor Perez victor_pv@hotmail.com * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/Marlin/src/HAL/persistent_store_api.h b/Marlin/src/HAL/persistent_store_api.h index b8aea044a3..278e49a8ad 100644 --- a/Marlin/src/HAL/persistent_store_api.h +++ b/Marlin/src/HAL/persistent_store_api.h @@ -1,9 +1,10 @@ /** * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm + * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com + * Copyright (c) 2015-2016 Nico Tonnhofer wurstnase.reprap@gmail.com + * Copyright (c) 2016 Victor Perez victor_pv@hotmail.com * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -30,9 +31,19 @@ public: static bool access_finish(); static bool write_data(int &pos, const uint8_t *value, size_t size, uint16_t *crc); static bool read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing=true); - static bool write_data(const int pos, uint8_t* value, size_t size); - static bool read_data(const int pos, uint8_t* value, size_t size); static const size_t capacity(); + + static inline bool write_data(const int pos, uint8_t* value, const size_t size) { + int data_pos = pos; + uint16_t crc = 0; + return write_data(data_pos, value, size, &crc); + } + + static inline bool read_data(const int pos, uint8_t* value, const size_t size) { + int data_pos = pos; + uint16_t crc = 0; + return read_data(data_pos, value, size, &crc); + } }; extern PersistentStore persistentStore;