Fixed all hierarchical blocks in the project
by adding a hier_block class that solves incompatibility between GNU Radio >=3.7.9 and <=3.7.8
and inheriting all hierarchical blocks from it.
This commit fixes #135
diff --git a/apps/airprobe_rtlsdr_scanner.py b/apps/airprobe_rtlsdr_scanner.py
index 3ead0c9..4fd7c88 100755
--- a/apps/airprobe_rtlsdr_scanner.py
+++ b/apps/airprobe_rtlsdr_scanner.py
@@ -40,16 +40,16 @@
 
 #from wideband_receiver import *
 
-class receiver_with_decoder(gr.hier_block2):
+class receiver_with_decoder(grgsm.hier_block):
 
     def __init__(self, OSR=4, chan_num=0, fc=939.4e6, ppm=0, samp_rate=0.2e6):
-        gr.hier_block2.__init__(
+        grgsm.hier_block.__init__(
             self, "Receiver With Decoder",
             gr.io_signature(1, 1, gr.sizeof_gr_complex*1),
             gr.io_signature(0, 0, 0),
         )
-        self.message_port_register_hier_in("bursts")
-        self.message_port_register_hier_in("msgs")
+        self.message_port_register_hier_out("bursts")
+        self.message_port_register_hier_out("msgs")
 
         ##################################################
         # Parameters
@@ -134,16 +134,16 @@
         self.samp_rate_out = samp_rate_out
 
 
-class wideband_receiver(gr.hier_block2):
+class wideband_receiver(grgsm.hier_block):
 
     def __init__(self, OSR=4, fc=939.4e6, samp_rate=0.4e6):
-        gr.hier_block2.__init__(
+        grgsm.hier_block.__init__(
             self, "Wideband receiver",
             gr.io_signature(1, 1, gr.sizeof_gr_complex*1),
             gr.io_signature(0, 0, 0),
         )
-        self.message_port_register_hier_in("bursts")
-        self.message_port_register_hier_in("msgs")
+        self.message_port_register_hier_out("bursts")
+        self.message_port_register_hier_out("msgs")
         self.__init(OSR, fc, samp_rate)
     
     def __init(self, OSR=4, fc=939.4e6, samp_rate=0.4e6):
diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt
index f68100a..04a97c2 100644
--- a/python/CMakeLists.txt
+++ b/python/CMakeLists.txt
@@ -38,7 +38,8 @@
     receiver/fcch_detector.py
     receiver/chirpz.py
     misc_utils/arfcn.py
-    misc_utils/clock_offset_corrector.py DESTINATION ${GR_PYTHON_DIR}/grgsm
+    misc_utils/clock_offset_corrector.py 
+    misc_utils/hier_block.py DESTINATION ${GR_PYTHON_DIR}/grgsm
 )
 
 ########################################################################
diff --git a/python/__init__.py b/python/__init__.py
index 0c50bdb..247c040 100644
--- a/python/__init__.py
+++ b/python/__init__.py
@@ -46,12 +46,14 @@
 
 # import any pure python here
 
+from hier_block import hier_block
 from fcch_burst_tagger import fcch_burst_tagger
 from sch_detector import sch_detector
 from fcch_detector import fcch_detector
 from clock_offset_corrector import clock_offset_corrector
 from gsm_input import gsm_input
 from gsm_wideband_input import gsm_wideband_input
+
 import arfcn
 
 
diff --git a/python/misc_utils/clock_offset_corrector.py b/python/misc_utils/clock_offset_corrector.py
index 403b513..b75d682 100644
--- a/python/misc_utils/clock_offset_corrector.py
+++ b/python/misc_utils/clock_offset_corrector.py
@@ -14,19 +14,16 @@
 import grgsm
 import math
 
-class clock_offset_corrector(gr.hier_block2):
+class clock_offset_corrector(grgsm.hier_block):
 
     def __init__(self, fc=936.6e6, ppm=0, samp_rate_in=1625000.0/6.0*4.0):
-        gr.hier_block2.__init__(
+        grgsm.hier_block.__init__(
             self, "Clock offset corrector",
             gr.io_signature(1, 1, gr.sizeof_gr_complex*1),
             gr.io_signature(1, 1, gr.sizeof_gr_complex*1),
         )
-        if version(gr.version()) >= version('3.7.9'):
-            self.message_port_register_hier_in("ppm_in")
-        else:
-            self.message_port_register_hier_out("ppm_in")
-
+        self.message_port_register_hier_in("ppm_in")
+        
         ##################################################
         # Parameters
         ##################################################
diff --git a/python/misc_utils/hier_block.py b/python/misc_utils/hier_block.py
new file mode 100644
index 0000000..a3ca1e6
--- /dev/null
+++ b/python/misc_utils/hier_block.py
@@ -0,0 +1,19 @@
+from gnuradio import gr
+from distutils.version import LooseVersion as version
+
+#class created to solve incompatibility of reginstration of message inputs
+#that was introduced in gnuradio 3.7.9
+
+class hier_block(gr.hier_block2):
+    def message_port_register_hier_in(self, port_id):
+        if version(gr.version()) >= version('3.7.9'):
+            super(hier_block, self).message_port_register_hier_in(port_id)
+        else:
+            super(hier_block, self).message_port_register_hier_out(port_id)
+
+    def message_port_register_hier_out(self, port_id):
+        if version(gr.version()) >= version('3.7.9'):
+            super(hier_block, self).message_port_register_hier_out(port_id)
+        else:
+            super(hier_block, self).message_port_register_hier_in(port_id)
+
diff --git a/python/receiver/fcch_detector.py b/python/receiver/fcch_detector.py
index 70a3459..2f2a4ab 100644
--- a/python/receiver/fcch_detector.py
+++ b/python/receiver/fcch_detector.py
@@ -15,10 +15,10 @@
 from gnuradio.filter import firdes
 import grgsm
 
-class fcch_detector(gr.hier_block2):
+class fcch_detector(grgsm.hier_block):
 
     def __init__(self, OSR=4):
-        gr.hier_block2.__init__(
+        grgsm.hier_block.__init__(
             self, "FCCH bursts detector",
             gr.io_signature(1, 1, gr.sizeof_gr_complex*1),
             gr.io_signature(1, 1, gr.sizeof_gr_complex*1),
diff --git a/python/receiver/gsm_input.py b/python/receiver/gsm_input.py
index 191f950..2de2f03 100644
--- a/python/receiver/gsm_input.py
+++ b/python/receiver/gsm_input.py
@@ -13,10 +13,10 @@
 from distutils.version import LooseVersion as version
 import grgsm
 
-class gsm_input(gr.hier_block2):
+class gsm_input(grgsm.hier_block):
 
     def __init__(self, ppm=0, osr=4, fc=940e6, samp_rate_in=1e6):
-        gr.hier_block2.__init__(
+        grgsm.hier_block.__init__(
             self, "GSM input adaptor",
             gr.io_signature(1, 1, gr.sizeof_gr_complex*1),
             gr.io_signature(1, 1, gr.sizeof_gr_complex*1),
diff --git a/python/receiver/gsm_wideband_input.py b/python/receiver/gsm_wideband_input.py
index 3138885..9dee08d 100644
--- a/python/receiver/gsm_wideband_input.py
+++ b/python/receiver/gsm_wideband_input.py
@@ -14,10 +14,10 @@
 import grgsm.arfcn as arfcn
 import grgsm
 
-class gsm_wideband_input(gr.hier_block2):
+class gsm_wideband_input(grgsm.hier_block):
     def __init__(self, ppm=0, osr=4, fc=925.2e6, samp_rate_in=20e6, ca=[]):
         self.num_streams = len(ca)
-        gr.hier_block2.__init__(
+        grgsm.hier_block.__init__(
             self, "GSM wideband input adaptor",
             gr.io_signature(1, 1, gr.sizeof_gr_complex*1),
             gr.io_signature(self.num_streams, self.num_streams, gr.sizeof_gr_complex*1),