aboutsummaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorPiotr Krysik <ptrkrysik@gmail.com>2018-01-23 15:07:08 +0100
committerPiotr Krysik <ptrkrysik@gmail.com>2018-01-23 15:07:08 +0100
commitf0c83d84e09573bcbf7fcb2abb8dce7579448e55 (patch)
treedd2c5298d07687196339badb91c42f1e29a022cf /apps
parent6ab710034a2db4a89eef8539694da5b5e7a78c9d (diff)
Fixing missing callback to set_fc in clock_offset_control block
Diffstat (limited to 'apps')
-rwxr-xr-xapps/grgsm_livemon112
-rw-r--r--apps/grgsm_livemon.grc68
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>