[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);
|
||||
}
|
||||
|
||||
// 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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue