diff --git a/src/esp32_platform.cpp b/src/esp32_platform.cpp index 2969e01..728d282 100644 --- a/src/esp32_platform.cpp +++ b/src/esp32_platform.cpp @@ -84,28 +84,26 @@ int Esp32Platform::readBytes(uint8_t * buffer, uint16_t maxLen) return len; } -bool Esp32Platform::writeNVMemory(uint32_t addr,uint8_t data) +bool Esp32Platform::writeNVMemory(uintptr_t addr,uint8_t data) { *((uint8_t*)addr) = data; return true; } -uint8_t Esp32Platform::readNVMemory(uint32_t addr) +uint8_t Esp32Platform::readNVMemory(uintptr_t addr) { return *((uint8_t*)addr); } -uint32_t Esp32Platform::allocNVMemory(uint32_t size,uint32_t ID) +uintptr_t Esp32Platform::allocNVMemory(size_t size,uint32_t ID) { - if(size > EEPROM_EMULATION_SIZE) - fatalError(); - return (uint32_t)EEPROM.getDataPtr(); + return (uintptr_t)EEPROM.getDataPtr(); } -uint32_t Esp32Platform::reloadNVMemory(uint32_t ID) +uintptr_t Esp32Platform::reloadNVMemory(uint32_t ID) { EEPROM.begin(1024); - return (uint32_t)EEPROM.getDataPtr(); + return (uintptr_t)EEPROM.getDataPtr(); } void Esp32Platform::finishNVMemory() diff --git a/src/esp32_platform.h b/src/esp32_platform.h index b73de3a..6cc0808 100644 --- a/src/esp32_platform.h +++ b/src/esp32_platform.h @@ -28,10 +28,10 @@ public: int readBytes(uint8_t* buffer, uint16_t maxLen) override; //memory - bool writeNVMemory(uint32_t addr,uint8_t data); - uint8_t readNVMemory(uint32_t addr); - uint32_t allocNVMemory(uint32_t size,uint32_t ID); - uint32_t reloadNVMemory(uint32_t ID); + bool writeNVMemory(uintptr_t addr,uint8_t data); + uint8_t readNVMemory(uintptr_t addr); + uintptr_t allocNVMemory(size_t size,uint32_t ID); + uintptr_t reloadNVMemory(uint32_t ID); void finishNVMemory(); void freeNVMemory(uint32_t ID); private: diff --git a/src/esp_platform.cpp b/src/esp_platform.cpp index 76b4bfe..76fc44d 100644 --- a/src/esp_platform.cpp +++ b/src/esp_platform.cpp @@ -85,28 +85,26 @@ int EspPlatform::readBytes(uint8_t * buffer, uint16_t maxLen) return len; } -bool EspPlatform::writeNVMemory(uint32_t addr,uint8_t data) +bool EspPlatform::writeNVMemory(uintptr_t addr,uint8_t data) { *((uint8_t*)addr) = data; return true; } -uint8_t EspPlatform::readNVMemory(uint32_t addr) +uint8_t EspPlatform::readNVMemory(uintptr_t addr) { return *((uint8_t*)addr); } -uint32_t EspPlatform::allocNVMemory(uint32_t size,uint32_t ID) +uintptr_t EspPlatform::allocNVMemory(size_t size,uint32_t ID) { - if(size > EEPROM_EMULATION_SIZE) - fatalError(); - return (uint32_t)EEPROM.getDataPtr(); + return (uintptr_t)EEPROM.getDataPtr(); } -uint32_t EspPlatform::reloadNVMemory(uint32_t ID) +uintptr_t EspPlatform::reloadNVMemory(uint32_t ID) { EEPROM.begin(1024); - return (uint32_t)EEPROM.getDataPtr(); + return (uintptr_t)EEPROM.getDataPtr(); } void EspPlatform::finishNVMemory() diff --git a/src/esp_platform.h b/src/esp_platform.h index db28c93..9487fd1 100644 --- a/src/esp_platform.h +++ b/src/esp_platform.h @@ -29,10 +29,10 @@ class EspPlatform : public ArduinoPlatform int readBytes(uint8_t* buffer, uint16_t maxLen) override; //memory - bool writeNVMemory(uint32_t addr,uint8_t data); - uint8_t readNVMemory(uint32_t addr); - uint32_t allocNVMemory(uint32_t size,uint32_t ID); - uint32_t reloadNVMemory(uint32_t ID); + bool writeNVMemory(uintptr_t addr,uint8_t data); + uint8_t readNVMemory(uintptr_t addr); + uintptr_t allocNVMemory(size_t size,uint32_t ID); + uintptr_t reloadNVMemory(uint32_t ID); void finishNVMemory(); void freeNVMemory(uint32_t ID); private: diff --git a/src/knx/application_program_object.cpp b/src/knx/application_program_object.cpp index 1858fbe..ad37fca 100644 --- a/src/knx/application_program_object.cpp +++ b/src/knx/application_program_object.cpp @@ -85,7 +85,7 @@ uint8_t* ApplicationProgramObject::save() return NULL; uint8_t* buffer; - uint32_t addr =(uint32_t)(TableObject::data() - sizeof(_programVersion) - TableObject::sizeMetadata()); + uintptr_t addr =(uintptr_t)(TableObject::data() - sizeof(_programVersion) - TableObject::sizeMetadata()); if(TableObject::_platform.NVMemoryType() == internalFlash) buffer = new uint8_t[sizeof(_programVersion)]; else @@ -97,7 +97,7 @@ uint8_t* ApplicationProgramObject::save() for(uint32_t i=0;irestore(buffer); - buffer = (uint8_t*)(((uint32_t)buffer + 3) / 4 * 4); //allign to 32bit + buffer = (uint8_t*)(((uintptr_t)buffer + 3) / 4 * 4); //allign to 32bit } } @@ -109,7 +109,7 @@ void Memory::writeRamMemory() for (int i = 0; i < size; i++) { buffer = _saveRestores[i]->save(buffer); - buffer = (uint8_t*)(((uint32_t)buffer + 3) / 4 * 4); //allign to 32bit + buffer = (uint8_t*)(((uintptr_t)buffer + 3) / 4 * 4); //allign to 32bit } _platform.finishNVMemory(); _modified = false; @@ -122,7 +122,7 @@ void Memory::readExternalMemory() { int size = _saveCount; - volatile uint32_t addr = _platform.reloadNVMemory(BASE_ID); + volatile uintptr_t addr = _platform.reloadNVMemory(BASE_ID); volatile uint32_t bytesToRestore; if(addr == 0) @@ -164,7 +164,7 @@ void Memory::writeExternalMemory() bytesToSave += _saveRestores[i]->size() + 4; } - uint32_t addr = _platform.allocNVMemory(bytesToSave,BASE_ID); + uintptr_t addr = _platform.allocNVMemory(bytesToSave,BASE_ID); //write valid mask _platform.writeNVMemory(addr++,0x00); diff --git a/src/knx/platform.h b/src/knx/platform.h index 351b27c..4515464 100644 --- a/src/knx/platform.h +++ b/src/knx/platform.h @@ -36,10 +36,10 @@ class Platform virtual int readUart() = 0; virtual size_t readBytesUart(uint8_t* buffer, size_t length) = 0; - virtual bool writeNVMemory(uint32_t addr,uint8_t data) = 0; - virtual uint8_t readNVMemory(uint32_t addr) = 0; - virtual uint32_t allocNVMemory(uint32_t size,uint32_t ID) = 0; - virtual uint32_t reloadNVMemory(uint32_t ID) = 0; + virtual bool writeNVMemory(uintptr_t addr,uint8_t data) = 0; + virtual uint8_t readNVMemory(uintptr_t addr) = 0; + virtual uintptr_t allocNVMemory(size_t size,uint32_t ID) = 0; + virtual uintptr_t reloadNVMemory(uint32_t ID) = 0; virtual void finishNVMemory() = 0; virtual void freeNVMemory(uint32_t ID) = 0; diff --git a/src/knx/table_object.cpp b/src/knx/table_object.cpp index 9c09bfb..ccfc7ac 100644 --- a/src/knx/table_object.cpp +++ b/src/knx/table_object.cpp @@ -99,9 +99,9 @@ uint8_t* TableObject::save() if(_data == NULL) return NULL; - uint32_t addr; + uintptr_t addr; uint8_t* buffer; - addr =(uint32_t)(_data - METADATA_SIZE); + addr =(uintptr_t)(_data - METADATA_SIZE); if(_platform.NVMemoryType() == internalFlash) buffer = new uint8_t[METADATA_SIZE]; else @@ -116,7 +116,7 @@ uint8_t* TableObject::save() for(uint32_t i=0;i #include "samd_flash.h" @@ -414,3 +415,4 @@ uint8_t* SamdFlash::realloc(uint32_t size, uint32_t ID){ copyAndFree(actualBlock, (block_meta_data_t*)newBlockFlashAddr); return (uint8_t*)(newBlockFlashAddr+sizeof(block_meta_data_t)); } +#endif /* ARDUINO_ARCH_SAMD */ diff --git a/src/samd_flash.h b/src/samd_flash.h index 6b1585c..8617dee 100644 --- a/src/samd_flash.h +++ b/src/samd_flash.h @@ -1,6 +1,7 @@ #ifndef SAMD_FLASH_H #define SAMD_FLASH_H +#ifdef ARDUINO_ARCH_SAMD #include #define PAGES_PER_ROW 4 @@ -56,4 +57,5 @@ private: uint32_t _rowBufferAddr; volatile info_data_t* _info; }; +#endif /* ARDUINO_ARCH_SAMD */ #endif /* SAMD_FLASH_H */ diff --git a/src/samd_platform.cpp b/src/samd_platform.cpp index 9105354..037dc17 100644 --- a/src/samd_platform.cpp +++ b/src/samd_platform.cpp @@ -25,30 +25,30 @@ void SamdPlatform::restart() } -bool SamdPlatform::writeNVMemory(uint32_t addr,uint8_t data) +bool SamdPlatform::writeNVMemory(uintptr_t addr,uint8_t data) { if(Flash.write((uint8_t*)addr, data)==false) fatalError(); return true; } -uint8_t SamdPlatform::readNVMemory(uint32_t addr) +uint8_t SamdPlatform::readNVMemory(uintptr_t addr) { return Flash.read((uint8_t*)addr); } -uint32_t SamdPlatform::allocNVMemory(uint32_t size,uint32_t ID) +uintptr_t SamdPlatform::allocNVMemory(size_t size,uint32_t ID) { - uint32_t addr = (uint32_t)Flash.malloc(size, ID); + uintptr_t addr = (uintptr_t)Flash.malloc(size, ID); if(addr == 0) fatalError(); return addr; } -uint32_t SamdPlatform::reloadNVMemory(uint32_t ID) +uintptr_t SamdPlatform::reloadNVMemory(uint32_t ID) { // Flash.erase(); - return (uint32_t)Flash.loadBlock(ID); + return (uintptr_t)Flash.loadBlock(ID); } void SamdPlatform::finishNVMemory() @@ -71,27 +71,27 @@ uint8_t* SamdPlatform::memoryReference() /*************_NVMemoryType = internalRam************************* -bool SamdPlatform::writeNVMemory(uint32_t addr,uint8_t data) +bool SamdPlatform::writeNVMemory(uintptr_t addr,uint8_t data) { *((uint8_t*)addr) = data; return true; } -uint8_t SamdPlatform::readNVMemory(uint32_t addr) +uint8_t SamdPlatform::readNVMemory(uintptr_t addr) { return *((uint8_t*)addr); } -uint32_t SamdPlatform::allocNVMemory(uint32_t size,uint32_t ID) +uintptr_t SamdPlatform::allocNVMemory(size_t size,uint32_t ID) { if(size > EEPROM_EMULATION_SIZE) fatalError(); - return (uint32_t)EEPROM.getDataPtr(); + return (uintptr_t)EEPROM.getDataPtr(); } -uint32_t SamdPlatform::reloadNVMemory(uint32_t ID) +uintptr_t SamdPlatform::reloadNVMemory(uint32_t ID) { - return (uint32_t)EEPROM.getDataPtr(); + return (uintptr_t)EEPROM.getDataPtr(); } void SamdPlatform::finishNVMemory() @@ -105,25 +105,25 @@ void SamdPlatform::freeNVMemory(uint32_t ID) /* /*************_NVMemoryType = external************************* -bool SamdPlatform::writeNVMemory(uint32_t addr,uint8_t data) +bool SamdPlatform::writeNVMemory(uintptr_t addr,uint8_t data) { EEPROM.write(addr-1, data); return true; } -uint8_t SamdPlatform::readNVMemory(uint32_t addr) +uint8_t SamdPlatform::readNVMemory(uintptr_t addr) { return EEPROM.read(addr-1); } -uint32_t SamdPlatform::allocNVMemory(uint32_t size,uint32_t ID) +uintptr_t SamdPlatform::allocNVMemory(size_t size,uint32_t ID) { if(size > EEPROM_EMULATION_SIZE) fatalError(); return 1; } -uint32_t SamdPlatform::reloadNVMemory(uint32_t ID) +uintptr_t SamdPlatform::reloadNVMemory(uint32_t ID) { return 1; } diff --git a/src/samd_platform.h b/src/samd_platform.h index eaf2ee1..288cb17 100644 --- a/src/samd_platform.h +++ b/src/samd_platform.h @@ -11,10 +11,10 @@ public: SamdPlatform( HardwareSerial* s); void restart(); - bool writeNVMemory(uint32_t addr,uint8_t data); - uint8_t readNVMemory(uint32_t addr); - uint32_t allocNVMemory(uint32_t size,uint32_t ID); - uint32_t reloadNVMemory(uint32_t ID); + bool writeNVMemory(uintptr_t addr,uint8_t data); + uint8_t readNVMemory(uintptr_t addr); + uintptr_t allocNVMemory(size_t size,uint32_t ID); + uintptr_t reloadNVMemory(uint32_t ID); void finishNVMemory(); void freeNVMemory(uint32_t ID); uint8_t* memoryReference();