diff options
Diffstat (limited to 'gr-digital/lib/packet_header_default.cc')
-rw-r--r-- | gr-digital/lib/packet_header_default.cc | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/gr-digital/lib/packet_header_default.cc b/gr-digital/lib/packet_header_default.cc index eb639260c6..ef5f39dc97 100644 --- a/gr-digital/lib/packet_header_default.cc +++ b/gr-digital/lib/packet_header_default.cc @@ -47,7 +47,7 @@ namespace gr { int bits_per_byte) : d_header_len(header_len), d_len_tag_key(pmt::string_to_symbol(len_tag_key)), - d_num_tag_key(pmt::string_to_symbol(num_tag_key)), + d_num_tag_key(num_tag_key.empty() ? pmt::PMT_NIL : pmt::string_to_symbol(num_tag_key)), d_bits_per_byte(bits_per_byte), d_header_number(0) { @@ -64,8 +64,9 @@ namespace gr { bool packet_header_default::header_formatter( long packet_len, unsigned char *out, + const std::vector<tag_t> &tags - ) + ) { packet_len &= 0x0FFF; @@ -107,12 +108,17 @@ namespace gr { if (k >= d_header_len) { return true; } - for (int i = 0; i < 16 && k < d_header_len; i += d_bits_per_byte, k++) { - header_num |= (((int) in[k]) & d_mask) << i; + if (d_num_tag_key == pmt::PMT_NIL) { + k += 16; + } else { + for (int i = 0; i < 16 && k < d_header_len; i += d_bits_per_byte, k++) { + header_num |= (((int) in[k]) & d_mask) << i; + } + tag.key = d_num_tag_key; + tag.value = pmt::from_long(header_num); + tags.push_back(tag); } - tag.key = d_num_tag_key; - tag.value = pmt::from_long(header_num); - tags.push_back(tag); + if (k >= d_header_len) { return true; } |