diff options
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 ed3d3586cb..cd42273285 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::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::equal(tags[i].key, d_len_tag_key)) { packet_len = 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; |