summaryrefslogtreecommitdiff
path: root/gr-digital/lib/ofdm_carrier_allocator_cvc_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gr-digital/lib/ofdm_carrier_allocator_cvc_impl.cc')
-rw-r--r--gr-digital/lib/ofdm_carrier_allocator_cvc_impl.cc14
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();