From 87ceddefc20c2e346c312197a3be288794c76aa0 Mon Sep 17 00:00:00 2001 From: AlexGyver Date: Fri, 17 May 2024 00:48:10 +0300 Subject: [PATCH] upd --- README.md | 3 +++ keywords.txt | 1 + library.properties | 2 +- rtc_utils.h | 8 +++++++- 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 05f0296..bc90e99 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,9 @@ bool rtc_write(T* data, uint8_t offset = 0); // прочитать данные из rtc памяти. Вернёт 0 при ошибке, 1 если данные прочитаны, 2 если это первый запуск (данные сброшены) uint8_t rtc_read(T* data, uint8_t offset = 0); + +// размер данных в количестве блоков (включая crc32) +size_t rtc_size(T* data); ``` - Максимальный `offset` - 127, одна единица - 4 байта памяти diff --git a/keywords.txt b/keywords.txt index cee733c..7cfd928 100644 --- a/keywords.txt +++ b/keywords.txt @@ -14,6 +14,7 @@ rtc_utils KEYWORD1 rtc_write KEYWORD2 rtc_read KEYWORD2 +rtc_size KEYWORD2 ####################################### # Constants (LITERAL1) diff --git a/library.properties b/library.properties index 5a6113d..5c4a926 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=rtc_utils -version=1.0.2 +version=1.0.3 author=AlexGyver maintainer=AlexGyver sentence=Wrapper for esp8266 rtc functions diff --git a/rtc_utils.h b/rtc_utils.h index ab46bc6..487a40b 100644 --- a/rtc_utils.h +++ b/rtc_utils.h @@ -16,6 +16,12 @@ bool rtc_write(T* data, uint8_t offset = 0, uint32_t* _crc = nullptr) { return 1; } +// размер данных в количестве блоков (включая crc32) +template +size_t rtc_size(T* data) { + return (sizeof(T) + 4 - 1) / 4 + 1; +} + // прочитать данные из rtc памяти. Вернёт 0 при ошибке, 1 если данные прочитаны, 2 если это первый запуск (данные сброшены) template uint8_t rtc_read(T* data, uint8_t offset = 0) { @@ -25,7 +31,7 @@ uint8_t rtc_read(T* data, uint8_t offset = 0) { uint32_t _crc = crc32((void*)data, sizeof(T)); if (_crc != crc) { *data = T(); - return rtc_write(data, offset, &_crc) ? RTCU_RESET : RTCU_READ; + return rtc_write(data, offset, &_crc) ? RTCU_RESET : RTCU_ERROR; } return RTCU_READ; }