-
Notifications
You must be signed in to change notification settings - Fork 0
/
Edc.h
60 lines (46 loc) · 2.18 KB
/
Edc.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#ifndef EDC_H
#define EDC_H
/******************************************************************************/
/*----------------------------------Includes----------------------------------*/
/******************************************************************************/
/** Standard libs **/
#include <stdlib.h>
#include <stdint.h>
#include <stdbool.h>
/******************************************************************************/
/*---------------------------------Macros-------------------------------------*/
/******************************************************************************/
#ifndef INLINE
#define INLINE inline __attribute__ ((always_inline))
#endif
#ifndef bool
#define bool bool
#endif
/** Max. amount of CRC devices using this library (affects memory consumption) **/
#define CRC_MAX_DEVICE_COUNT 10
/******************************************************************************/
/*----------------------------Enumeration Types-------------------------------*/
/******************************************************************************/
typedef enum {
CRC_POLY_SIZE_8 = 8,
CRC_POLY_SIZE_16 = 16,
CRC_POLY_SIZE_32 = 32
} CrcPolySize_t;
/******************************************************************************/
/*-----------------------------Data Structures--------------------------------*/
/******************************************************************************/
typedef struct {
const uint32_t poly;
const CrcPolySize_t polySize;
const bool isInputReflected;
const bool isCrcReflected;
} CrcConfig_t;
/******************************************************************************/
/*---------------------------- Function Prototypes----------------------------*/
/******************************************************************************/
bool EDC_GenerateCrcLut(CrcConfig_t crcConfig);
uint32_t EDC_CalculateCrc(const uint32_t poly, void *dPtr, const uint32_t dataLen);
/******************************************************************************/
/*-----------------------------Function In-lines------------------------------*/
/******************************************************************************/
#endif /* EDC_H */