summaryrefslogtreecommitdiff
path: root/top_block.py
diff options
context:
space:
mode:
authorYuval Adam <_@yuv.al>2018-05-28 17:57:32 +0300
committerYuval Adam <_@yuv.al>2018-05-28 17:57:32 +0300
commitfab8e4cec97384f47f88d48893ae6716dc669e76 (patch)
treefbb9f9c5e4629626f66d99fc9944adc7135e1811 /top_block.py
parente386cc320722eaf94b51d10ad49682cffde837c7 (diff)
Add fm.grc implementation
Diffstat (limited to 'top_block.py')
-rwxr-xr-xtop_block.py152
1 files changed, 152 insertions, 0 deletions
diff --git a/top_block.py b/top_block.py
new file mode 100755
index 0000000..4f357d6
--- /dev/null
+++ b/top_block.py
@@ -0,0 +1,152 @@
+#!/usr/bin/env python2
+# -*- coding: utf-8 -*-
+##################################################
+# GNU Radio Python Flow Graph
+# Title: Top Block
+# Generated: Mon May 28 17:44:43 2018
+##################################################
+
+if __name__ == '__main__':
+ import ctypes
+ import sys
+ if sys.platform.startswith('linux'):
+ try:
+ x11 = ctypes.cdll.LoadLibrary('libX11.so')
+ x11.XInitThreads()
+ except:
+ print "Warning: failed to XInitThreads()"
+
+from PyQt4 import Qt
+from gnuradio import analog
+from gnuradio import audio
+from gnuradio import eng_notation
+from gnuradio import filter
+from gnuradio import gr
+from gnuradio.eng_option import eng_option
+from gnuradio.filter import firdes
+from optparse import OptionParser
+import osmosdr
+import sys
+import time
+from gnuradio import qtgui
+
+
+class top_block(gr.top_block, Qt.QWidget):
+
+ def __init__(self):
+ gr.top_block.__init__(self, "Top Block")
+ Qt.QWidget.__init__(self)
+ self.setWindowTitle("Top Block")
+ qtgui.util.check_set_qss()
+ try:
+ self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc'))
+ except:
+ pass
+ self.top_scroll_layout = Qt.QVBoxLayout()
+ self.setLayout(self.top_scroll_layout)
+ self.top_scroll = Qt.QScrollArea()
+ self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame)
+ self.top_scroll_layout.addWidget(self.top_scroll)
+ self.top_scroll.setWidgetResizable(True)
+ self.top_widget = Qt.QWidget()
+ self.top_scroll.setWidget(self.top_widget)
+ self.top_layout = Qt.QVBoxLayout(self.top_widget)
+ self.top_grid_layout = Qt.QGridLayout()
+ self.top_layout.addLayout(self.top_grid_layout)
+
+ self.settings = Qt.QSettings("GNU Radio", "top_block")
+ self.restoreGeometry(self.settings.value("geometry").toByteArray())
+
+ ##################################################
+ # Variables
+ ##################################################
+ self.samp_rate = samp_rate = 2e6
+ self.fsk_deviation_hz = fsk_deviation_hz = 1
+ self.freq = freq = 91800000
+
+ ##################################################
+ # Blocks
+ ##################################################
+ self.rtlsdr_source_0 = osmosdr.source( args="numchan=" + str(1) + " " + '' )
+ self.rtlsdr_source_0.set_sample_rate(samp_rate)
+ self.rtlsdr_source_0.set_center_freq(freq, 0)
+ self.rtlsdr_source_0.set_freq_corr(0, 0)
+ self.rtlsdr_source_0.set_dc_offset_mode(0, 0)
+ self.rtlsdr_source_0.set_iq_balance_mode(0, 0)
+ self.rtlsdr_source_0.set_gain_mode(True, 0)
+ self.rtlsdr_source_0.set_gain(10, 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_bandwidth(0, 0)
+
+ self.rational_resampler_xxx_0 = filter.rational_resampler_fff(
+ interpolation=50,
+ decimation=48,
+ taps=None,
+ fractional_bw=None,
+ )
+ self.low_pass_filter_0 = filter.fir_filter_ccf(4, firdes.low_pass(
+ 1, samp_rate, 100e3, 500e3, firdes.WIN_HAMMING, 6.76))
+ self.audio_sink_0 = audio.sink(48000, '', True)
+ self.analog_wfm_rcv_0 = analog.wfm_rcv(
+ quad_rate=500e3,
+ audio_decimation=10,
+ )
+
+ ##################################################
+ # Connections
+ ##################################################
+ self.connect((self.analog_wfm_rcv_0, 0), (self.rational_resampler_xxx_0, 0))
+ self.connect((self.low_pass_filter_0, 0), (self.analog_wfm_rcv_0, 0))
+ self.connect((self.rational_resampler_xxx_0, 0), (self.audio_sink_0, 0))
+ self.connect((self.rtlsdr_source_0, 0), (self.low_pass_filter_0, 0))
+
+ def closeEvent(self, event):
+ self.settings = Qt.QSettings("GNU Radio", "top_block")
+ self.settings.setValue("geometry", self.saveGeometry())
+ event.accept()
+
+ def get_samp_rate(self):
+ return self.samp_rate
+
+ def set_samp_rate(self, samp_rate):
+ self.samp_rate = samp_rate
+ self.rtlsdr_source_0.set_sample_rate(self.samp_rate)
+ self.low_pass_filter_0.set_taps(firdes.low_pass(1, self.samp_rate, 100e3, 500e3, firdes.WIN_HAMMING, 6.76))
+
+ def get_fsk_deviation_hz(self):
+ return self.fsk_deviation_hz
+
+ def set_fsk_deviation_hz(self, fsk_deviation_hz):
+ self.fsk_deviation_hz = fsk_deviation_hz
+
+ def get_freq(self):
+ return self.freq
+
+ def set_freq(self, freq):
+ self.freq = freq
+ self.rtlsdr_source_0.set_center_freq(self.freq, 0)
+
+
+def main(top_block_cls=top_block, options=None):
+
+ from distutils.version import StrictVersion
+ if StrictVersion(Qt.qVersion()) >= StrictVersion("4.5.0"):
+ style = gr.prefs().get_string('qtgui', 'style', 'raster')
+ Qt.QApplication.setGraphicsSystem(style)
+ qapp = Qt.QApplication(sys.argv)
+
+ tb = top_block_cls()
+ tb.start()
+ tb.show()
+
+ def quitting():
+ tb.stop()
+ tb.wait()
+ qapp.connect(qapp, Qt.SIGNAL("aboutToQuit()"), quitting)
+ qapp.exec_()
+
+
+if __name__ == '__main__':
+ main()