commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] [gnuradio] 19/24: digital: adding more support for pac


From: git
Subject: [Commit-gnuradio] [gnuradio] 19/24: digital: adding more support for packet formatters.
Date: Tue, 14 Jun 2016 00:41:01 +0000 (UTC)

This is an automated email from the git hooks/post-receive script.

jcorgan pushed a commit to branch packet2
in repository gnuradio.

commit fe6f204080eb65e9d341e7e60ebd09eb6e1abc82
Author: Tom Rondeau <address@hidden>
Date:   Wed Apr 27 13:28:29 2016 -0400

    digital: adding more support for packet formatters.
    
    A formatter class that uses a CRC8 check on the header. This is a
    revision of the packet_header_default but based on the
    packet_formatter_base class.
    
    Also added a TSB version of the packet_format class that takes
    packed-bytes in, packed-bytes out.
    
    Added example for using/testing new formatters.
---
 gr-digital/examples/packet/formatter_crc.grc       | 958 +++++++++++++++++++++
 gr-digital/grc/digital_block_tree.xml              |   3 +-
 gr-digital/grc/digital_packet_format_bb.xml        |  30 +
 gr-digital/include/gnuradio/digital/CMakeLists.txt |   4 +-
 .../include/gnuradio/digital/packet_format_bb.h    |  81 ++
 .../gnuradio/digital/packet_formatter_crc.h        | 118 +++
 gr-digital/lib/CMakeLists.txt                      |   4 +-
 gr-digital/lib/packet_format_bb_impl.cc            | 118 +++
 gr-digital/lib/packet_format_bb_impl.h             |  55 ++
 gr-digital/lib/packet_formatter_crc.cc             | 158 ++++
 gr-digital/swig/digital_swig.i                     |   7 +-
 gr-digital/swig/packet_header.i                    |   6 +
 12 files changed, 1538 insertions(+), 4 deletions(-)

diff --git a/gr-digital/examples/packet/formatter_crc.grc 
b/gr-digital/examples/packet/formatter_crc.grc
new file mode 100644
index 0000000..39a76f1
--- /dev/null
+++ b/gr-digital/examples/packet/formatter_crc.grc
@@ -0,0 +1,958 @@
+<?xml version='1.0' encoding='utf-8'?>
+<?grc format='1' created='3.7.10'?>
+<flow_graph>
+  <timestamp>Sun Apr 10 12:10:29 2016</timestamp>
+  <block>
+    <key>options</key>
+    <param>
+      <key>author</key>
+      <value></value>
+    </param>
+    <param>
+      <key>window_size</key>
+      <value></value>
+    </param>
+    <param>
+      <key>category</key>
+      <value>Custom</value>
+    </param>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>description</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(8, 13)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>generate_options</key>
+      <value>qt_gui</value>
+    </param>
+    <param>
+      <key>hier_block_src_path</key>
+      <value>.:</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>formatter_crc</value>
+    </param>
+    <param>
+      <key>max_nouts</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>qt_qss_theme</key>
+      <value></value>
+    </param>
+    <param>
+      <key>realtime_scheduling</key>
+      <value></value>
+    </param>
+    <param>
+      <key>run_command</key>
+      <value>{python} -u {filename}</value>
+    </param>
+    <param>
+      <key>run_options</key>
+      <value>prompt</value>
+    </param>
+    <param>
+      <key>run</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>thread_safe_setters</key>
+      <value></value>
+    </param>
+    <param>
+      <key>title</key>
+      <value></value>
+    </param>
+  </block>
+  <block>
+    <key>variable</key>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(176, 13)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>formatter</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>digital.packet_formatter_crc(len_key, num_key)</value>
+    </param>
+  </block>
+  <block>
+    <key>variable</key>
+    <param>
+      <key>comment</key>
+      <value>Need another for this path
+as the formatters keep state.</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(288, 517)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>formatter_bb</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>digital.packet_formatter_crc(len_key, num_key)</value>
+    </param>
+  </block>
+  <block>
+    <key>variable</key>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(368, 13)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>len_key</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>"packet_len"</value>
+    </param>
+  </block>
+  <block>
+    <key>variable</key>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(488, 13)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>num_key</value>
+    </param>
+    <param>
+      <key>value</key>
+      <value>"packet_num"</value>
+    </param>
+  </block>
+  <block>
+    <key>blocks_message_debug</key>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>affinity</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(952, 225)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>blocks_message_debug_0</value>
+    </param>
+  </block>
+  <block>
+    <key>blocks_message_debug</key>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>affinity</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(760, 105)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>blocks_message_debug_0_0</value>
+    </param>
+  </block>
+  <block>
+    <key>blocks_message_debug</key>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>affinity</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(992, 449)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>blocks_message_debug_0_0_0</value>
+    </param>
+  </block>
+  <block>
+    <key>blocks_message_strobe</key>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>affinity</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(24, 293)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>blocks_message_strobe_0</value>
+    </param>
+    <param>
+      <key>maxoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>msg</key>
+      <value>pmt.PMT_T</value>
+    </param>
+    <param>
+      <key>minoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>period</key>
+      <value>2000</value>
+    </param>
+  </block>
+  <block>
+    <key>blocks_pdu_to_tagged_stream</key>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>affinity</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(56, 132)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>blocks_pdu_to_tagged_stream_0</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>byte</value>
+    </param>
+    <param>
+      <key>tag</key>
+      <value>len_key</value>
+    </param>
+    <param>
+      <key>maxoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>minoutbuf</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>blocks_pdu_to_tagged_stream</key>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>affinity</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(64, 444)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>blocks_pdu_to_tagged_stream_0_0</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>byte</value>
+    </param>
+    <param>
+      <key>tag</key>
+      <value>len_key</value>
+    </param>
+    <param>
+      <key>maxoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>minoutbuf</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>blocks_random_pdu</key>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>mask</key>
+      <value>0xff</value>
+    </param>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>affinity</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(200, 279)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>blocks_random_pdu_0</value>
+    </param>
+    <param>
+      <key>length_modulo</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>maxsize</key>
+      <value>50</value>
+    </param>
+    <param>
+      <key>maxoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>minsize</key>
+      <value>40</value>
+    </param>
+    <param>
+      <key>minoutbuf</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>blocks_repack_bits_bb</key>
+    <param>
+      <key>k</key>
+      <value>8</value>
+    </param>
+    <param>
+      <key>l</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>affinity</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>endianness</key>
+      <value>gr.GR_MSB_FIRST</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(288, 125)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>blocks_repack_bits_bb_0</value>
+    </param>
+    <param>
+      <key>len_tag_key</key>
+      <value>len_key</value>
+    </param>
+    <param>
+      <key>maxoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>minoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>align_output</key>
+      <value>False</value>
+    </param>
+  </block>
+  <block>
+    <key>blocks_repack_bits_bb</key>
+    <param>
+      <key>k</key>
+      <value>8</value>
+    </param>
+    <param>
+      <key>l</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>affinity</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>endianness</key>
+      <value>gr.GR_MSB_FIRST</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(528, 437)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>blocks_repack_bits_bb_0_0</value>
+    </param>
+    <param>
+      <key>len_tag_key</key>
+      <value>len_key</value>
+    </param>
+    <param>
+      <key>maxoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>minoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>align_output</key>
+      <value>False</value>
+    </param>
+  </block>
+  <block>
+    <key>blocks_tag_debug</key>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>affinity</key>
+      <value></value>
+    </param>
+    <param>
+      <key>display</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(752, 526)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>blocks_tag_debug_0</value>
+    </param>
+    <param>
+      <key>type</key>
+      <value>byte</value>
+    </param>
+    <param>
+      <key>filter</key>
+      <value>""</value>
+    </param>
+    <param>
+      <key>name</key>
+      <value></value>
+    </param>
+    <param>
+      <key>num_inputs</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>vlen</key>
+      <value>1</value>
+    </param>
+  </block>
+  <block>
+    <key>digital_crc32_async_bb</key>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>affinity</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(424, 300)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>digital_crc32_async_bb_1</value>
+    </param>
+    <param>
+      <key>maxoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>minoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>check</key>
+      <value>False</value>
+    </param>
+  </block>
+  <block>
+    <key>digital_packet_format_async</key>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>affinity</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>formatter</key>
+      <value>formatter</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(624, 289)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>digital_packet_format_async</value>
+    </param>
+    <param>
+      <key>maxoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>minoutbuf</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>digital_packet_format_bb</key>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>affinity</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>True</value>
+    </param>
+    <param>
+      <key>formatter</key>
+      <value>formatter_bb</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(288, 437)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>digital_packet_format_bb_0</value>
+    </param>
+    <param>
+      <key>len_tag_key</key>
+      <value>len_key</value>
+    </param>
+    <param>
+      <key>maxoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>minoutbuf</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>digital_packet_parse_b</key>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>affinity</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>formatter</key>
+      <value>formatter</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(496, 132)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>digital_packet_parse_b_0</value>
+    </param>
+    <param>
+      <key>maxoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>minoutbuf</key>
+      <value>0</value>
+    </param>
+  </block>
+  <block>
+    <key>digital_packet_parse_b</key>
+    <param>
+      <key>alias</key>
+      <value></value>
+    </param>
+    <param>
+      <key>comment</key>
+      <value></value>
+    </param>
+    <param>
+      <key>affinity</key>
+      <value></value>
+    </param>
+    <param>
+      <key>_enabled</key>
+      <value>1</value>
+    </param>
+    <param>
+      <key>formatter</key>
+      <value>formatter_bb</value>
+    </param>
+    <param>
+      <key>_coordinate</key>
+      <value>(736, 444)</value>
+    </param>
+    <param>
+      <key>_rotation</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>id</key>
+      <value>digital_packet_parse_b_0_0</value>
+    </param>
+    <param>
+      <key>maxoutbuf</key>
+      <value>0</value>
+    </param>
+    <param>
+      <key>minoutbuf</key>
+      <value>0</value>
+    </param>
+  </block>
+  <connection>
+    <source_block_id>blocks_message_strobe_0</source_block_id>
+    <sink_block_id>blocks_random_pdu_0</sink_block_id>
+    <source_key>strobe</source_key>
+    <sink_key>generate</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>blocks_pdu_to_tagged_stream_0</source_block_id>
+    <sink_block_id>blocks_repack_bits_bb_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>blocks_pdu_to_tagged_stream_0_0</source_block_id>
+    <sink_block_id>digital_packet_format_bb_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>blocks_random_pdu_0</source_block_id>
+    <sink_block_id>digital_crc32_async_bb_1</sink_block_id>
+    <source_key>pdus</source_key>
+    <sink_key>in</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>blocks_repack_bits_bb_0</source_block_id>
+    <sink_block_id>digital_packet_parse_b_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>blocks_repack_bits_bb_0_0</source_block_id>
+    <sink_block_id>blocks_tag_debug_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>blocks_repack_bits_bb_0_0</source_block_id>
+    <sink_block_id>digital_packet_parse_b_0_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>digital_crc32_async_bb_1</source_block_id>
+    <sink_block_id>blocks_pdu_to_tagged_stream_0_0</sink_block_id>
+    <source_key>out</source_key>
+    <sink_key>pdus</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>digital_crc32_async_bb_1</source_block_id>
+    <sink_block_id>digital_packet_format_async</sink_block_id>
+    <source_key>out</source_key>
+    <sink_key>in</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>digital_packet_format_async</source_block_id>
+    <sink_block_id>blocks_message_debug_0</sink_block_id>
+    <source_key>header</source_key>
+    <sink_key>print_pdu</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>digital_packet_format_async</source_block_id>
+    <sink_block_id>blocks_pdu_to_tagged_stream_0</sink_block_id>
+    <source_key>header</source_key>
+    <sink_key>pdus</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>digital_packet_format_bb_0</source_block_id>
+    <sink_block_id>blocks_repack_bits_bb_0_0</sink_block_id>
+    <source_key>0</source_key>
+    <sink_key>0</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>digital_packet_parse_b_0</source_block_id>
+    <sink_block_id>blocks_message_debug_0_0</sink_block_id>
+    <source_key>info</source_key>
+    <sink_key>print</sink_key>
+  </connection>
+  <connection>
+    <source_block_id>digital_packet_parse_b_0_0</source_block_id>
+    <sink_block_id>blocks_message_debug_0_0_0</sink_block_id>
+    <source_key>info</source_key>
+    <sink_key>print</sink_key>
+  </connection>
+</flow_graph>
diff --git a/gr-digital/grc/digital_block_tree.xml 
b/gr-digital/grc/digital_block_tree.xml
index 3a7776b..5703447 100644
--- a/gr-digital/grc/digital_block_tree.xml
+++ b/gr-digital/grc/digital_block_tree.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!--
- Copyright 2011-2015 Free Software Foundation, Inc.
+ Copyright 2011-2016 Free Software Foundation, Inc.
 
  This file is part of GNU Radio
 
@@ -74,6 +74,7 @@
     <block>digital_framer_sink_1</block>
     <block>variable_packet_formatter_default</block>
     <block>digital_packet_format_async</block>
+    <block>digital_packet_format_bb</block>
     <block>digital_packet_parse_b</block>
     <block>digital_header_payload_demux</block>
     <block>digital_packet_headergenerator_bb</block>
diff --git a/gr-digital/grc/digital_packet_format_bb.xml 
b/gr-digital/grc/digital_packet_format_bb.xml
new file mode 100644
index 0000000..d94171a
--- /dev/null
+++ b/gr-digital/grc/digital_packet_format_bb.xml
@@ -0,0 +1,30 @@
+<block>
+  <name>Packet Header Formatter</name>
+  <key>digital_packet_format_bb</key>
+  <import>from gnuradio import digital</import>
+  <make>digital.packet_format_bb($formatter, $len_tag_key)</make>
+
+  <param>
+    <name>Formatter</name>
+    <key>formatter</key>
+    <type>raw</type>
+  </param>
+
+  <param>
+    <name>Length Tag Name</name>
+    <key>len_tag_key</key>
+    <value>"packet_len"</value>
+    <type>string</type>
+  </param>
+
+  <sink>
+    <name>in</name>
+    <type>byte</type>
+  </sink>
+
+  <source>
+    <name>out</name>
+    <type>byte</type>
+  </source>
+
+</block>
diff --git a/gr-digital/include/gnuradio/digital/CMakeLists.txt 
b/gr-digital/include/gnuradio/digital/CMakeLists.txt
index d6bde75..3e4e981 100644
--- a/gr-digital/include/gnuradio/digital/CMakeLists.txt
+++ b/gr-digital/include/gnuradio/digital/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2011-2015 Free Software Foundation, Inc.
+# Copyright 2011-2016 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -94,7 +94,9 @@ install(FILES
     packet_formatter_base.h
     packet_formatter_default.h
     packet_formatter_counter.h
+    packet_formatter_crc.h
     packet_format_async.h
+    packet_format_bb.h
     packet_parse_b.h
     packet_header_default.h
     packet_header_ofdm.h
diff --git a/gr-digital/include/gnuradio/digital/packet_format_bb.h 
b/gr-digital/include/gnuradio/digital/packet_format_bb.h
new file mode 100644
index 0000000..60bda36
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/packet_format_bb.h
@@ -0,0 +1,81 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2016 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+
+#ifndef INCLUDED_DIGITAL_PACKET_FORMAT_BB_H
+#define INCLUDED_DIGITAL_PACKET_FORMAT_BB_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/digital/packet_formatter_base.h>
+#include <gnuradio/tagged_stream_block.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief Uses a header formatter to create a header from a tagged
+     * stream packet.
+     * \ingroup packet_operators_blk
+     *
+     * \details
+
+     * This block takes in tagged stream and creates a header,
+     * generally for MAC-level processing. Each received tagged stream
+     * is assumed to be its own frame, so any fragmentation would be
+     * done upstream in or before the flowgraph.
+     *
+     * The header that is created and transmitted from this block. The
+     * payload should then be sent as a parallel tagged stream to be
+     * muxed together later. The header is based entirely on the \p
+     * formatter object, which is an object derived from the
+     * packet_formatter_base class. All of these packet header
+     * formatters operate the same: they take in the payload data as
+     * well as possible extra metadata info about the PDU; the
+     * formatter then returns the output and metadata info. This block
+     * then transmits the header vector and attaches and metadata as
+     * tags at the start of the header.
+     *
+     * \sa packet_format_async
+     */
+    class DIGITAL_API packet_format_bb : virtual public tagged_stream_block
+    {
+     public:
+      typedef boost::shared_ptr<packet_format_bb> sptr;
+
+      /*!
+       * Make a packet header block using a given \p formatter.
+       *
+       * \param formatter The formatter class to use when creating the
+       *        header for the packet. Derived from the
+       *        packet_formatter_base class.
+       * \param len_tag_key The tagged stream length key.
+       */
+      static sptr make(const packet_formatter_base::sptr &formatter,
+                       const std::string &len_tag_key="packet_len");
+
+      virtual void set_header_formatter(packet_formatter_base::sptr 
&formatter) = 0;
+    };
+
+  } // namespace digital
+} // namespace gr
+
+#endif /* INCLUDED_DIGITAL_PACKET_FORMAT_BB_H */
diff --git a/gr-digital/include/gnuradio/digital/packet_formatter_crc.h 
b/gr-digital/include/gnuradio/digital/packet_formatter_crc.h
new file mode 100644
index 0000000..50808d0
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/packet_formatter_crc.h
@@ -0,0 +1,118 @@
+/* -*- c++ -*- */
+/* Copyright 2016 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_PACKET_FORMATTER_CRC_H
+#define INCLUDED_DIGITAL_PACKET_FORMATTER_CRC_H
+
+#include <pmt/pmt.h>
+#include <gnuradio/digital/api.h>
+#include <gnuradio/digital/packet_formatter_default.h>
+#include <boost/crc.hpp>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief Header formatter that includes the payload length,
+     * packet number, and a CRC check on the header.
+     * \ingroup packet_operators_blk
+     *
+     * \details
+     *
+     * Child class of packet_formatter_base. This version's header
+     * format looks like:
+     *
+     * \li length (12 bits): length of the payload
+     * \li number (12 bits): packet number
+     * \li CRC8 (8 bits): A CRC8 check on the header contents
+     *
+     * Instead of duplicating the payload length, we only add it once
+     * and use the CRC8 to make sure it's correctly received.
+     *
+     * \verbatim
+         |  0 -- 11 | 12 -- 23 | 24 -- 31 |
+         |    len   | pkt len  |   CRC8   |
+       \endverbatim
+     *
+     * Reimplements packet_header_default in the style of the
+     * packet_formatter_base.
+     */
+    class DIGITAL_API packet_formatter_crc
+      : public packet_formatter_base
+    {
+     public:
+      packet_formatter_crc(const std::string &len_key_name="packet_len",
+                           const std::string &num_key_name="packet_num");
+      virtual ~packet_formatter_crc();
+
+      void set_header_num(unsigned header_num) { d_header_number = header_num; 
};
+
+      /*!
+       * \brief Encodes the header information in the given tags into
+       * bits and places them into \p out.
+       *
+       * \details
+       * Uses the following header format:
+       *  - Bits 0-11: The packet length (what was stored in the tag with key 
\p len_tag_key)
+       *  - Bits 12-23: The header number (counts up everytime this function 
is called)
+       *  - Bit 24-31: 8-Bit CRC
+       */
+      virtual bool format(int nbytes_in,
+                          const unsigned char *input,
+                          pmt::pmt_t &output,
+                          pmt::pmt_t &info);
+
+      virtual bool parse(int nbits_in,
+                         const unsigned char *input,
+                         std::vector<pmt::pmt_t> &info,
+                         int &nbits_processed);
+
+      /*!
+       * Returns the length of the formatted header in bits.
+       */
+      virtual size_t header_nbits() const;
+
+      /*!
+       * Factory to create an async packet header formatter; returns
+       * an sptr to the object.
+       */
+      static sptr make(const std::string &len_key_name="packet_len",
+                       const std::string &num_key_name="packet_num");
+
+    protected:
+      uint16_t d_header_number;
+      pmt::pmt_t d_len_key_name;
+      pmt::pmt_t d_num_key_name;
+      boost::crc_optimal<8, 0x07, 0xFF, 0x00, false, false>  d_crc_impl;
+
+      //! Verify that the header is valid
+      virtual bool header_ok();
+
+      /*! Get info from the header; return payload length and package
+       *  rest of data in d_info dictionary.
+       */
+      virtual int header_payload();
+    };
+
+  } // namespace digital
+} // namespace gr
+
+#endif /* INCLUDED_DIGITAL_PACKET_FORMATTER_CRC_H */
diff --git a/gr-digital/lib/CMakeLists.txt b/gr-digital/lib/CMakeLists.txt
index b295938..45fd65f 100644
--- a/gr-digital/lib/CMakeLists.txt
+++ b/gr-digital/lib/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2011-2014 Free Software Foundation, Inc.
+# Copyright 2011-2016 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -110,7 +110,9 @@ list(APPEND digital_sources
     packet_formatter_base.cc
     packet_formatter_default.cc
     packet_formatter_counter.cc
+    packet_formatter_crc.cc
     packet_format_async_impl.cc
+    packet_format_bb_impl.cc
     packet_parse_b_impl.cc
     packet_header_default.cc
     packet_header_ofdm.cc
diff --git a/gr-digital/lib/packet_format_bb_impl.cc 
b/gr-digital/lib/packet_format_bb_impl.cc
new file mode 100644
index 0000000..bc2e05d
--- /dev/null
+++ b/gr-digital/lib/packet_format_bb_impl.cc
@@ -0,0 +1,118 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2016 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <volk/volk.h>
+#include <gnuradio/io_signature.h>
+#include "packet_format_bb_impl.h"
+#include <stdio.h>
+
+namespace gr {
+  namespace digital {
+
+    packet_format_bb::sptr
+    packet_format_bb::make(const packet_formatter_base::sptr &formatter,
+                           const std::string &len_tag_key)
+    {
+      return gnuradio::get_initial_sptr
+        (new packet_format_bb_impl(formatter, len_tag_key));
+    }
+
+    packet_format_bb_impl::packet_format_bb_impl(const 
packet_formatter_base::sptr &formatter,
+                                                 const std::string 
&len_tag_key)
+      : tagged_stream_block("packet_format_bb",
+                            io_signature::make(1, 1, sizeof(char)),
+                            io_signature::make(1, 1, sizeof(char)),
+                            len_tag_key),
+        d_formatter(formatter)
+    {
+      set_output_multiple(d_formatter->header_nbytes());
+
+      // This is the worst case rate, because we don't know the true value, of 
course
+      set_relative_rate(d_formatter->header_nbytes());
+      set_tag_propagation_policy(TPP_DONT);
+    }
+
+    packet_format_bb_impl::~packet_format_bb_impl()
+    {
+    }
+
+    void
+    packet_format_bb_impl::set_header_formatter(packet_formatter_base::sptr 
&formatter)
+    {
+      gr::thread::scoped_lock guard(d_setlock);
+      d_formatter = formatter;
+    }
+
+    int
+    packet_format_bb_impl::work(int noutput_items,
+                                gr_vector_int &ninput_items,
+                                gr_vector_const_void_star &input_items,
+                                gr_vector_void_star &output_items)
+    {
+      gr::thread::scoped_lock guard(d_setlock);
+      unsigned char *out = (unsigned char *) output_items[0];
+      const unsigned char *in = (const unsigned char *) input_items[0];
+
+      // Not really sure what to do with these tags; extract them and
+      // plug them into the info dictionary?
+      //std::vector<tag_t> tags;
+      //get_tags_in_window(tags, 0, 0, ninput_items[0]);
+
+      pmt::pmt_t pmt_out;
+      pmt::pmt_t info = pmt::PMT_NIL;
+      if(!d_formatter->format(ninput_items[0], in, pmt_out, info)) {
+       GR_LOG_FATAL(d_logger, boost::format("formatter returned false "
+                                             "(this shouldn't happen). 
Offending "
+                                             "header started at %1%") % 
nitems_read(0));
+       throw std::runtime_error("packet formatter returned false.");
+      }
+
+      size_t len;
+      const uint8_t *data = pmt::u8vector_elements(pmt_out, len);
+      if(len != d_formatter->header_nbytes()) {
+        throw std::runtime_error("Formatter got wrong size header");
+      }
+      memcpy(out, data, len);
+
+      if(pmt::is_dict(info)) {
+        std::vector<tag_t> mtags;
+        pmt::pmt_t mkeys = pmt::dict_keys(info);
+        pmt::pmt_t mvals = pmt::dict_values(info);
+        for(size_t i = 0; i < pmt::length(mkeys); i++) {
+          tag_t tag;
+          tag.offset = nitems_written(0);
+          tag.key = pmt::nth(i, mkeys);
+          tag.value = pmt::nth(i, mvals);
+          tag.srcid = alias_pmt();
+          add_item_tag(0, tag);
+        }
+      }
+
+      return len;
+    }
+
+  } /* namespace digital */
+} /* namespace gr */
diff --git a/gr-digital/lib/packet_format_bb_impl.h 
b/gr-digital/lib/packet_format_bb_impl.h
new file mode 100644
index 0000000..bbff8f0
--- /dev/null
+++ b/gr-digital/lib/packet_format_bb_impl.h
@@ -0,0 +1,55 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2016 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_PACKET_FORMAT_BB_IMPL_H
+#define INCLUDED_DIGITAL_PACKET_FORMAT_BB_IMPL_H
+
+#include <gnuradio/digital/packet_format_bb.h>
+
+namespace gr {
+  namespace digital {
+
+    class packet_format_bb_impl : public packet_format_bb
+    {
+     private:
+      packet_formatter_base::sptr d_formatter;
+
+     public:
+      packet_format_bb_impl(const packet_formatter_base::sptr &formatter,
+                            const std::string &len_tag_key);
+      ~packet_format_bb_impl();
+
+      void set_header_formatter(packet_formatter_base::sptr &formatter);
+
+      void remove_length_tags(const std::vector<std::vector<tag_t> > &tags) {};
+      int calculate_output_stream_length(const gr_vector_int &ninput_items) { 
return d_formatter->header_nbytes(); };
+
+      int work(int noutput_items,
+               gr_vector_int &ninput_items,
+               gr_vector_const_void_star &input_items,
+               gr_vector_void_star &output_items);
+    };
+
+  } // namespace digital
+} // namespace gr
+
+#endif /* INCLUDED_DIGITAL_PACKET_FORMAT_BB_IMPL_H */
diff --git a/gr-digital/lib/packet_formatter_crc.cc 
b/gr-digital/lib/packet_formatter_crc.cc
new file mode 100644
index 0000000..9da8215
--- /dev/null
+++ b/gr-digital/lib/packet_formatter_crc.cc
@@ -0,0 +1,158 @@
+/* -*- c++ -*- */
+/* Copyright 2016 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <string.h>
+#include <volk/volk.h>
+#include <gnuradio/digital/packet_formatter_crc.h>
+#include <gnuradio/digital/header_buffer.h>
+
+namespace gr {
+  namespace digital {
+
+    packet_formatter_crc::sptr
+    packet_formatter_crc::make(const std::string &len_key_name,
+                               const std::string &num_key_name)
+    {
+      return packet_formatter_crc::sptr
+        (new packet_formatter_crc(len_key_name, num_key_name));
+    }
+
+    packet_formatter_crc::packet_formatter_crc(const std::string &len_key_name,
+                                               const std::string &num_key_name)
+      : packet_formatter_base(),
+        d_header_number(0)
+    {
+      d_len_key_name = pmt::intern(len_key_name);
+      d_num_key_name = pmt::intern(num_key_name);
+    }
+
+    packet_formatter_crc::~packet_formatter_crc()
+    {
+    }
+
+    bool
+    packet_formatter_crc::format(int nbytes_in,
+                                 const unsigned char *input,
+                                 pmt::pmt_t &output,
+                                 pmt::pmt_t &info)
+    {
+      uint8_t* bytes_out = (uint8_t*)volk_malloc(header_nbytes(),
+                                                 volk_get_alignment());
+
+      // Should this throw instead of mask if the payload is too big
+      // for 12-bit representation?
+      nbytes_in &= 0x0FFF;
+
+      d_crc_impl.reset();
+      d_crc_impl.process_bytes((void const *) &nbytes_in, 2);
+      d_crc_impl.process_bytes((void const *) &d_header_number, 2);
+      uint8_t crc = d_crc_impl();
+
+      // Form 2 12-bit items into 1 2-byte item
+      uint32_t concat = 0;
+      concat = (d_header_number << 12) | (nbytes_in);
+
+      header_buffer header(bytes_out);
+      header.add_field32(concat, 24);
+      header.add_field8(crc);
+
+      d_header_number++;
+      d_header_number &= 0x0FFF;
+
+      // Package output data into a PMT vector
+      output = pmt::init_u8vector(header_nbytes(), bytes_out);
+
+      // Creating the output pmt copies data; free our own here.
+      volk_free(bytes_out);
+
+      return true;
+    }
+
+    bool
+    packet_formatter_crc::parse(int nbits_in,
+                                const unsigned char *input,
+                                std::vector<pmt::pmt_t> &info,
+                                int &nbits_processed)
+    {
+      while(nbits_processed <= nbits_in) {
+        d_hdr_reg.insert_bit(input[nbits_processed++]);
+        if(d_hdr_reg.length() == header_nbits()) {
+          if(header_ok()) {
+            int payload_len = header_payload();
+            enter_have_header(payload_len);
+            info.push_back(d_info);
+            d_hdr_reg.clear_input();
+            return true;
+          }
+          else {
+            d_hdr_reg.clear_input();
+            return false;
+          }
+          break;
+        }
+      }
+
+      return true;
+    }
+
+    size_t
+    packet_formatter_crc::header_nbits() const
+    {
+      return 32;
+    }
+
+
+    bool
+    packet_formatter_crc::header_ok()
+    {
+      uint16_t pktnum = d_hdr_reg.extract_field16(0, 12);
+      uint16_t pktlen = d_hdr_reg.extract_field16(12, 12);
+      uint8_t crc_rcvd = d_hdr_reg.extract_field8(24);
+
+      // Check CRC8
+      d_crc_impl.reset();
+      d_crc_impl.process_bytes((void const *) &pktlen, 2);
+      d_crc_impl.process_bytes((void const *) &pktnum, 2);
+      uint8_t crc_clcd = d_crc_impl();
+
+      return (crc_rcvd == crc_clcd);
+    }
+
+    int
+    packet_formatter_crc::header_payload()
+    {
+      uint16_t pktnum = d_hdr_reg.extract_field16(0, 12);
+      uint16_t pktlen = d_hdr_reg.extract_field16(12, 12);
+
+      d_info = pmt::make_dict();
+      d_info = pmt::dict_add(d_info, d_len_key_name,
+                             pmt::from_long(8*pktlen));
+      d_info = pmt::dict_add(d_info, d_num_key_name,
+                             pmt::from_long(pktnum));
+      return static_cast<int>(pktlen);
+    }
+
+  } /* namespace digital */
+} /* namespace gr */
diff --git a/gr-digital/swig/digital_swig.i b/gr-digital/swig/digital_swig.i
index 6cf14a1..12e8e90 100644
--- a/gr-digital/swig/digital_swig.i
+++ b/gr-digital/swig/digital_swig.i
@@ -1,5 +1,5 @@
 /*
- * Copyright 2011-2015 Free Software Foundation, Inc.
+ * Copyright 2011-2016 Free Software Foundation, Inc.
  *
  * This file is part of GNU Radio
  *
@@ -103,7 +103,9 @@
 #include "gnuradio/digital/packet_formatter_base.h"
 #include "gnuradio/digital/packet_formatter_default.h"
 #include "gnuradio/digital/packet_formatter_counter.h"
+#include "gnuradio/digital/packet_formatter_crc.h"
 #include "gnuradio/digital/packet_format_async.h"
+#include "gnuradio/digital/packet_format_bb.h"
 #include "gnuradio/digital/packet_parse_b.h"
 #include "gnuradio/digital/packet_header_default.h"
 #include "gnuradio/digital/packet_header_ofdm.h"
@@ -189,7 +191,9 @@
 %include "gnuradio/digital/packet_formatter_base.h"
 %include "gnuradio/digital/packet_formatter_default.h"
 %include "gnuradio/digital/packet_formatter_counter.h"
+%include "gnuradio/digital/packet_formatter_crc.h"
 %include "gnuradio/digital/packet_format_async.h"
+%include "gnuradio/digital/packet_format_bb.h"
 %include "gnuradio/digital/packet_parse_b.h"
 %include "gnuradio/digital/packet_header_default.h"
 %include "gnuradio/digital/packet_header_ofdm.h"
@@ -260,6 +264,7 @@ GR_SWIG_BLOCK_MAGIC2(digital, ofdm_sampler);
 GR_SWIG_BLOCK_MAGIC2(digital, ofdm_serializer_vcc);
 GR_SWIG_BLOCK_MAGIC2(digital, ofdm_sync_sc_cfb);
 GR_SWIG_BLOCK_MAGIC2(digital, packet_format_async);
+GR_SWIG_BLOCK_MAGIC2(digital, packet_format_bb);
 GR_SWIG_BLOCK_MAGIC2(digital, packet_parse_b);
 GR_SWIG_BLOCK_MAGIC2(digital, packet_headergenerator_bb);
 GR_SWIG_BLOCK_MAGIC2(digital, packet_headerparser_b);
diff --git a/gr-digital/swig/packet_header.i b/gr-digital/swig/packet_header.i
index 64b29d4..bc1075e 100644
--- a/gr-digital/swig/packet_header.i
+++ b/gr-digital/swig/packet_header.i
@@ -46,3 +46,9 @@ packet_formatter_default = packet_formatter_default .make;
 packet_formatter_counter_sptr.__repr__ = lambda self: 
"<packet_formatter_counter>"
 packet_formatter_counter = packet_formatter_counter .make;
 %}
+
+%template(packet_formatter_crc_sptr) 
boost::shared_ptr<gr::digital::packet_formatter_crc>;
+%pythoncode %{
+packet_formatter_crc_sptr.__repr__ = lambda self: "<packet_formatter_crc>"
+packet_formatter_crc = packet_formatter_crc .make;
+%}



reply via email to

[Prev in Thread] Current Thread [Next in Thread]