diff --git a/common.hh b/common.hh index 2b1d787..6f56def 100644 --- a/common.hh +++ b/common.hh @@ -32,7 +32,8 @@ struct Common static constexpr int slm_poly[16] = { 0x11d, 0x12b, 0x12d, 0x14d, 0x15f, 0x163, 0x165, 0x169, 0x171, 0x187, 0x18d, 0x1a9, 0x1c3, 0x1cf, 0x1e7, 0x1f5 }; - CODE::CRC crc0; + CODE::CRC crc0; + CODE::CRC crc1; CODE::HadamardEncoder<6> hadamard_encoder; int8_t head[32]; int8_t tail[32]; @@ -49,7 +50,7 @@ struct Common int symbol_count; bool differential; - Common() : crc0(0x8F6E37A0) {} + Common() : crc0(0xA8F4), crc1(0x8F6E37A0) {} void setup(int mode) { diff --git a/decode.cc b/decode.cc index a192ae9..261753c 100644 --- a/decode.cc +++ b/decode.cc @@ -372,10 +372,10 @@ struct Decoder : Common polar_decoder(nullptr, mesg, code, frozen_bits, code_order); int best = -1; for (int k = 0; k < mesg_type::SIZE; ++k) { - crc0.reset(); + crc1.reset(); for (int i = 0; i < crc_bits; ++i) - crc0(mesg[i].v[k] < 0); - if (crc0() == 0) { + crc1(mesg[i].v[k] < 0); + if (crc1() == 0) { best = k; break; } diff --git a/encode.cc b/encode.cc index 8cf346e..d37cee3 100644 --- a/encode.cc +++ b/encode.cc @@ -273,11 +273,11 @@ struct Encoder : public Common schmidl_cox(); for (int i = 0; i < data_bits; ++i) mesg[i] = nrz(CODE::get_le_bit(data, i)); - crc0.reset(); + crc1.reset(); for (int i = 0; i < data_bytes; ++i) - crc0(data[i]); + crc1(data[i]); for (int i = 0; i < 32; ++i) - mesg[i+data_bits] = nrz((crc0()>>i)&1); + mesg[i+data_bits] = nrz((crc1()>>i)&1); polar_encoder(code, mesg, frozen_bits, code_order); shuffle(perm, code, code_order); CODE::MLS seq1(mls1_poly);