summaryrefslogtreecommitdiff
path: root/gr-digital/lib/packet_header_default.cc
diff options
context:
space:
mode:
authorJohnathan Corgan <johnathan@corganlabs.com>2013-05-13 07:36:16 +1000
committerJohnathan Corgan <johnathan@corganlabs.com>2013-05-13 07:36:16 +1000
commita4fe510a69190162452889cd629fa258084f46ff (patch)
tree4da725d8bad7641fb8d9db8b153e61beb313715d /gr-digital/lib/packet_header_default.cc
parentc7a2cecdd4e9e04d66b4b20b9debce86696e6290 (diff)
parent2405532f945576470d1915a4668b91ff35c05775 (diff)
Merge branch 'next' into runtime_pimpl
Conflicts: gr-blocks/swig/blocks_swig0.i gr-digital/lib/ofdm_chanest_vcvc_impl.cc gr-digital/lib/ofdm_frame_equalizer_vcvc_impl.cc gr-digital/lib/ofdm_frame_equalizer_vcvc_impl.h gr-digital/lib/ofdm_sync_sc_cfb_impl.cc gr-digital/lib/packet_header_default.cc gr-digital/lib/packet_headerparser_b_impl.cc
Diffstat (limited to 'gr-digital/lib/packet_header_default.cc')
-rw-r--r--gr-digital/lib/packet_header_default.cc20
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;
}