Merge pull request #316 from thewhobox/fix/unloading

Permanently unload device
This commit is contained in:
thelsing 2025-07-21 19:02:42 +02:00 committed by GitHub
commit e2642b64ca
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 23 additions and 0 deletions

5
examples/knx-demo/.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
.pio
.vscode/.browse.c_cpp.db*
.vscode/c_cpp_properties.json
.vscode/launch.json
.vscode/ipch

View File

@ -49,6 +49,7 @@ void BauSystemBDevice::loop()
#ifdef USE_DATASECURE
_appLayer.loop();
#endif
_memory.loop();
}
void BauSystemBDevice::sendNextGroupTelegram()

View File

@ -301,10 +301,15 @@ void Memory::freeMemory(uint8_t* ptr)
removeFromUsedList(block);
addToFreeList(block);
_saveTimeout = millis();
}
void Memory::writeMemory(uint32_t relativeAddress, size_t size, uint8_t* data)
{
if(_saveTimeout != 0)
{
_saveTimeout = millis();
}
_platform.writeNonVolatileMemory(relativeAddress, data, size);
}
@ -541,3 +546,13 @@ VersionCheckCallback Memory::versionCheckCallback()
{
return _versionCheckCallback;
}
void Memory::loop()
{
if(_saveTimeout != 0 && millis() - _saveTimeout > 5000)
{
println("saveMemory timeout");
_saveTimeout = 0;
writeMemory();
}
}

View File

@ -46,6 +46,7 @@ class Memory
void clearMemory();
void addSaveRestore(SaveRestore* obj);
void addSaveRestore(TableObject* obj);
void loop();
uint8_t* allocMemory(size_t size);
void freeMemory(uint8_t* ptr);
@ -82,4 +83,5 @@ class Memory
MemoryBlock* _freeList = nullptr;
MemoryBlock* _usedList = nullptr;
uint16_t _metadataSize = 6 + LEN_HARDWARE_TYPE; // accounting for 3x pushWord and pushByteArray of length LEN_HARDWARE_TYPE
unsigned long _saveTimeout = 0;
};