From 03da985dd08ea1ce37769e61f1eb3d72dd01b69c Mon Sep 17 00:00:00 2001 From: Ahmet Inan Date: Sun, 5 Mar 2023 08:32:13 +0100 Subject: [PATCH] scramble preamble --- decode.cc | 4 ++++ encode.cc | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/decode.cc b/decode.cc index 70767d1..a98ffbd 100644 --- a/decode.cc +++ b/decode.cc @@ -170,6 +170,7 @@ struct Decoder static const int code_order = 12; static const int mod_bits = 2; static const int code_len = 1 << code_order; + static const int meta_len = 128; static const int symbol_len = 256; static const int filter_len = 33; static const int guard_len = symbol_len / 8; @@ -291,6 +292,9 @@ struct Decoder prev[i] = fdom[first_subcarrier+i]; for (int i = 0; i < subcarrier_count; ++i) mod_soft(code+mod_bits*i, cons[i], 8); + CODE::MLS seq(0b10000011); + for (int i = 0; i < meta_len; ++i) + code[i] *= nrz(seq()); int oper_mode = hadamard(code); if (oper_mode != 1) { std::cerr << "operation mode " << oper_mode << " unsupported." << std::endl; diff --git a/encode.cc b/encode.cc index 8b792e4..1c6cff2 100644 --- a/encode.cc +++ b/encode.cc @@ -31,6 +31,7 @@ struct Encoder static const int mod_bits = 2; static const int code_order = 12; static const int code_len = 1 << code_order; + static const int meta_len = 128; static const int symbol_len = 256; static const int guard_len = symbol_len / 8; static const int data_bits = 2048; @@ -93,6 +94,9 @@ struct Encoder void meta_data(int data) { hadamard(code, data); + CODE::MLS seq(0b10000011); + for (int i = 0; i < meta_len; ++i) + code[i] *= nrz(seq()); for (int i = 0; i < subcarrier_count; ++i) fdom[first_subcarrier+i] *= mod_map(code+mod_bits*i); symbol();