Go to the documentation of this file.
41 template<auto Context,
template<addr_t>
typename HashImpl>
47 using Impl = HashImpl<Context>;
55 static auto init(
auto ... args) {
56 return Impl::init(args...);
66 return Impl::deinit(args...);
79 [[nodiscard]]
static u8 getCRC8(
const auto &data,
u8 initValue = 0x00,
u8 polynomial = 0x07,
u8 xorOut = 0x00) noexcept {
80 return Impl::getCRC8(data, initValue, polynomial) ^ xorOut;
93 [[nodiscard]]
static u16 getCRC16(
const auto &data,
u16 initValue = 0x0000,
u16 polynomial = 0x8005,
u16 xorOut = 0x0000) noexcept {
94 return Impl::getCRC16(data, initValue, polynomial) ^ xorOut;
107 [[nodiscard]]
static u32 getCRC32(
const auto &data,
u32 initValue = 0xFFFF
'FFFF, u32 polynomial = 0x04C11DB7, u32 xorOut = 0xFFFFFFFF) noexcept {
108 return Impl::getCRC32(data, initValue, polynomial) ^ xorOut;
Hash(const Hash &)=delete
uint16_t u16
Definition: types.h:37
uint8_t u8
Unsigned integer definitions.
Definition: types.h:36
static auto init(auto ... args)
Hash initialization.
Definition: hash.hpp:55
HashImpl< Context > Impl
Definition: hash.hpp:47
uint32_t u32
Definition: types.h:38
Base class for the Hash abstraction.
Definition: hash.hpp:42
static u16 getCRC16(const auto &data, u16 initValue=0x0000, u16 polynomial=0x8005, u16 xorOut=0x0000) noexcept
Hardware accelerated CRC16 caluclation.
Definition: hash.hpp:93
static u32 getCRC32(const auto &data, u32 initValue=0xFFFF 'FFFF, u32 polynomial=0x04C11DB7, u32 xorOut=0xFFFFFFFF) noexcept
Hardware accelerated CRC32 caluclation.
Definition: hash.hpp:107
static u8 getCRC8(const auto &data, u8 initValue=0x00, u8 polynomial=0x07, u8 xorOut=0x00) noexcept
Hardware accelerated CRC8 caluclation.
Definition: hash.hpp:79
Zero-cost abstraction for accessing registers and bits/bitfields within them.
auto operator=(const Hash &)=delete
static auto deinit(auto ... args)
Hash deinitialization.
Definition: hash.hpp:65
Commonly used C++ and GNU attributes.
Definition: display.hpp:37