libyggdrasil  v1.0.0
hash.cpp File Reference

Hash abstraction implementation for Midgard. More...

#include <yggdrasil.h>
#include <cpp/common/registers.hpp>
#include <cpp/common/attributes.hpp>
#include <cpp/common/types.hpp>
#include <cpp/common/utils.hpp>
#include <c/midgard/driver/hash.h>
#include <math.h>
Include dependency graph for hash.cpp:

Typedefs

using DR = bsp::Register< 0x4002 '3000, RegisterMap::DR, u32 >
 
using IDR = bsp::Register< 0x4002 '3000, RegisterMap::IDR, u32 >
 
using CR = bsp::Register< 0x4002 '3000, RegisterMap::CR, u32 >
 
using INIT = bsp::Register< 0x4002 '3000, RegisterMap::INIT, u32 >
 
using POL = bsp::Register< 0x4002 '3000, RegisterMap::POL, u32 >
 

Enumerations

enum  RegisterMap : u8 {
  RegisterMap::DR = 0x00, RegisterMap::IDR = 0x04, RegisterMap::CR = 0x08, RegisterMap::INIT = 0x10,
  RegisterMap::POL = 0x14
}
 Register map. More...
 

Functions

C_LINKAGE bool yggdrasil_HASH_Init (void)
 Hash initialization. More...
 
C_LINKAGE bool yggdrasil_HASH_Deinit (void)
 Hash deinitialization. More...
 
C_LINKAGE u8 yggdrasil_HASH_getCRC8 (void *data, size_t size, u8 initValue, u8 polynomial, u8 xorOut)
 Hardware accelerated CRC8 caluclation. More...
 
C_LINKAGE u16 yggdrasil_HASH_getCRC16 (void *data, size_t size, u16 initValue, u16 polynomial, u16 xorOut)
 Hardware accelerated CRC16 caluclation. More...
 
C_LINKAGE u32 yggdrasil_HASH_getCRC32 (void *data, size_t size, u32 initValue, u32 polynomial, u32 xorOut)
 Hardware accelerated CRC32 caluclation. More...
 

Detailed Description

Hash abstraction implementation for Midgard.

Author
Fabian Weber, Nikolaij Saegesser

Typedef Documentation

◆ CR

using CR = bsp::Register<0x4002'3000, RegisterMap::CR, u32>

◆ DR

using DR = bsp::Register<0x4002'3000, RegisterMap::DR, u32>

◆ IDR

using IDR = bsp::Register<0x4002'3000, RegisterMap::IDR, u32>

◆ INIT

using INIT = bsp::Register<0x4002'3000, RegisterMap::INIT, u32>

◆ POL

using POL = bsp::Register<0x4002'3000, RegisterMap::POL, u32>

Enumeration Type Documentation

◆ RegisterMap

enum RegisterMap : u8
strong

Register map.

Enumerator
DR 

Data register.

IDR 

Independent data register.

CR 

Control register.

INIT 

Initial CRC value.

POL 

CRC polynomial.

Function Documentation

◆ yggdrasil_HASH_Deinit()

C_LINKAGE bool yggdrasil_HASH_Deinit ( void  )

Hash deinitialization.

Returns
Success

◆ yggdrasil_HASH_getCRC16()

C_LINKAGE u16 yggdrasil_HASH_getCRC16 ( void *  data,
size_t  size,
u16  initValue,
u16  polynomial,
u16  xorOut 
)

Hardware accelerated CRC16 caluclation.

Parameters
dataData to calculate CRC of
sizeSize of the data
initValueStart value
polynomialUsed polynomial
xorOutValue to xor result value with
Returns
CRC 16

◆ yggdrasil_HASH_getCRC32()

C_LINKAGE u32 yggdrasil_HASH_getCRC32 ( void *  data,
size_t  size,
u32  initValue,
u32  polynomial,
u32  xorOut 
)

Hardware accelerated CRC32 caluclation.

Parameters
dataData to calculate CRC of
sizeSize of the data
initValueStart value
polynomialUsed polynomial
xorOutValue to xor result value with
Returns
CRC 32

◆ yggdrasil_HASH_getCRC8()

C_LINKAGE u8 yggdrasil_HASH_getCRC8 ( void *  data,
size_t  size,
u8  initValue,
u8  polynomial,
u8  xorOut 
)

Hardware accelerated CRC8 caluclation.

Parameters
dataData to calculate CRC of
sizeSize of the data
initValueStart value
polynomialUsed polynomial
xorOutValue to xor result value with
Returns
CRC 8

◆ yggdrasil_HASH_Init()

C_LINKAGE bool yggdrasil_HASH_Init ( void  )

Hash initialization.

Returns
Success