From 3a0968cd3db127ca1e4e2983a72277a7ceb23444 Mon Sep 17 00:00:00 2001 From: Martin Budden Date: Thu, 13 Oct 2016 16:08:52 +0100 Subject: [PATCH] Added CRC_DVB_S2 calculation --- src/main/common/maths.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/main/common/maths.c b/src/main/common/maths.c index 1dd55519a1..8d43a4e125 100644 --- a/src/main/common/maths.c +++ b/src/main/common/maths.c @@ -339,7 +339,7 @@ fix12_t qConstruct(int16_t num, int16_t den) { uint16_t crc16_ccitt(uint16_t crc, unsigned char a) { - crc ^= a << 8; + crc ^= (uint16_t)a << 8; for (int ii = 0; ii < 8; ++ii) { if (crc & 0x8000) { crc = (crc << 1) ^ 0x1021; @@ -350,3 +350,16 @@ uint16_t crc16_ccitt(uint16_t crc, unsigned char a) return crc; } +uint8_t crc8_dvb_s2(uint8_t crc, unsigned char a) +{ + crc ^= a; + for (int ii = 0; ii < 8; ++ii) { + if (crc & 0x80) { + crc = (crc << 1) ^ 0xD5; + } else { + crc = crc << 1; + } + } + return crc; +} +