diff --git a/edac/CRC.cpp b/edac/CRC.cpp
index 6883052d..8ebefafc 100644
--- a/edac/CRC.cpp
+++ b/edac/CRC.cpp
@@ -228,7 +228,7 @@ void CRC::encodeFiveBit(const bool* in, uint32_t& tcrc)
}
///
-/// Check 16-bit CRC-CCITT.
+/// Check 16-bit CRC CCITT-162.
///
/// This uses polynomial 0x1021.
/// Input byte array.
@@ -260,7 +260,7 @@ bool CRC::checkCCITT162(const uint8_t *in, uint32_t length)
}
///
-/// Encode 16-bit CRC-CCITT.
+/// Encode 16-bit CRC CCITT-162.
///
/// This uses polynomial 0x1021.
/// Input byte array.
@@ -291,7 +291,7 @@ void CRC::addCCITT162(uint8_t* in, uint32_t length)
}
///
-/// Check 16-bit CRC-CCITT.
+/// Check 16-bit CRC CCITT-161.
///
/// This uses polynomial 0x1189.
/// Input byte array.
@@ -323,7 +323,7 @@ bool CRC::checkCCITT161(const uint8_t *in, uint32_t length)
}
///
-/// Encode 16-bit CRC-CCITT.
+/// Encode 16-bit CRC CCITT-161.
///
/// This uses polynomial 0x1189.
/// Input byte array.
@@ -654,7 +654,7 @@ uint16_t CRC::addCRC15(uint8_t* in, uint32_t bitLength)
}
///
-/// Check 16-bit CRC.
+/// Check 16-bit CRC CCITT-162 w/ initial generator of 1.
///
/// Input byte array.
/// Length of byte array in bits.
@@ -686,13 +686,13 @@ bool CRC::checkCRC16(const uint8_t* in, uint32_t bitLength)
}
///
-/// Encode 16-bit CRC.
+/// Encode 16-bit CRC CCITT-162 w/ initial generator of 1.
///
/// Input byte array.
/// Length of byte array in bits.
/// Offset in bits to write CRC.
/// 16-bit CRC.
-uint16_t CRC::addCRC16(uint8_t* in, uint32_t bitLength, uint32_t offset)
+uint16_t CRC::addCRC16(uint8_t* in, uint32_t bitLength)
{
assert(in != nullptr);
@@ -705,7 +705,7 @@ uint16_t CRC::addCRC16(uint8_t* in, uint32_t bitLength, uint32_t offset)
uint32_t n = bitLength;
for (uint32_t i = 0U; i < 16U; i++, n++) {
bool b = READ_BIT(temp, i);
- WRITE_BIT(in, n + offset, b);
+ WRITE_BIT(in, n, b);
}
#if DEBUG_CRC
@@ -795,7 +795,7 @@ uint16_t CRC::createCRC15(const uint8_t* in, uint32_t bitLength)
///
uint16_t CRC::createCRC16(const uint8_t* in, uint32_t bitLength)
{
- uint16_t crc = 0x0000U;
+ uint16_t crc = 0xFFFFU;
for (uint32_t i = 0U; i < bitLength; i++) {
bool bit1 = READ_BIT(in, i) != 0x00U;
@@ -807,6 +807,5 @@ uint16_t CRC::createCRC16(const uint8_t* in, uint32_t bitLength)
crc ^= 0x1021U;
}
- crc = ~crc;
return crc & 0xFFFFU;
}
diff --git a/edac/CRC.h b/edac/CRC.h
index 2c598f24..a62062bc 100644
--- a/edac/CRC.h
+++ b/edac/CRC.h
@@ -47,14 +47,14 @@ namespace edac
/// Encode 5-bit CRC.
static void encodeFiveBit(const bool* in, uint32_t& tcrc);
- /// Check 16-bit CRC-CCITT.
+ /// Check 16-bit CRC CCITT-162.
static bool checkCCITT162(const uint8_t* in, uint32_t length);
- /// Encode 16-bit CRC-CCITT.
+ /// Encode 16-bit CRC CCITT-162.
static void addCCITT162(uint8_t* in, uint32_t length);
- /// Check 16-bit CRC-CCITT.
+ /// Check 16-bit CRC CCITT-161.
static bool checkCCITT161(const uint8_t* in, uint32_t length);
- /// Encode 16-bit CRC-CCITT.
+ /// Encode 16-bit CRC CCITT-161.
static void addCCITT161(uint8_t* in, uint32_t length);
/// Check 32-bit CRC.
@@ -83,10 +83,10 @@ namespace edac
/// Encode 15-bit CRC.
static uint16_t addCRC15(uint8_t* in, uint32_t bitLength);
- /// Check 16-bit CRC-CCITT.
+ /// Check 16-bit CRC CCITT-162 w/ initial generator of 1.
static bool checkCRC16(const uint8_t* in, uint32_t bitLength);
- /// Encode 16-bit CRC.
- static uint16_t addCRC16(uint8_t* in, uint32_t bitLength, uint32_t offset = 0);
+ /// Encode 16-bit CRC CCITT-162 w/ initial generator of 1.
+ static uint16_t addCRC16(uint8_t* in, uint32_t bitLength);
private:
///
diff --git a/nxdn/channel/CAC.cpp b/nxdn/channel/CAC.cpp
index ea8fd348..e611dce1 100644
--- a/nxdn/channel/CAC.cpp
+++ b/nxdn/channel/CAC.cpp
@@ -272,7 +272,7 @@ void CAC::encode(uint8_t* data) const
WRITE_BIT(buffer, i, b);
}
- uint16_t crc = CRC::addCRC16(buffer, NXDN_CAC_LENGTH_BITS, 5U);
+ uint16_t crc = CRC::addCRC16(buffer, NXDN_CAC_LENGTH_BITS);
#if DEBUG_NXDN_CAC
Utils::dump(2U, "Encoded CAC", buffer, NXDN_CAC_FEC_LENGTH_BYTES);