Big change of the universal control channels demapper:
-simplification of the universal demapper,
-addition of hierarhical blocks for each of the demappers - so they also look well and readable in python,
-addition of helper script for compilation of the demappers.
diff --git a/apps/grgsm_decode b/apps/grgsm_decode
index 4be199d..8f412bf 100755
--- a/apps/grgsm_decode
+++ b/apps/grgsm_decode
@@ -88,17 +88,11 @@
             self.subslot_filter = grgsm.burst_sdcch_subslot_filter(grgsm.SS_FILTER_SDCCH8, self.subslot)
 
         if self.chan_mode == 'BCCH':
-            self.bcch_demapper = grgsm.universal_ctrl_chans_demapper(self.timeslot,
-                                                                     ([2, 6, 12, 16, 22, 26, 32, 36, 42, 46]),
-                                                                     ([1, 2, 2, 2, 2, 2, 2, 2, 2, 2]))
+            self.bcch_demapper = grgsm.gsm_bcch_ccch_demapper(self.timeslot)
         elif self.chan_mode == 'BCCH_SDCCH4':
-            self.bcch_sdcch4_demapper = grgsm.universal_ctrl_chans_demapper(self.timeslot,
-                                                                            ([2, 6, 12, 16, 22, 26, 32, 36, 42, 46]),
-                                                                            ([1, 2, 2, 2, 7, 7, 7, 7, 135, 135]))
+            self.bcch_sdcch4_demapper = grgsm.gsm_bcch_ccch_sdcch4_demapper(self.timeslot)
         elif self.chan_mode == 'SDCCH8':
-            self.sdcch8_demapper = grgsm.universal_ctrl_chans_demapper(self.timeslot,
-                                                                       ([0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44]),
-                                                                       ([8, 8, 8, 8, 8, 8, 8, 8, 136, 136, 136, 136]))
+            self.sdcch8_demapper = grgsm.gsm_sdcch8_demapper(self.timeslot)
         elif self.chan_mode == 'TCHF':
             self.tch_f_demapper = grgsm.tch_f_chans_demapper(self.timeslot)
             self.tch_f_decoder = grgsm.tch_f_decoder(speech_codec, speech_file)
diff --git a/apps/grgsm_livemon b/apps/grgsm_livemon
index 6c58e08..1d37970 100755
--- a/apps/grgsm_livemon
+++ b/apps/grgsm_livemon
@@ -140,7 +140,7 @@
         
         self._qtgui_freq_sink_x_0_win = sip.wrapinstance(self.qtgui_freq_sink_x_0.pyqwidget(), Qt.QWidget)
         self.top_layout.addWidget(self._qtgui_freq_sink_x_0_win)
-        self.gsm_sdcch8_demapper_0 = grgsm.universal_ctrl_chans_demapper(1, ([0,4,8,12,16,20,24,28,32,36,40,44]), ([8,8,8,8,8,8,8,8,136,136,136,136]))
+        self.gsm_sdcch8_demapper_0 = grgsm.gsm_sdcch8_demapper(1)
         self.gsm_receiver_0 = grgsm.receiver(4, ([0]), ([]))
         self.gsm_message_printer_1 = grgsm.message_printer(pmt.intern(""), False)
         self.gsm_input_0 = grgsm.gsm_input(
@@ -153,7 +153,7 @@
         self.gsm_control_channels_decoder_0_0 = grgsm.control_channels_decoder()
         self.gsm_control_channels_decoder_0 = grgsm.control_channels_decoder()
         self.gsm_clock_offset_control_0 = grgsm.clock_offset_control(fc-shiftoff)
-        self.gsm_bcch_ccch_demapper_0 = grgsm.universal_ctrl_chans_demapper(0, ([2,6,12,16,22,26,32,36,42,46]), ([1,2,2,2,2,2,2,2,2,2]))
+        self.gsm_bcch_ccch_demapper_0 = grgsm.gsm_bcch_ccch_demapper(0)
         self.blocks_socket_pdu_0_0 = blocks.socket_pdu("UDP_SERVER", "127.0.0.1", "4729", 10000)
         self.blocks_socket_pdu_0 = blocks.socket_pdu("UDP_CLIENT", "127.0.0.1", "4729", 10000)
         self.blocks_rotator_cc_0 = blocks.rotator_cc(-2*pi*shiftoff/samp_rate)
diff --git a/apps/grgsm_scanner b/apps/grgsm_scanner
index 94bba43..ebfdb7a 100755
--- a/apps/grgsm_scanner
+++ b/apps/grgsm_scanner
@@ -77,7 +77,7 @@
         )
         self.gsm_control_channels_decoder_0 = grgsm.control_channels_decoder()
         self.gsm_clock_offset_control_0 = grgsm.clock_offset_control(fc)
-        self.gsm_bcch_ccch_demapper_0 = grgsm.universal_ctrl_chans_demapper(0, ([2,6,12,16,22,26,32,36,42,46]), ([1,2,2,2,2,2,2,2,2,2]))
+        self.gsm_bcch_ccch_demapper_0 = grgsm.gsm_bcch_ccch_demapper(0)
 
         ##################################################
         # Connections