[CRC] Convert into singleton
This commit is contained in:
parent
efd449875d
commit
8062a322c6
3 changed files with 16 additions and 17 deletions
|
@ -306,9 +306,14 @@ int16_t AX25Client::sendFrame(AX25Frame* frame) {
|
||||||
frameBuff[i] = Module::reflect(frameBuff[i], 8);
|
frameBuff[i] = Module::reflect(frameBuff[i], 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
// calculate
|
// calculate
|
||||||
RadioLibCRC crc(16, RADIOLIB_CRC_CCITT_POLY, RADIOLIB_CRC_CCITT_INIT, RADIOLIB_CRC_CCITT_OUT, false, false);
|
RadioLibCRCInstance.size = 16;
|
||||||
uint16_t fcs = crc.checksum(frameBuff, frameBuffLen);
|
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 >> 8) & 0xFF);
|
||||||
*(frameBuffPtr++) = (uint8_t)(fcs & 0xFF);
|
*(frameBuffPtr++) = (uint8_t)(fcs & 0xFF);
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,7 @@
|
||||||
#include "CRC.h"
|
#include "CRC.h"
|
||||||
|
|
||||||
RadioLibCRC::RadioLibCRC(uint8_t size, uint32_t poly, uint32_t init, uint32_t out, bool refIn, bool refOut) {
|
RadioLibCRC::RadioLibCRC() {
|
||||||
this->size = size;
|
|
||||||
this->poly = poly;
|
|
||||||
this->init = init;
|
|
||||||
this->out = out;
|
|
||||||
this->refIn = refIn;
|
|
||||||
this->refOut = refOut;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t RadioLibCRC::checksum(uint8_t* buff, size_t len) {
|
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);
|
crc &= (uint32_t)0xFFFFFFFF >> (32 - this->size);
|
||||||
return(crc);
|
return(crc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RadioLibCRC RadioLibCRCInstance;
|
||||||
|
|
|
@ -50,14 +50,8 @@ class RadioLibCRC {
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\brief Default constructor.
|
\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.
|
\brief Calcualte checksum of a buffer.
|
||||||
|
@ -68,4 +62,7 @@ class RadioLibCRC {
|
||||||
uint32_t checksum(uint8_t* buff, size_t len);
|
uint32_t checksum(uint8_t* buff, size_t len);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// the global singleton
|
||||||
|
extern RadioLibCRC RadioLibCRCInstance;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Reference in a new issue