Fixing missing callback to set_fc in clock_offset_control block
diff --git a/apps/grgsm_livemon b/apps/grgsm_livemon
index 1ec5ecb..3e818c5 100755
--- a/apps/grgsm_livemon
+++ b/apps/grgsm_livemon
@@ -25,7 +25,7 @@
 # Title: Gr-gsm Livemon
 # Author: Piotr Krysik
 # Description: Interactive monitor of a single C0 channel with analysis performed by Wireshark (command to run wireshark: sudo wireshark -k -f udp -Y gsmtap -i lo)
-# Generated: Sun Aug 27 08:34:42 2017
+# Generated: Tue Jan 23 14:59:18 2018
 ##################################################
 
 if __name__ == '__main__':
@@ -54,14 +54,16 @@
 import sip
 import sys
 import time
+from gnuradio import qtgui
 
 
 class grgsm_livemon(gr.top_block, Qt.QWidget):
 
-    def __init__(self, args="", collector="localhost", collectorport="4729", fc=941.8e6, gain=30, osr=4, ppm=0, samp_rate=2000000.052982, serverport="4729", shiftoff=400e3):
+    def __init__(self, args="", collector='localhost', collectorport='4729', fc=941.8e6, gain=30, osr=4, ppm=0, samp_rate=2000000.052982, serverport='4729', shiftoff=400e3):
         gr.top_block.__init__(self, "Gr-gsm Livemon")
         Qt.QWidget.__init__(self)
         self.setWindowTitle("Gr-gsm Livemon")
+        qtgui.util.check_set_qss()
         try:
             self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc'))
         except:
@@ -81,6 +83,7 @@
         self.settings = Qt.QSettings("GNU Radio", "grgsm_livemon")
         self.restoreGeometry(self.settings.value("geometry").toByteArray())
 
+
         ##################################################
         # Parameters
         ##################################################
@@ -99,20 +102,20 @@
         # Variables
         ##################################################
         self.ppm_slider = ppm_slider = ppm
-        self.g_slider = g_slider = gain
+        self.gain_slider = gain_slider = gain
         self.fc_slider = fc_slider = fc
 
         ##################################################
         # Blocks
         ##################################################
         self._ppm_slider_range = Range(-150, 150, 0.1, ppm, 100)
-        self._ppm_slider_win = RangeWidget(self._ppm_slider_range, self.set_ppm_slider, "PPM Offset", "counter", float)
+        self._ppm_slider_win = RangeWidget(self._ppm_slider_range, self.set_ppm_slider, 'PPM Offset', "counter", float)
         self.top_layout.addWidget(self._ppm_slider_win)
-        self._g_slider_range = Range(0, 50, 0.5, gain, 100)
-        self._g_slider_win = RangeWidget(self._g_slider_range, self.set_g_slider, "Gain", "counter", float)
-        self.top_layout.addWidget(self._g_slider_win)
+        self._gain_slider_range = Range(0, 100, 0.5, gain, 100)
+        self._gain_slider_win = RangeWidget(self._gain_slider_range, self.set_gain_slider, 'Gain', "counter", float)
+        self.top_layout.addWidget(self._gain_slider_win)
         self._fc_slider_range = Range(800e6, 1990e6, 2e5, fc, 100)
-        self._fc_slider_win = RangeWidget(self._fc_slider_range, self.set_fc_slider, "Frequency", "counter_slider", float)
+        self._fc_slider_win = RangeWidget(self._fc_slider_range, self.set_fc_slider, 'Frequency', "counter_slider", float)
         self.top_layout.addWidget(self._fc_slider_win)
         self.rtlsdr_source_0 = osmosdr.source( args="numchan=" + str(1) + " " + args )
         self.rtlsdr_source_0.set_sample_rate(samp_rate)
@@ -121,12 +124,12 @@
         self.rtlsdr_source_0.set_dc_offset_mode(2, 0)
         self.rtlsdr_source_0.set_iq_balance_mode(2, 0)
         self.rtlsdr_source_0.set_gain_mode(False, 0)
-        self.rtlsdr_source_0.set_gain(g_slider, 0)
+        self.rtlsdr_source_0.set_gain(gain_slider, 0)
         self.rtlsdr_source_0.set_if_gain(20, 0)
         self.rtlsdr_source_0.set_bb_gain(20, 0)
-        self.rtlsdr_source_0.set_antenna("", 0)
+        self.rtlsdr_source_0.set_antenna('', 0)
         self.rtlsdr_source_0.set_bandwidth(250e3+abs(shiftoff), 0)
-          
+
         self.qtgui_freq_sink_x_0 = qtgui.freq_sink_c(
         	1024, #size
         	firdes.WIN_BLACKMAN_hARRIS, #wintype
@@ -137,20 +140,22 @@
         )
         self.qtgui_freq_sink_x_0.set_update_time(0.10)
         self.qtgui_freq_sink_x_0.set_y_axis(-140, 10)
+        self.qtgui_freq_sink_x_0.set_y_label('Relative Gain', 'dB')
         self.qtgui_freq_sink_x_0.set_trigger_mode(qtgui.TRIG_MODE_FREE, 0.0, 0, "")
         self.qtgui_freq_sink_x_0.enable_autoscale(False)
         self.qtgui_freq_sink_x_0.enable_grid(False)
         self.qtgui_freq_sink_x_0.set_fft_average(1.0)
+        self.qtgui_freq_sink_x_0.enable_axis_labels(True)
         self.qtgui_freq_sink_x_0.enable_control_panel(False)
-        
+
         if not True:
           self.qtgui_freq_sink_x_0.disable_legend()
-        
+
         if "complex" == "float" or "complex" == "msg_float":
           self.qtgui_freq_sink_x_0.set_plot_pos_half(not True)
-        
-        labels = ["", "", "", "", "",
-                  "", "", "", "", ""]
+
+        labels = ['', '', '', '', '',
+                  '', '', '', '', '']
         widths = [1, 1, 1, 1, 1,
                   1, 1, 1, 1, 1]
         colors = ["blue", "red", "green", "black", "cyan",
@@ -165,7 +170,7 @@
             self.qtgui_freq_sink_x_0.set_line_width(i, widths[i])
             self.qtgui_freq_sink_x_0.set_line_color(i, colors[i])
             self.qtgui_freq_sink_x_0.set_line_alpha(i, alphas[i])
-        
+
         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.gsm_sdcch8_demapper(
@@ -177,44 +182,45 @@
         self.gsm_input_0 = grgsm.gsm_input(
             ppm=ppm-int(ppm),
             osr=4,
-            fc=fc,
+            fc=fc_slider-shiftoff,
             samp_rate_in=samp_rate,
         )
         self.gsm_decryption_0 = grgsm.decryption(([]), 1)
         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, samp_rate, osr)
+        self.gsm_clock_offset_control_0 = grgsm.clock_offset_control(fc_slider-shiftoff, samp_rate, osr)
         self.gsm_bcch_ccch_demapper_0 = grgsm.gsm_bcch_ccch_demapper(
             timeslot_nr=0,
         )
         self.blocks_socket_pdu_0_1 = blocks.socket_pdu("UDP_CLIENT", collector, collectorport, 1500, False)
-        self.blocks_socket_pdu_0_0 = blocks.socket_pdu("UDP_SERVER", "127.0.0.1", serverport, 10000, False)
+        self.blocks_socket_pdu_0_0 = blocks.socket_pdu("UDP_SERVER", '127.0.0.1', serverport, 10000, False)
         self.blocks_rotator_cc_0 = blocks.rotator_cc(-2*pi*shiftoff/samp_rate)
 
+
+
         ##################################################
         # Connections
         ##################################################
-        self.msg_connect((self.blocks_socket_pdu_0_0, 'pdus'), (self.gsm_message_printer_1, 'msgs'))    
-        self.msg_connect((self.gsm_bcch_ccch_demapper_0, 'bursts'), (self.gsm_control_channels_decoder_0, 'bursts'))    
-        self.msg_connect((self.gsm_clock_offset_control_0, 'ctrl'), (self.gsm_input_0, 'ctrl_in'))    
-        self.msg_connect((self.gsm_control_channels_decoder_0, 'msgs'), (self.blocks_socket_pdu_0_1, 'pdus'))    
-        self.msg_connect((self.gsm_control_channels_decoder_0_0, 'msgs'), (self.blocks_socket_pdu_0_1, 'pdus'))    
-        self.msg_connect((self.gsm_decryption_0, 'bursts'), (self.gsm_control_channels_decoder_0_0, 'bursts'))    
-        self.msg_connect((self.gsm_receiver_0, 'C0'), (self.gsm_bcch_ccch_demapper_0, 'bursts'))    
-        self.msg_connect((self.gsm_receiver_0, 'measurements'), (self.gsm_clock_offset_control_0, 'measurements'))    
-        self.msg_connect((self.gsm_receiver_0, 'C0'), (self.gsm_sdcch8_demapper_0, 'bursts'))    
-        self.msg_connect((self.gsm_sdcch8_demapper_0, 'bursts'), (self.gsm_decryption_0, 'bursts'))    
-        self.connect((self.blocks_rotator_cc_0, 0), (self.gsm_input_0, 0))    
-        self.connect((self.blocks_rotator_cc_0, 0), (self.qtgui_freq_sink_x_0, 0))    
-        self.connect((self.gsm_input_0, 0), (self.gsm_receiver_0, 0))    
-        self.connect((self.rtlsdr_source_0, 0), (self.blocks_rotator_cc_0, 0))    
+        self.msg_connect((self.blocks_socket_pdu_0_0, 'pdus'), (self.gsm_message_printer_1, 'msgs'))
+        self.msg_connect((self.gsm_bcch_ccch_demapper_0, 'bursts'), (self.gsm_control_channels_decoder_0, 'bursts'))
+        self.msg_connect((self.gsm_clock_offset_control_0, 'ctrl'), (self.gsm_input_0, 'ctrl_in'))
+        self.msg_connect((self.gsm_control_channels_decoder_0, 'msgs'), (self.blocks_socket_pdu_0_1, 'pdus'))
+        self.msg_connect((self.gsm_control_channels_decoder_0_0, 'msgs'), (self.blocks_socket_pdu_0_1, 'pdus'))
+        self.msg_connect((self.gsm_decryption_0, 'bursts'), (self.gsm_control_channels_decoder_0_0, 'bursts'))
+        self.msg_connect((self.gsm_receiver_0, 'C0'), (self.gsm_bcch_ccch_demapper_0, 'bursts'))
+        self.msg_connect((self.gsm_receiver_0, 'measurements'), (self.gsm_clock_offset_control_0, 'measurements'))
+        self.msg_connect((self.gsm_receiver_0, 'C0'), (self.gsm_sdcch8_demapper_0, 'bursts'))
+        self.msg_connect((self.gsm_sdcch8_demapper_0, 'bursts'), (self.gsm_decryption_0, 'bursts'))
+        self.connect((self.blocks_rotator_cc_0, 0), (self.gsm_input_0, 0))
+        self.connect((self.blocks_rotator_cc_0, 0), (self.qtgui_freq_sink_x_0, 0))
+        self.connect((self.gsm_input_0, 0), (self.gsm_receiver_0, 0))
+        self.connect((self.rtlsdr_source_0, 0), (self.blocks_rotator_cc_0, 0))
 
     def closeEvent(self, event):
         self.settings = Qt.QSettings("GNU Radio", "grgsm_livemon")
         self.settings.setValue("geometry", self.saveGeometry())
         event.accept()
 
-
     def get_args(self):
         return self.args
 
@@ -239,14 +245,13 @@
     def set_fc(self, fc):
         self.fc = fc
         self.set_fc_slider(self.fc)
-        self.gsm_input_0.set_fc(self.fc)
 
     def get_gain(self):
         return self.gain
 
     def set_gain(self, gain):
         self.gain = gain
-        self.set_g_slider(self.gain)
+        self.set_gain_slider(self.gain)
 
     def get_osr(self):
         return self.osr
@@ -267,10 +272,10 @@
 
     def set_samp_rate(self, samp_rate):
         self.samp_rate = samp_rate
-        self.blocks_rotator_cc_0.set_phase_inc(-2*pi*self.shiftoff/self.samp_rate)
-        self.gsm_input_0.set_samp_rate_in(self.samp_rate)
-        self.qtgui_freq_sink_x_0.set_frequency_range(self.fc_slider, self.samp_rate)
         self.rtlsdr_source_0.set_sample_rate(self.samp_rate)
+        self.qtgui_freq_sink_x_0.set_frequency_range(self.fc_slider, self.samp_rate)
+        self.gsm_input_0.set_samp_rate_in(self.samp_rate)
+        self.blocks_rotator_cc_0.set_phase_inc(-2*pi*self.shiftoff/self.samp_rate)
 
     def get_serverport(self):
         return self.serverport
@@ -283,9 +288,11 @@
 
     def set_shiftoff(self, shiftoff):
         self.shiftoff = shiftoff
-        self.blocks_rotator_cc_0.set_phase_inc(-2*pi*self.shiftoff/self.samp_rate)
         self.rtlsdr_source_0.set_center_freq(self.fc_slider-self.shiftoff, 0)
         self.rtlsdr_source_0.set_bandwidth(250e3+abs(self.shiftoff), 0)
+        self.gsm_input_0.set_fc(self.fc_slider-self.shiftoff)
+        self.gsm_clock_offset_control_0.set_fc(self.fc_slider-self.shiftoff)
+        self.blocks_rotator_cc_0.set_phase_inc(-2*pi*self.shiftoff/self.samp_rate)
 
     def get_ppm_slider(self):
         return self.ppm_slider
@@ -294,32 +301,35 @@
         self.ppm_slider = ppm_slider
         self.rtlsdr_source_0.set_freq_corr(self.ppm_slider, 0)
 
-    def get_g_slider(self):
-        return self.g_slider
+    def get_gain_slider(self):
+        return self.gain_slider
 
-    def set_g_slider(self, g_slider):
-        self.g_slider = g_slider
-        self.rtlsdr_source_0.set_gain(self.g_slider, 0)
+    def set_gain_slider(self, gain_slider):
+        self.gain_slider = gain_slider
+        self.rtlsdr_source_0.set_gain(self.gain_slider, 0)
 
     def get_fc_slider(self):
         return self.fc_slider
 
     def set_fc_slider(self, fc_slider):
         self.fc_slider = fc_slider
-        self.qtgui_freq_sink_x_0.set_frequency_range(self.fc_slider, self.samp_rate)
         self.rtlsdr_source_0.set_center_freq(self.fc_slider-self.shiftoff, 0)
+        self.qtgui_freq_sink_x_0.set_frequency_range(self.fc_slider, self.samp_rate)
+        self.gsm_input_0.set_fc(self.fc_slider-self.shiftoff)
+        self.gsm_clock_offset_control_0.set_fc(self.fc_slider-self.shiftoff)
 
 
 def argument_parser():
-    parser = OptionParser(option_class=eng_option, usage="%prog: [options]")
+    description = 'Interactive monitor of a single C0 channel with analysis performed by Wireshark (command to run wireshark: sudo wireshark -k -f udp -Y gsmtap -i lo)'
+    parser = OptionParser(usage="%prog: [options]", option_class=eng_option, description=description)
     parser.add_option(
         "", "--args", dest="args", type="string", default="",
         help="Set Device Arguments [default=%default]")
     parser.add_option(
-        "", "--collector", dest="collector", type="string", default="localhost",
+        "", "--collector", dest="collector", type="string", default='localhost',
         help="Set IP or DNS name of collector point [default=%default]")
     parser.add_option(
-        "", "--collectorport", dest="collectorport", type="string", default="4729",
+        "", "--collectorport", dest="collectorport", type="string", default='4729',
         help="Set UDP port number of collector [default=%default]")
     parser.add_option(
         "-f", "--fc", dest="fc", type="eng_float", default=eng_notation.num_to_str(941.8e6),
@@ -337,7 +347,7 @@
         "-s", "--samp-rate", dest="samp_rate", type="eng_float", default=eng_notation.num_to_str(2000000.052982),
         help="Set samp_rate [default=%default]")
     parser.add_option(
-        "", "--serverport", dest="serverport", type="string", default="4729",
+        "", "--serverport", dest="serverport", type="string", default='4729',
         help="Set UDP server listening port [default=%default]")
     parser.add_option(
         "-o", "--shiftoff", dest="shiftoff", type="eng_float", default=eng_notation.num_to_str(400e3),