diff options
author | Martin Braun <martin.braun@kit.edu> | 2013-04-07 22:22:55 +0200 |
---|---|---|
committer | Martin Braun <martin.braun@kit.edu> | 2013-04-08 11:41:38 +0200 |
commit | 719c8be76751cb4fb88fa8ca4149bbf1cf1db763 (patch) | |
tree | 9820dde3d41d9a0fbcacd0d1a548f9754971e310 /gr-digital/lib/packet_header_ofdm.cc | |
parent | d195fb943fa7677959d8df9abc1b66c3fae7982d (diff) |
digital: fix some issues w/ header parser/gen; QA, wrong OFDM symbol number calculation, bug that always returns PMT_NIL
Diffstat (limited to 'gr-digital/lib/packet_header_ofdm.cc')
-rw-r--r-- | gr-digital/lib/packet_header_ofdm.cc | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/gr-digital/lib/packet_header_ofdm.cc b/gr-digital/lib/packet_header_ofdm.cc index db190c13bb..6d40fcfffa 100644 --- a/gr-digital/lib/packet_header_ofdm.cc +++ b/gr-digital/lib/packet_header_ofdm.cc @@ -45,11 +45,12 @@ namespace gr { const std::string &len_tag_key, const std::string &frame_len_tag_key, const std::string &num_tag_key, - int bits_per_sym) + int bits_per_header_sym, + int bits_per_payload_sym) { return packet_header_ofdm::sptr( new packet_header_ofdm( - occupied_carriers, n_syms, len_tag_key, frame_len_tag_key, num_tag_key, bits_per_sym + occupied_carriers, n_syms, len_tag_key, frame_len_tag_key, num_tag_key, bits_per_header_sym, bits_per_payload_sym ) ); } @@ -60,15 +61,17 @@ namespace gr { const std::string &len_tag_key, const std::string &frame_len_tag_key, const std::string &num_tag_key, - int bits_per_sym) + int bits_per_header_sym, + int bits_per_payload_sym) : packet_header_default( _get_header_len_from_occupied_carriers(occupied_carriers, n_syms), len_tag_key, num_tag_key, - bits_per_sym), + bits_per_header_sym), d_frame_len_tag_key(pmt::pmt_string_to_symbol(frame_len_tag_key)), d_occupied_carriers(occupied_carriers), - d_syms_per_set(0) + d_syms_per_set(0), + d_bits_per_payload_sym(bits_per_payload_sym) { for (unsigned i = 0; i < d_occupied_carriers.size(); i++) { d_syms_per_set += d_occupied_carriers[i].size(); @@ -87,14 +90,17 @@ namespace gr { if (!packet_header_default::header_parser(in, tags)) { return false; } - int packet_len = 0; // # of OFDM symbols + int packet_len = 0; // # of bytes in this frame for (unsigned i = 0; i < tags.size(); i++) { if (pmt::pmt_equal(tags[i].key, d_len_tag_key)) { packet_len = pmt::pmt_to_long(tags[i].value); break; } } + // Convert bytes to complex symbols: + packet_len = packet_len * 8 / d_bits_per_payload_sym; + // frame_len == # of OFDM symbols in this frame int frame_len = packet_len / d_syms_per_set; int k = 0; int i = frame_len * d_syms_per_set; |