[CRC] Convert into singleton

This commit is contained in:
jgromes 2023-05-12 21:08:43 +02:00
parent efd449875d
commit 8062a322c6
3 changed files with 16 additions and 17 deletions

View file

@ -306,9 +306,14 @@ int16_t AX25Client::sendFrame(AX25Frame* frame) {
frameBuff[i] = Module::reflect(frameBuff[i], 8);
}
// calculate
RadioLibCRC crc(16, RADIOLIB_CRC_CCITT_POLY, RADIOLIB_CRC_CCITT_INIT, RADIOLIB_CRC_CCITT_OUT, false, false);
uint16_t fcs = crc.checksum(frameBuff, frameBuffLen);
// calculate
RadioLibCRCInstance.size = 16;
RadioLibCRCInstance.poly = RADIOLIB_CRC_CCITT_POLY;
RadioLibCRCInstance.init = RADIOLIB_CRC_CCITT_INIT;
RadioLibCRCInstance.out = RADIOLIB_CRC_CCITT_OUT;
RadioLibCRCInstance.refIn = false;
RadioLibCRCInstance.refOut = false;
uint16_t fcs = RadioLibCRCInstance.checksum(frameBuff, frameBuffLen);
*(frameBuffPtr++) = (uint8_t)((fcs >> 8) & 0xFF);
*(frameBuffPtr++) = (uint8_t)(fcs & 0xFF);

View file

@ -1,12 +1,7 @@
#include "CRC.h"
RadioLibCRC::RadioLibCRC(uint8_t size, uint32_t poly, uint32_t init, uint32_t out, bool refIn, bool refOut) {
this->size = size;
this->poly = poly;
this->init = init;
this->out = out;
this->refIn = refIn;
this->refOut = refOut;
RadioLibCRC::RadioLibCRC() {
}
uint32_t RadioLibCRC::checksum(uint8_t* buff, size_t len) {
@ -37,3 +32,5 @@ uint32_t RadioLibCRC::checksum(uint8_t* buff, size_t len) {
crc &= (uint32_t)0xFFFFFFFF >> (32 - this->size);
return(crc);
}
RadioLibCRC RadioLibCRCInstance;

View file

@ -50,14 +50,8 @@ class RadioLibCRC {
/*!
\brief Default constructor.
\param size CRC size in bits.
\param poly CRC polynomial.
\param init Initial value.
\param out Final XOR value.
\param refIn Whether to reflect input bytes.
\param refOut Whether to reflect the result.
*/
RadioLibCRC(uint8_t size, uint32_t poly, uint32_t init, uint32_t out, bool refIn, bool refOut);
RadioLibCRC();
/*!
\brief Calcualte checksum of a buffer.
@ -68,4 +62,7 @@ class RadioLibCRC {
uint32_t checksum(uint8_t* buff, size_t len);
};
// the global singleton
extern RadioLibCRC RadioLibCRCInstance;
#endif