From 3a5b28675c4755bad0300c97374a26740dbd0a64 Mon Sep 17 00:00:00 2001 From: csrichter Date: Fri, 2 Jun 2017 15:16:54 +0200 Subject: [PATCH] RDS error correction fixed? (XORd offsetword to block before correcting) --- lib/rds_decoder_redsea_impl.cc | 31 ++++++++++++++++++++++--------- lib/rds_decoder_redsea_impl.h | 1 + 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/lib/rds_decoder_redsea_impl.cc b/lib/rds_decoder_redsea_impl.cc index 8e4aaba..080fbca 100644 --- a/lib/rds_decoder_redsea_impl.cc +++ b/lib/rds_decoder_redsea_impl.cc @@ -179,15 +179,15 @@ static const char * const offset_name[]={"A","B","C","D","c"};*/ } uint32_t rds_decoder_redsea_impl::correctBurstErrors(uint32_t block, char offset) { - uint32_t syndrome = calc_syndrome(block,26); - //uint32_t syndrome = calcSyndrome_vec(block); + //uint32_t syndrome = calc_syndrome(block,26); + uint32_t syndrome = calc_syndrome(block ^ offset_char_to_word(offset),26); uint32_t corrected_block = block; //dout << "trying to correct sy:"< 0) { uint32_t err = kErrorLookup.at({syndrome, offset}); //dout << "correcting"<>10) & 0xffff; checkword=corrected_block & 0x3ff; - //dout << "corrected error"< read group type variant variant=(dataword>>11)& 0x1; - uint8_t group=(dataword>>12)& 0xf; +// uint8_t group=(dataword>>12)& 0xf; // dout << "group:"<