summaryrefslogtreecommitdiff
path: root/gr-digital/grc
diff options
context:
space:
mode:
authorTom Rondeau <tom@trondeau.com>2016-06-14 10:48:00 -0700
committerMartin Braun <martin.braun@ettus.com>2016-06-14 10:58:05 -0700
commit817f61bbdd180a2854116c85ccf1020e561c523f (patch)
tree883649968739a66c537e932c65c79e9387544a07 /gr-digital/grc
parentc475f14e4604b9bca25c08f1d30a2e8ff9bbcf26 (diff)
digital: Complete overhaul of protocol handling
See documentation for details. In brief: - digital_protocol_* classes added (replace packet header blocks) - header_buffer class added - Lots of QA - default packet formatter: contains access code and payload length fields. - counter packet formatter: also contains the bits/sym in the payload modulation and a packet number counter. - Also adds QA code and the infrastructure for C++ QA code in gr-digital. - New block to use the packet formatter objects. - The header and payload are transmitted as PDU messages out of different ports. - header_buffer class for header formatting. - Used by packet_formatter_x classes to more easily add and format header data for transmission. - New blocks that parse headers. - Handles either hard or soft bits. Produces an info message to instruct payload demod. - 'receive mode' to header_buffer class. - Designed to make extracting fields from the received header bits easier for packet formatter classes. Use extract_field[N] to get the different fields out of a collected set of header bits. * Docs describing both functions with small examples for how to use them. - Don't force access code to be a multiple of 8 - need to verify everything else handles this correctly. - Throw an exception in the ctor if setting the code failed and emit a log message. Committed-By: Martin Braun <martin.braun@ettus.com>
Diffstat (limited to 'gr-digital/grc')
-rw-r--r--gr-digital/grc/digital_block_tree.xml6
-rw-r--r--gr-digital/grc/digital_protocol_formatter_async.xml33
-rw-r--r--gr-digital/grc/digital_protocol_formatter_bb.xml32
-rw-r--r--gr-digital/grc/digital_protocol_parser_b.xml25
-rw-r--r--gr-digital/grc/variable_header_format_default.xml35
5 files changed, 130 insertions, 1 deletions
diff --git a/gr-digital/grc/digital_block_tree.xml b/gr-digital/grc/digital_block_tree.xml
index 9bdf6e993f..5e6e742868 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
@@ -72,6 +72,10 @@
<block>digital_crc32_bb</block>
<block>digital_crc32_async_bb</block>
<block>digital_framer_sink_1</block>
+ <block>variable_header_format_default</block>
+ <block>digital_protocol_formatter_async</block>
+ <block>digital_protocol_formatter_bb</block>
+ <block>digital_protocol_parser_b</block>
<block>digital_header_payload_demux</block>
<block>digital_packet_headergenerator_bb</block>
<block>digital_packet_headergenerator_bb_default</block>
diff --git a/gr-digital/grc/digital_protocol_formatter_async.xml b/gr-digital/grc/digital_protocol_formatter_async.xml
new file mode 100644
index 0000000000..52a67eca36
--- /dev/null
+++ b/gr-digital/grc/digital_protocol_formatter_async.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+
+<block>
+ <name>Protocol Formatter (Async)</name>
+ <key>digital_protocol_formatter_async</key>
+ <import>from gnuradio import digital</import>
+ <make>digital.protocol_formatter_async($format)</make>
+
+ <param>
+ <name>Format Obj.</name>
+ <key>format</key>
+ <type>raw</type>
+ </param>
+
+ <sink>
+ <name>in</name>
+ <type>message</type>
+ <optional>1</optional>
+ </sink>
+
+ <source>
+ <name>header</name>
+ <type>message</type>
+ <optional>1</optional>
+ </source>
+
+ <source>
+ <name>payload</name>
+ <type>message</type>
+ <optional>1</optional>
+ </source>
+
+</block>
diff --git a/gr-digital/grc/digital_protocol_formatter_bb.xml b/gr-digital/grc/digital_protocol_formatter_bb.xml
new file mode 100644
index 0000000000..b37a791fa8
--- /dev/null
+++ b/gr-digital/grc/digital_protocol_formatter_bb.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+
+<block>
+ <name>Protocol Formatter</name>
+ <key>digital_protocol_formatter_bb</key>
+ <import>from gnuradio import digital</import>
+ <make>digital.protocol_formatter_bb($format, $len_tag_key)</make>
+
+ <param>
+ <name>Format Obj.</name>
+ <key>format</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/grc/digital_protocol_parser_b.xml b/gr-digital/grc/digital_protocol_parser_b.xml
new file mode 100644
index 0000000000..27fb15e05b
--- /dev/null
+++ b/gr-digital/grc/digital_protocol_parser_b.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+
+<block>
+ <name>Protocol Parser</name>
+ <key>digital_protocol_parser_b</key>
+ <import>from gnuradio import digital</import>
+ <make>digital.protocol_parser_b($format)</make>
+
+ <param>
+ <name>Format Obj.</name>
+ <key>format</key>
+ <type>raw</type>
+ </param>
+
+ <sink>
+ <name>in</name>
+ <type>byte</type>
+ </sink>
+
+ <source>
+ <name>info</name>
+ <type>message</type>
+ <optional>1</optional>
+ </source>
+</block>
diff --git a/gr-digital/grc/variable_header_format_default.xml b/gr-digital/grc/variable_header_format_default.xml
new file mode 100644
index 0000000000..55b361f8ca
--- /dev/null
+++ b/gr-digital/grc/variable_header_format_default.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<!--
+###################################################
+# header_format_default object
+###################################################
+ -->
+<block>
+ <name>Default Header Format Obj.</name>
+ <key>variable_header_format_default</key>
+ <import>from gnuradio import digital</import>
+ <var_make>
+#if int($access_code())==0 #
+self.$(id) = $(id) = digital.header_format_default(digital.packet_utils.default_access_code, $threshold)
+#else
+self.$(id) = $(id) = digital.header_format_default($access_code, $threshold)
+#end if
+ </var_make>
+ <var_value>digital.header_format_default($access_code, $threshold)</var_value>
+ <make></make>
+
+ <param>
+ <name>Access Code</name>
+ <key>access_code</key>
+ <value>0</value>
+ <type>string</type>
+ </param>
+
+ <param>
+ <name>Threshold</name>
+ <key>threshold</key>
+ <value>0</value>
+ <type>int</type>
+ </param>
+
+</block>