[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;
+%}
- [Commit-gnuradio] [gnuradio] 03/24: Adding new test block to adjust the sample rate of a stream and make sure tags are being placed in the correct locations., (continued)
- [Commit-gnuradio] [gnuradio] 03/24: Adding new test block to adjust the sample rate of a stream and make sure tags are being placed in the correct locations., git, 2016/06/13
- [Commit-gnuradio] [gnuradio] 06/24: digital: updates to packet_formatter classes and parsing blocks., git, 2016/06/13
- [Commit-gnuradio] [gnuradio] 08/24: digital: fixing PFB clock sync block handling of tags., git, 2016/06/13
- [Commit-gnuradio] [gnuradio] 23/24: digital: Fixing QA code for testing header formatter/parsers., git, 2016/06/13
- [Commit-gnuradio] [gnuradio] 14/24: digital: wip: pfb_clock_sync_ccf tag offset update., git, 2016/06/13
- [Commit-gnuradio] [gnuradio] 18/24: digital: fixing up some of the packet formatters since the new base class., git, 2016/06/13
- [Commit-gnuradio] [gnuradio] 17/24: docs: Adding documentation for packet comms, git, 2016/06/13
- [Commit-gnuradio] [gnuradio] 07/24: digital: Updates to corr_est block., git, 2016/06/13
- [Commit-gnuradio] [gnuradio] 20/24: digital: fixed packet_parse from using default formatter to base class, git, 2016/06/13
- [Commit-gnuradio] [gnuradio] 24/24: digital: fixed up some header_buffer issues and added QA., git, 2016/06/13
- [Commit-gnuradio] [gnuradio] 19/24: digital: adding more support for packet formatters.,
git <=
- [Commit-gnuradio] [gnuradio] 10/24: digital: Redid packet formatter class hierarchy., git, 2016/06/13
- [Commit-gnuradio] [gnuradio] 01/24: digital: New packet management classes., git, 2016/06/13
- [Commit-gnuradio] [gnuradio] 21/24: digital: adding packet_formatter_ofdm to replace packet_header_ofdm., git, 2016/06/13
- [Commit-gnuradio] [gnuradio] 22/24: digital: refactoring formatting/parsing code., git, 2016/06/13
- [Commit-gnuradio] [gnuradio] 02/24: digital: adding examples for using packet utilities., git, 2016/06/13
- [Commit-gnuradio] [gnuradio] 16/24: digital: Examples for dealing with packet comms, git, 2016/06/13
- [Commit-gnuradio] [gnuradio] 05/24: digital: More examples to help debug packet blocks/code., git, 2016/06/13