RadioLib
Universal wireless communication library for Arduino
CRC.h
1 #if !defined(_RADIOLIB_CRC_H)
2 #define _RADIOLIB_CRC_H
3 
4 #include "../TypeDef.h"
5 #include "../Module.h"
6 
7 // CCITT CRC properties (used by AX.25)
8 #define RADIOLIB_CRC_CCITT_POLY (0x1021)
9 #define RADIOLIB_CRC_CCITT_INIT (0xFFFF)
10 #define RADIOLIB_CRC_CCITT_OUT (0xFFFF)
11 
16 class RadioLibCRC {
17  public:
21  uint8_t size = 8;
22 
26  uint32_t poly = 0;
27 
31  uint32_t init = 0;
32 
36  uint32_t out = 0;
37 
41  bool refIn = false;
42 
46  bool refOut = false;
47 
51  RadioLibCRC();
52 
59  uint32_t checksum(const uint8_t* buff, size_t len);
60 };
61 
62 // the global singleton
63 extern RadioLibCRC RadioLibCRCInstance;
64 
65 #endif
Class to calculate CRCs of varying formats.
Definition: CRC.h:16
uint32_t out
Final XOR value.
Definition: CRC.h:36
RadioLibCRC()
Default constructor.
Definition: CRC.cpp:3
uint32_t init
Initial value.
Definition: CRC.h:31
uint32_t checksum(const uint8_t *buff, size_t len)
Calculate checksum of a buffer.
Definition: CRC.cpp:7
bool refOut
Whether to reflect the result.
Definition: CRC.h:46
bool refIn
Whether to reflect input bytes.
Definition: CRC.h:41
uint8_t size
CRC size in bits.
Definition: CRC.h:21
uint32_t poly
CRC polynomial.
Definition: CRC.h:26