From 07133807d8f7198c5ea661ad2a5a164c5733c074 Mon Sep 17 00:00:00 2001 From: Thomas Kunze Date: Mon, 4 Nov 2019 21:51:52 +0100 Subject: [PATCH] small refactoring of memory class --- src/knx/memory.cpp | 16 +++------------- src/knx/memory.h | 14 +++++++++----- 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/src/knx/memory.cpp b/src/knx/memory.cpp index 35131c7..13bbc0b 100644 --- a/src/knx/memory.cpp +++ b/src/knx/memory.cpp @@ -8,8 +8,6 @@ Memory::Memory(Platform& platform, DeviceObject& deviceObject) { } -// TODO implement flash layout: manufacturerID, HarwareType, Version, addr[0], size[0], addr[1], size[1], ... -// reconstruct free flash list and used list on read void Memory::readMemory() { if (_data != nullptr) @@ -20,10 +18,7 @@ void Memory::readMemory() uint16_t metadataBlockSize = alignToPageSize(_metadataSize); - MemoryBlock* allFreeFlash = new MemoryBlock(); - allFreeFlash->address = _data + metadataBlockSize; - allFreeFlash->size = flashSize - metadataBlockSize; - allFreeFlash->next = nullptr; + _freeList = new MemoryBlock(_data + metadataBlockSize, flashSize - metadataBlockSize); uint16_t manufacturerId = 0; uint8_t* buffer = popWord(manufacturerId, _data); @@ -131,9 +126,7 @@ uint8_t* Memory::allocMemory(size_t size) else { // split block - MemoryBlock* newBlock = new MemoryBlock(); - newBlock->address = blockToUse->address; - newBlock->size = size; + MemoryBlock* newBlock = new MemoryBlock(blockToUse->address, size); addToUsedList(newBlock); blockToUse->address += size; @@ -356,9 +349,6 @@ void Memory::addNewUsedBlock(uint8_t* address, size_t size) } } - MemoryBlock* newUsedBlock = new MemoryBlock(); - newUsedBlock->address = address; - newUsedBlock->size = size; - newUsedBlock->next = nullptr; + MemoryBlock* newUsedBlock = new MemoryBlock(address, size); addToUsedList(newUsedBlock); } \ No newline at end of file diff --git a/src/knx/memory.h b/src/knx/memory.h index bfc3799..5097729 100644 --- a/src/knx/memory.h +++ b/src/knx/memory.h @@ -7,12 +7,16 @@ #define MAXSAVE 10 -typedef struct _memoryBlock +class MemoryBlock { - uint8_t* address; - size_t size; - struct _memoryBlock* next; -} MemoryBlock; + public: + MemoryBlock(){}; + MemoryBlock(uint8_t* address, size_t size) + : address(address), size(size) {} + uint8_t* address = nullptr; + size_t size = 0; + MemoryBlock* next = nullptr; +}; class Memory {