Small optimisation of the CRC calculations.
This commit is contained in:
parent
bdc35d02bd
commit
d2504172f9
1 changed files with 1 additions and 4 deletions
|
@ -142,13 +142,12 @@ uint8_t CNXDNCRC::createCRC6(const unsigned char* in, unsigned int length)
|
||||||
bool bit2 = (crc & 0x20U) == 0x20U;
|
bool bit2 = (crc & 0x20U) == 0x20U;
|
||||||
|
|
||||||
crc <<= 1;
|
crc <<= 1;
|
||||||
crc &= 0x3EU;
|
|
||||||
|
|
||||||
if (bit1 ^ bit2)
|
if (bit1 ^ bit2)
|
||||||
crc ^= 0x27U;
|
crc ^= 0x27U;
|
||||||
}
|
}
|
||||||
|
|
||||||
return crc;
|
return crc & 0x3FU;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t CNXDNCRC::createCRC12(const unsigned char* in, unsigned int length)
|
uint16_t CNXDNCRC::createCRC12(const unsigned char* in, unsigned int length)
|
||||||
|
@ -160,7 +159,6 @@ uint16_t CNXDNCRC::createCRC12(const unsigned char* in, unsigned int length)
|
||||||
bool bit2 = (crc & 0x0800U) == 0x0800U;
|
bool bit2 = (crc & 0x0800U) == 0x0800U;
|
||||||
|
|
||||||
crc <<= 1;
|
crc <<= 1;
|
||||||
crc &= 0x0FFEU;
|
|
||||||
|
|
||||||
if (bit1 ^ bit2)
|
if (bit1 ^ bit2)
|
||||||
crc ^= 0x080FU;
|
crc ^= 0x080FU;
|
||||||
|
@ -178,7 +176,6 @@ uint16_t CNXDNCRC::createCRC15(const unsigned char* in, unsigned int length)
|
||||||
bool bit2 = (crc & 0x4000U) == 0x4000U;
|
bool bit2 = (crc & 0x4000U) == 0x4000U;
|
||||||
|
|
||||||
crc <<= 1;
|
crc <<= 1;
|
||||||
crc &= 0x7FFEU;
|
|
||||||
|
|
||||||
if (bit1 ^ bit2)
|
if (bit1 ^ bit2)
|
||||||
crc ^= 0x4CC5U;
|
crc ^= 0x4CC5U;
|
||||||
|
|
Loading…
Reference in a new issue