summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Rondeau <tom@trondeau.com>2016-01-06 17:04:20 -0500
committerTom Rondeau <tom@trondeau.com>2016-01-06 17:19:49 -0500
commit32d1d46c7b6404a2b36d37ebfdc7f4afd88e4d6f (patch)
treeb3b002b36c734ae1b4156359721a9ffc875391df
parentdec480ab3f0809677ba3ef2a3a64d402d742b5ec (diff)
analog: enable setting max dev. during runtime for NBFM transmitter
and receiver hier_blocks. Also fixes up the XML files to allow for the callback along with indent formatting.
-rw-r--r--gr-analog/grc/analog_nbfm_rx.xml80
-rw-r--r--gr-analog/grc/analog_nbfm_tx.xml80
-rw-r--r--gr-analog/python/analog/nbfm_rx.py8
-rw-r--r--gr-analog/python/analog/nbfm_tx.py9
4 files changed, 101 insertions, 76 deletions
diff --git a/gr-analog/grc/analog_nbfm_rx.xml b/gr-analog/grc/analog_nbfm_rx.xml
index fca1d3a6a5..9250b77b5e 100644
--- a/gr-analog/grc/analog_nbfm_rx.xml
+++ b/gr-analog/grc/analog_nbfm_rx.xml
@@ -5,44 +5,52 @@
###################################################
-->
<block>
- <name>NBFM Receive</name>
- <key>analog_nbfm_rx</key>
- <import>from gnuradio import analog</import>
- <make>analog.nbfm_rx(
+ <name>NBFM Receive</name>
+ <key>analog_nbfm_rx</key>
+ <import>from gnuradio import analog</import>
+ <make>analog.nbfm_rx(
audio_rate=$audio_rate,
quad_rate=$quad_rate,
tau=$tau,
max_dev=$max_dev,
-)</make>
- <param>
- <name>Audio Rate</name>
- <key>audio_rate</key>
- <type>int</type>
- </param>
- <param>
- <name>Quadrature Rate</name>
- <key>quad_rate</key>
- <type>int</type>
- </param>
- <param>
- <name>Tau</name>
- <key>tau</key>
- <value>75e-6</value>
- <type>real</type>
- </param>
- <param>
- <name>Max Deviation</name>
- <key>max_dev</key>
- <value>5e3</value>
- <type>real</type>
- </param>
- <check>($quad_rate)%($audio_rate) == 0</check>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>float</type>
- </source>
+ )</make>
+ <callback>set_max_deviation($max_dev)</callback>
+
+ <param>
+ <name>Audio Rate</name>
+ <key>audio_rate</key>
+ <type>int</type>
+ </param>
+
+ <param>
+ <name>Quadrature Rate</name>
+ <key>quad_rate</key>
+ <type>int</type>
+ </param>
+
+ <param>
+ <name>Tau</name>
+ <key>tau</key>
+ <value>75e-6</value>
+ <type>real</type>
+ </param>
+
+ <param>
+ <name>Max Deviation</name>
+ <key>max_dev</key>
+ <value>5e3</value>
+ <type>real</type>
+ </param>
+
+ <check>($quad_rate)%($audio_rate) == 0</check>
+
+ <sink>
+ <name>in</name>
+ <type>complex</type>
+ </sink>
+
+ <source>
+ <name>out</name>
+ <type>float</type>
+ </source>
</block>
diff --git a/gr-analog/grc/analog_nbfm_tx.xml b/gr-analog/grc/analog_nbfm_tx.xml
index 0ec4f489c9..ea13b8f1c9 100644
--- a/gr-analog/grc/analog_nbfm_tx.xml
+++ b/gr-analog/grc/analog_nbfm_tx.xml
@@ -5,44 +5,52 @@
###################################################
-->
<block>
- <name>NBFM Transmit</name>
- <key>analog_nbfm_tx</key>
- <import>from gnuradio import analog</import>
- <make>analog.nbfm_tx(
+ <name>NBFM Transmit</name>
+ <key>analog_nbfm_tx</key>
+ <import>from gnuradio import analog</import>
+ <make>analog.nbfm_tx(
audio_rate=$audio_rate,
quad_rate=$quad_rate,
tau=$tau,
max_dev=$max_dev,
-)</make>
- <param>
- <name>Audio Rate</name>
- <key>audio_rate</key>
- <type>int</type>
- </param>
- <param>
- <name>Quadrature Rate</name>
- <key>quad_rate</key>
- <type>int</type>
- </param>
- <param>
- <name>Tau</name>
- <key>tau</key>
- <value>75e-6</value>
- <type>real</type>
- </param>
- <param>
- <name>Max Deviation</name>
- <key>max_dev</key>
- <value>5e3</value>
- <type>real</type>
- </param>
- <check>($quad_rate)%($audio_rate) == 0</check>
- <sink>
- <name>in</name>
- <type>float</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
+ )</make>
+ <callback>set_max_deviation($max_dev)</callback>
+
+ <param>
+ <name>Audio Rate</name>
+ <key>audio_rate</key>
+ <type>int</type>
+ </param>
+
+ <param>
+ <name>Quadrature Rate</name>
+ <key>quad_rate</key>
+ <type>int</type>
+ </param>
+
+ <param>
+ <name>Tau</name>
+ <key>tau</key>
+ <value>75e-6</value>
+ <type>real</type>
+ </param>
+
+ <param>
+ <name>Max Deviation</name>
+ <key>max_dev</key>
+ <value>5e3</value>
+ <type>real</type>
+ </param>
+
+ <check>($quad_rate)%($audio_rate) == 0</check>
+
+ <sink>
+ <name>in</name>
+ <type>float</type>
+ </sink>
+
+ <source>
+ <name>out</name>
+ <type>complex</type>
+ </source>
</block>
diff --git a/gr-analog/python/analog/nbfm_rx.py b/gr-analog/python/analog/nbfm_rx.py
index b2c86db70f..38fbf803c8 100644
--- a/gr-analog/python/analog/nbfm_rx.py
+++ b/gr-analog/python/analog/nbfm_rx.py
@@ -57,8 +57,8 @@ class nbfm_rx(gr.hier_block2):
gr.io_signature(1, 1, gr.sizeof_float)) # Output signature
# FIXME audio_rate and quad_rate ought to be exact rationals
- audio_rate = int(audio_rate)
- quad_rate = int(quad_rate)
+ self._audio_rate = audio_rate = int(audio_rate)
+ self._quad_rate = quad_rate = int(quad_rate)
if quad_rate % audio_rate != 0:
raise ValueError, "quad_rate is not an integer multiple of audio_rate"
@@ -88,3 +88,7 @@ class nbfm_rx(gr.hier_block2):
self.audio_filter = filter.fir_filter_fff(audio_decim, audio_taps)
self.connect(self, self.quad_demod, self.deemph, self.audio_filter, self)
+
+ def set_max_deviation(self, max_dev):
+ k = self._quad_rate/(2*math.pi*max_dev)
+ self.quad_demod.set_gain(k)
diff --git a/gr-analog/python/analog/nbfm_tx.py b/gr-analog/python/analog/nbfm_tx.py
index 62b56bae52..ffd539ec55 100644
--- a/gr-analog/python/analog/nbfm_tx.py
+++ b/gr-analog/python/analog/nbfm_tx.py
@@ -50,8 +50,8 @@ class nbfm_tx(gr.hier_block2):
gr.io_signature(1, 1, gr.sizeof_gr_complex)) # Output signature
# FIXME audio_rate and quad_rate ought to be exact rationals
- audio_rate = int(audio_rate)
- quad_rate = int(quad_rate)
+ self._audio_rate = audio_rate = int(audio_rate)
+ self._quad_rate = quad_rate = int(quad_rate)
if quad_rate % audio_rate != 0:
raise ValueError, "quad_rate is not an integer multiple of audio_rate"
@@ -81,6 +81,11 @@ class nbfm_tx(gr.hier_block2):
else:
self.connect(self, self.preemph, self.modulator, self)
+ def set_max_deviation(self, max_dev):
+ k = 2 * math.pi * max_dev / self._quad_rate
+ self.modulator.set_sensitivity(k)
+
+
class ctcss_gen_f(gr.hier_block2):
def __init__(self, sample_rate, tone_freq):