<p>ptrkrysik would like vvvelichkov to <strong>review</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/gr-gsm/+/24063">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Various python3 related changes<br><br>- Use relative import for grgsm's modules<br>- Convert map to list<br>- Remove the hier_block.py workaround as as gnuradio 3.7 is no longer<br>  supported in this branch<br><br>Change-Id: I5ca8fd340823996e8c444aaf18ddacd85c92ab1c<br>---<br>M apps/grgsm_decode<br>M apps/grgsm_scanner<br>M python/__init__.py<br>M python/demapping/gsm_bcch_ccch_demapper.py<br>M python/demapping/gsm_bcch_ccch_sdcch4_demapper.py<br>M python/demapping/gsm_sdcch8_demapper.py<br>M python/misc_utils/CMakeLists.txt<br>M python/misc_utils/clock_offset_corrector_tagged.py<br>M python/misc_utils/device.py<br>D python/misc_utils/hier_block.py<br>M python/qa_txtime_bursts_tagger.py<br>M python/receiver/fcch_detector.py<br>M python/receiver/gsm_input.py<br>M python/transmitter/gsm_gmsk_mod.py<br>M python/transmitter/txtime_bursts_tagger.py<br>M python/trx/__init__.py<br>M python/trx/ctrl_if.py<br>M python/trx/ctrl_if_bb.py<br>M python/trx/radio_if.py<br>M python/trx/radio_if_uhd.py<br>M python/trx/transceiver.py<br>21 files changed, 53 insertions(+), 92 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/gr-gsm refs/changes/63/24063/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/apps/grgsm_decode b/apps/grgsm_decode</span><br><span>index 4bd1d95..034014e 100755</span><br><span>--- a/apps/grgsm_decode</span><br><span>+++ b/apps/grgsm_decode</span><br><span>@@ -336,7 +336,7 @@</span><br><span>         parser, 'TCH Options', 'Options for setting Traffic channel decoding parameters.',</span><br><span>     )</span><br><span>     tch_options.add_option("-d", "--speech-codec", dest="speech_codec", default='FR',</span><br><span style="color: hsl(0, 100%, 40%);">-                           type='choice', choices=tch_codecs.keys(),</span><br><span style="color: hsl(120, 100%, 40%);">+                           type='choice', choices=list(tch_codecs.keys()),</span><br><span>                            help="TCH-F speech codec [default=%default]. "</span><br><span>                                 "Valid options are " + ", ".join(tch_codecs.keys()))</span><br><span>     tch_options.add_option("-o", "--output-tch", dest="speech_output_file", default="/tmp/speech.au.gsm",</span><br><span>diff --git a/apps/grgsm_scanner b/apps/grgsm_scanner</span><br><span>index ce33a60..e3d7a61 100755</span><br><span>--- a/apps/grgsm_scanner</span><br><span>+++ b/apps/grgsm_scanner</span><br><span>@@ -40,9 +40,9 @@</span><br><span> </span><br><span> # from wideband_receiver import *</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-class receiver_with_decoder(grgsm.hier_block):</span><br><span style="color: hsl(120, 100%, 40%);">+class receiver_with_decoder(gr.hier_block2):</span><br><span>     def __init__(self, OSR=4, chan_num=0, fc=939.4e6, ppm=0, samp_rate=0.2e6):</span><br><span style="color: hsl(0, 100%, 40%);">-        grgsm.hier_block.__init__(</span><br><span style="color: hsl(120, 100%, 40%);">+        gr.hier_block2.__init__(</span><br><span>             self, "Receiver With Decoder",</span><br><span>             gr.io_signature(1, 1, gr.sizeof_gr_complex * 1),</span><br><span>             gr.io_signature(0, 0, 0),</span><br><span>@@ -132,9 +132,9 @@</span><br><span>         self.samp_rate_out = samp_rate_out</span><br><span> </span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-class wideband_receiver(grgsm.hier_block):</span><br><span style="color: hsl(120, 100%, 40%);">+class wideband_receiver(gr.hier_block2):</span><br><span>     def __init__(self, OSR=4, fc=939.4e6, samp_rate=0.4e6):</span><br><span style="color: hsl(0, 100%, 40%);">-        grgsm.hier_block.__init__(</span><br><span style="color: hsl(120, 100%, 40%);">+        gr.hier_block2.__init__(</span><br><span>             self, "Wideband receiver",</span><br><span>             gr.io_signature(1, 1, gr.sizeof_gr_complex * 1),</span><br><span>             gr.io_signature(0, 0, 0),</span><br><span>@@ -168,14 +168,14 @@</span><br><span>         # Connections</span><br><span>         ##################################################</span><br><span>         self.connect((self, 0), (self.pfb_channelizer_ccf_0, 0))</span><br><span style="color: hsl(0, 100%, 40%);">-        for chan in xrange(0, self.channels_num):</span><br><span style="color: hsl(120, 100%, 40%);">+        for chan in range(0, self.channels_num):</span><br><span>             self.connect((self.pfb_channelizer_ccf_0, chan), (self.receivers_with_decoders[chan], 0))</span><br><span>             self.msg_connect(self.receivers_with_decoders[chan], 'bursts', self, 'bursts')</span><br><span>             self.msg_connect(self.receivers_with_decoders[chan], 'msgs', self, 'msgs')</span><br><span> </span><br><span>     def create_receivers(self):</span><br><span>         self.receivers_with_decoders = {}</span><br><span style="color: hsl(0, 100%, 40%);">-        for chan in xrange(0, self.channels_num):</span><br><span style="color: hsl(120, 100%, 40%);">+        for chan in range(0, self.channels_num):</span><br><span>             self.receivers_with_decoders[chan] = receiver_with_decoder(fc=self.fc, OSR=self.OSR, chan_num=chan,</span><br><span>                                                                        samp_rate=self.OSR_PFB * 0.2e6)</span><br><span> </span><br><span>@@ -207,7 +207,7 @@</span><br><span>         self.ppm = ppm</span><br><span> </span><br><span>         # if no file name is given process data from rtl_sdr source</span><br><span style="color: hsl(0, 100%, 40%);">-        print "Args=", args</span><br><span style="color: hsl(120, 100%, 40%);">+        print("Args=", args)</span><br><span>         self.rtlsdr_source = osmosdr.source(args="numchan=" + str(1) + " " +</span><br><span>                 str(grgsm.device.get_default_args(args)))</span><br><span>         #self.rtlsdr_source.set_min_output_buffer(int(sample_rate*rec_len)) #this line causes segfaults on HackRF</span><br><span>@@ -261,6 +261,10 @@</span><br><span>         self.neighbours = neighbours</span><br><span>         self.cell_arfcns = cell_arfcns</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+    def __lt__(self, other):</span><br><span style="color: hsl(120, 100%, 40%);">+        return self.arfcn < other.arfcn</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>     def get_verbose_info(self):</span><br><span>         i = "  |---- Configuration: %s\n" % self.get_ccch_conf()</span><br><span>         i += "  |---- Cell ARFCNs: " + ", ".join(map(str, self.cell_arfcns)) + "\n"</span><br><span>@@ -315,7 +319,7 @@</span><br><span>             if not debug:</span><br><span>                 # silence rtl_sdr output:</span><br><span>                 # open 2 fds</span><br><span style="color: hsl(0, 100%, 40%);">-                null_fds = [os.open(os.devnull, os.O_RDWR) for x in xrange(2)]</span><br><span style="color: hsl(120, 100%, 40%);">+                null_fds = [os.open(os.devnull, os.O_RDWR) for x in range(2)]</span><br><span>                 # save the current file descriptors to a tuple</span><br><span>                 save = os.dup(1), os.dup(2)</span><br><span>                 # put /dev/null fds on 1 and 2</span><br><span>@@ -423,10 +427,10 @@</span><br><span> </span><br><span>     def printfunc(found_list):</span><br><span>         for info in sorted(found_list):</span><br><span style="color: hsl(0, 100%, 40%);">-            print info</span><br><span style="color: hsl(120, 100%, 40%);">+            print(info)</span><br><span>             if options.verbose:</span><br><span style="color: hsl(0, 100%, 40%);">-                print info.get_verbose_info()</span><br><span style="color: hsl(0, 100%, 40%);">-    print ""</span><br><span style="color: hsl(120, 100%, 40%);">+                print(info.get_verbose_info())</span><br><span style="color: hsl(120, 100%, 40%);">+    print("")</span><br><span>     do_scan(options.samp_rate, options.band, options.speed,</span><br><span>             options.ppm, options.gain, options.args, prn = printfunc, debug = options.debug)</span><br><span> </span><br><span>diff --git a/python/__init__.py b/python/__init__.py</span><br><span>index 8241b01..557a8d6 100644</span><br><span>--- a/python/__init__.py</span><br><span>+++ b/python/__init__.py</span><br><span>@@ -42,24 +42,23 @@</span><br><span> </span><br><span> </span><br><span> # import swig generated symbols into the gsm namespace</span><br><span style="color: hsl(0, 100%, 40%);">-from grgsm_swig import *</span><br><span style="color: hsl(120, 100%, 40%);">+from .grgsm_swig import *</span><br><span> </span><br><span> # import any pure python here</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from hier_block import hier_block</span><br><span> #from fcch_burst_tagger import fcch_burst_tagger</span><br><span> #from sch_detector import sch_detector</span><br><span> #from fcch_detector import fcch_detector</span><br><span style="color: hsl(0, 100%, 40%);">-from clock_offset_corrector_tagged import clock_offset_corrector_tagged</span><br><span style="color: hsl(0, 100%, 40%);">-from gsm_input import gsm_input</span><br><span style="color: hsl(0, 100%, 40%);">-from gsm_bcch_ccch_demapper import gsm_bcch_ccch_demapper</span><br><span style="color: hsl(0, 100%, 40%);">-from gsm_bcch_ccch_sdcch4_demapper import gsm_bcch_ccch_sdcch4_demapper</span><br><span style="color: hsl(0, 100%, 40%);">-from gsm_sdcch8_demapper import gsm_sdcch8_demapper</span><br><span style="color: hsl(0, 100%, 40%);">-from gsm_gmsk_mod import gsm_gmsk_mod</span><br><span style="color: hsl(0, 100%, 40%);">-from fn_time import *</span><br><span style="color: hsl(0, 100%, 40%);">-from txtime_bursts_tagger import *</span><br><span style="color: hsl(0, 100%, 40%);">-import arfcn</span><br><span style="color: hsl(0, 100%, 40%);">-import device</span><br><span style="color: hsl(120, 100%, 40%);">+from .clock_offset_corrector_tagged import clock_offset_corrector_tagged</span><br><span style="color: hsl(120, 100%, 40%);">+from .gsm_input import gsm_input</span><br><span style="color: hsl(120, 100%, 40%);">+from .gsm_bcch_ccch_demapper import gsm_bcch_ccch_demapper</span><br><span style="color: hsl(120, 100%, 40%);">+from .gsm_bcch_ccch_sdcch4_demapper import gsm_bcch_ccch_sdcch4_demapper</span><br><span style="color: hsl(120, 100%, 40%);">+from .gsm_sdcch8_demapper import gsm_sdcch8_demapper</span><br><span style="color: hsl(120, 100%, 40%);">+from .gsm_gmsk_mod import gsm_gmsk_mod</span><br><span style="color: hsl(120, 100%, 40%);">+from .fn_time import *</span><br><span style="color: hsl(120, 100%, 40%);">+from .txtime_bursts_tagger import *</span><br><span style="color: hsl(120, 100%, 40%);">+from .arfcn import *</span><br><span style="color: hsl(120, 100%, 40%);">+from .device import *</span><br><span> </span><br><span> </span><br><span> #</span><br><span>diff --git a/python/demapping/gsm_bcch_ccch_demapper.py b/python/demapping/gsm_bcch_ccch_demapper.py</span><br><span>index e036831..06baa62 100644</span><br><span>--- a/python/demapping/gsm_bcch_ccch_demapper.py</span><br><span>+++ b/python/demapping/gsm_bcch_ccch_demapper.py</span><br><span>@@ -32,10 +32,10 @@</span><br><span> import grgsm</span><br><span> </span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-class gsm_bcch_ccch_demapper(grgsm.hier_block):</span><br><span style="color: hsl(120, 100%, 40%);">+class gsm_bcch_ccch_demapper(gr.hier_block2):</span><br><span> </span><br><span>     def __init__(self, timeslot_nr=0):</span><br><span style="color: hsl(0, 100%, 40%);">-        grgsm.hier_block.__init__(</span><br><span style="color: hsl(120, 100%, 40%);">+        gr.hier_block2.__init__(</span><br><span>             self, "BCCH + CCCH demapper",</span><br><span>             gr.io_signature(0, 0, 0),</span><br><span>             gr.io_signature(0, 0, 0),</span><br><span>diff --git a/python/demapping/gsm_bcch_ccch_sdcch4_demapper.py b/python/demapping/gsm_bcch_ccch_sdcch4_demapper.py</span><br><span>index bff67a4..f025a70 100644</span><br><span>--- a/python/demapping/gsm_bcch_ccch_sdcch4_demapper.py</span><br><span>+++ b/python/demapping/gsm_bcch_ccch_sdcch4_demapper.py</span><br><span>@@ -32,10 +32,10 @@</span><br><span> import grgsm</span><br><span> </span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-class gsm_bcch_ccch_sdcch4_demapper(grgsm.hier_block):</span><br><span style="color: hsl(120, 100%, 40%);">+class gsm_bcch_ccch_sdcch4_demapper(gr.hier_block2):</span><br><span> </span><br><span>     def __init__(self, timeslot_nr=0):</span><br><span style="color: hsl(0, 100%, 40%);">-        grgsm.hier_block.__init__(</span><br><span style="color: hsl(120, 100%, 40%);">+        gr.hier_block2.__init__(</span><br><span>             self, "BCCH + CCCH + SDCCH/4 demapper",</span><br><span>             gr.io_signature(0, 0, 0),</span><br><span>             gr.io_signature(0, 0, 0),</span><br><span>diff --git a/python/demapping/gsm_sdcch8_demapper.py b/python/demapping/gsm_sdcch8_demapper.py</span><br><span>index b412594..30450bf 100644</span><br><span>--- a/python/demapping/gsm_sdcch8_demapper.py</span><br><span>+++ b/python/demapping/gsm_sdcch8_demapper.py</span><br><span>@@ -32,10 +32,10 @@</span><br><span> import grgsm</span><br><span> </span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-class gsm_sdcch8_demapper(grgsm.hier_block):</span><br><span style="color: hsl(120, 100%, 40%);">+class gsm_sdcch8_demapper(gr.hier_block2):</span><br><span> </span><br><span>     def __init__(self, timeslot_nr=1):</span><br><span style="color: hsl(0, 100%, 40%);">-        grgsm.hier_block.__init__(</span><br><span style="color: hsl(120, 100%, 40%);">+        gr.hier_block2.__init__(</span><br><span>             self, "SDCCH/8 demapper",</span><br><span>             gr.io_signature(0, 0, 0),</span><br><span>             gr.io_signature(0, 0, 0),</span><br><span>diff --git a/python/misc_utils/CMakeLists.txt b/python/misc_utils/CMakeLists.txt</span><br><span>index 76304ca..57ed275 100644</span><br><span>--- a/python/misc_utils/CMakeLists.txt</span><br><span>+++ b/python/misc_utils/CMakeLists.txt</span><br><span>@@ -21,7 +21,6 @@</span><br><span>     FILES</span><br><span>     arfcn.py</span><br><span>     clock_offset_corrector_tagged.py</span><br><span style="color: hsl(0, 100%, 40%);">-    hier_block.py </span><br><span>     fn_time.py</span><br><span>     device.py</span><br><span>     DESTINATION ${GR_PYTHON_DIR}/grgsm</span><br><span>diff --git a/python/misc_utils/clock_offset_corrector_tagged.py b/python/misc_utils/clock_offset_corrector_tagged.py</span><br><span>index be55212..ea474b1 100644</span><br><span>--- a/python/misc_utils/clock_offset_corrector_tagged.py</span><br><span>+++ b/python/misc_utils/clock_offset_corrector_tagged.py</span><br><span>@@ -33,7 +33,7 @@</span><br><span> import math</span><br><span> </span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-class clock_offset_corrector_tagged(grgsm.hier_block):</span><br><span style="color: hsl(120, 100%, 40%);">+class clock_offset_corrector_tagged(gr.hier_block2):</span><br><span> </span><br><span>     def __init__(self, fc=936.6e6, osr=4, ppm=0, samp_rate_in=1625000.0/6.0*4.0):</span><br><span>         gr.hier_block2.__init__(</span><br><span>diff --git a/python/misc_utils/device.py b/python/misc_utils/device.py</span><br><span>index de967ab..ddd9dec 100644</span><br><span>--- a/python/misc_utils/device.py</span><br><span>+++ b/python/misc_utils/device.py</span><br><span>@@ -40,7 +40,7 @@</span><br><span>     return [dev for dev in devices if not match(dev, filters)]</span><br><span> </span><br><span> def get_all_args(hint="nofake"):</span><br><span style="color: hsl(0, 100%, 40%);">-    return map(lambda dev: dev.to_string(), exclude(get_devices(hint)))</span><br><span style="color: hsl(120, 100%, 40%);">+    return list(map(lambda dev: dev.to_string(), exclude(get_devices(hint))))</span><br><span> </span><br><span> def get_default_args(args):</span><br><span>     # The presence of GRC_BLOCKS_PATH environment variable indicates that</span><br><span>diff --git a/python/misc_utils/hier_block.py b/python/misc_utils/hier_block.py</span><br><span>deleted file mode 100644</span><br><span>index 0dc9c78..0000000</span><br><span>--- a/python/misc_utils/hier_block.py</span><br><span>+++ /dev/null</span><br><span>@@ -1,41 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-#!/usr/bin/env python2</span><br><span style="color: hsl(0, 100%, 40%);">-# -*- coding: utf-8 -*-</span><br><span style="color: hsl(0, 100%, 40%);">-# @file</span><br><span style="color: hsl(0, 100%, 40%);">-# @author (C) 2016 by Piotr Krysik <ptrkrysik@gmail.com></span><br><span style="color: hsl(0, 100%, 40%);">-# @section LICENSE</span><br><span style="color: hsl(0, 100%, 40%);">-#</span><br><span style="color: hsl(0, 100%, 40%);">-# Gr-gsm is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(0, 100%, 40%);">-# it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(0, 100%, 40%);">-# the Free Software Foundation; either version 3, or (at your option)</span><br><span style="color: hsl(0, 100%, 40%);">-# any later version.</span><br><span style="color: hsl(0, 100%, 40%);">-#</span><br><span style="color: hsl(0, 100%, 40%);">-# Gr-gsm is distributed in the hope that it will be useful,</span><br><span style="color: hsl(0, 100%, 40%);">-# but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(0, 100%, 40%);">-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(0, 100%, 40%);">-# GNU General Public License for more details.</span><br><span style="color: hsl(0, 100%, 40%);">-#</span><br><span style="color: hsl(0, 100%, 40%);">-# You should have received a copy of the GNU General Public License</span><br><span style="color: hsl(0, 100%, 40%);">-# along with gr-gsm; see the file COPYING.  If not, write to</span><br><span style="color: hsl(0, 100%, 40%);">-# the Free Software Foundation, Inc., 51 Franklin Street,</span><br><span style="color: hsl(0, 100%, 40%);">-# Boston, MA 02110-1301, USA.</span><br><span style="color: hsl(0, 100%, 40%);">-#</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-from gnuradio import gr</span><br><span style="color: hsl(0, 100%, 40%);">-from distutils.version import LooseVersion as version</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#class created to solve incompatibility of reginstration of message inputs</span><br><span style="color: hsl(0, 100%, 40%);">-#that was introduced in gnuradio 3.7.9</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-class hier_block(gr.hier_block2):</span><br><span style="color: hsl(0, 100%, 40%);">-    def message_port_register_hier_in(self, port_id):</span><br><span style="color: hsl(0, 100%, 40%);">-        if version(gr.version()) >= version('3.7.9'):</span><br><span style="color: hsl(0, 100%, 40%);">-            super(hier_block, self).message_port_register_hier_in(port_id)</span><br><span style="color: hsl(0, 100%, 40%);">-        else:</span><br><span style="color: hsl(0, 100%, 40%);">-            super(hier_block, self).message_port_register_hier_out(port_id)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-    def message_port_register_hier_out(self, port_id):</span><br><span style="color: hsl(0, 100%, 40%);">-        if version(gr.version()) >= version('3.7.9'):</span><br><span style="color: hsl(0, 100%, 40%);">-            super(hier_block, self).message_port_register_hier_out(port_id)</span><br><span style="color: hsl(0, 100%, 40%);">-        else:</span><br><span style="color: hsl(0, 100%, 40%);">-            super(hier_block, self).message_port_register_hier_in(port_id)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>diff --git a/python/qa_txtime_bursts_tagger.py b/python/qa_txtime_bursts_tagger.py</span><br><span>index bdbf1af..fd15b10 100755</span><br><span>--- a/python/qa_txtime_bursts_tagger.py</span><br><span>+++ b/python/qa_txtime_bursts_tagger.py</span><br><span>@@ -64,8 +64,8 @@</span><br><span>         </span><br><span>         tb.start()</span><br><span>         tb.wait()</span><br><span style="color: hsl(0, 100%, 40%);">-        print "Dupa"</span><br><span style="color: hsl(0, 100%, 40%);">-        print sink</span><br><span style="color: hsl(120, 100%, 40%);">+        print("Dupa")</span><br><span style="color: hsl(120, 100%, 40%);">+        print(sink)</span><br><span>         </span><br><span>         </span><br><span> #        msg1 = make_msg(1,"lol1")</span><br><span>diff --git a/python/receiver/fcch_detector.py b/python/receiver/fcch_detector.py</span><br><span>index 81438e2..9b787c2 100644</span><br><span>--- a/python/receiver/fcch_detector.py</span><br><span>+++ b/python/receiver/fcch_detector.py</span><br><span>@@ -36,10 +36,10 @@</span><br><span> from gnuradio.filter import firdes</span><br><span> import grgsm</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-class fcch_detector(grgsm.hier_block):</span><br><span style="color: hsl(120, 100%, 40%);">+class fcch_detector(gr.hier_block2):</span><br><span> </span><br><span>     def __init__(self, OSR=4):</span><br><span style="color: hsl(0, 100%, 40%);">-        grgsm.hier_block.__init__(</span><br><span style="color: hsl(120, 100%, 40%);">+        gr.hier_block2.__init__(</span><br><span>             self, "FCCH bursts detector",</span><br><span>             gr.io_signature(1, 1, gr.sizeof_gr_complex*1),</span><br><span>             gr.io_signature(1, 1, gr.sizeof_gr_complex*1),</span><br><span>diff --git a/python/receiver/gsm_input.py b/python/receiver/gsm_input.py</span><br><span>index 8c4ad51..05e323d 100644</span><br><span>--- a/python/receiver/gsm_input.py</span><br><span>+++ b/python/receiver/gsm_input.py</span><br><span>@@ -33,7 +33,7 @@</span><br><span> import grgsm</span><br><span> </span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-class gsm_input(grgsm.hier_block):</span><br><span style="color: hsl(120, 100%, 40%);">+class gsm_input(gr.hier_block2):</span><br><span> </span><br><span>     def __init__(self, fc=940e6, osr=4, ppm=0, samp_rate_in=1e6):</span><br><span>         gr.hier_block2.__init__(</span><br><span>diff --git a/python/transmitter/gsm_gmsk_mod.py b/python/transmitter/gsm_gmsk_mod.py</span><br><span>index e8ecc7a..fec936c 100644</span><br><span>--- a/python/transmitter/gsm_gmsk_mod.py</span><br><span>+++ b/python/transmitter/gsm_gmsk_mod.py</span><br><span>@@ -14,7 +14,7 @@</span><br><span> from gnuradio.filter import firdes</span><br><span> import grgsm</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-class gsm_gmsk_mod(grgsm.hier_block):</span><br><span style="color: hsl(120, 100%, 40%);">+class gsm_gmsk_mod(gr.hier_block2):</span><br><span> </span><br><span>     def __init__(self, BT=4, pulse_duration=4, sps=4):</span><br><span>         gr.hier_block2.__init__(</span><br><span>diff --git a/python/transmitter/txtime_bursts_tagger.py b/python/transmitter/txtime_bursts_tagger.py</span><br><span>index de42f65..952c8d1 100644</span><br><span>--- a/python/transmitter/txtime_bursts_tagger.py</span><br><span>+++ b/python/transmitter/txtime_bursts_tagger.py</span><br><span>@@ -22,7 +22,7 @@</span><br><span> # </span><br><span> </span><br><span> from gnuradio import gr</span><br><span style="color: hsl(0, 100%, 40%);">-from fn_time import fn_time_delta</span><br><span style="color: hsl(120, 100%, 40%);">+from .fn_time import fn_time_delta</span><br><span> import pmt</span><br><span> import numpy</span><br><span> </span><br><span>diff --git a/python/trx/__init__.py b/python/trx/__init__.py</span><br><span>index c8bddbe..23042b0 100644</span><br><span>--- a/python/trx/__init__.py</span><br><span>+++ b/python/trx/__init__.py</span><br><span>@@ -20,10 +20,10 @@</span><br><span> This is a set of helper classes for the grgsm_trx application.</span><br><span> '''</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from udp_link import UDPLink</span><br><span style="color: hsl(0, 100%, 40%);">-from ctrl_if import CTRLInterface</span><br><span style="color: hsl(0, 100%, 40%);">-from ctrl_if_bb import CTRLInterfaceBB</span><br><span style="color: hsl(0, 100%, 40%);">-from radio_if import RadioInterface</span><br><span style="color: hsl(0, 100%, 40%);">-from transceiver import Transceiver</span><br><span style="color: hsl(120, 100%, 40%);">+from .udp_link import UDPLink</span><br><span style="color: hsl(120, 100%, 40%);">+from .ctrl_if import CTRLInterface</span><br><span style="color: hsl(120, 100%, 40%);">+from .ctrl_if_bb import CTRLInterfaceBB</span><br><span style="color: hsl(120, 100%, 40%);">+from .radio_if import RadioInterface</span><br><span style="color: hsl(120, 100%, 40%);">+from .transceiver import Transceiver</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from dict_toggle_sign import dict_toggle_sign</span><br><span style="color: hsl(120, 100%, 40%);">+from .dict_toggle_sign import dict_toggle_sign</span><br><span>diff --git a/python/trx/ctrl_if.py b/python/trx/ctrl_if.py</span><br><span>index 1a7c0c3..d7e14f1 100644</span><br><span>--- a/python/trx/ctrl_if.py</span><br><span>+++ b/python/trx/ctrl_if.py</span><br><span>@@ -22,7 +22,7 @@</span><br><span> # with this program; if not, write to the Free Software Foundation, Inc.,</span><br><span> # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from udp_link import UDPLink</span><br><span style="color: hsl(120, 100%, 40%);">+from .udp_link import UDPLink</span><br><span> </span><br><span> class CTRLInterface(UDPLink):</span><br><span>  def handle_rx(self, data, remote):</span><br><span>diff --git a/python/trx/ctrl_if_bb.py b/python/trx/ctrl_if_bb.py</span><br><span>index 4814263..1c21c55 100644</span><br><span>--- a/python/trx/ctrl_if_bb.py</span><br><span>+++ b/python/trx/ctrl_if_bb.py</span><br><span>@@ -22,7 +22,7 @@</span><br><span> # with this program; if not, write to the Free Software Foundation, Inc.,</span><br><span> # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from ctrl_if import CTRLInterface</span><br><span style="color: hsl(120, 100%, 40%);">+from .ctrl_if import CTRLInterface</span><br><span> </span><br><span> class CTRLInterfaceBB(CTRLInterface):</span><br><span>      def __init__(self, trx, *ctrl_if_args):</span><br><span>diff --git a/python/trx/radio_if.py b/python/trx/radio_if.py</span><br><span>index 0d844c0..acbc3cd 100644</span><br><span>--- a/python/trx/radio_if.py</span><br><span>+++ b/python/trx/radio_if.py</span><br><span>@@ -38,7 +38,7 @@</span><br><span> from gnuradio import filter</span><br><span> from gnuradio.filter import firdes</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from dict_toggle_sign import dict_toggle_sign</span><br><span style="color: hsl(120, 100%, 40%);">+from .dict_toggle_sign import dict_toggle_sign</span><br><span> </span><br><span> class RadioInterface(gr.top_block):</span><br><span>    # PHY specific variables</span><br><span>diff --git a/python/trx/radio_if_uhd.py b/python/trx/radio_if_uhd.py</span><br><span>index ef2e0ed..664a51c 100644</span><br><span>--- a/python/trx/radio_if_uhd.py</span><br><span>+++ b/python/trx/radio_if_uhd.py</span><br><span>@@ -24,7 +24,7 @@</span><br><span> </span><br><span> from gnuradio import uhd</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from radio_if import RadioInterface</span><br><span style="color: hsl(120, 100%, 40%);">+from .radio_if import RadioInterface</span><br><span> </span><br><span> class RadioInterfaceUHD(RadioInterface):</span><br><span>       # Human-readable description</span><br><span>diff --git a/python/trx/transceiver.py b/python/trx/transceiver.py</span><br><span>index 837a61f..4e706e3 100644</span><br><span>--- a/python/trx/transceiver.py</span><br><span>+++ b/python/trx/transceiver.py</span><br><span>@@ -22,7 +22,7 @@</span><br><span> # with this program; if not, write to the Free Software Foundation, Inc.,</span><br><span> # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-from ctrl_if_bb import CTRLInterfaceBB</span><br><span style="color: hsl(120, 100%, 40%);">+from .ctrl_if_bb import CTRLInterfaceBB</span><br><span> </span><br><span> class Transceiver:</span><br><span>         """ Base transceiver implementation.</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/gr-gsm/+/24063">change 24063</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/gr-gsm/+/24063"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: gr-gsm </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I5ca8fd340823996e8c444aaf18ddacd85c92ab1c </div>
<div style="display:none"> Gerrit-Change-Number: 24063 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: ptrkrysik <ptrkrysik@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: vvvelichkov <vvvelichkov@gmail.com> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>