Fix lora_receive_file_nogui.py

Remove lora_receive_realtime.py and lora_receive_file.py because they are generated automatically by the grcs
pull/148/head
Pieter Robyns 2021-11-30 20:49:04 -05:00
rodzic 661bc6ee5a
commit 3d89f5e4c2
5 zmienionych plików z 444 dodań i 509 usunięć

2
.gitignore vendored
Wyświetl plik

@ -11,3 +11,5 @@ apps/test-suites
apps/test-trace.*
python/lora_decoder.py
apps/test-results-paper
apps/lora_receive_realtime.py
apps/lora_receive_file.py

Wyświetl plik

@ -1,237 +0,0 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# SPDX-License-Identifier: GPL-3.0
#
# GNU Radio Python Flow Graph
# Title: Lora Receive File
# GNU Radio version: 3.9.4.0
from distutils.version import StrictVersion
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 PyQt5 import Qt
from gnuradio import qtgui
from gnuradio.filter import firdes
import sip
from gnuradio import blocks
import pmt
from gnuradio import gr
from gnuradio.fft import window
import sys
import signal
from argparse import ArgumentParser
from gnuradio.eng_arg import eng_float, intx
from gnuradio import eng_notation
import lora
from gnuradio import qtgui
class lora_receive_file(gr.top_block, Qt.QWidget):
def __init__(self):
gr.top_block.__init__(self, "Lora Receive File", catch_exceptions=True)
Qt.QWidget.__init__(self)
self.setWindowTitle("Lora Receive File")
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", "lora_receive_file")
try:
if StrictVersion(Qt.qVersion()) < StrictVersion("5.0.0"):
self.restoreGeometry(self.settings.value("geometry").toByteArray())
else:
self.restoreGeometry(self.settings.value("geometry"))
except:
pass
##################################################
# Variables
##################################################
self.sf = sf = 7
self.bw = bw = 125000
self.target_freq = target_freq = 868.1e6
self.symbols_per_sec = symbols_per_sec = float(bw) / (2**sf)
self.samp_rate = samp_rate = 10e6
self.capture_freq = capture_freq = 866.0e6
self.bitrate = bitrate = sf * (1 / (2**sf / float(bw)))
##################################################
# Blocks
##################################################
self.qtgui_freq_sink_x_0 = qtgui.freq_sink_c(
1024, #size
window.WIN_BLACKMAN_hARRIS, #wintype
capture_freq, #fc
samp_rate, #bw
"", #name
1,
None # parent
)
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)
self.qtgui_freq_sink_x_0.set_fft_window_normalized(False)
labels = ['', '', '', '', '',
'', '', '', '', '']
widths = [1, 1, 1, 1, 1,
1, 1, 1, 1, 1]
colors = ["blue", "red", "green", "black", "cyan",
"magenta", "yellow", "dark red", "dark green", "dark blue"]
alphas = [1.0, 1.0, 1.0, 1.0, 1.0,
1.0, 1.0, 1.0, 1.0, 1.0]
for i in range(1):
if len(labels[i]) == 0:
self.qtgui_freq_sink_x_0.set_line_label(i, "Data {0}".format(i))
else:
self.qtgui_freq_sink_x_0.set_line_label(i, labels[i])
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.qwidget(), Qt.QWidget)
self.top_layout.addWidget(self._qtgui_freq_sink_x_0_win)
self.lora_lora_receiver_0 = lora.lora_receiver(samp_rate, capture_freq, [target_freq], bw, sf, False, 4, True, False, False, 10, False, False)
self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex*1, samp_rate,True)
self.blocks_file_source_0 = blocks.file_source(gr.sizeof_gr_complex*1, 'counting_cr4_sf7.cfile', True, 0, 0)
self.blocks_file_source_0.set_begin_tag(pmt.PMT_NIL)
##################################################
# Connections
##################################################
self.connect((self.blocks_file_source_0, 0), (self.blocks_throttle_0, 0))
self.connect((self.blocks_throttle_0, 0), (self.lora_lora_receiver_0, 0))
self.connect((self.blocks_throttle_0, 0), (self.qtgui_freq_sink_x_0, 0))
def closeEvent(self, event):
self.settings = Qt.QSettings("GNU Radio", "lora_receive_file")
self.settings.setValue("geometry", self.saveGeometry())
self.stop()
self.wait()
event.accept()
def get_sf(self):
return self.sf
def set_sf(self, sf):
self.sf = sf
self.set_bitrate(self.sf * (1 / (2**self.sf / float(self.bw))))
self.set_symbols_per_sec(float(self.bw) / (2**self.sf))
self.lora_lora_receiver_0.set_sf(self.sf)
def get_bw(self):
return self.bw
def set_bw(self, bw):
self.bw = bw
self.set_bitrate(self.sf * (1 / (2**self.sf / float(self.bw))))
self.set_symbols_per_sec(float(self.bw) / (2**self.sf))
def get_target_freq(self):
return self.target_freq
def set_target_freq(self, target_freq):
self.target_freq = target_freq
def get_symbols_per_sec(self):
return self.symbols_per_sec
def set_symbols_per_sec(self, symbols_per_sec):
self.symbols_per_sec = symbols_per_sec
def get_samp_rate(self):
return self.samp_rate
def set_samp_rate(self, samp_rate):
self.samp_rate = samp_rate
self.blocks_throttle_0.set_sample_rate(self.samp_rate)
self.qtgui_freq_sink_x_0.set_frequency_range(self.capture_freq, self.samp_rate)
def get_capture_freq(self):
return self.capture_freq
def set_capture_freq(self, capture_freq):
self.capture_freq = capture_freq
self.lora_lora_receiver_0.set_center_freq(self.capture_freq)
self.qtgui_freq_sink_x_0.set_frequency_range(self.capture_freq, self.samp_rate)
def get_bitrate(self):
return self.bitrate
def set_bitrate(self, bitrate):
self.bitrate = bitrate
def main(top_block_cls=lora_receive_file, options=None):
if StrictVersion("4.5.0") <= StrictVersion(Qt.qVersion()) < StrictVersion("5.0.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 sig_handler(sig=None, frame=None):
tb.stop()
tb.wait()
Qt.QApplication.quit()
signal.signal(signal.SIGINT, sig_handler)
signal.signal(signal.SIGTERM, sig_handler)
timer = Qt.QTimer()
timer.start(500)
timer.timeout.connect(lambda: None)
qapp.exec_()
if __name__ == '__main__':
main()

Wyświetl plik

@ -82,7 +82,7 @@ if __name__ == '__main__':
transmit_freq = meta_capture["lora:frequency"]
sf = meta_capture["lora:sf"]
cr = meta_capture["lora:cr"]
bw = meta_capture["lora:bw"]
bw = int(meta_capture["lora:bw"])
prlen = meta_capture["lora:prlen"]
crc = meta_capture["lora:crc"]
implicit = meta_capture["lora:implicit"]

Wyświetl plik

@ -11,7 +11,7 @@ options:
gen_linking: dynamic
generate_options: qt_gui
hier_block_src_path: '.:'
id: lora_receive_file
id: lora_receive_realtime
max_nouts: '0'
output_language: python
placement: (0,0)
@ -116,28 +116,6 @@ blocks:
coordinate: [184, 76]
rotation: 0
state: enabled
- name: blocks_file_source_0
id: blocks_file_source
parameters:
affinity: ''
alias: ''
begin_tag: pmt.PMT_NIL
comment: ''
file: counting_cr4_sf7.cfile
length: '0'
maxoutbuf: '0'
minoutbuf: '0'
offset: '0'
repeat: 'True'
type: complex
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [8, 164.0]
rotation: 0
state: enabled
- name: blocks_throttle_0
id: blocks_throttle
parameters:
@ -154,7 +132,7 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [240, 196.0]
coordinate: [264, 188.0]
rotation: 0
state: enabled
- name: lora_lora_receiver_0
@ -182,7 +160,7 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [448, 148.0]
coordinate: [480, 148.0]
rotation: 0
state: enabled
- name: qtgui_freq_sink_x_0
@ -263,14 +241,450 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [440, 304.0]
coordinate: [480, 288.0]
rotation: 0
state: true
- name: uhd_usrp_source_0
id: uhd_usrp_source
parameters:
affinity: ''
alias: ''
ant0: '"RX2"'
ant1: '"RX2"'
ant10: '"RX2"'
ant11: '"RX2"'
ant12: '"RX2"'
ant13: '"RX2"'
ant14: '"RX2"'
ant15: '"RX2"'
ant16: '"RX2"'
ant17: '"RX2"'
ant18: '"RX2"'
ant19: '"RX2"'
ant2: '"RX2"'
ant20: '"RX2"'
ant21: '"RX2"'
ant22: '"RX2"'
ant23: '"RX2"'
ant24: '"RX2"'
ant25: '"RX2"'
ant26: '"RX2"'
ant27: '"RX2"'
ant28: '"RX2"'
ant29: '"RX2"'
ant3: '"RX2"'
ant30: '"RX2"'
ant31: '"RX2"'
ant4: '"RX2"'
ant5: '"RX2"'
ant6: '"RX2"'
ant7: '"RX2"'
ant8: '"RX2"'
ant9: '"RX2"'
bw0: '0'
bw1: '0'
bw10: '0'
bw11: '0'
bw12: '0'
bw13: '0'
bw14: '0'
bw15: '0'
bw16: '0'
bw17: '0'
bw18: '0'
bw19: '0'
bw2: '0'
bw20: '0'
bw21: '0'
bw22: '0'
bw23: '0'
bw24: '0'
bw25: '0'
bw26: '0'
bw27: '0'
bw28: '0'
bw29: '0'
bw3: '0'
bw30: '0'
bw31: '0'
bw4: '0'
bw5: '0'
bw6: '0'
bw7: '0'
bw8: '0'
bw9: '0'
center_freq0: '0'
center_freq1: '0'
center_freq10: '0'
center_freq11: '0'
center_freq12: '0'
center_freq13: '0'
center_freq14: '0'
center_freq15: '0'
center_freq16: '0'
center_freq17: '0'
center_freq18: '0'
center_freq19: '0'
center_freq2: '0'
center_freq20: '0'
center_freq21: '0'
center_freq22: '0'
center_freq23: '0'
center_freq24: '0'
center_freq25: '0'
center_freq26: '0'
center_freq27: '0'
center_freq28: '0'
center_freq29: '0'
center_freq3: '0'
center_freq30: '0'
center_freq31: '0'
center_freq4: '0'
center_freq5: '0'
center_freq6: '0'
center_freq7: '0'
center_freq8: '0'
center_freq9: '0'
clock_rate: 0e0
clock_source0: ''
clock_source1: ''
clock_source2: ''
clock_source3: ''
clock_source4: ''
clock_source5: ''
clock_source6: ''
clock_source7: ''
comment: ''
dc_offs0: 0+0j
dc_offs1: 0+0j
dc_offs10: 0+0j
dc_offs11: 0+0j
dc_offs12: 0+0j
dc_offs13: 0+0j
dc_offs14: 0+0j
dc_offs15: 0+0j
dc_offs16: 0+0j
dc_offs17: 0+0j
dc_offs18: 0+0j
dc_offs19: 0+0j
dc_offs2: 0+0j
dc_offs20: 0+0j
dc_offs21: 0+0j
dc_offs22: 0+0j
dc_offs23: 0+0j
dc_offs24: 0+0j
dc_offs25: 0+0j
dc_offs26: 0+0j
dc_offs27: 0+0j
dc_offs28: 0+0j
dc_offs29: 0+0j
dc_offs3: 0+0j
dc_offs30: 0+0j
dc_offs31: 0+0j
dc_offs4: 0+0j
dc_offs5: 0+0j
dc_offs6: 0+0j
dc_offs7: 0+0j
dc_offs8: 0+0j
dc_offs9: 0+0j
dc_offs_enb0: default
dc_offs_enb1: default
dc_offs_enb10: default
dc_offs_enb11: default
dc_offs_enb12: default
dc_offs_enb13: default
dc_offs_enb14: default
dc_offs_enb15: default
dc_offs_enb16: default
dc_offs_enb17: default
dc_offs_enb18: default
dc_offs_enb19: default
dc_offs_enb2: default
dc_offs_enb20: default
dc_offs_enb21: default
dc_offs_enb22: default
dc_offs_enb23: default
dc_offs_enb24: default
dc_offs_enb25: default
dc_offs_enb26: default
dc_offs_enb27: default
dc_offs_enb28: default
dc_offs_enb29: default
dc_offs_enb3: default
dc_offs_enb30: default
dc_offs_enb31: default
dc_offs_enb4: default
dc_offs_enb5: default
dc_offs_enb6: default
dc_offs_enb7: default
dc_offs_enb8: default
dc_offs_enb9: default
dev_addr: '""'
dev_args: ''
gain0: '0'
gain1: '0'
gain10: '0'
gain11: '0'
gain12: '0'
gain13: '0'
gain14: '0'
gain15: '0'
gain16: '0'
gain17: '0'
gain18: '0'
gain19: '0'
gain2: '0'
gain20: '0'
gain21: '0'
gain22: '0'
gain23: '0'
gain24: '0'
gain25: '0'
gain26: '0'
gain27: '0'
gain28: '0'
gain29: '0'
gain3: '0'
gain30: '0'
gain31: '0'
gain4: '0'
gain5: '0'
gain6: '0'
gain7: '0'
gain8: '0'
gain9: '0'
gain_type0: default
gain_type1: default
gain_type10: default
gain_type11: default
gain_type12: default
gain_type13: default
gain_type14: default
gain_type15: default
gain_type16: default
gain_type17: default
gain_type18: default
gain_type19: default
gain_type2: default
gain_type20: default
gain_type21: default
gain_type22: default
gain_type23: default
gain_type24: default
gain_type25: default
gain_type26: default
gain_type27: default
gain_type28: default
gain_type29: default
gain_type3: default
gain_type30: default
gain_type31: default
gain_type4: default
gain_type5: default
gain_type6: default
gain_type7: default
gain_type8: default
gain_type9: default
iq_imbal0: 0+0j
iq_imbal1: 0+0j
iq_imbal10: 0+0j
iq_imbal11: 0+0j
iq_imbal12: 0+0j
iq_imbal13: 0+0j
iq_imbal14: 0+0j
iq_imbal15: 0+0j
iq_imbal16: 0+0j
iq_imbal17: 0+0j
iq_imbal18: 0+0j
iq_imbal19: 0+0j
iq_imbal2: 0+0j
iq_imbal20: 0+0j
iq_imbal21: 0+0j
iq_imbal22: 0+0j
iq_imbal23: 0+0j
iq_imbal24: 0+0j
iq_imbal25: 0+0j
iq_imbal26: 0+0j
iq_imbal27: 0+0j
iq_imbal28: 0+0j
iq_imbal29: 0+0j
iq_imbal3: 0+0j
iq_imbal30: 0+0j
iq_imbal31: 0+0j
iq_imbal4: 0+0j
iq_imbal5: 0+0j
iq_imbal6: 0+0j
iq_imbal7: 0+0j
iq_imbal8: 0+0j
iq_imbal9: 0+0j
iq_imbal_enb0: default
iq_imbal_enb1: default
iq_imbal_enb10: default
iq_imbal_enb11: default
iq_imbal_enb12: default
iq_imbal_enb13: default
iq_imbal_enb14: default
iq_imbal_enb15: default
iq_imbal_enb16: default
iq_imbal_enb17: default
iq_imbal_enb18: default
iq_imbal_enb19: default
iq_imbal_enb2: default
iq_imbal_enb20: default
iq_imbal_enb21: default
iq_imbal_enb22: default
iq_imbal_enb23: default
iq_imbal_enb24: default
iq_imbal_enb25: default
iq_imbal_enb26: default
iq_imbal_enb27: default
iq_imbal_enb28: default
iq_imbal_enb29: default
iq_imbal_enb3: default
iq_imbal_enb30: default
iq_imbal_enb31: default
iq_imbal_enb4: default
iq_imbal_enb5: default
iq_imbal_enb6: default
iq_imbal_enb7: default
iq_imbal_enb8: default
iq_imbal_enb9: default
lo_export0: 'False'
lo_export1: 'False'
lo_export10: 'False'
lo_export11: 'False'
lo_export12: 'False'
lo_export13: 'False'
lo_export14: 'False'
lo_export15: 'False'
lo_export16: 'False'
lo_export17: 'False'
lo_export18: 'False'
lo_export19: 'False'
lo_export2: 'False'
lo_export20: 'False'
lo_export21: 'False'
lo_export22: 'False'
lo_export23: 'False'
lo_export24: 'False'
lo_export25: 'False'
lo_export26: 'False'
lo_export27: 'False'
lo_export28: 'False'
lo_export29: 'False'
lo_export3: 'False'
lo_export30: 'False'
lo_export31: 'False'
lo_export4: 'False'
lo_export5: 'False'
lo_export6: 'False'
lo_export7: 'False'
lo_export8: 'False'
lo_export9: 'False'
lo_source0: internal
lo_source1: internal
lo_source10: internal
lo_source11: internal
lo_source12: internal
lo_source13: internal
lo_source14: internal
lo_source15: internal
lo_source16: internal
lo_source17: internal
lo_source18: internal
lo_source19: internal
lo_source2: internal
lo_source20: internal
lo_source21: internal
lo_source22: internal
lo_source23: internal
lo_source24: internal
lo_source25: internal
lo_source26: internal
lo_source27: internal
lo_source28: internal
lo_source29: internal
lo_source3: internal
lo_source30: internal
lo_source31: internal
lo_source4: internal
lo_source5: internal
lo_source6: internal
lo_source7: internal
lo_source8: internal
lo_source9: internal
maxoutbuf: '0'
minoutbuf: '0'
nchan: '1'
num_mboards: '1'
otw: ''
rx_agc0: Default
rx_agc1: Default
rx_agc10: Default
rx_agc11: Default
rx_agc12: Default
rx_agc13: Default
rx_agc14: Default
rx_agc15: Default
rx_agc16: Default
rx_agc17: Default
rx_agc18: Default
rx_agc19: Default
rx_agc2: Default
rx_agc20: Default
rx_agc21: Default
rx_agc22: Default
rx_agc23: Default
rx_agc24: Default
rx_agc25: Default
rx_agc26: Default
rx_agc27: Default
rx_agc28: Default
rx_agc29: Default
rx_agc3: Default
rx_agc30: Default
rx_agc31: Default
rx_agc4: Default
rx_agc5: Default
rx_agc6: Default
rx_agc7: Default
rx_agc8: Default
rx_agc9: Default
samp_rate: samp_rate
sd_spec0: ''
sd_spec1: ''
sd_spec2: ''
sd_spec3: ''
sd_spec4: ''
sd_spec5: ''
sd_spec6: ''
sd_spec7: ''
show_lo_controls: 'False'
start_time: '-1.0'
stream_args: ''
stream_chans: '[]'
sync: sync
time_source0: ''
time_source1: ''
time_source2: ''
time_source3: ''
time_source4: ''
time_source5: ''
time_source6: ''
time_source7: ''
type: fc32
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [64, 152.0]
rotation: 0
state: true
connections:
- [blocks_file_source_0, '0', blocks_throttle_0, '0']
- [blocks_throttle_0, '0', lora_lora_receiver_0, '0']
- [blocks_throttle_0, '0', qtgui_freq_sink_x_0, '0']
- [uhd_usrp_source_0, '0', blocks_throttle_0, '0']
metadata:
file_format: 1

Wyświetl plik

@ -1,244 +0,0 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# SPDX-License-Identifier: GPL-3.0
#
# GNU Radio Python Flow Graph
# Title: Lora Receive Realtime
# GNU Radio version: 3.8.0.0
from distutils.version import StrictVersion
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 PyQt5 import Qt
from gnuradio import qtgui
from gnuradio.filter import firdes
import sip
from gnuradio import gr
import sys
import signal
from argparse import ArgumentParser
from gnuradio.eng_arg import eng_float, intx
from gnuradio import eng_notation
import lora
import osmosdr
import time
from gnuradio import qtgui
class lora_receive_realtime(gr.top_block, Qt.QWidget):
def __init__(self):
gr.top_block.__init__(self, "Lora Receive Realtime")
Qt.QWidget.__init__(self)
self.setWindowTitle("Lora Receive Realtime")
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", "lora_receive_realtime")
try:
if StrictVersion(Qt.qVersion()) < StrictVersion("5.0.0"):
self.restoreGeometry(self.settings.value("geometry").toByteArray())
else:
self.restoreGeometry(self.settings.value("geometry"))
except:
pass
##################################################
# Variables
##################################################
self.sf = sf = 11
self.bw = bw = 125000
self.target_freq = target_freq = 868.1e6
self.symbols_per_sec = symbols_per_sec = float(bw) / (2**sf)
self.samp_rate = samp_rate = 1e6
self.decimation = decimation = 1
self.capture_freq = capture_freq = 868e6
self.bitrate = bitrate = sf * (1 / (2**sf / float(bw)))
##################################################
# Blocks
##################################################
self.qtgui_freq_sink_x_0 = qtgui.freq_sink_c(
1024, #size
firdes.WIN_BLACKMAN_hARRIS, #wintype
capture_freq, #fc
samp_rate, #bw
"", #name
1
)
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)
labels = ['', '', '', '', '',
'', '', '', '', '']
widths = [1, 1, 1, 1, 1,
1, 1, 1, 1, 1]
colors = ["blue", "red", "green", "black", "cyan",
"magenta", "yellow", "dark red", "dark green", "dark blue"]
alphas = [1.0, 1.0, 1.0, 1.0, 1.0,
1.0, 1.0, 1.0, 1.0, 1.0]
for i in range(1):
if len(labels[i]) == 0:
self.qtgui_freq_sink_x_0.set_line_label(i, "Data {0}".format(i))
else:
self.qtgui_freq_sink_x_0.set_line_label(i, labels[i])
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_grid_layout.addWidget(self._qtgui_freq_sink_x_0_win)
self.osmosdr_source_0 = osmosdr.source(
args="numchan=" + str(1) + " " + ''
)
self.osmosdr_source_0.set_time_unknown_pps(osmosdr.time_spec_t())
self.osmosdr_source_0.set_sample_rate(samp_rate)
self.osmosdr_source_0.set_center_freq(capture_freq, 0)
self.osmosdr_source_0.set_freq_corr(0, 0)
self.osmosdr_source_0.set_gain(10, 0)
self.osmosdr_source_0.set_if_gain(20, 0)
self.osmosdr_source_0.set_bb_gain(20, 0)
self.osmosdr_source_0.set_antenna('', 0)
self.osmosdr_source_0.set_bandwidth(0, 0)
self.lora_message_socket_sink_0 = lora.message_socket_sink('127.0.0.1', 40868, 0)
self.lora_lora_receiver_0 = lora.lora_receiver(1e6, capture_freq, [target_freq], bw, sf, False, 4, True, False, False, decimation, False, False)
##################################################
# Connections
##################################################
self.msg_connect((self.lora_lora_receiver_0, 'frames'), (self.lora_message_socket_sink_0, 'in'))
self.connect((self.osmosdr_source_0, 0), (self.lora_lora_receiver_0, 0))
self.connect((self.osmosdr_source_0, 0), (self.qtgui_freq_sink_x_0, 0))
def closeEvent(self, event):
self.settings = Qt.QSettings("GNU Radio", "lora_receive_realtime")
self.settings.setValue("geometry", self.saveGeometry())
event.accept()
def get_sf(self):
return self.sf
def set_sf(self, sf):
self.sf = sf
self.set_bitrate(self.sf * (1 / (2**self.sf / float(self.bw))))
self.set_symbols_per_sec(float(self.bw) / (2**self.sf))
self.lora_lora_receiver_0.set_sf(self.sf)
def get_bw(self):
return self.bw
def set_bw(self, bw):
self.bw = bw
self.set_bitrate(self.sf * (1 / (2**self.sf / float(self.bw))))
self.set_symbols_per_sec(float(self.bw) / (2**self.sf))
def get_target_freq(self):
return self.target_freq
def set_target_freq(self, target_freq):
self.target_freq = target_freq
def get_symbols_per_sec(self):
return self.symbols_per_sec
def set_symbols_per_sec(self, symbols_per_sec):
self.symbols_per_sec = symbols_per_sec
def get_samp_rate(self):
return self.samp_rate
def set_samp_rate(self, samp_rate):
self.samp_rate = samp_rate
self.osmosdr_source_0.set_sample_rate(self.samp_rate)
self.qtgui_freq_sink_x_0.set_frequency_range(self.capture_freq, self.samp_rate)
def get_decimation(self):
return self.decimation
def set_decimation(self, decimation):
self.decimation = decimation
def get_capture_freq(self):
return self.capture_freq
def set_capture_freq(self, capture_freq):
self.capture_freq = capture_freq
self.lora_lora_receiver_0.set_center_freq(self.capture_freq)
self.osmosdr_source_0.set_center_freq(self.capture_freq, 0)
self.qtgui_freq_sink_x_0.set_frequency_range(self.capture_freq, self.samp_rate)
def get_bitrate(self):
return self.bitrate
def set_bitrate(self, bitrate):
self.bitrate = bitrate
def main(top_block_cls=lora_receive_realtime, options=None):
if StrictVersion("4.5.0") <= StrictVersion(Qt.qVersion()) < StrictVersion("5.0.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 sig_handler(sig=None, frame=None):
Qt.QApplication.quit()
signal.signal(signal.SIGINT, sig_handler)
signal.signal(signal.SIGTERM, sig_handler)
timer = Qt.QTimer()
timer.start(500)
timer.timeout.connect(lambda: None)
def quitting():
tb.stop()
tb.wait()
qapp.aboutToQuit.connect(quitting)
qapp.exec_()
if __name__ == '__main__':
main()