mirror of
https://github.com/thelsing/knx.git
synced 2025-08-26 13:51:28 +02:00
changes for PR
- (old) version is again part of version check - naming conventions
This commit is contained in:
parent
65a60fdb48
commit
5f7e9e2f98
@ -612,12 +612,12 @@ Memory& BauSystemB::memory()
|
||||
return _memory;
|
||||
}
|
||||
|
||||
void BauSystemB::addVersionCheckCallback(versionCheckCallback func)
|
||||
void BauSystemB::versionCheckCallback(VersionCheckCallback func)
|
||||
{
|
||||
_memory.addVersionCheckCallback(func);
|
||||
_memory.versionCheckCallback(func);
|
||||
}
|
||||
|
||||
versionCheckCallback BauSystemB::getVersionCheckCallback()
|
||||
VersionCheckCallback BauSystemB::versionCheckCallback()
|
||||
{
|
||||
return _memory.getVersionCheckCallback();
|
||||
return _memory.versionCheckCallback();
|
||||
}
|
@ -38,8 +38,8 @@ class BauSystemB : protected BusAccessUnit
|
||||
void propertyValueWrite(ObjectType objectType, uint8_t objectInstance, uint8_t propertyId,
|
||||
uint8_t& numberOfElements, uint16_t startIndex,
|
||||
uint8_t* data, uint32_t length) override;
|
||||
void addVersionCheckCallback(versionCheckCallback func);
|
||||
versionCheckCallback getVersionCheckCallback();
|
||||
void versionCheckCallback(VersionCheckCallback func);
|
||||
VersionCheckCallback versionCheckCallback();
|
||||
|
||||
protected:
|
||||
virtual ApplicationLayer& applicationLayer() = 0;
|
||||
|
@ -29,19 +29,22 @@ void Memory::readMemory()
|
||||
|
||||
_freeList = new MemoryBlock(flashStart + metadataBlockSize, flashSize - metadataBlockSize);
|
||||
|
||||
uint16_t version = 0;
|
||||
const uint8_t* buffer = popWord(version, buffer);
|
||||
|
||||
uint16_t manufacturerId = 0;
|
||||
const uint8_t* buffer = popWord(manufacturerId, flashStart);
|
||||
buffer = popWord(manufacturerId, flashStart);
|
||||
|
||||
uint8_t hardwareType[LEN_HARDWARE_TYPE] = {0};
|
||||
buffer = popByteArray(hardwareType, LEN_HARDWARE_TYPE, buffer);
|
||||
|
||||
uint16_t version = 0;
|
||||
buffer = popWord(version, buffer);
|
||||
uint16_t apiVersion = 0;
|
||||
buffer = popWord(apiVersion, buffer);
|
||||
|
||||
VersionCheckResult versionCheck = FlashAllInvalid;
|
||||
|
||||
// first check correct format of deviceObject-API
|
||||
if (_deviceObject.apiVersion == version)
|
||||
if (_deviceObject.apiVersion == apiVersion)
|
||||
{
|
||||
if (_versionCheckCallback != 0) {
|
||||
versionCheck = _versionCheckCallback(manufacturerId, hardwareType);
|
||||
@ -50,7 +53,13 @@ void Memory::readMemory()
|
||||
else if (_deviceObject.manufacturerId() == manufacturerId &&
|
||||
memcmp(_deviceObject.hardwareType(), hardwareType, LEN_HARDWARE_TYPE) == 0)
|
||||
{
|
||||
versionCheck = FlashValid;
|
||||
if (_deviceObject.version() == version) {
|
||||
versionCheck = FlashValid;
|
||||
}
|
||||
else
|
||||
{
|
||||
versionCheck = FlashTablesInvalid;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -72,7 +81,7 @@ void Memory::readMemory()
|
||||
print("expexted DataObject api version: ");
|
||||
print(_deviceObject.apiVersion, HEX);
|
||||
print(", stored api version: ");
|
||||
println(version, HEX);
|
||||
println(apiVersion, HEX);
|
||||
}
|
||||
|
||||
if (versionCheck == FlashAllInvalid)
|
||||
@ -129,9 +138,10 @@ void Memory::writeMemory()
|
||||
uint32_t flashPos = 0;
|
||||
uint8_t* bufferPos = buffer;
|
||||
|
||||
bufferPos = pushWord(_deviceObject.apiVersion, bufferPos);
|
||||
bufferPos = pushWord(_deviceObject.manufacturerId(), bufferPos);
|
||||
bufferPos = pushByteArray(_deviceObject.hardwareType(), LEN_HARDWARE_TYPE, bufferPos);
|
||||
bufferPos = pushWord(_deviceObject.apiVersion, bufferPos);
|
||||
bufferPos = pushWord(_deviceObject.version(), bufferPos);
|
||||
|
||||
flashPos = _platform.writeNonVolatileMemory(flashPos, buffer, bufferPos - buffer);
|
||||
|
||||
@ -478,12 +488,12 @@ void Memory::addNewUsedBlock(uint8_t* address, size_t size)
|
||||
addToUsedList(newUsedBlock);
|
||||
}
|
||||
|
||||
void Memory::addVersionCheckCallback(versionCheckCallback func)
|
||||
void Memory::versionCheckCallback(VersionCheckCallback func)
|
||||
{
|
||||
_versionCheckCallback = func;
|
||||
}
|
||||
|
||||
versionCheckCallback Memory::getVersionCheckCallback()
|
||||
VersionCheckCallback Memory::versionCheckCallback()
|
||||
{
|
||||
return _versionCheckCallback;
|
||||
}
|
||||
|
@ -31,7 +31,7 @@ enum VersionCheckResult
|
||||
FlashValid = 2 //!< Flash content is valid and will be used
|
||||
};
|
||||
|
||||
typedef VersionCheckResult (*versionCheckCallback)(uint16_t manufacturerId, uint8_t* hardwareType);
|
||||
typedef VersionCheckResult (*VersionCheckCallback)(uint16_t manufacturerId, uint8_t* hardwareType, uint16_t version);
|
||||
|
||||
class Memory
|
||||
{
|
||||
@ -50,8 +50,8 @@ public:
|
||||
uint8_t* toAbsolute(uint32_t relativeAddress);
|
||||
uint32_t toRelative(uint8_t* absoluteAddress);
|
||||
|
||||
void addVersionCheckCallback(versionCheckCallback func);
|
||||
versionCheckCallback getVersionCheckCallback();
|
||||
void versionCheckCallback(VersionCheckCallback func);
|
||||
VersionCheckCallback versionCheckCallback();
|
||||
|
||||
private:
|
||||
void removeFromFreeList(MemoryBlock* block);
|
||||
@ -68,7 +68,7 @@ public:
|
||||
uint8_t* eraseBlockEnd(uint32_t blockNum);
|
||||
void saveBufferdEraseBlock();
|
||||
|
||||
versionCheckCallback _versionCheckCallback = 0;
|
||||
VersionCheckCallback _versionCheckCallback = 0;
|
||||
Platform& _platform;
|
||||
DeviceObject& _deviceObject;
|
||||
SaveRestore* _saveRestores[MAXSAVE] = {0};
|
||||
@ -77,5 +77,5 @@ public:
|
||||
uint8_t _tableObjCount = 0;
|
||||
MemoryBlock* _freeList = nullptr;
|
||||
MemoryBlock* _usedList = nullptr;
|
||||
uint16_t _metadataSize = 4 + LEN_HARDWARE_TYPE; // accounting for 2x pushWord and pushByteArray of length LEN_HARDWARE_TYPE
|
||||
uint16_t _metadataSize = 6 + LEN_HARDWARE_TYPE; // accounting for 3x pushWord and pushByteArray of length LEN_HARDWARE_TYPE
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user