diff options
Diffstat (limited to 'gr-digital/lib/ofdm_carrier_allocator_cvc_impl.cc')
-rw-r--r-- | gr-digital/lib/ofdm_carrier_allocator_cvc_impl.cc | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/gr-digital/lib/ofdm_carrier_allocator_cvc_impl.cc b/gr-digital/lib/ofdm_carrier_allocator_cvc_impl.cc index 171fd95934..7c094abb92 100644 --- a/gr-digital/lib/ofdm_carrier_allocator_cvc_impl.cc +++ b/gr-digital/lib/ofdm_carrier_allocator_cvc_impl.cc @@ -87,9 +87,6 @@ namespace gr { } } for (unsigned i = 0; i < d_pilot_carriers.size(); i++) { - if (d_pilot_carriers[i].size() != pilot_symbols[i].size()) { - throw std::invalid_argument("pilot_carriers do not match pilot_symbols"); - } for (unsigned j = 0; j < d_pilot_carriers[i].size(); j++) { if (d_pilot_carriers[i][j] < 0) { d_pilot_carriers[i][j] += d_fft_len; @@ -102,6 +99,11 @@ namespace gr { } } } + for (unsigned i = 0; i < std::max(d_pilot_carriers.size(), d_pilot_symbols.size()); i++) { + if (d_pilot_carriers[i % d_pilot_carriers.size()].size() != d_pilot_symbols[i % d_pilot_symbols.size()].size()) { + throw std::invalid_argument("pilot_carriers do not match pilot_symbols"); + } + } for (unsigned i = 0; i < d_sync_words.size(); i++) { if (d_sync_words[i].size() != (unsigned) d_fft_len) { throw std::invalid_argument("sync words must be fft length"); @@ -180,12 +182,10 @@ namespace gr { } } // Copy pilot symbols - curr_set = 0; for (int i = 0; i < n_ofdm_symbols; i++) { - for (unsigned k = 0; k < d_pilot_carriers[curr_set].size(); k++) { - out[i * d_fft_len + d_pilot_carriers[curr_set][k]] = d_pilot_symbols[curr_set][k]; + for (unsigned k = 0; k < d_pilot_carriers[i % d_pilot_carriers.size()].size(); k++) { + out[i * d_fft_len + d_pilot_carriers[i % d_pilot_carriers.size()][k]] = d_pilot_symbols[i % d_pilot_symbols.size()][k]; } - curr_set = (curr_set + 1) % d_pilot_carriers.size(); } return n_ofdm_symbols + d_sync_words.size(); |