diff --git a/CMakeLists.txt b/CMakeLists.txt index 704449a..3a2b175 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,6 @@ set(headers src/asyncudplistener.h + src/espcrc32builder.h src/esprandom.h src/lockhelper.h src/lockingqueue.h diff --git a/src/espcrc32builder.h b/src/espcrc32builder.h new file mode 100644 index 0000000..b4e9445 --- /dev/null +++ b/src/espcrc32builder.h @@ -0,0 +1,32 @@ +#pragma once + +// esp-idf includes +#include + +namespace espcpputils { + +class EspCrc32Builder +{ +public: + std::size_t write(uint8_t c) + { + return write(&c, 1); + } + + std::size_t write(const uint8_t *buf, std::size_t len) + { + crc = crc32_le(crc, buf, len); + + return len; + }; + + uint32_t hash() const + { + return crc; + } + +private: + uint32_t crc{}; +}; + +} // namespace espcpputils