diff options
author | Piotr Krysik <ptrkrysik@gmail.com> | 2018-01-23 15:07:08 +0100 |
---|---|---|
committer | Piotr Krysik <ptrkrysik@gmail.com> | 2018-01-23 15:07:08 +0100 |
commit | f0c83d84e09573bcbf7fcb2abb8dce7579448e55 (patch) | |
tree | dd2c5298d07687196339badb91c42f1e29a022cf /apps | |
parent | 6ab710034a2db4a89eef8539694da5b5e7a78c9d (diff) |
Fixing missing callback to set_fc in clock_offset_control block
Diffstat (limited to 'apps')
-rwxr-xr-x | apps/grgsm_livemon | 112 | ||||
-rw-r--r-- | apps/grgsm_livemon.grc | 68 |
2 files changed, 125 insertions, 55 deletions
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 pmt 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 @@ class grgsm_livemon(gr.top_block, Qt.QWidget): self.settings = Qt.QSettings("GNU Radio", "grgsm_livemon") self.restoreGeometry(self.settings.value("geometry").toByteArray()) + ################################################## # Parameters ################################################## @@ -99,20 +102,20 @@ class grgsm_livemon(gr.top_block, Qt.QWidget): # 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 @@ class grgsm_livemon(gr.top_block, Qt.QWidget): 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 @@ class grgsm_livemon(gr.top_block, Qt.QWidget): ) 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 @@ class grgsm_livemon(gr.top_block, Qt.QWidget): 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 @@ class grgsm_livemon(gr.top_block, Qt.QWidget): 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 @@ class grgsm_livemon(gr.top_block, Qt.QWidget): 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 @@ class grgsm_livemon(gr.top_block, Qt.QWidget): 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 @@ class grgsm_livemon(gr.top_block, Qt.QWidget): 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 @@ class grgsm_livemon(gr.top_block, Qt.QWidget): 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 @@ def argument_parser(): "-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), diff --git a/apps/grgsm_livemon.grc b/apps/grgsm_livemon.grc index d32a802..3d2236d 100644 --- a/apps/grgsm_livemon.grc +++ b/apps/grgsm_livemon.grc @@ -1,5 +1,5 @@ <?xml version='1.0' encoding='utf-8'?> -<?grc format='1' created='3.7.9'?> +<?grc format='1' created='3.7.12'?> <flow_graph> <timestamp>Sat Dec 13 10:49:59 2014</timestamp> <block> @@ -73,6 +73,10 @@ <value>True</value> </param> <param> + <key>sizing_mode</key> + <value>fixed</value> + </param> + <param> <key>thread_safe_setters</key> <value></value> </param> @@ -80,6 +84,10 @@ <key>title</key> <value>Gr-gsm Livemon</value> </param> + <param> + <key>placement</key> + <value>(0,0)</value> + </param> </block> <block> <key>variable_qtgui_range</key> @@ -196,7 +204,7 @@ </param> <param> <key>stop</key> - <value>50</value> + <value>100</value> </param> <param> <key>rangeType</key> @@ -305,6 +313,10 @@ <value></value> </param> <param> + <key>hide</key> + <value>none</value> + </param> + <param> <key>type</key> <value>string</value> </param> @@ -509,6 +521,10 @@ <value></value> </param> <param> + <key>hide</key> + <value>none</value> + </param> + <param> <key>type</key> <value>string</value> </param> @@ -552,6 +568,10 @@ <value></value> </param> <param> + <key>hide</key> + <value>none</value> + </param> + <param> <key>type</key> <value>string</value> </param> @@ -595,6 +615,10 @@ <value>f</value> </param> <param> + <key>hide</key> + <value>none</value> + </param> + <param> <key>type</key> <value>eng_float</value> </param> @@ -638,6 +662,10 @@ <value>g</value> </param> <param> + <key>hide</key> + <value>none</value> + </param> + <param> <key>type</key> <value>eng_float</value> </param> @@ -733,7 +761,7 @@ </param> <param> <key>fc</key> - <value>fc-shiftoff</value> + <value>fc_slider-shiftoff</value> </param> <param> <key>samp_rate</key> @@ -909,7 +937,7 @@ </param> <param> <key>fc</key> - <value>fc</value> + <value>fc_slider-shiftoff</value> </param> <param> <key>ppm</key> @@ -1162,6 +1190,10 @@ <value></value> </param> <param> + <key>hide</key> + <value>none</value> + </param> + <param> <key>type</key> <value>intx</value> </param> @@ -1205,6 +1237,10 @@ <value>p</value> </param> <param> + <key>hide</key> + <value>none</value> + </param> + <param> <key>type</key> <value>eng_float</value> </param> @@ -1224,6 +1260,10 @@ <value>1.0</value> </param> <param> + <key>axislabels</key> + <value>True</value> + </param> + <param> <key>bw</key> <value>samp_rate</value> </param> @@ -1492,6 +1532,10 @@ <value>firdes.WIN_BLACKMAN_hARRIS</value> </param> <param> + <key>label</key> + <value>Relative Gain</value> + </param> + <param> <key>ymax</key> <value>10</value> </param> @@ -1499,6 +1543,10 @@ <key>ymin</key> <value>-140</value> </param> + <param> + <key>units</key> + <value>dB</value> + </param> </block> <block> <key>rtlsdr_source</key> @@ -2942,6 +2990,10 @@ <value>s</value> </param> <param> + <key>hide</key> + <value>none</value> + </param> + <param> <key>type</key> <value>eng_float</value> </param> @@ -2985,6 +3037,10 @@ <value></value> </param> <param> + <key>hide</key> + <value>none</value> + </param> + <param> <key>type</key> <value>string</value> </param> @@ -3028,6 +3084,10 @@ <value>o</value> </param> <param> + <key>hide</key> + <value>none</value> + </param> + <param> <key>type</key> <value>eng_float</value> </param> |