summaryrefslogtreecommitdiff
path: root/grc/blocks
diff options
context:
space:
mode:
Diffstat (limited to 'grc/blocks')
-rw-r--r--grc/blocks/Makefile.am7
-rw-r--r--grc/blocks/blks2_dxpsk2_demod.xml145
-rw-r--r--grc/blocks/blks2_dxpsk2_mod.xml95
-rw-r--r--grc/blocks/blks2_dxpsk_demod.xml2
-rw-r--r--grc/blocks/blks2_dxpsk_mod.xml2
-rw-r--r--grc/blocks/block_tree.xml9
-rw-r--r--grc/blocks/gr_additive_scrambler_bb.xml44
-rw-r--r--grc/blocks/gr_fll_band_edge_cc.xml76
-rw-r--r--grc/blocks/gr_message_sink.xml2
-rw-r--r--grc/blocks/gr_message_source.xml2
-rw-r--r--grc/blocks/gr_pfb_clock_sync.xml28
-rw-r--r--grc/blocks/gr_sample_and_hold_xx.xml2
-rw-r--r--grc/blocks/pad_sink.xml15
-rw-r--r--grc/blocks/pad_source.xml16
-rw-r--r--grc/blocks/usrp2_sink_xxxx.xml3
-rw-r--r--grc/blocks/usrp2_source_xxxx.xml3
-rw-r--r--grc/blocks/usrp_dual_source_x.xml36
-rw-r--r--grc/blocks/wxgui_constellationsink2.xml13
-rw-r--r--grc/blocks/wxgui_fftsink2.xml50
-rw-r--r--grc/blocks/wxgui_histosink2.xml13
-rw-r--r--grc/blocks/wxgui_numbersink2.xml15
-rw-r--r--grc/blocks/wxgui_scopesink2.xml27
-rw-r--r--grc/blocks/wxgui_termsink.xml55
-rw-r--r--grc/blocks/wxgui_waterfallsink2.xml70
24 files changed, 686 insertions, 44 deletions
diff --git a/grc/blocks/Makefile.am b/grc/blocks/Makefile.am
index 61c003803..4e3839d27 100644
--- a/grc/blocks/Makefile.am
+++ b/grc/blocks/Makefile.am
@@ -19,7 +19,7 @@
# Boston, MA 02110-1301, USA.
#
-include $(top_srcdir)/grc/Makefile.inc
+include $(top_srcdir)/Makefile.common
ourdatadir = $(grc_blocksdir)
dist_ourdata_DATA = \
@@ -34,6 +34,8 @@ dist_ourdata_DATA = \
blks2_cvsd_decode.xml \
blks2_dxpsk_demod.xml \
blks2_dxpsk_mod.xml \
+ blks2_dxpsk2_demod.xml \
+ blks2_dxpsk2_mod.xml \
blks2_error_rate.xml \
blks2_fm_deemph.xml \
blks2_fm_demod_cf.xml \
@@ -65,6 +67,7 @@ dist_ourdata_DATA = \
const_source_x.xml \
gr_add_const_vxx.xml \
gr_add_xx.xml \
+ gr_additive_scrambler_bb.xml \
gr_agc2_xx.xml \
gr_agc_xx.xml \
gr_and_xx.xml \
@@ -106,6 +109,7 @@ dist_ourdata_DATA = \
gr_file_source.xml \
gr_filter_delay_fc.xml \
gr_fir_filter_xxx.xml \
+ gr_fll_band_edge_cc.xml \
gr_float_to_char.xml \
gr_float_to_complex.xml \
gr_float_to_short.xml \
@@ -230,6 +234,7 @@ dist_ourdata_DATA = \
wxgui_histosink2.xml \
wxgui_numbersink2.xml \
wxgui_scopesink2.xml \
+ wxgui_termsink.xml \
wxgui_waterfallsink2.xml \
xmlrpc_client.xml \
xmlrpc_server.xml
diff --git a/grc/blocks/blks2_dxpsk2_demod.xml b/grc/blocks/blks2_dxpsk2_demod.xml
new file mode 100644
index 000000000..ce8305c50
--- /dev/null
+++ b/grc/blocks/blks2_dxpsk2_demod.xml
@@ -0,0 +1,145 @@
+<?xml version="1.0"?>
+<!--
+###################################################
+##DPSK2 Demod - 2, 4
+###################################################
+ -->
+<block>
+ <name>DPSK2 Demod</name>
+ <key>blks2_dxpsk2_demod</key>
+ <import>from gnuradio import blks2</import>
+ <make>blks2.$(type)2_demod(
+ samples_per_symbol=$samples_per_symbol,
+ excess_bw=$excess_bw,
+ costas_alpha=$costas_alpha,
+ timing_alpha=$timing_alpha,
+ timing_max_dev=$timing_max_dev,
+ gray_code=$gray_code,
+ verbose=$verbose,
+ log=$log,
+ sync_out=$sync_out,
+)</make>
+ <callback>clock_recov.set_alpha($costas_alpha)</callback>
+ <callback>clock_recov.set_beta(0.25*$costas_alpha**2)</callback>
+ <callback>time_recov.set_alpha($timing_alpha)</callback>
+ <param>
+ <name>Type</name>
+ <key>type</key>
+ <type>enum</type>
+ <option>
+ <name>DBPSK</name>
+ <key>dbpsk</key>
+ </option>
+ <option>
+ <name>DQPSK</name>
+ <key>dqpsk</key>
+ </option>
+ </param>
+ <param>
+ <name>Samples/Symbol</name>
+ <key>samples_per_symbol</key>
+ <value>2</value>
+ <type>int</type>
+ </param>
+ <param>
+ <name>Excess BW</name>
+ <key>excess_bw</key>
+ <value>0.35</value>
+ <type>real</type>
+ </param>
+ <param>
+ <name>Costas Alpha</name>
+ <key>costas_alpha</key>
+ <value>0.175</value>
+ <type>real</type>
+ </param>
+ <param>
+ <name>Timing Alpha</name>
+ <key>timing_alpha</key>
+ <value>0.100</value>
+ <type>real</type>
+ </param>
+ <param>
+ <name>Timing Max Dev</name>
+ <key>timing_max_dev</key>
+ <value>1.5</value>
+ <type>real</type>
+ </param>
+ <param>
+ <name>Omega Relative Limit</name>
+ <key>omega_relative_limit</key>
+ <value>0.005</value>
+ <type>real</type>
+ </param>
+ <param>
+ <name>Gray Code</name>
+ <key>gray_code</key>
+ <value>True</value>
+ <type>bool</type>
+ <option>
+ <name>Yes</name>
+ <key>True</key>
+ </option>
+ <option>
+ <name>No</name>
+ <key>False</key>
+ </option>
+ </param>
+ <param>
+ <name>Verbose</name>
+ <key>verbose</key>
+ <value>False</value>
+ <type>bool</type>
+ <hide>#if str($verbose) == 'False' then 'part' else 'none'#</hide>
+ <option>
+ <name>On</name>
+ <key>True</key>
+ </option>
+ <option>
+ <name>Off</name>
+ <key>False</key>
+ </option>
+ </param>
+ <param>
+ <name>Logging</name>
+ <key>log</key>
+ <value>False</value>
+ <type>bool</type>
+ <hide>#if str($log) == 'False' then 'part' else 'none'#</hide>
+ <option>
+ <name>On</name>
+ <key>True</key>
+ </option>
+ <option>
+ <name>Off</name>
+ <key>False</key>
+ </option>
+ </param>
+ <param>
+ <name>Sync Out</name>
+ <key>sync_out</key>
+ <value>False</value>
+ <type>bool</type>
+ <option>
+ <name>On</name>
+ <key>True</key>
+ </option>
+ <option>
+ <name>Off</name>
+ <key>False</key>
+ </option>
+ </param>
+ <sink>
+ <name>in</name>
+ <type>complex</type>
+ </sink>
+ <source>
+ <name>out</name>
+ <type>byte</type>
+ </source>
+ <source>
+ <name>sync</name>
+ <type>complex</type>
+ <optional>1</optional>
+ </source>
+</block>
diff --git a/grc/blocks/blks2_dxpsk2_mod.xml b/grc/blocks/blks2_dxpsk2_mod.xml
new file mode 100644
index 000000000..bf292be17
--- /dev/null
+++ b/grc/blocks/blks2_dxpsk2_mod.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0"?>
+<!--
+###################################################
+##DPSK2 Mod - 2, 4
+###################################################
+ -->
+<block>
+ <name>DPSK2 Mod</name>
+ <key>blks2_dxpsk2_mod</key>
+ <import>from gnuradio import blks2</import>
+ <make>blks2.$(type)2_mod(
+ samples_per_symbol=$samples_per_symbol,
+ excess_bw=$excess_bw,
+ gray_code=$gray_code,
+ verbose=$verbose,
+ log=$log,
+)</make>
+ <param>
+ <name>Type</name>
+ <key>type</key>
+ <type>enum</type>
+ <option>
+ <name>DBPSK</name>
+ <key>dbpsk</key>
+ </option>
+ <option>
+ <name>DQPSK</name>
+ <key>dqpsk</key>
+ </option>
+ </param>
+ <param>
+ <name>Samples/Symbol</name>
+ <key>samples_per_symbol</key>
+ <value>2</value>
+ <type>int</type>
+ </param>
+ <param>
+ <name>Excess BW</name>
+ <key>excess_bw</key>
+ <value>0.35</value>
+ <type>real</type>
+ </param>
+ <param>
+ <name>Gray Code</name>
+ <key>gray_code</key>
+ <value>True</value>
+ <type>bool</type>
+ <option>
+ <name>Yes</name>
+ <key>True</key>
+ </option>
+ <option>
+ <name>No</name>
+ <key>False</key>
+ </option>
+ </param>
+ <param>
+ <name>Verbose</name>
+ <key>verbose</key>
+ <value>False</value>
+ <type>bool</type>
+ <hide>#if str($verbose) == 'False' then 'part' else 'none'#</hide>
+ <option>
+ <name>On</name>
+ <key>True</key>
+ </option>
+ <option>
+ <name>Off</name>
+ <key>False</key>
+ </option>
+ </param>
+ <param>
+ <name>Logging</name>
+ <key>log</key>
+ <value>False</value>
+ <type>bool</type>
+ <hide>#if str($log) == 'False' then 'part' else 'none'#</hide>
+ <option>
+ <name>On</name>
+ <key>True</key>
+ </option>
+ <option>
+ <name>Off</name>
+ <key>False</key>
+ </option>
+ </param>
+ <sink>
+ <name>in</name>
+ <type>byte</type>
+ </sink>
+ <source>
+ <name>out</name>
+ <type>complex</type>
+ </source>
+</block>
diff --git a/grc/blocks/blks2_dxpsk_demod.xml b/grc/blocks/blks2_dxpsk_demod.xml
index 4c13b3415..1c96b6cec 100644
--- a/grc/blocks/blks2_dxpsk_demod.xml
+++ b/grc/blocks/blks2_dxpsk_demod.xml
@@ -76,7 +76,7 @@
<name>Gray Code</name>
<key>gray_code</key>
<value>True</value>
- <type>enum</type>
+ <type>bool</type>
<option>
<name>Yes</name>
<key>True</key>
diff --git a/grc/blocks/blks2_dxpsk_mod.xml b/grc/blocks/blks2_dxpsk_mod.xml
index 28fd742fa..77505d8ad 100644
--- a/grc/blocks/blks2_dxpsk_mod.xml
+++ b/grc/blocks/blks2_dxpsk_mod.xml
@@ -48,7 +48,7 @@
<name>Gray Code</name>
<key>gray_code</key>
<value>True</value>
- <type>enum</type>
+ <type>bool</type>
<option>
<name>Yes</name>
<key>True</key>
diff --git a/grc/blocks/block_tree.xml b/grc/blocks/block_tree.xml
index 187ca196a..04568e19a 100644
--- a/grc/blocks/block_tree.xml
+++ b/grc/blocks/block_tree.xml
@@ -46,6 +46,7 @@
<block>wxgui_constellationsink2</block>
<block>wxgui_waterfallsink2</block>
<block>wxgui_histosink2</block>
+ <block>wxgui_termsink</block>
</cat>
<cat>
<name>Operators</name>
@@ -126,7 +127,7 @@
<cat>
<name>Synchronizers</name>
<block>gr_clock_recovery_mm_xx</block>
- <block>gr_pfb_clock_sync_ccf</block>
+ <block>gr_pfb_clock_sync_xxx</block>
<block>gr_costas_loop_cc</block>
<block>gr_dd_mpsk_sync_cc</block>
@@ -137,6 +138,8 @@
<block>gr_pll_freqdet_cf</block>
<block>gr_pll_refout_cc</block>
+ <block>gr_fll_band_edge_cc</block>
+
<block>gr_correlate_access_code_bb</block>
<block>gr_pn_correlator_cc</block>
<block>gr_simple_correlator</block>
@@ -224,6 +227,9 @@
<block>blks2_dxpsk_mod</block>
<block>blks2_dxpsk_demod</block>
+ <block>blks2_dxpsk2_mod</block>
+ <block>blks2_dxpsk2_demod</block>
+
<block>blks2_gmsk_mod</block>
<block>blks2_gmsk_demod</block>
@@ -253,6 +259,7 @@
<name>Line Coding</name>
<block>gr_scrambler_bb</block>
<block>gr_descrambler_bb</block>
+ <block>gr_additive_scrambler_bb</block>
</cat>
<cat>
<name>Vocoders</name>
diff --git a/grc/blocks/gr_additive_scrambler_bb.xml b/grc/blocks/gr_additive_scrambler_bb.xml
new file mode 100644
index 000000000..a15d6eefb
--- /dev/null
+++ b/grc/blocks/gr_additive_scrambler_bb.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<!--
+###################################################
+## Additive Scrambler
+###################################################
+ -->
+<block>
+ <name>Additive Scrambler</name>
+ <key>gr_additive_scrambler_bb</key>
+ <import>from gnuradio import gr</import>
+ <make>gr.additive_scrambler_bb($mask, $seed, $len, $count)</make>
+ <param>
+ <name>Mask</name>
+ <key>mask</key>
+ <value>0x8A</value>
+ <type>hex</type>
+ </param>
+ <param>
+ <name>Seed</name>
+ <key>seed</key>
+ <value>0x7F</value>
+ <type>hex</type>
+ </param>
+ <param>
+ <name>Length</name>
+ <key>len</key>
+ <value>7</value>
+ <type>int</type>
+ </param>
+ <param>
+ <name>Count</name>
+ <key>count</key>
+ <value>0</value>
+ <type>int</type>
+ </param>
+ <sink>
+ <name>in</name>
+ <type>byte</type>
+ </sink>
+ <source>
+ <name>out</name>
+ <type>byte</type>
+ </source>
+</block>
diff --git a/grc/blocks/gr_fll_band_edge_cc.xml b/grc/blocks/gr_fll_band_edge_cc.xml
new file mode 100644
index 000000000..5a13ac49b
--- /dev/null
+++ b/grc/blocks/gr_fll_band_edge_cc.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0"?>
+<!--
+###################################################
+## FLL using Band-Edge Filters
+###################################################
+ -->
+<block>
+ <name>FLL Band-Edge</name>
+ <key>gr_fll_band_edge_cc</key>
+ <import>from gnuradio import gr</import>
+ <make>gr.fll_band_edge_cc($samps_per_sym, $rolloff, $filter_size, $alpha, $beta)</make>
+ <callback>set_alpha($alpha)</callback>
+ <callback>set_beta($beta)</callback>
+
+ <param>
+ <name>Type</name>
+ <key>type</key>
+ <type>enum</type>
+ <option>
+ <name>Complex->Complex</name>
+ <key>cc</key>
+ <opt>input:complex</opt>
+ <opt>output:complex</opt>
+ </option>
+ </param>
+
+ <param>
+ <name>Samples Per Symbol</name>
+ <key>samps_per_sym</key>
+ <type>real</type>
+ </param>
+ <param>
+ <name>Filter Rolloff Factor</name>
+ <key>rolloff</key>
+ <type>real</type>
+ </param>
+ <param>
+ <name>Prototype Filter Size</name>
+ <key>filter_size</key>
+ <type>int</type>
+ </param>
+
+ <param>
+ <name>Alpha</name>
+ <key>alpha</key>
+ <type>real</type>
+ </param>
+ <param>
+ <name>Beta</name>
+ <key>beta</key>
+ <type>real</type>
+ </param>
+ <sink>
+ <name>in</name>
+ <type>$type.input</type>
+ </sink>
+ <source>
+ <name>out</name>
+ <type>$type.output</type>
+ </source>
+ <source>
+ <name>freq</name>
+ <type>float</type>
+ <optional>1</optional>
+ </source>
+ <source>
+ <name>phase</name>
+ <type>float</type>
+ <optional>1</optional>
+ </source>
+ <source>
+ <name>error</name>
+ <type>float</type>
+ <optional>1</optional>
+ </source>
+</block>
diff --git a/grc/blocks/gr_message_sink.xml b/grc/blocks/gr_message_sink.xml
index 76537f283..18e92adb9 100644
--- a/grc/blocks/gr_message_sink.xml
+++ b/grc/blocks/gr_message_sink.xml
@@ -8,7 +8,7 @@
<name>Message Sink</name>
<key>gr_message_sink</key>
<import>from gnuradio import gr</import>
- <make>gr.message_sink($type.size*$vlen, $(id)_msgq, $dont_block)</make>
+ <make>gr.message_sink($type.size*$vlen, $(id)_msgq_out, $dont_block)</make>
<param>
<name>Input Type</name>
<key>type</key>
diff --git a/grc/blocks/gr_message_source.xml b/grc/blocks/gr_message_source.xml
index 44378ae83..72367b21b 100644
--- a/grc/blocks/gr_message_source.xml
+++ b/grc/blocks/gr_message_source.xml
@@ -8,7 +8,7 @@
<name>Message Source</name>
<key>gr_message_source</key>
<import>from gnuradio import gr</import>
- <make>gr.message_source($type.size*$vlen, $(id)_msgq)</make>
+ <make>gr.message_source($type.size*$vlen, $(id)_msgq_in)</make>
<param>
<name>Output Type</name>
<key>type</key>
diff --git a/grc/blocks/gr_pfb_clock_sync.xml b/grc/blocks/gr_pfb_clock_sync.xml
index 9cb909acd..26cacfb3e 100644
--- a/grc/blocks/gr_pfb_clock_sync.xml
+++ b/grc/blocks/gr_pfb_clock_sync.xml
@@ -6,15 +6,35 @@
-->
<block>
<name>Polyphase Clock Sync</name>
- <key>gr_pfb_clock_sync_ccf</key>
+ <key>gr_pfb_clock_sync_xxx</key>
<import>from gnuradio import gr</import>
- <make>gr.pfb_clock_sync_ccf($sps, $alpha, $taps, $filter_size, $init_phase, $max_dev)
+ <make>gr.pfb_clock_sync_$(type)($sps, $alpha, $taps, $filter_size, $init_phase, $max_dev)
self.$(id).set_beta($beta)</make>
<callback>set_taps($taps)</callback>
<callback>set_alpha($alpha)</callback>
<callback>set_beta($beta)</callback>
<param>
+ <name>Type</name>
+ <key>type</key>
+ <type>enum</type>
+ <option>
+ <name>Complex->Complex (Real Taps)</name>
+ <key>ccf</key>
+ <opt>input:complex</opt>
+ <opt>output:complex</opt>
+ <opt>taps:real_vector</opt>
+ </option>
+ <option>
+ <name>Float->Float (Real Taps)</name>
+ <key>fff</key>
+ <opt>input:float</opt>
+ <opt>output:float</opt>
+ <opt>taps:real_vector</opt>
+ </option>
+ </param>
+
+ <param>
<name>Samples/Symbol</name>
<key>sps</key>
<type>real</type>
@@ -51,11 +71,11 @@ self.$(id).set_beta($beta)</make>
</param>
<sink>
<name>in</name>
- <type>complex</type>
+ <type>$type.input</type>
</sink>
<source>
<name>out</name>
- <type>complex</type>
+ <type>$type.output</type>
</source>
<source>
<name>err</name>
diff --git a/grc/blocks/gr_sample_and_hold_xx.xml b/grc/blocks/gr_sample_and_hold_xx.xml
index bfe66bb00..2a036c3fd 100644
--- a/grc/blocks/gr_sample_and_hold_xx.xml
+++ b/grc/blocks/gr_sample_and_hold_xx.xml
@@ -40,7 +40,7 @@
</sink>
<sink>
<name>ctrl</name>
- <type>$type</type>
+ <type>byte</type>
</sink>
<source>
<name>out</name>
diff --git a/grc/blocks/pad_sink.xml b/grc/blocks/pad_sink.xml
index 734526793..2e9495260 100644
--- a/grc/blocks/pad_sink.xml
+++ b/grc/blocks/pad_sink.xml
@@ -9,10 +9,10 @@
<key>pad_sink</key>
<make></make>
<param>
- <name>Num Inputs</name>
- <key>nports</key>
- <value>1</value>
- <type>int</type>
+ <name>Label</name>
+ <key>label</key>
+ <value>out</value>
+ <type>string</type>
</param>
<param>
<name>Input Type</name>
@@ -51,15 +51,14 @@
<type>int</type>
</param>
<check>$vlen &gt; 0</check>
- <check>0 &lt; $nports</check>
<sink>
<name>in</name>
<type>$type</type>
<vlen>$vlen</vlen>
- <nports>$nports</nports>
</sink>
<doc>
-The inputs of this block will become the outputs to this flow graph when it is instantiated as a hierarchical block. \
-Limit one sink pad block per flow graph.
+The inputs of this block will become the outputs to this flow graph when it is instantiated as a hierarchical block.
+
+Pad sink will be ordered alphabetically by their ids. The first pad sink will have an index of 0.
</doc>
</block>
diff --git a/grc/blocks/pad_source.xml b/grc/blocks/pad_source.xml
index f44d96238..7b2210cbb 100644
--- a/grc/blocks/pad_source.xml
+++ b/grc/blocks/pad_source.xml
@@ -9,10 +9,10 @@
<key>pad_source</key>
<make></make>
<param>
- <name>Num Outputs</name>
- <key>nports</key>
- <value>1</value>
- <type>int</type>
+ <name>Label</name>
+ <key>label</key>
+ <value>in</value>
+ <type>string</type>
</param>
<param>
<name>Output Type</name>
@@ -51,16 +51,14 @@
<type>int</type>
</param>
<check>$vlen &gt; 0</check>
- <check>0 &lt; $nports</check>
<source>
<name>out</name>
<type>$type</type>
<vlen>$vlen</vlen>
- <nports>$nports</nports>
</source>
<doc>
-The outputs of this block will become the inputs to this flow graph when it is instantiated as a hierarchical block. \
-Limit one source pad block per flow graph. \
-The "pad sink id" will be ignored in this mode.
+The outputs of this block will become the inputs to this flow graph when it is instantiated as a hierarchical block.
+
+Pad sources will be ordered alphabetically by their ids. The first pad source will have an index of 0.
</doc>
</block>
diff --git a/grc/blocks/usrp2_sink_xxxx.xml b/grc/blocks/usrp2_sink_xxxx.xml
index f2ee4d151..14586cc36 100644
--- a/grc/blocks/usrp2_sink_xxxx.xml
+++ b/grc/blocks/usrp2_sink_xxxx.xml
@@ -36,11 +36,13 @@ self.$(id).set_center_freq($frequency)</callback>
<name>Complex</name>
<key>complex</key>
<opt>fcn:32fc</opt>
+ <opt>vlen:1</opt>
</option>
<option>
<name>Short</name>
<key>short</key>
<opt>fcn:16sc</opt>
+ <opt>vlen:2</opt>
</option>
</param>
<param>
@@ -85,6 +87,7 @@ self.$(id).set_center_freq($frequency)</callback>
<sink>
<name>in</name>
<type>$type</type>
+ <vlen>$type.vlen</vlen>
</sink>
<doc>
The USRP2 sink inputs 100 Megasamples per second / interpolation.
diff --git a/grc/blocks/usrp2_source_xxxx.xml b/grc/blocks/usrp2_source_xxxx.xml
index 02046e609..0f297dfd1 100644
--- a/grc/blocks/usrp2_source_xxxx.xml
+++ b/grc/blocks/usrp2_source_xxxx.xml
@@ -36,11 +36,13 @@ self.$(id).set_center_freq($frequency)</callback>
<name>Complex</name>
<key>complex</key>
<opt>fcn:32fc</opt>
+ <opt>vlen:1</opt>
</option>
<option>
<name>Short</name>
<key>short</key>
<opt>fcn:16sc</opt>
+ <opt>vlen:2</opt>
</option>
</param>
<param>
@@ -85,6 +87,7 @@ self.$(id).set_center_freq($frequency)</callback>
<source>
<name>out</name>
<type>$type</type>
+ <vlen>$type.vlen</vlen>
</source>
<doc>
The USRP2 source outputs 100 Megasamples per second / decimation.
diff --git a/grc/blocks/usrp_dual_source_x.xml b/grc/blocks/usrp_dual_source_x.xml
index ad9a860ac..07d3174bb 100644
--- a/grc/blocks/usrp_dual_source_x.xml
+++ b/grc/blocks/usrp_dual_source_x.xml
@@ -8,7 +8,11 @@
<name>USRP Dual Source</name>
<key>usrp_dual_source_x</key>
<import>from grc_gnuradio import usrp as grc_usrp</import>
- <make>grc_usrp.dual_source_$(type.fcn)(which=$which, rx_ant_a=$rx_ant_a, rx_ant_b=$rx_ant_b)
+ <make>grc_usrp.dual_source_$(type.fcn)(
+ which=$which,
+ rx_ant_a=$rx_ant_a, rx_ant_b=$rx_ant_b,
+ rx_source_a=$rx_source_a, rx_source_b=$rx_source_b,
+)
#if $format()
self.$(id).set_format(width=$format.width, shift=$format.shift)
#end if
@@ -189,6 +193,36 @@ self.$(id).set_gain_b($gain_b)</make>
<key>RX2</key>
</option>
</param>
+ <param>
+ <name>RX Source A</name>
+ <key>rx_source_a</key>
+ <value>A</value>
+ <type>string</type>
+ <hide>#if $rx_source_a() == 'A' then 'part' else 'none'#</hide>
+ <option>
+ <name>Side A</name>
+ <key>A</key>
+ </option>
+ <option>
+ <name>Side B</name>
+ <key>B</key>
+ </option>
+ </param>
+ <param>
+ <name>RX Source B</name>
+ <key>rx_source_b</key>
+ <value>B</value>
+ <type>string</type>
+ <hide>#if $rx_source_b() == 'B' then 'part' else 'none'#</hide>
+ <option>
+ <name>Side A</name>
+ <key>A</key>
+ </option>
+ <option>
+ <name>Side B</name>
+ <key>B</key>
+ </option>
+ </param>
<source>
<name>Aout</name>
<type>$type</type>
diff --git a/grc/blocks/wxgui_constellationsink2.xml b/grc/blocks/wxgui_constellationsink2.xml
index 5969d8405..598b55064 100644
--- a/grc/blocks/wxgui_constellationsink2.xml
+++ b/grc/blocks/wxgui_constellationsink2.xml
@@ -23,6 +23,9 @@ constsink_gl.const_sink_c(
gain_mu=$gain_mu,
symbol_rate=$symbol_rate,
omega_limit=$omega_limit,
+#if $win_size()
+ size=$win_size,
+#end if
)
#if not $grid_pos()
$(parent).Add(self.$(id).win)
@@ -103,6 +106,13 @@ $(parent).GridAdd(self.$(id).win, $(', '.join(map(str, $grid_pos()))))
<type>real</type>
</param>
<param>
+ <name>Window Size</name>
+ <key>win_size</key>
+ <value></value>
+ <type>int_vector</type>
+ <hide>#if $win_size() then 'none' else 'part'#</hide>
+ </param>
+ <param>
<name>Grid Position</name>
<key>grid_pos</key>
<value></value>
@@ -114,11 +124,14 @@ $(parent).GridAdd(self.$(id).win, $(', '.join(map(str, $grid_pos()))))
<value></value>
<type>notebook</type>
</param>
+ <check>not $win_size or len($win_size) == 2</check>
<sink>
<name>in</name>
<type>complex</type>
</sink>
<doc>
+Leave the window blank for the default size, otherwise enter a tuple of (width, height) pixels.
+
Use the Grid Position (row, column, row span, column span) to position the graphical element in the window.
Use the Notebook Param (notebook-id, page-index) to place the graphical element inside of a notebook page.
diff --git a/grc/blocks/wxgui_fftsink2.xml b/grc/blocks/wxgui_fftsink2.xml
index 6f19f1aa4..8df8f90d0 100644
--- a/grc/blocks/wxgui_fftsink2.xml
+++ b/grc/blocks/wxgui_fftsink2.xml
@@ -7,6 +7,7 @@
<block>
<name>FFT Sink</name>
<key>wxgui_fftsink2</key>
+ <import>from gnuradio import window</import>
<import>from gnuradio.wxgui import fftsink2</import>
<make>#set $parent = $notebook() and 'self.%s.GetPage(%s)'%$notebook() or 'self'
fftsink2.$(type.fcn)(
@@ -23,6 +24,12 @@ fftsink2.$(type.fcn)(
avg_alpha=#if $avg_alpha() then $avg_alpha else 'None'#,
title=$title,
peak_hold=$peak_hold,
+#if $win()
+ win=$win,
+#end if
+#if $win_size()
+ size=$win_size,
+#end if
)
#if not $grid_pos()
$(parent).Add(self.$(id).win)
@@ -141,7 +148,7 @@ $(parent).GridAdd(self.$(id).win, $(', '.join(map(str, $grid_pos()))))
<key>average</key>
<value>False</value>
<type>enum</type>
- <hide>#if $average() == 'True' then 'none' else 'part'#</hide>
+ <hide>part</hide>
<option>
<name>On</name>
<key>True</key>
@@ -159,6 +166,44 @@ $(parent).GridAdd(self.$(id).win, $(', '.join(map(str, $grid_pos()))))
<hide>#if $average() == 'True' then 'none' else 'all'#</hide>
</param>
<param>
+ <name>Window</name>
+ <key>win</key>
+ <value>None</value>
+ <type>raw</type>
+ <hide>#if $win() is None then 'part' else 'none'#</hide>
+ <option>
+ <name>Automatic</name>
+ <key>None</key>
+ </option>
+ <option>
+ <name>Blackman-Harris</name>
+ <key>window.blackmanharris</key>
+ </option>
+ <option>
+ <name>Hamming</name>
+ <key>window.hamming</key>
+ </option>
+ <option>
+ <name>Hanning</name>
+ <key>window.hanning</key>
+ </option>
+ <option>
+ <name>Rectangular</name>
+ <key>window.rectangular</key>
+ </option>
+ <option>
+ <name>Flattop</name>
+ <key>window.flattop</key>
+ </option>
+ </param>
+ <param>
+ <name>Window Size</name>
+ <key>win_size</key>
+ <value></value>
+ <type>int_vector</type>
+ <hide>#if $win_size() then 'none' else 'part'#</hide>
+ </param>
+ <param>
<name>Grid Position</name>
<key>grid_pos</key>
<value></value>
@@ -170,6 +215,7 @@ $(parent).GridAdd(self.$(id).win, $(', '.join(map(str, $grid_pos()))))
<value></value>
<type>notebook</type>
</param>
+ <check>not $win_size or len($win_size) == 2</check>
<sink>
<name>in</name>
<type>$type</type>
@@ -177,6 +223,8 @@ $(parent).GridAdd(self.$(id).win, $(', '.join(map(str, $grid_pos()))))
<doc>
Set Average Alpha to 0 for automatic setting.
+Leave the window blank for the default size, otherwise enter a tuple of (width, height) pixels.
+
Use the Grid Position (row, column, row span, column span) to position the graphical element in the window.
Use the Notebook Param (notebook-id, page-index) to place the graphical element inside of a notebook page.
diff --git a/grc/blocks/wxgui_histosink2.xml b/grc/blocks/wxgui_histosink2.xml
index 454a4932c..9edf9650d 100644
--- a/grc/blocks/wxgui_histosink2.xml
+++ b/grc/blocks/wxgui_histosink2.xml
@@ -14,6 +14,9 @@ histosink_gl.histo_sink_f(
title=$title,
num_bins=$num_bins,
frame_size=$frame_size,
+#if $win_size()
+ size=$win_size,
+#end if
)
#if not $grid_pos()
$(parent).Add(self.$(id).win)
@@ -41,6 +44,13 @@ $(parent).GridAdd(self.$(id).win, $(', '.join(map(str, $grid_pos()))))
<type>int</type>
</param>
<param>
+ <name>Window Size</name>
+ <key>win_size</key>
+ <value></value>
+ <type>int_vector</type>
+ <hide>#if $win_size() then 'none' else 'part'#</hide>
+ </param>
+ <param>
<name>Grid Position</name>
<key>grid_pos</key>
<value></value>
@@ -52,11 +62,14 @@ $(parent).GridAdd(self.$(id).win, $(', '.join(map(str, $grid_pos()))))
<value></value>
<type>notebook</type>
</param>
+ <check>not $win_size or len($win_size) == 2</check>
<sink>
<name>in</name>
<type>float</type>
</sink>
<doc>
+Leave the window blank for the default size, otherwise enter a tuple of (width, height) pixels.
+
Use the Grid Position (row, column, row span, column span) to position the graphical element in the window.
Use the Notebook Param (notebook-id, page-index) to place the graphical element inside of a notebook page.
diff --git a/grc/blocks/wxgui_numbersink2.xml b/grc/blocks/wxgui_numbersink2.xml
index cc66cdcb0..ad93dec08 100644
--- a/grc/blocks/wxgui_numbersink2.xml
+++ b/grc/blocks/wxgui_numbersink2.xml
@@ -24,6 +24,9 @@ numbersink2.$(type.fcn)(
label=$title,
peak_hold=$peak_hold,
show_gauge=$show_gauge,
+#if $win_size()
+ size=$win_size,
+#end if
)
#if not $grid_pos()
$(parent).Add(self.$(id).win)
@@ -120,7 +123,7 @@ $(parent).GridAdd(self.$(id).win, $(', '.join(map(str, $grid_pos()))))
<key>average</key>
<value>False</value>
<type>enum</type>
- <hide>#if $average() == 'True' then 'none' else 'part'#</hide>
+ <hide>part</hide>
<option>
<name>On</name>
<key>True</key>
@@ -152,6 +155,13 @@ $(parent).GridAdd(self.$(id).win, $(', '.join(map(str, $grid_pos()))))
</option>
</param>
<param>
+ <name>Window Size</name>
+ <key>win_size</key>
+ <value></value>
+ <type>int_vector</type>
+ <hide>#if $win_size() then 'none' else 'part'#</hide>
+ </param>
+ <param>
<name>Grid Position</name>
<key>grid_pos</key>
<value></value>
@@ -163,6 +173,7 @@ $(parent).GridAdd(self.$(id).win, $(', '.join(map(str, $grid_pos()))))
<value></value>
<type>notebook</type>
</param>
+ <check>not $win_size or len($win_size) == 2</check>
<sink>
<name>in</name>
<type>$type</type>
@@ -170,6 +181,8 @@ $(parent).GridAdd(self.$(id).win, $(', '.join(map(str, $grid_pos()))))
<doc>
Set Average Alpha to 0 for automatic setting.
+Leave the window blank for the default size, otherwise enter a tuple of (width, height) pixels.
+
Use the Grid Position (row, column, row span, column span) to position the graphical element in the window.
Use the Notebook Param (notebook-id, page-index) to place the graphical element inside of a notebook page.
diff --git a/grc/blocks/wxgui_scopesink2.xml b/grc/blocks/wxgui_scopesink2.xml
index 503d52972..eba45f489 100644
--- a/grc/blocks/wxgui_scopesink2.xml
+++ b/grc/blocks/wxgui_scopesink2.xml
@@ -15,10 +15,14 @@ scopesink2.$(type.fcn)(
title=$title,
sample_rate=$samp_rate,
v_scale=$v_scale,
+ v_offset=$v_offset,
t_scale=$t_scale,
ac_couple=$ac_couple,
xy_mode=$xy_mode,
num_inputs=$num_inputs,
+#if $win_size()
+ size=$win_size,
+#end if
)
#if not $grid_pos()
$(parent).Add(self.$(id).win)
@@ -59,19 +63,28 @@ $(parent).GridAdd(self.$(id).win, $(', '.join(map(str, $grid_pos()))))
<key>v_scale</key>
<value>0</value>
<type>real</type>
+ <hide>#if $v_scale() then 'none' else 'part'#</hide>
+ </param>
+ <param>
+ <name>V Offset</name>
+ <key>v_offset</key>
+ <value>0</value>
+ <type>real</type>
+ <hide>#if $v_offset() then 'none' else 'part'#</hide>
</param>
<param>
<name>T Scale</name>
<key>t_scale</key>
<value>0</value>
<type>real</type>
+ <hide>#if $t_scale() then 'none' else 'part'#</hide>
</param>
<param>
<name>AC Couple</name>
<key>ac_couple</key>
<value>False</value>
- <type>enum</type>
- <hide>#if $ac_couple() == 'True' then 'none' else 'part'#</hide>
+ <type>bool</type>
+ <hide>#if $ac_couple() then 'none' else 'part'#</hide>
<option>
<name>Off</name>
<key>False</key>
@@ -103,6 +116,13 @@ $(parent).GridAdd(self.$(id).win, $(', '.join(map(str, $grid_pos()))))
<type>int</type>
</param>
<param>
+ <name>Window Size</name>
+ <key>win_size</key>
+ <value></value>
+ <type>int_vector</type>
+ <hide>#if $win_size() then 'none' else 'part'#</hide>
+ </param>
+ <param>
<name>Grid Position</name>
<key>grid_pos</key>
<value></value>
@@ -114,6 +134,7 @@ $(parent).GridAdd(self.$(id).win, $(', '.join(map(str, $grid_pos()))))
<value></value>
<type>notebook</type>
</param>
+ <check>not $win_size or len($win_size) == 2</check>
<check>not $xy_mode or '$type' == 'complex' or $num_inputs != 1</check>
<sink>
<name>in</name>
@@ -127,6 +148,8 @@ Set the T Scale to 0 for automatic setting.
XY Mode allows the scope to initialize as an XY plotter.
+Leave the window blank for the default size, otherwise enter a tuple of (width, height) pixels.
+
Use the Grid Position (row, column, row span, column span) to position the graphical element in the window.
Use the Notebook Param (notebook-id, page-index) to place the graphical element inside of a notebook page.
diff --git a/grc/blocks/wxgui_termsink.xml b/grc/blocks/wxgui_termsink.xml
new file mode 100644
index 000000000..985d89b58
--- /dev/null
+++ b/grc/blocks/wxgui_termsink.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<!--
+###################################################
+##Terminal window
+###################################################
+ -->
+<block>
+ <name>Terminal Sink</name>
+ <key>wxgui_termsink</key>
+
+ <import>from gnuradio.wxgui import termsink</import>
+
+ <make>#set $parent = $notebook() and 'self.%s.GetPage(%s)'%$notebook() or 'self'
+termsink.termsink(
+ parent=$(parent).GetWin(),
+#if $win_size()
+ size=$win_size,
+#end if
+ msgq=$(id)_msgq_in,
+)
+#if not $grid_pos()
+$(parent).Add(self.$(id))
+#else
+$(parent).GridAdd(self.$(id), $(', '.join(map(str, $grid_pos()))))
+#end if</make>
+
+ <param>
+ <name>Window Size</name>
+ <key>win_size</key>
+ <value></value>
+ <type>int_vector</type>
+ <hide>#if $win_size() then 'none' else 'part'#</hide>
+ </param>
+ <param>
+ <name>Grid Position</name>
+ <key>grid_pos</key>
+ <value></value>
+ <type>grid_pos</type>
+ </param>
+
+ <param>
+ <name>Notebook</name>
+ <key>notebook</key>
+ <value></value>
+ <type>notebook</type>
+ </param>
+
+ <check>not $win_size or len($win_size) == 2</check>
+
+ <sink>
+ <name>in</name>
+ <type>msg</type>
+ </sink>
+
+</block>
diff --git a/grc/blocks/wxgui_waterfallsink2.xml b/grc/blocks/wxgui_waterfallsink2.xml
index 35790f820..3de67597f 100644
--- a/grc/blocks/wxgui_waterfallsink2.xml
+++ b/grc/blocks/wxgui_waterfallsink2.xml
@@ -7,6 +7,7 @@
<block>
<name>Waterfall Sink</name>
<key>wxgui_waterfallsink2</key>
+ <import>from gnuradio import window</import>
<import>from gnuradio.wxgui import waterfallsink2</import>
<make>#set $parent = $notebook() and 'self.%s.GetPage(%s)'%$notebook() or 'self'
waterfallsink2.$(type.fcn)(
@@ -18,9 +19,15 @@ waterfallsink2.$(type.fcn)(
sample_rate=$samp_rate,
fft_size=$fft_size,
fft_rate=$fft_rate,
- average=$options.average,
+ average=$average,
avg_alpha=#if $avg_alpha() then $avg_alpha else 'None'#,
title=$title,
+#if $win()
+ win=$win,
+#end if
+#if $win_size()
+ size=$win_size,
+#end if
)
#if not $grid_pos()
$(parent).Add(self.$(id).win)
@@ -94,28 +101,66 @@ $(parent).GridAdd(self.$(id).win, $(', '.join(map(str, $grid_pos()))))
<type>int</type>
</param>
<param>
+ <name>Average</name>
+ <key>average</key>
+ <value>False</value>
+ <type>enum</type>
+ <hide>part</hide>
+ <option>
+ <name>On</name>
+ <key>True</key>
+ </option>
+ <option>
+ <name>Off</name>
+ <key>False</key>
+ </option>
+ </param>
+ <param>
<name>Average Alpha</name>
<key>avg_alpha</key>
<value>0</value>
<type>real</type>
+ <hide>#if $average() == 'True' then 'none' else 'all'#</hide>
</param>
<param>
- <name>Options</name>
- <key>options</key>
- <value>none</value>
- <type>enum</type>
+ <name>Window</name>
+ <key>win</key>
+ <value>None</value>
+ <type>raw</type>
+ <hide>#if $win() is None then 'part' else 'none'#</hide>
+ <option>
+ <name>Automatic</name>
+ <key>None</key>
+ </option>
<option>
- <name>None</name>
- <key>none</key>
- <opt>average:False</opt>
+ <name>Blackman-Harris</name>
+ <key>window.blackmanharris</key>
</option>
<option>
- <name>Average</name>
- <key>average</key>
- <opt>average:True</opt>
+ <name>Hamming</name>
+ <key>window.hamming</key>
+ </option>
+ <option>
+ <name>Hanning</name>
+ <key>window.hanning</key>
+ </option>
+ <option>
+ <name>Rectangular</name>
+ <key>window.rectangular</key>
+ </option>
+ <option>
+ <name>Flattop</name>
+ <key>window.flattop</key>
</option>
</param>
<param>
+ <name>Window Size</name>
+ <key>win_size</key>
+ <value></value>
+ <type>int_vector</type>
+ <hide>#if $win_size() then 'none' else 'part'#</hide>
+ </param>
+ <param>
<name>Grid Position</name>
<key>grid_pos</key>
<value></value>
@@ -127,6 +172,7 @@ $(parent).GridAdd(self.$(id).win, $(', '.join(map(str, $grid_pos()))))
<value></value>
<type>notebook</type>
</param>
+ <check>not $win_size or len($win_size) == 2</check>
<sink>
<name>in</name>
<type>$type</type>
@@ -134,6 +180,8 @@ $(parent).GridAdd(self.$(id).win, $(', '.join(map(str, $grid_pos()))))
<doc>
Set Average Alpha to 0 for automatic setting.
+Leave the window blank for the default size, otherwise enter a tuple of (width, height) pixels.
+
Use the Grid Position (row, column, row span, column span) to position the graphical element in the window.
Use the Notebook Param (notebook-id, page-index) to place the graphical element inside of a notebook page.