|
@@ -23,10 +23,7 @@ import osmosdr
|
|
|
import time
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
class fm_radio(gr.top_block):
|
|
|
-
|
|
|
def __init__(self):
|
|
|
gr.top_block.__init__(self, "FM Radio Receiver", catch_exceptions=True)
|
|
|
|
|
@@ -41,12 +38,10 @@ class fm_radio(gr.top_block):
|
|
|
# Blocks
|
|
|
##################################################
|
|
|
|
|
|
- self.rtlsdr_source_0 = osmosdr.source(
|
|
|
- args="numchan=" + str(1) + " " + ""
|
|
|
- )
|
|
|
+ self.rtlsdr_source_0 = osmosdr.source(args="numchan=" + str(1) + " " + "")
|
|
|
self.rtlsdr_source_0.set_time_unknown_pps(osmosdr.time_spec_t())
|
|
|
self.rtlsdr_source_0.set_sample_rate(samp_rate)
|
|
|
- self.rtlsdr_source_0.set_center_freq((98.3*1e6), 0)
|
|
|
+ self.rtlsdr_source_0.set_center_freq((98.3 * 1e6), 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)
|
|
@@ -54,29 +49,24 @@ class fm_radio(gr.top_block):
|
|
|
self.rtlsdr_source_0.set_gain(20, 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(0, 0)
|
|
|
self.rational_resampler_xxx_0 = filter.rational_resampler_fff(
|
|
|
- interpolation=audio_sample_rate_hertz,
|
|
|
- decimation=channel_width_hertz,
|
|
|
- taps=[],
|
|
|
- fractional_bw=0)
|
|
|
+ interpolation=audio_sample_rate_hertz,
|
|
|
+ decimation=channel_width_hertz,
|
|
|
+ taps=[],
|
|
|
+ fractional_bw=0,
|
|
|
+ )
|
|
|
self.low_pass_filter_0 = filter.fir_filter_ccf(
|
|
|
- (int(samp_rate/channel_width_hertz)),
|
|
|
- firdes.low_pass(
|
|
|
- 2,
|
|
|
- samp_rate,
|
|
|
- 100000,
|
|
|
- 10000,
|
|
|
- window.WIN_KAISER,
|
|
|
- 6.76))
|
|
|
- self.audio_sink_0 = audio.sink(audio_sample_rate_hertz, '', True)
|
|
|
+ (int(samp_rate / channel_width_hertz)),
|
|
|
+ firdes.low_pass(2, samp_rate, 100000, 10000, window.WIN_KAISER, 6.76),
|
|
|
+ )
|
|
|
+ self.audio_sink_0 = audio.sink(audio_sample_rate_hertz, "", True)
|
|
|
self.analog_wfm_rcv_0 = analog.wfm_rcv(
|
|
|
- quad_rate=channel_width_hertz,
|
|
|
- audio_decimation=1,
|
|
|
+ quad_rate=channel_width_hertz,
|
|
|
+ audio_decimation=1,
|
|
|
)
|
|
|
|
|
|
-
|
|
|
##################################################
|
|
|
# Connections
|
|
|
##################################################
|
|
@@ -85,13 +75,14 @@ class fm_radio(gr.top_block):
|
|
|
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 get_samp_rate(self):
|
|
|
return self.samp_rate
|
|
|
|
|
|
def set_samp_rate(self, samp_rate):
|
|
|
self.samp_rate = samp_rate
|
|
|
- self.low_pass_filter_0.set_taps(firdes.low_pass(2, self.samp_rate, 100000, 10000, window.WIN_KAISER, 6.76))
|
|
|
+ self.low_pass_filter_0.set_taps(
|
|
|
+ firdes.low_pass(2, self.samp_rate, 100000, 10000, window.WIN_KAISER, 6.76)
|
|
|
+ )
|
|
|
self.rtlsdr_source_0.set_sample_rate(self.samp_rate)
|
|
|
|
|
|
def get_channel_width_hertz(self):
|
|
@@ -107,8 +98,6 @@ class fm_radio(gr.top_block):
|
|
|
self.audio_sample_rate_hertz = audio_sample_rate_hertz
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
def main(top_block_cls=fm_radio, options=None):
|
|
|
tb = top_block_cls()
|
|
|
|
|
@@ -124,12 +113,12 @@ def main(top_block_cls=fm_radio, options=None):
|
|
|
tb.start()
|
|
|
|
|
|
try:
|
|
|
- input('Press Enter to quit: ')
|
|
|
+ input("Press Enter to quit: ")
|
|
|
except EOFError:
|
|
|
pass
|
|
|
tb.stop()
|
|
|
tb.wait()
|
|
|
|
|
|
|
|
|
-if __name__ == '__main__':
|
|
|
+if __name__ == "__main__":
|
|
|
main()
|