From 55621a9709b219551b908e67ee88f6f7ad2593cb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marcus=20M=C3=BCller?= <mmueller@gnuradio.org>
Date: Sat, 7 Nov 2020 12:39:08 +0100
Subject: [PATCH 3/4] analog: WFM tools: proper integer div, decimation
 handling

---
 gr-analog/python/analog/wfm_rcv.py       | 5 ++++-
 gr-analog/python/analog/wfm_rcv_fmdet.py | 7 ++++++-
 gr-analog/python/analog/wfm_rcv_pll.py   | 9 ++++++---
 gr-analog/python/analog/wfm_tx.py        | 4 ++--
 4 files changed, 18 insertions(+), 7 deletions(-)

--- a/gr-analog/python/analog/wfm_rcv.py
+++ b/gr-analog/python/analog/wfm_rcv.py
@@ -1,5 +1,5 @@
 #
-# Copyright 2005,2007,2012 Free Software Foundation, Inc.
+# Copyright 2005,2007,2012,2020 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -46,6 +46,9 @@
         gr.hier_block2.__init__(self, "wfm_rcv",
                                 gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature
                                 gr.io_signature(1, 1, gr.sizeof_float))      # Output signature
+        if audio_decimation != int(audio_decimation):
+            raise ValueError("audio_decimation needs to be an integer")
+        audio_decimation = int(audio_decimation)
 
         volume = 20.
 
--- a/gr-analog/python/analog/wfm_rcv_fmdet.py
+++ b/gr-analog/python/analog/wfm_rcv_fmdet.py
@@ -1,5 +1,5 @@
 #
-# Copyright 2005,2006,2012-2013 Free Software Foundation, Inc.
+# Copyright 2005,2006,2012-2013,2020 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -49,6 +49,11 @@
         gr.hier_block2.__init__(self, "wfm_rcv_fmdet",
                                 gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature
                                 gr.io_signature(2, 2, gr.sizeof_float))      # Output signature
+        
+        if audio_decimation != int(audio_decimation):
+            raise ValueError("audio_decimation needs to be an integer")
+        audio_decimation = int(audio_decimation)
+
         lowfreq = -125e3 / demod_rate
         highfreq = 125e3 / demod_rate
         audio_rate = demod_rate / audio_decimation
--- a/gr-analog/python/analog/wfm_tx.py
+++ b/gr-analog/python/analog/wfm_tx.py
@@ -1,5 +1,5 @@
 #
-# Copyright 2005,2007,2012 Free Software Foundation, Inc.
+# Copyright 2005,2007,2012,2020 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -65,7 +65,7 @@
         do_interp = audio_rate != quad_rate
 
         if do_interp:
-            interp_factor = quad_rate / audio_rate
+            interp_factor = quad_rate // audio_rate
             interp_taps = filter.optfir.low_pass(interp_factor,   # gain
                                                  quad_rate,       # Fs
                                                  16000,           # passband cutoff
--- a/gr-analog/python/analog/wfm_rcv_pll.py
+++ b/gr-analog/python/analog/wfm_rcv_pll.py
@@ -1,5 +1,5 @@
 #
-# Copyright 2005,2006,2012-2013 Free Software Foundation, Inc.
+# Copyright 2005,2006,2012-2013,2020 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -43,11 +43,15 @@
 
         Args:
             demod_rate: input sample rate of complex baseband input. (float)
-            audio_decimation: how much to decimate demod_rate to get to audio. (integer)
+            audio_decimation: how much to decimate demod_rate to get to audio. (integer) FIXME: Not actually implemented!
         """
         gr.hier_block2.__init__(self, "wfm_rcv_pll",
                                 gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature
                                 gr.io_signature(2, 2, gr.sizeof_float))      # Output signature
+        if audio_decimation != int(audio_decimation):
+            raise ValueError("audio_decimation needs to be an integer")
+        audio_decimation = int(audio_decimation)
+
         bandwidth = 250e3
         audio_rate = demod_rate / audio_decimation
 
