From eb70c55bdfc347dc231444fc8cb3c918cb699402 Mon Sep 17 00:00:00 2001 From: SirSydom Date: Fri, 18 Feb 2022 11:53:11 +0100 Subject: [PATCH] bugfix when calculating memorywrites over multiple blocks by mumpf --- src/knx/platform.cpp | 15 ++------------- src/knx/platform.h | 2 -- 2 files changed, 2 insertions(+), 15 deletions(-) diff --git a/src/knx/platform.cpp b/src/knx/platform.cpp index c2a76b3..6b823e4 100644 --- a/src/knx/platform.cpp +++ b/src/knx/platform.cpp @@ -179,8 +179,8 @@ uint32_t Platform::writeNonVolatileMemory(uint32_t relativeAddress, uint8_t* buf while (size > 0) { loadEraseblockContaining(relativeAddress); - uint32_t start = bufferedEraseBlockStart(); - uint32_t end = bufferedEraseBlockEnd(); + uint32_t start = _bufferedEraseblockNumber * (flashEraseBlockSize() * flashPageSize()); + uint32_t end = start + (flashEraseBlockSize() * flashPageSize()); ptrdiff_t offset = relativeAddress - start; ptrdiff_t length = end - relativeAddress; @@ -217,17 +217,6 @@ void Platform::loadEraseblockContaining(uint32_t relativeAddress) bufferEraseBlock(blockNum); } -uint32_t Platform::bufferedEraseBlockStart() -{ - return _bufferedEraseblockNumber * (flashEraseBlockSize() * flashPageSize()); -} - -uint32_t Platform::bufferedEraseBlockEnd() -{ - return (_bufferedEraseblockNumber + 1) * (flashEraseBlockSize() * flashPageSize()) -1; -} - - int32_t Platform::getEraseBlockNumberOf(uint32_t relativeAddress) { return relativeAddress / (flashEraseBlockSize() * flashPageSize()); diff --git a/src/knx/platform.h b/src/knx/platform.h index 96ec92b..3e8ede8 100644 --- a/src/knx/platform.h +++ b/src/knx/platform.h @@ -97,8 +97,6 @@ class Platform NvMemoryType _memoryType = Eeprom; void loadEraseblockContaining(uint32_t relativeAddress); - uint32_t bufferedEraseBlockStart(); - uint32_t bufferedEraseBlockEnd(); int32_t getEraseBlockNumberOf(uint32_t relativeAddress); // writes _eraseblockBuffer to flash virtual void writeBufferedEraseBlock();