summaryrefslogtreecommitdiff
path: root/gr-digital/lib/ofdm_serializer_vcc_impl.cc
diff options
context:
space:
mode:
authorMartin Braun <martin.braun@kit.edu>2013-04-19 12:58:35 +0200
committerMartin Braun <martin.braun@kit.edu>2013-05-11 13:50:34 +0200
commit7be24afbf8857a5e827fb536a80d7a83e7b6aa31 (patch)
treec76cafea7b2d33b0f0de615242d2d48004bc4f79 /gr-digital/lib/ofdm_serializer_vcc_impl.cc
parent728c6e2138d5eb4f0814dcd3d03c65e628746eab (diff)
digital: OFDM passes all tests
Diffstat (limited to 'gr-digital/lib/ofdm_serializer_vcc_impl.cc')
-rw-r--r--gr-digital/lib/ofdm_serializer_vcc_impl.cc17
1 files changed, 12 insertions, 5 deletions
diff --git a/gr-digital/lib/ofdm_serializer_vcc_impl.cc b/gr-digital/lib/ofdm_serializer_vcc_impl.cc
index 2fdb9bd0e8..2d6d68f758 100644
--- a/gr-digital/lib/ofdm_serializer_vcc_impl.cc
+++ b/gr-digital/lib/ofdm_serializer_vcc_impl.cc
@@ -36,6 +36,7 @@ namespace gr {
const std::string &len_tag_key,
const std::string &packet_len_tag_key,
int symbols_skipped,
+ const std::string &carr_offset_key,
bool input_is_shifted
)
{
@@ -43,7 +44,9 @@ namespace gr {
new ofdm_serializer_vcc_impl(
fft_len, occupied_carriers,
len_tag_key, packet_len_tag_key,
- symbols_skipped, input_is_shifted
+ symbols_skipped,
+ carr_offset_key,
+ input_is_shifted
)
);
}
@@ -53,6 +56,7 @@ namespace gr {
const digital_ofdm_carrier_allocator_cvc_sptr &allocator,
const std::string &packet_len_tag_key,
int symbols_skipped,
+ const std::string &carr_offset_key,
bool input_is_shifted
)
{
@@ -63,6 +67,7 @@ namespace gr {
allocator->len_tag_key(),
packet_len_tag_key,
symbols_skipped,
+ carr_offset_key,
input_is_shifted
)
);
@@ -74,6 +79,7 @@ namespace gr {
const std::string &len_tag_key,
const std::string &packet_len_tag_key,
int symbols_skipped,
+ const std::string &carr_offset_key,
bool input_is_shifted)
: gr_tagged_stream_block ("ofdm_serializer_vcc",
gr_make_io_signature(1, 1, sizeof (gr_complex) * fft_len),
@@ -84,6 +90,7 @@ namespace gr {
d_packet_len_tag_key(pmt::pmt_string_to_symbol(packet_len_tag_key)),
d_out_len_tag_key(pmt::pmt_string_to_symbol((packet_len_tag_key.empty() ? len_tag_key : packet_len_tag_key))),
d_symbols_skipped(symbols_skipped % occupied_carriers.size()),
+ d_carr_offset_key(pmt::pmt_string_to_symbol(carr_offset_key)),
d_curr_set(symbols_skipped % occupied_carriers.size()),
d_symbols_per_set(0)
{
@@ -96,7 +103,7 @@ namespace gr {
throw std::invalid_argument("ofdm_serializer_vcc: trying to occupy a carrier outside the fft length.");
}
if (input_is_shifted) {
- d_occupied_carriers[i][k] = (d_occupied_carriers[i][k] + fft_len) % fft_len;
+ d_occupied_carriers[i][k] = (d_occupied_carriers[i][k] + fft_len/2) % fft_len;
}
}
}
@@ -148,7 +155,7 @@ namespace gr {
if (!d_length_tag_key_str.empty()) {
get_tags_in_range(tags, 0, nitems_read(0), nitems_read(0)+1);
for (unsigned i = 0; i < tags.size(); i++) {
- if (pmt::pmt_symbol_to_string(tags[i].key) == "ofdm_sync_carr_offset") {
+ if (tags[i].key == d_carr_offset_key) {
carr_offset = pmt::pmt_to_long(tags[i].value);
}
if (tags[i].key == d_packet_len_tag_key) {
@@ -176,8 +183,8 @@ namespace gr {
);
for (unsigned t = 0; t < tags.size(); t++) {
add_item_tag(0, nitems_written(0)+n_out_symbols,
- tags[i].key,
- tags[i].value
+ tags[t].key,
+ tags[t].value
);
}
for (unsigned k = 0; k < d_occupied_carriers[d_curr_set].size(); k++) {