diff --git a/code/espurna/rtcmem.cpp b/code/espurna/rtcmem.cpp index 87225ef3..67cabd0c 100644 --- a/code/espurna/rtcmem.cpp +++ b/code/espurna/rtcmem.cpp @@ -13,7 +13,7 @@ static constexpr uint32_t RtcmemMagic { RTCMEM_MAGIC }; static constexpr uintptr_t RtcmemBlocks { RTCMEM_BLOCKS }; static constexpr uintptr_t RtcmemBegin { RTCMEM_ADDR }; -static constexpr uintptr_t RtcmemEnd { RtcmemBegin + RtcmemBlocks }; +static constexpr uintptr_t RtcmemEnd { RtcmemBegin + (4 * RtcmemBlocks) }; volatile RtcmemData* Rtcmem = reinterpret_cast(RtcmemBegin); @@ -76,27 +76,26 @@ void init(::terminal::CommandContext&& ctx) { PROGMEM_STRING(Dump, "RTCMEM.DUMP"); void dump(::terminal::CommandContext&& ctx) { - ctx.output.printf_P(PSTR("boot_status=%s status=%s capacity=%u\n"), + ctx.output.printf_P(PSTR("boot_status=%s status=%s\n"), internal::status ? "OK" : "INIT", - status() ? "OK" : "INIT", - RtcmemSize); + status() ? "OK" : "INIT"); - constexpr size_t Blocks = 8; - constexpr auto Increment = alignof(uint32_t) * Blocks; + constexpr size_t BytesPerBlock = sizeof(uint32_t); + constexpr size_t BlocksPerLine = 8; - alignas(4) uint8_t buffer[Blocks]; - + alignas(4) uint8_t buffer[BytesPerBlock * BlocksPerLine]; String line; - for (auto addr = RtcmemBegin; addr < RtcmemEnd; addr += Increment) { - std::memcpy(buffer, reinterpret_cast(addr), 1); + + for (auto addr = RtcmemBegin; addr < RtcmemEnd; addr += std::size(buffer)) { + std::memcpy(&buffer[0], reinterpret_cast(addr), std::size(buffer)); line += PSTR("0x"); line += String(addr, 16); line += ':'; - for (auto offset = &buffer[0]; offset < &buffer[Blocks]; offset += 4) { + for (auto it = std::begin(buffer); it != std::end(buffer); it += BytesPerBlock) { line += PSTR(" "); - line += hexEncode(offset, offset + 4); + line += hexEncode(it, it + BytesPerBlock); } line += '\n'; diff --git a/code/espurna/rtcmem.h b/code/espurna/rtcmem.h index c024fc4e..280ab6c5 100644 --- a/code/espurna/rtcmem.h +++ b/code/espurna/rtcmem.h @@ -58,7 +58,6 @@ struct RtcmemData { }; static_assert(sizeof(RtcmemData) <= (RTCMEM_BLOCKS * 4u), "RTCMEM struct is too big"); -constexpr uint8_t RtcmemSize = (sizeof(RtcmemData) / 4u); extern volatile RtcmemData* Rtcmem;