diff options
| author | Yuval Adam <_@yuv.al> | 2018-05-28 17:57:32 +0300 |
|---|---|---|
| committer | Yuval Adam <_@yuv.al> | 2018-05-28 17:57:32 +0300 |
| commit | fab8e4cec97384f47f88d48893ae6716dc669e76 (patch) | |
| tree | fbb9f9c5e4629626f66d99fc9944adc7135e1811 /top_block.py | |
| parent | e386cc320722eaf94b51d10ad49682cffde837c7 (diff) | |
Add fm.grc implementation
Diffstat (limited to 'top_block.py')
| -rwxr-xr-x | top_block.py | 152 |
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() |
