summaryrefslogtreecommitdiff
path: root/gr-digital/lib/packet_header_ofdm.cc
diff options
context:
space:
mode:
authorMartin Braun <martin.braun@kit.edu>2013-04-07 22:22:55 +0200
committerMartin Braun <martin.braun@kit.edu>2013-04-08 11:41:38 +0200
commit719c8be76751cb4fb88fa8ca4149bbf1cf1db763 (patch)
tree9820dde3d41d9a0fbcacd0d1a548f9754971e310 /gr-digital/lib/packet_header_ofdm.cc
parentd195fb943fa7677959d8df9abc1b66c3fae7982d (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.cc18
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;