From 8fbca870849ca4e5dde945868a7c1f3ce43f25e5 Mon Sep 17 00:00:00 2001 From: Manolis Surligas Date: Sat, 24 Nov 2018 01:49:56 +0200 Subject: [PATCH] Remove left over flowgraphs and files --- CMakeLists.txt | 6 - .../debug_afsk_transceiver_osmocom.py | 310 -- apps/flowgraphs/satellites/CMakeLists.txt | 3 +- apps/flowgraphs/satellites/mpla.ogg | Bin 9044 -> 0 bytes .../satellites/upsat_afsk_receiver.grc | 3376 ------------ .../satellites/upsat_afsk_transmitter.grc | 1644 ------ .../satellites/upsat_fsk_receiver.grc | 2942 ---------- .../satellites/upsat_fsk_transmitter.grc | 2360 -------- .../satellites/upsat_transceiver_cli.grc | 4652 ---------------- .../satellites/upsat_transceiver_cli.py | 364 -- .../satellites/upsat_transceiver_qt.grc | 4885 ----------------- .../satellites/upsat_transceiver_qt.py | 500 -- cmake/Modules/FindNova.cmake | 26 - include/satnogs/CMakeLists.txt | 1 - include/satnogs/leo_channel.h | 722 --- lib/CMakeLists.txt | 2 - lib/leo_channel_impl.cc | 79 - lib/leo_channel_impl.h | 52 - python/CMakeLists.txt | 2 - python/__init__.py | 2 - python/dsp_settings.py | 32 - python/satnogs_upsat_transmitter.py | 111 - swig/satnogs_debug_swig.i | 4 - 23 files changed, 1 insertion(+), 22074 deletions(-) delete mode 100755 apps/flowgraphs/debug_afsk_transceiver_osmocom.py delete mode 100644 apps/flowgraphs/satellites/mpla.ogg delete mode 100644 apps/flowgraphs/satellites/upsat_afsk_receiver.grc delete mode 100644 apps/flowgraphs/satellites/upsat_afsk_transmitter.grc delete mode 100644 apps/flowgraphs/satellites/upsat_fsk_receiver.grc delete mode 100644 apps/flowgraphs/satellites/upsat_fsk_transmitter.grc delete mode 100644 apps/flowgraphs/satellites/upsat_transceiver_cli.grc delete mode 100755 apps/flowgraphs/satellites/upsat_transceiver_cli.py delete mode 100644 apps/flowgraphs/satellites/upsat_transceiver_qt.grc delete mode 100755 apps/flowgraphs/satellites/upsat_transceiver_qt.py delete mode 100644 cmake/Modules/FindNova.cmake delete mode 100644 include/satnogs/leo_channel.h delete mode 100644 lib/leo_channel_impl.cc delete mode 100644 lib/leo_channel_impl.h delete mode 100644 python/dsp_settings.py delete mode 100644 python/satnogs_upsat_transmitter.py diff --git a/CMakeLists.txt b/CMakeLists.txt index cec98e7..1323a79 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -142,12 +142,6 @@ option(INCLUDE_DEBUG_BLOCKS ######################################################################## # Find gr-satnogs external build dependencies ######################################################################## -if(${INCLUDE_DEBUG_BLOCKS}) - find_package(Nova) - if(NOT NOVA_FOUND) - message(FATAL_ERROR "libnova required to compile satnogs") - endif() -endif() ######################################################################## # Search for the libfec if it is already installed in the system diff --git a/apps/flowgraphs/debug_afsk_transceiver_osmocom.py b/apps/flowgraphs/debug_afsk_transceiver_osmocom.py deleted file mode 100755 index a9e0892..0000000 --- a/apps/flowgraphs/debug_afsk_transceiver_osmocom.py +++ /dev/null @@ -1,310 +0,0 @@ -#!/usr/bin/env python2 -# -*- coding: utf-8 -*- -################################################## -# GNU Radio Python Flow Graph -# Title: Debug Afsk Transceiver Osmocom -# Generated: Mon Jun 13 20:30:12 2016 -################################################## - -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 blocks -from gnuradio import eng_notation -from gnuradio import filter -from gnuradio import gr -from gnuradio import qtgui -from gnuradio.eng_option import eng_option -from gnuradio.filter import firdes -from gnuradio.qtgui import Range, RangeWidget -from optparse import OptionParser -import math -import numpy -import satnogs -import sip -import sys - - -class debug_afsk_transceiver_osmocom(gr.top_block, Qt.QWidget): - - def __init__(self): - gr.top_block.__init__(self, "Debug Afsk Transceiver Osmocom") - Qt.QWidget.__init__(self) - self.setWindowTitle("Debug Afsk Transceiver Osmocom") - 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", "debug_afsk_transceiver_osmocom") - self.restoreGeometry(self.settings.value("geometry").toByteArray()) - - ################################################## - # Variables - ################################################## - self.samples_per_symbol_tx = samples_per_symbol_tx = 4 - self.sq_wave = sq_wave = (1.0, ) * samples_per_symbol_tx - self.gaussian_taps = gaussian_taps = filter.firdes.gaussian(1.0, samples_per_symbol_tx, 1.0, 4*samples_per_symbol_tx) - self.deviation = deviation = 800 - self.baud_rate = baud_rate = 1200 - self.tx_frequency = tx_frequency = 145.835e6 - self.samp_rate_tx = samp_rate_tx = 48e3 - self.modulation_index = modulation_index = deviation / (baud_rate / 2.0) - self.interp_taps = interp_taps = numpy.convolve(numpy.array(gaussian_taps), numpy.array(sq_wave)) - self.atten = atten = 0.1 - - ################################################## - # Blocks - ################################################## - self._atten_range = Range(0, 0.9, 0.01, 0.1, 200) - self._atten_win = RangeWidget(self._atten_range, self.set_atten, "Attenuation", "counter_slider", float) - self.top_layout.addWidget(self._atten_win) - self.satnogs_upsat_fsk_frame_encoder_0 = satnogs.upsat_fsk_frame_encoder([0x33]*8, [0x7A, 0x0E], False, False, False, True, True, "ABCD", 0, "UPSAT", 0, 1024) - self.satnogs_udp_msg_source_0 = satnogs.udp_msg_source("127.0.0.1", 16886, 1500) - self.satnogs_debug_msg_source_0 = satnogs.debug_msg_source("HELLO"*4, 1, True) - self.rational_resampler_xxx_0 = filter.rational_resampler_ccc( - interpolation=10, - decimation=1, - taps=None, - fractional_bw=None, - ) - self.qtgui_time_sink_x_0_0_0 = qtgui.time_sink_c( - 1024, #size - samp_rate_tx, #samp_rate - "", #name - 1 #number of inputs - ) - self.qtgui_time_sink_x_0_0_0.set_update_time(0.10) - self.qtgui_time_sink_x_0_0_0.set_y_axis(-1, 1) - - self.qtgui_time_sink_x_0_0_0.set_y_label("Amplitude", "") - - self.qtgui_time_sink_x_0_0_0.enable_tags(-1, True) - self.qtgui_time_sink_x_0_0_0.set_trigger_mode(qtgui.TRIG_MODE_FREE, qtgui.TRIG_SLOPE_POS, 0.0, 0, 0, "") - self.qtgui_time_sink_x_0_0_0.enable_autoscale(False) - self.qtgui_time_sink_x_0_0_0.enable_grid(False) - self.qtgui_time_sink_x_0_0_0.enable_control_panel(True) - - if not True: - self.qtgui_time_sink_x_0_0_0.disable_legend() - - labels = ["", "", "", "", "", - "", "", "", "", ""] - widths = [1, 1, 1, 1, 1, - 1, 1, 1, 1, 1] - colors = ["blue", "red", "green", "black", "cyan", - "magenta", "yellow", "dark red", "dark green", "blue"] - styles = [1, 1, 1, 1, 1, - 1, 1, 1, 1, 1] - markers = [2, -1, -1, -1, -1, - -1, -1, -1, -1, -1] - alphas = [1.0, 1.0, 1.0, 1.0, 1.0, - 1.0, 1.0, 1.0, 1.0, 1.0] - - for i in xrange(2*1): - if len(labels[i]) == 0: - if(i % 2 == 0): - self.qtgui_time_sink_x_0_0_0.set_line_label(i, "Re{{Data {0}}}".format(i/2)) - else: - self.qtgui_time_sink_x_0_0_0.set_line_label(i, "Im{{Data {0}}}".format(i/2)) - else: - self.qtgui_time_sink_x_0_0_0.set_line_label(i, labels[i]) - self.qtgui_time_sink_x_0_0_0.set_line_width(i, widths[i]) - self.qtgui_time_sink_x_0_0_0.set_line_color(i, colors[i]) - self.qtgui_time_sink_x_0_0_0.set_line_style(i, styles[i]) - self.qtgui_time_sink_x_0_0_0.set_line_marker(i, markers[i]) - self.qtgui_time_sink_x_0_0_0.set_line_alpha(i, alphas[i]) - - self._qtgui_time_sink_x_0_0_0_win = sip.wrapinstance(self.qtgui_time_sink_x_0_0_0.pyqwidget(), Qt.QWidget) - self.top_layout.addWidget(self._qtgui_time_sink_x_0_0_0_win) - self.qtgui_time_sink_x_0_0 = qtgui.time_sink_f( - 1024, #size - samp_rate_tx, #samp_rate - "", #name - 1 #number of inputs - ) - self.qtgui_time_sink_x_0_0.set_update_time(0.10) - self.qtgui_time_sink_x_0_0.set_y_axis(-1, 1) - - self.qtgui_time_sink_x_0_0.set_y_label("Amplitude", "") - - self.qtgui_time_sink_x_0_0.enable_tags(-1, True) - self.qtgui_time_sink_x_0_0.set_trigger_mode(qtgui.TRIG_MODE_FREE, qtgui.TRIG_SLOPE_POS, 0.0, 0, 0, "") - self.qtgui_time_sink_x_0_0.enable_autoscale(False) - self.qtgui_time_sink_x_0_0.enable_grid(False) - self.qtgui_time_sink_x_0_0.enable_control_panel(True) - - if not True: - self.qtgui_time_sink_x_0_0.disable_legend() - - labels = ["", "", "", "", "", - "", "", "", "", ""] - widths = [1, 1, 1, 1, 1, - 1, 1, 1, 1, 1] - colors = ["blue", "red", "green", "black", "cyan", - "magenta", "yellow", "dark red", "dark green", "blue"] - styles = [1, 1, 1, 1, 1, - 1, 1, 1, 1, 1] - markers = [2, -1, -1, -1, -1, - -1, -1, -1, -1, -1] - alphas = [1.0, 1.0, 1.0, 1.0, 1.0, - 1.0, 1.0, 1.0, 1.0, 1.0] - - for i in xrange(1): - if len(labels[i]) == 0: - self.qtgui_time_sink_x_0_0.set_line_label(i, "Data {0}".format(i)) - else: - self.qtgui_time_sink_x_0_0.set_line_label(i, labels[i]) - self.qtgui_time_sink_x_0_0.set_line_width(i, widths[i]) - self.qtgui_time_sink_x_0_0.set_line_color(i, colors[i]) - self.qtgui_time_sink_x_0_0.set_line_style(i, styles[i]) - self.qtgui_time_sink_x_0_0.set_line_marker(i, markers[i]) - self.qtgui_time_sink_x_0_0.set_line_alpha(i, alphas[i]) - - self._qtgui_time_sink_x_0_0_win = sip.wrapinstance(self.qtgui_time_sink_x_0_0.pyqwidget(), Qt.QWidget) - self.top_layout.addWidget(self._qtgui_time_sink_x_0_0_win) - self.interp_fir_filter_xxx_0 = filter.interp_fir_filter_fff(samples_per_symbol_tx, (interp_taps)) - self.interp_fir_filter_xxx_0.declare_sample_delay(0) - self.blocks_vco_f_0 = blocks.vco_f(48e3, -48e3, 1.0) - self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vff((atten, )) - self.audio_sink_0_0 = audio.sink(48000, "", True) - self.analog_quadrature_demod_cf_0 = analog.quadrature_demod_cf(48e3/(2*math.pi*deviation/8.0)) - self.analog_frequency_modulator_fc_0 = analog.frequency_modulator_fc((math.pi*modulation_index) / samples_per_symbol_tx) - - ################################################## - # Connections - ################################################## - self.msg_connect((self.satnogs_debug_msg_source_0, 'msg'), (self.satnogs_upsat_fsk_frame_encoder_0, 'pdu')) - self.msg_connect((self.satnogs_udp_msg_source_0, 'msg'), (self.satnogs_upsat_fsk_frame_encoder_0, 'pdu')) - self.connect((self.analog_frequency_modulator_fc_0, 0), (self.qtgui_time_sink_x_0_0_0, 0)) - self.connect((self.analog_frequency_modulator_fc_0, 0), (self.rational_resampler_xxx_0, 0)) - self.connect((self.analog_quadrature_demod_cf_0, 0), (self.blocks_multiply_const_vxx_0, 0)) - self.connect((self.blocks_multiply_const_vxx_0, 0), (self.audio_sink_0_0, 0)) - self.connect((self.blocks_vco_f_0, 0), (self.qtgui_time_sink_x_0_0, 0)) - self.connect((self.interp_fir_filter_xxx_0, 0), (self.analog_frequency_modulator_fc_0, 0)) - self.connect((self.interp_fir_filter_xxx_0, 0), (self.blocks_vco_f_0, 0)) - self.connect((self.rational_resampler_xxx_0, 0), (self.analog_quadrature_demod_cf_0, 0)) - self.connect((self.satnogs_upsat_fsk_frame_encoder_0, 0), (self.interp_fir_filter_xxx_0, 0)) - - def closeEvent(self, event): - self.settings = Qt.QSettings("GNU Radio", "debug_afsk_transceiver_osmocom") - self.settings.setValue("geometry", self.saveGeometry()) - event.accept() - - - def get_samples_per_symbol_tx(self): - return self.samples_per_symbol_tx - - def set_samples_per_symbol_tx(self, samples_per_symbol_tx): - self.samples_per_symbol_tx = samples_per_symbol_tx - self.set_gaussian_taps(filter.firdes.gaussian(1.0, self.samples_per_symbol_tx, 1.0, 4*self.samples_per_symbol_tx)) - self.set_sq_wave((1.0, ) * self.samples_per_symbol_tx) - self.analog_frequency_modulator_fc_0.set_sensitivity((math.pi*self.modulation_index) / self.samples_per_symbol_tx) - - def get_sq_wave(self): - return self.sq_wave - - def set_sq_wave(self, sq_wave): - self.sq_wave = sq_wave - self.set_interp_taps(numpy.convolve(numpy.array(self.gaussian_taps), numpy.array(self.sq_wave))) - - def get_gaussian_taps(self): - return self.gaussian_taps - - def set_gaussian_taps(self, gaussian_taps): - self.gaussian_taps = gaussian_taps - self.set_interp_taps(numpy.convolve(numpy.array(self.gaussian_taps), numpy.array(self.sq_wave))) - - def get_deviation(self): - return self.deviation - - def set_deviation(self, deviation): - self.deviation = deviation - self.set_modulation_index(self.deviation / (self.baud_rate / 2.0)) - self.analog_quadrature_demod_cf_0.set_gain(48e3/(2*math.pi*self.deviation/8.0)) - - def get_baud_rate(self): - return self.baud_rate - - def set_baud_rate(self, baud_rate): - self.baud_rate = baud_rate - self.set_modulation_index(self.deviation / (self.baud_rate / 2.0)) - - def get_tx_frequency(self): - return self.tx_frequency - - def set_tx_frequency(self, tx_frequency): - self.tx_frequency = tx_frequency - - def get_samp_rate_tx(self): - return self.samp_rate_tx - - def set_samp_rate_tx(self, samp_rate_tx): - self.samp_rate_tx = samp_rate_tx - self.qtgui_time_sink_x_0_0_0.set_samp_rate(self.samp_rate_tx) - self.qtgui_time_sink_x_0_0.set_samp_rate(self.samp_rate_tx) - - def get_modulation_index(self): - return self.modulation_index - - def set_modulation_index(self, modulation_index): - self.modulation_index = modulation_index - self.analog_frequency_modulator_fc_0.set_sensitivity((math.pi*self.modulation_index) / self.samples_per_symbol_tx) - - def get_interp_taps(self): - return self.interp_taps - - def set_interp_taps(self, interp_taps): - self.interp_taps = interp_taps - self.interp_fir_filter_xxx_0.set_taps((self.interp_taps)) - - def get_atten(self): - return self.atten - - def set_atten(self, atten): - self.atten = atten - self.blocks_multiply_const_vxx_0.set_k((self.atten, )) - - -def main(top_block_cls=debug_afsk_transceiver_osmocom, 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() diff --git a/apps/flowgraphs/satellites/CMakeLists.txt b/apps/flowgraphs/satellites/CMakeLists.txt index 778fea8..fbda2d2 100644 --- a/apps/flowgraphs/satellites/CMakeLists.txt +++ b/apps/flowgraphs/satellites/CMakeLists.txt @@ -21,9 +21,8 @@ include(GrPython) GR_PYTHON_INSTALL( PROGRAMS - upsat_transceiver_cli.py satnogs_amsat_fox_duv_decoder.py satnogs_noaa_apt_decoder.py satnogs_meteor_decoder.py DESTINATION bin -) \ No newline at end of file +) diff --git a/apps/flowgraphs/satellites/mpla.ogg b/apps/flowgraphs/satellites/mpla.ogg deleted file mode 100644 index 67b83eb25f9d8ec81db938e9046bcc7c3ca36ef7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9044 zcmb_>c|6qL+xMr{k|bnbvyLT=?2#>D?2~nD*_R11mh1|J5ZRdu8JcW~u|}&UvhN8g zOtzFl_WR7J@BMv#&-1$Pf1c0l%$ak}b)D;+Yk6Pi%x4T-TrNWgp+66=b&?0EdGw=# z+X1cv{$4)zZWz+Qfrtju7X+QfA0mI(9xx!y{O2LfJOFy5W9e54?BJuJuWoQr1F3|u^Y!#{ z!SHywxbQf6I(Ruc`5ZX1FIrSh-ShxN37Fx!Jk1e3NhT0P2SHc(VYDgE+Av&do^W7h zsuro$d^R>SHMW_>As*iHx8jjoKEsj9Ia4K57(Tqq^Wgo+Piv?7-Iegl9i?BY_B9C)#QcJe+ zMCwY;6{P4Z%sqaTs4y>F)uVPyys8hO3m-IfC~G`w9fIkSCu09pRAfDPz+TjjvO3bK zQIf>RzzQ>cfT(@7c%TTNCZw6ns9nL>QNhvK%WtqEX2c-fdrsrBv7QNd{H)FVoreAW zhW$e=GNUbPLoI5fEk~lQ*Q4!NZv830Lnqfsg{(Ty0VtPGKK%J1m(FTJF;0KfLNA1 zN_Cq3l>kFb-ZW2kPxjAFdD`rmTs&h=|EpNz9HBaVW)9hdSG!oh0AIq|vzl|Wda^NH z+BDg?{Z=4-4n--x4~(%Av9v9$c7V^VFPj2CY7XXF^kmOIu44qP*wh>$LY?uxygy-q zx50M3lAi)IVn5`d>!_?jYr_%yt&@s0_MhRS0{mt-!qRg8CQoSMQF}(-Lf#ZE-@CLa zx$rhv0arreB?Law5XmZp^Sw#doCkuU=*Ut0w<3q~eiRqnixX)Vu6!@qAx5f7-gGG} zJbgo_P6G!~EG7-2IDs(x08=Kfg~kzvP@=e0Bm#!pM-*@>k7JVRQC2cYZe{wk!-@bZ z{_VK${M{!xd;e9se{dMl3xLuqDSr8!l8Ld2nZJichTm9CwDpMJalPW>iMgZ@sV)lQZ*p%&GD0J9I9$zi{LA%_H!)AEU5wC)}LZ{*|( zCw`Vo&#hKvB*)MDUoS?uFg+juU< z!zo##V&F%4BYRXS1)@_WDS6Y9kZ)N)_Z?4Es+u-yY7$Zl2SE`K1^67x>q$CwKm`jy zH5PW;I z=Xg?)NH=`y07_VZ00;tULnt)7aLAs9EUL6%z}_8JJ%lPDFJ3@eoJ7zT$LJ#{c+i&Ga#RG+FauAmR4jUyN$bOdliYOqqmki9ORz=qHUqEOm+!T_qYl)!SH5*AI` zRaH7F4vu4T5XO-g$AQHO)uhF%jFE1n8SbSmU~xQ95Dl*$a!-J_a5!|z;}{*>VJ!ow zc=2iuhZ5-kvgS-+R|G&1ZviGD?@AoZ&@F9dLy$#*#fMM{r3ALi2%w<5E*>1E?+FAJ z446S$gTMkrwX&ea!SVa@0L1e$O487^4FT~`gTwhKZwvMuC9Ihxs)Yx~5=jSZ&cx82 z#<5^%)mlIc@s8AjaYoUT{6dF-!N9R>_z9flS0W4FeukoNl^llD4nizZsrK*Xi9Emu zQAx;nc_K#?5*bH_jDr)gk%kCF8d4WNOB!>>BN6Zx@)+JJo-{@WBon~VkBy{LgTV+x zV6HD%4Tl?10CT~Tz}_ez5Afk|L-q?~J^|bS>JD!d5}_@COSiuR2Q9#tin;?&H%21x zfbUL43lahH-VhjT$p-5Jhs9U4pe`dw<^p3VG`P-C(1N?vr5^1|X&NK0ucIk)$sx-K zEJb5a1HXmE&`DAzV`$VUczr-16gVQ)+<0-i2rYpECV3ENNJ&^8&JZamP+*LLLC_*F z@8U}}VJSxeD2W1`UImQcQgbU6n4yJ39RaND5D#J+j1g0jK;=vfs5roR0q#A(dK?b# zfw?e=z!qSvl|&$79rjNXDhLv}1`gk+Mvj=9$+-ZY2O&H-CEy6MUD={p05>I0N((*< zHjTjVcTJoqcCY!BJYLZQ5sDC`1tVW90lG*=Cwb%VJriE| zPwT(O$gSBwg!d%p#LLfekmh1B`XKyo9D-CL5>DqZ#2-FI(vcFlI^K>P{z-^OsbmAE znX=)qk@Td91_??42O?j*`n^01mIhQ2_ooM45Tqp)AakMd1SW?BPLR#w#9P=fOTaWh z9}u4)3621kp=@;+i3KQX1*QQ)CxJ*Z2xyho6_KP2Sz(ryNKy#1*kE9WOhq|JMPNkk z4WiFt%JmxA4j&=t5)5cS`^Qsh`!L;ioCrWXIV4D3M-qO0_X%ok{~|>7kbq4l7^=Z= zUAX>fh`$7SgfK4kuP7V|mw#C3Nr8n_*bkHaJITH%a>OAKRQr77%StLeX_Nai zKmd~X^7aWx1UYU=qDb;U@bdm8fQ875lL<&QN`Zd}I3NJ*YM%fW`r9H&fuJ6;KToDH z*%z^zaoymfW)|DDeV^2{Gee|Pc!zx)4O0(#s*L-Fz}6}yYMwt^_f z@iSx$G6BTB$#h6m6#_6up)+q9s(mde=tEqskVdGIjD-X+8It_^IQ1R^QQFMp5T6x^ zM2dh63i9C)tr|j{z+`!+Vitv_$SVLDloViPjgd(Rbm!&7^Sk2*kdHo8oj;vt5v5I5qUAWg&u(<%HOKqb`8a{2bC z61jX4rQj6oQlj7u`CdmbM|VmSCn8TMP)@oRgTO{FE3H3>^n`;*?s-LGQLSY`cgwGH zMA0hz=Awbx60SiiR%h=eDReyTi(xl-Np}O}7iuU59BA<%0Y&Zm#6E5x>i+^W_>mwe z2QJ{|ugc!{JxTansK1hb;^4!clR3$}8Ax~vgX-M@!#inLZkt|gAnyG8qPNwDk^7qAHB@IrYk3OUj~9yW8Txn z#x(Q5^Voz%3J*mzAGs9*we^f>HPl9&Ib_w-Y)zp?sYZ9xoI~XRm7LtvEuo3;QS8{< z%f|Dhbx6OfKLIO@LZ|byvc7!%{u`n?$;u0Z%d2V|fpiQW9_Tknf~FBMuFkV^3W^t0 z)Gl7qLg?xnB8~rf)esR8LFQEfbwtGe%Y>KAmc6|SU7M3fd+2z!UzU#xr-{F4*d~mHy98M`g>3k3tYskYYy1>!4BYbaFOpDu zKF7uKkg@vEt82Hc-4udC?xM+1+^rpliJA0-Ri+Ky{ zZEQbfYVMvtRzMK2tpA)f5z04nR8Y#)D7B(l%!VgEsmXmxl5zRhbc=(syM%IE`0m}u zKc+NWyj<6^F*|2!exVzGO)VpXR;GsoJTLDVoy)0wtTCMGZ&Njhdc!s;Ib93W=WpCO zl^A#Aa>+ZpC9_1_p4rMo`gGb){6UKAp>FBwEHk!`>D#c>nsS9B;~~LcAVpIR+Imi= z%*~4BfP@A0&@lY%^4*}(;&AZ>+b|{1-QB$V!`zp~gHF(H2s&&VFc;3TT zyO-cGeE3yn*gB@cdm;?s?i43O+kN#LZfKihceKSh&Z3(t)36a27Fe`0v|w>@=zZO% z!ZX`4BYym+-UeE=K#n#ip~G!2x4fKQNR)1`T;JH~sKNZ$eW9n$DIbb$CffTlBjyQv z)f*Loh}F8zxrEp?XUROyJ!>VY^}8MY%@JLm1EE6KCW!prG_Xen(n=F4}ZL;sJIa% z!EF%k&^aE2zz^?!t}UzidA)KHBfVPm`PbDw>{|MG%-U*fG`H@~(mkc2SWV3H!E@A3 zW>rfm*_sd5Cij+~vzX27G%xJ+E>5^)VU(8a7r3r>RsQxTHV(IaP_SX@FB)rGSRKNc z&bXPmHxwz>!zRbN1-+=pU$Fs|sYoJ)O<37C85D;I%`CvKGdTBtrxP}q`8n8dPdls;m1N{o+q8XmoA#W zP8LkLYg8I2-PJ5JR{mmd_{R2YzpRUB*5H-LPAm7N$9$Xobm{~A4;#;L%zAC9=il4# zE`QBbH%?nulZ481o{;}Fy^d$JaX81N#Nnx4i`*V_B36f*TvXn4_ppv%IDKPod!R_Q zVKVX;Uy@F9?M*$L<}GDnp@?WY<=JeOCyNYyajqPfC3e4UooT)h*iQc=rkMKVOBb=S zvu!>F?Jo}-Y5Cf%2geur1(Z|-Ja~PrIr$Ck#Ul#p@74YWSDONwyBqq?Lpz3a@b+kDm++rc*HPPHg9Is z=XWEFu6?5TJo_t=3vc7N)_M^3>=~HN^EPU(?B$~qbsMgCUM&hJv+Wj#oU^;h?r|i$ zmZwvQDQ`gRg=BktO$0|gd{ZzmB!AK<@+mr0`ff>`e#YpI1o}qCdxbD@Fl&Old+^}(HsIuq@Fx2CkuNsn*~JWF2lecJTZ(sK4Y z9fyg&Q1qof6K?Alzp-g6{>a83ZZE_Y62=bXRDR4Ru70CNrQH4%CuU-uHn(|fB zpnK8oE%&YQ(@lK_>7&Li_VeD$7>DyQbHn+Yz3bl?BAt0WINh5wk3Pc{1<4W%ByVOh z-N+ua-;`6!6%_ncYW!+Xt}wrPj}@TF2H5Vn~tx$J|ErwQ8V#jdZDx7 z{b~l%tTK=Fd8u`wLm5wJ%jiYhoyn%E3UhIxF00@s+Lq6@SGuYvRS=saGZUqwvNb+Y zh9h6SyiRqcDXh#@i@X{!nf2ST8kpWJM$er}&@UD(A1u<*Lt4+W(kzs>ni#JRT((#m zqa2Za@jDbLA8&*-yWJm$#dlL3M<$uFBZ=Qo!R6l1y6o1p2NGjH+3n`n&3~ILbxBSN zV^{yZZpv-?l@{LHaEP_(v3@9{_SWjN%&H?|>krdwE2s@GT%c$FI%~@0>&Wkija*Cg z*nJnCkb1-;N8)qN&Wg$g_tnSwK@<6PkBhz4`+8M<+x8D_fwKTXZluD zM{w>9{g33}ba&>(|pG9d@|R9GJ@_7%G-_a?>j*I9H*_Sy~K7hKxoR7dPqO#G_O1h_sB zyT9RWoioF7_hxKokg_aS@d9)IEC0COD|=EOhb>0z;lU3nJThkuDMau>Md~G@3;c(t z9MHV!2wxyMiU^+MBF2pDnqR z&~LnrLn0mX)BVj$zZXTf&KEYykM0^(wiK4XuQcvrbnrkY_XqW^#Lq9ezRFsrP-7p@ zD(|!_Z4@2*Ao?Yo0sXpK!mEEXduUPC)-71%?fv!>#jWg~N&Qs~y8(vo6XW7>Mq!zW zRTX?623Cv!K)Z@2r5R!E(Z zbb+>y&7!NQCss3fYqx9aOu(zX3t|nStINl1v)*xk3!yJEQamp(zQtx99OQtlFuHqj zd0PzA*kYWS$|@1kRDJu@@e@zxSA)5Jzt@1pVhAaF(jbLO;io^U1 z$Kx)9MiDqn`jowQ*F*c3Vfgo+;qIOUhZ4EZnI@>Mg%{WL*1m<$B=S^R?ck{K-_}ht z@LoHaJt4T=Hy4zD&6qcAarjB_Jwyd==#5o}Om#LjS2x@>rLeHXY;!T(dP5t^kX*Ck zTI%Uv^f0F{kTtsMDsIq7;uurA2C;7M#Z=#nGeHkG-omn4IBjLig*QtNpH3)igWJ|y zJ7jw5u>JIisWsoLp?c^QIi&vl1N!R;QQ5dl*3(~m}6q_+Tj$U ze3>IOq)EBKv|LDUjD8EfA@;aa>vBpbK@Qi!c@krKftY|>2*Pi3%9bcRXXW~7EeoGs zRAkj&=vpXw9>!yLuh%s+tRFM!m_M|N4M|0O%za5d#D?D$UlItwX;-7Nc zt*YiDr|=TT=X-R=S^R}0y6uuTuCRab)5>f;_>g%a?JQ;4aixK#$}}5=>dh6kOig-& zvsvQlDww{M?Ci>u)l#9l#^}4gcRLui6oxxd^EL%rBa@=ZNVr?cM1#lKwY1-)zd}<7+XR+bPl9Ko-RVHD4-PTEf^_wG(!{o5#xu2FE z&EAA2F*l58#K=U?s@oONF%w79@op0`D1S6mjCCCW2=!517y?@A<0e~&C|5iesWD$o9gB=zNS=akL~8#dU<4= zk`VW{b!Rx^0O_QAU4G&Bw9Wa%LQl5s_k8bvf)}s9<4n8`{-HZN>6x*x?oh){c%c#I z@}ygfC}VqUj@Q1u$nAZg3=zLX)RF$k*^%;AaGCnZ@Y0CB#B56cwUvZ!SiHxAzS_0f zJHJkc_9?qs`!2*zd(|R@K;u^2IYC6qe_Qr&Y zZ~cOwq%kI)0HjaE4G))SZgWoyE7|SCsgy?&3e1) zT1oV3@9SB9qqmDSY>{uTRatyq=U(60^l~v}QO=nzDR$ieoAkG`-*aSRYI$;ilmrmW`Y#=YzL+}Jy&P-Jhfn6;lXw}$w^n}S{8161H4Of556mNt^$ z7iKkyt>JH`4rIL{8b7m}UJ5Jux!1ZEZ6?Ou=#f=FQMf|bD7jO9F_CsAGQdbrXH2$l zQ1`qx|sf&zn8Rm?BiaX*buXeEY z?r0h|eXy^7A>nn=w#iK+;)aM6{moAW%k6z#YxM>>ccOc-+htFNe6@B^Ia1>;C#K}{ z3}##d2?QcPTYu}XA487ZF$SHbjY5(5_TZKNJKcPkkDT3YuZ7~2$2OnI`g7`Q@(1>W zzzr5h>z{ozDAF`A$f(iVuI*eD_c*cmkShLB9es8BNR~bp6EY^h>A6sXQ}TZ1U+PO+ zy~f39*Zf_}p&Pn)>r!lEy`Pv@6@M z6Swpx3QImUe92jAH+*=~<)lUR`r_Tat}*d^D}p&6WBoV%rRd{s2mEZ!pO_oD!2N!g zETSyS*u%pUt`sE8jSl3`s}P6>?vB(Qea$F1_qt{5a#4)&i}0>a>0AcmYML`&mGGrh zdganmQlZTHci7%9r8Xl{gi*YAMz1n3D~H5en|w*STV;1-e*05z<D4C+ zjWVPLB*m$gCS3OdFmBApIj~NF$#ph0%VcY-! diff --git a/apps/flowgraphs/satellites/upsat_afsk_receiver.grc b/apps/flowgraphs/satellites/upsat_afsk_receiver.grc deleted file mode 100644 index 16c5796..0000000 --- a/apps/flowgraphs/satellites/upsat_afsk_receiver.grc +++ /dev/null @@ -1,3376 +0,0 @@ - - - - Sun Jun 12 15:05:28 2016 - - options - - author - - - - window_size - 1768,1080 - - - category - Custom - - - comment - - - - description - - - - _enabled - True - - - _coordinate - (16, 13) - - - _rotation - 0 - - - generate_options - qt_gui - - - hier_block_src_path - .: - - - id - upsat_afsk_receiver - - - max_nouts - 0 - - - qt_qss_theme - - - - realtime_scheduling - - - - run_command - {python} -u {filename} - - - run_options - prompt - - - run - True - - - thread_safe_setters - - - - title - - - - - variable - - comment - FSK baud rate - - - _enabled - True - - - _coordinate - (656, 13) - - - _rotation - 0 - - - id - baud_rate - - - value - 1200 - - - - variable_qtgui_range - - comment - - - - value - 0 - - - _enabled - True - - - _coordinate - (1296, 17) - - - gui_hint - - - - _rotation - 0 - - - id - bb_gain_rx - - - label - BB Gain RX - - - min_len - 200 - - - orient - Qt.Horizontal - - - start - 0 - - - step - 0.5 - - - stop - 40 - - - rangeType - float - - - widget - counter_slider - - - - variable - - comment - Decimation factor -for the RX after the -SDR received samples - - - _enabled - True - - - _coordinate - (192, 13) - - - _rotation - 0 - - - id - decimation_rx - - - value - 40 - - - - variable - - comment - The FSK frequency deviation - - - _enabled - True - - - _coordinate - (472, 13) - - - _rotation - 0 - - - id - deviation - - - value - 1.25e3 - - - - variable_qtgui_range - - comment - - - - value - 0 - - - _enabled - True - - - _coordinate - (1184, 17) - - - gui_hint - - - - _rotation - 0 - - - id - if_gain_rx - - - label - IF Gain RX - - - min_len - 200 - - - orient - Qt.Horizontal - - - start - 0 - - - step - 0.5 - - - stop - 40 - - - rangeType - float - - - widget - counter_slider - - - - variable - - comment - To avoid the SDR carrier at the DC -we shift the LO a little further - - - _enabled - 1 - - - _coordinate - (896, 13) - - - _rotation - 0 - - - id - lo_offset - - - value - 100e3 - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (8, 213) - - - _rotation - 0 - - - id - modulation_index - - - value - deviation / (baud_rate / 2.0) - - - - variable_qtgui_range - - comment - - - - value - 0 - - - _enabled - True - - - _coordinate - (1072, 17) - - - gui_hint - - - - _rotation - 0 - - - id - rf_gain_rx - - - label - RF Gain RX - - - min_len - 200 - - - orient - Qt.Horizontal - - - start - 0 - - - step - 0.5 - - - stop - 40 - - - rangeType - float - - - widget - counter_slider - - - - variable - - comment - The RX center frequency - of the system - - - _enabled - True - - - _coordinate - (760, 13) - - - _rotation - 0 - - - id - rx_frequency - - - value - 145.835e6 - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (16, 117) - - - _rotation - 0 - - - id - samp_rate - - - value - samp_rate_rx/decimation_rx - - - - variable - - comment - SDR device -TX sampling rate - - - _enabled - True - - - _coordinate - (344, 13) - - - _rotation - 0 - - - id - samp_rate_rx - - - value - 2.5e6 - - - - variable_low_pass_filter_taps - - beta - 6.76 - - - comment - - - - cutoff_freq - 20000 - - - _enabled - 1 - - - _coordinate - (1416, 18) - - - _rotation - 0 - - - gain - 1.0 - - - id - taps - - - samp_rate - samp_rate_rx - - - width - 60000 - - - win - firdes.WIN_HAMMING - - - - analog_quadrature_demod_cf - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (776, 260) - - - _rotation - 0 - - - gain - (samp_rate / baud_rate)/(math.pi*modulation_index) - - - id - analog_quadrature_demod_cf_0_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - - digital_clock_recovery_mm_xx - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (1048, 376) - - - _rotation - 180 - - - gain_mu - 0.05 - - - gain_omega - 0.25*0.175*0.175 - - - id - digital_clock_recovery_mm_xx_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - mu - 0.5 - - - omega_relative_limit - 0.005 - - - omega - 4 - - - type - float - - - - freq_xlating_fir_filter_xxx - - alias - - - - center_freq - lo_offset - - - comment - - - - affinity - - - - decim - decimation_rx - - - _enabled - 1 - - - _coordinate - (408, 231) - - - _rotation - 0 - - - id - freq_xlating_fir_filter_xxx_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - samp_rate - samp_rate_rx - - - taps - taps - - - type - ccc - - - - import - - alias - - - - comment - - - - _enabled - 1 - - - _coordinate - (1344, 220) - - - _rotation - 0 - - - id - import_0 - - - import - import numpy - - - - import - - alias - - - - comment - - - - _enabled - 1 - - - _coordinate - (1344, 164) - - - _rotation - 0 - - - id - import_0_0 - - - import - import math - - - - import - - alias - - - - comment - - - - _enabled - 1 - - - _coordinate - (1344, 268) - - - _rotation - 0 - - - id - import_0_1 - - - import - from gnuradio import filter - - - - osmosdr_source - - alias - - - - ant0 - - - - bb_gain0 - bb_gain_rx - - - bw0 - samp_rate_rx - - - dc_offset_mode0 - 0 - - - corr0 - 0 - - - freq0 - rx_frequency - lo_offset - - - gain_mode0 - False - - - if_gain0 - if_gain_rx - - - iq_balance_mode0 - 0 - - - gain0 - rf_gain_rx - - - ant10 - - - - bb_gain10 - 20 - - - bw10 - 0 - - - dc_offset_mode10 - 0 - - - corr10 - 0 - - - freq10 - 100e6 - - - gain_mode10 - False - - - if_gain10 - 20 - - - iq_balance_mode10 - 0 - - - gain10 - 10 - - - ant11 - - - - bb_gain11 - 20 - - - bw11 - 0 - - - dc_offset_mode11 - 0 - - - corr11 - 0 - - - freq11 - 100e6 - - - gain_mode11 - False - - - if_gain11 - 20 - - - iq_balance_mode11 - 0 - - - gain11 - 10 - - - ant12 - - - - bb_gain12 - 20 - - - bw12 - 0 - - - dc_offset_mode12 - 0 - - - corr12 - 0 - - - freq12 - 100e6 - - - gain_mode12 - False - - - if_gain12 - 20 - - - iq_balance_mode12 - 0 - - - gain12 - 10 - - - ant13 - - - - bb_gain13 - 20 - - - bw13 - 0 - - - dc_offset_mode13 - 0 - - - corr13 - 0 - - - freq13 - 100e6 - - - gain_mode13 - False - - - if_gain13 - 20 - - - iq_balance_mode13 - 0 - - - gain13 - 10 - - - ant14 - - - - bb_gain14 - 20 - - - bw14 - 0 - - - dc_offset_mode14 - 0 - - - corr14 - 0 - - - freq14 - 100e6 - - - gain_mode14 - False - - - if_gain14 - 20 - - - iq_balance_mode14 - 0 - - - gain14 - 10 - - - ant15 - - - - bb_gain15 - 20 - - - bw15 - 0 - - - dc_offset_mode15 - 0 - - - corr15 - 0 - - - freq15 - 100e6 - - - gain_mode15 - False - - - if_gain15 - 20 - - - iq_balance_mode15 - 0 - - - gain15 - 10 - - - ant16 - - - - bb_gain16 - 20 - - - bw16 - 0 - - - dc_offset_mode16 - 0 - - - corr16 - 0 - - - freq16 - 100e6 - - - gain_mode16 - False - - - if_gain16 - 20 - - - iq_balance_mode16 - 0 - - - gain16 - 10 - - - ant17 - - - - bb_gain17 - 20 - - - bw17 - 0 - - - dc_offset_mode17 - 0 - - - corr17 - 0 - - - freq17 - 100e6 - - - gain_mode17 - False - - - if_gain17 - 20 - - - iq_balance_mode17 - 0 - - - gain17 - 10 - - - ant18 - - - - bb_gain18 - 20 - - - bw18 - 0 - - - dc_offset_mode18 - 0 - - - corr18 - 0 - - - freq18 - 100e6 - - - gain_mode18 - False - - - if_gain18 - 20 - - - iq_balance_mode18 - 0 - - - gain18 - 10 - - - ant19 - - - - bb_gain19 - 20 - - - bw19 - 0 - - - dc_offset_mode19 - 0 - - - corr19 - 0 - - - freq19 - 100e6 - - - gain_mode19 - False - - - if_gain19 - 20 - - - iq_balance_mode19 - 0 - - - gain19 - 10 - - - ant1 - - - - bb_gain1 - 20 - - - bw1 - 0 - - - dc_offset_mode1 - 0 - - - corr1 - 0 - - - freq1 - 100e6 - - - gain_mode1 - False - - - if_gain1 - 20 - - - iq_balance_mode1 - 0 - - - gain1 - 10 - - - ant20 - - - - bb_gain20 - 20 - - - bw20 - 0 - - - dc_offset_mode20 - 0 - - - corr20 - 0 - - - freq20 - 100e6 - - - gain_mode20 - False - - - if_gain20 - 20 - - - iq_balance_mode20 - 0 - - - gain20 - 10 - - - ant21 - - - - bb_gain21 - 20 - - - bw21 - 0 - - - dc_offset_mode21 - 0 - - - corr21 - 0 - - - freq21 - 100e6 - - - gain_mode21 - False - - - if_gain21 - 20 - - - iq_balance_mode21 - 0 - - - gain21 - 10 - - - ant22 - - - - bb_gain22 - 20 - - - bw22 - 0 - - - dc_offset_mode22 - 0 - - - corr22 - 0 - - - freq22 - 100e6 - - - gain_mode22 - False - - - if_gain22 - 20 - - - iq_balance_mode22 - 0 - - - gain22 - 10 - - - ant23 - - - - bb_gain23 - 20 - - - bw23 - 0 - - - dc_offset_mode23 - 0 - - - corr23 - 0 - - - freq23 - 100e6 - - - gain_mode23 - False - - - if_gain23 - 20 - - - iq_balance_mode23 - 0 - - - gain23 - 10 - - - ant24 - - - - bb_gain24 - 20 - - - bw24 - 0 - - - dc_offset_mode24 - 0 - - - corr24 - 0 - - - freq24 - 100e6 - - - gain_mode24 - False - - - if_gain24 - 20 - - - iq_balance_mode24 - 0 - - - gain24 - 10 - - - ant25 - - - - bb_gain25 - 20 - - - bw25 - 0 - - - dc_offset_mode25 - 0 - - - corr25 - 0 - - - freq25 - 100e6 - - - gain_mode25 - False - - - if_gain25 - 20 - - - iq_balance_mode25 - 0 - - - gain25 - 10 - - - ant26 - - - - bb_gain26 - 20 - - - bw26 - 0 - - - dc_offset_mode26 - 0 - - - corr26 - 0 - - - freq26 - 100e6 - - - gain_mode26 - False - - - if_gain26 - 20 - - - iq_balance_mode26 - 0 - - - gain26 - 10 - - - ant27 - - - - bb_gain27 - 20 - - - bw27 - 0 - - - dc_offset_mode27 - 0 - - - corr27 - 0 - - - freq27 - 100e6 - - - gain_mode27 - False - - - if_gain27 - 20 - - - iq_balance_mode27 - 0 - - - gain27 - 10 - - - ant28 - - - - bb_gain28 - 20 - - - bw28 - 0 - - - dc_offset_mode28 - 0 - - - corr28 - 0 - - - freq28 - 100e6 - - - gain_mode28 - False - - - if_gain28 - 20 - - - iq_balance_mode28 - 0 - - - gain28 - 10 - - - ant29 - - - - bb_gain29 - 20 - - - bw29 - 0 - - - dc_offset_mode29 - 0 - - - corr29 - 0 - - - freq29 - 100e6 - - - gain_mode29 - False - - - if_gain29 - 20 - - - iq_balance_mode29 - 0 - - - gain29 - 10 - - - ant2 - - - - bb_gain2 - 20 - - - bw2 - 0 - - - dc_offset_mode2 - 0 - - - corr2 - 0 - - - freq2 - 100e6 - - - gain_mode2 - False - - - if_gain2 - 20 - - - iq_balance_mode2 - 0 - - - gain2 - 10 - - - ant30 - - - - bb_gain30 - 20 - - - bw30 - 0 - - - dc_offset_mode30 - 0 - - - corr30 - 0 - - - freq30 - 100e6 - - - gain_mode30 - False - - - if_gain30 - 20 - - - iq_balance_mode30 - 0 - - - gain30 - 10 - - - ant31 - - - - bb_gain31 - 20 - - - bw31 - 0 - - - dc_offset_mode31 - 0 - - - corr31 - 0 - - - freq31 - 100e6 - - - gain_mode31 - False - - - if_gain31 - 20 - - - iq_balance_mode31 - 0 - - - gain31 - 10 - - - ant3 - - - - bb_gain3 - 20 - - - bw3 - 0 - - - dc_offset_mode3 - 0 - - - corr3 - 0 - - - freq3 - 100e6 - - - gain_mode3 - False - - - if_gain3 - 20 - - - iq_balance_mode3 - 0 - - - gain3 - 10 - - - ant4 - - - - bb_gain4 - 20 - - - bw4 - 0 - - - dc_offset_mode4 - 0 - - - corr4 - 0 - - - freq4 - 100e6 - - - gain_mode4 - False - - - if_gain4 - 20 - - - iq_balance_mode4 - 0 - - - gain4 - 10 - - - ant5 - - - - bb_gain5 - 20 - - - bw5 - 0 - - - dc_offset_mode5 - 0 - - - corr5 - 0 - - - freq5 - 100e6 - - - gain_mode5 - False - - - if_gain5 - 20 - - - iq_balance_mode5 - 0 - - - gain5 - 10 - - - ant6 - - - - bb_gain6 - 20 - - - bw6 - 0 - - - dc_offset_mode6 - 0 - - - corr6 - 0 - - - freq6 - 100e6 - - - gain_mode6 - False - - - if_gain6 - 20 - - - iq_balance_mode6 - 0 - - - gain6 - 10 - - - ant7 - - - - bb_gain7 - 20 - - - bw7 - 0 - - - dc_offset_mode7 - 0 - - - corr7 - 0 - - - freq7 - 100e6 - - - gain_mode7 - False - - - if_gain7 - 20 - - - iq_balance_mode7 - 0 - - - gain7 - 10 - - - ant8 - - - - bb_gain8 - 20 - - - bw8 - 0 - - - dc_offset_mode8 - 0 - - - corr8 - 0 - - - freq8 - 100e6 - - - gain_mode8 - False - - - if_gain8 - 20 - - - iq_balance_mode8 - 0 - - - gain8 - 10 - - - ant9 - - - - bb_gain9 - 20 - - - bw9 - 0 - - - dc_offset_mode9 - 0 - - - corr9 - 0 - - - freq9 - 100e6 - - - gain_mode9 - False - - - if_gain9 - 20 - - - iq_balance_mode9 - 0 - - - gain9 - 10 - - - comment - - - - affinity - - - - args - - - - _enabled - 1 - - - _coordinate - (144, 173) - - - _rotation - 0 - - - id - osmosdr_source_0 - - - maxoutbuf - 0 - - - clock_source0 - - - - time_source0 - - - - clock_source1 - - - - time_source1 - - - - clock_source2 - - - - time_source2 - - - - clock_source3 - - - - time_source3 - - - - clock_source4 - - - - time_source4 - - - - clock_source5 - - - - time_source5 - - - - clock_source6 - - - - time_source6 - - - - clock_source7 - - - - time_source7 - - - - minoutbuf - 0 - - - nchan - 1 - - - num_mboards - 1 - - - type - fc32 - - - sample_rate - samp_rate_rx - - - sync - - - - - pfb_arb_resampler_xxx - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - _coordinate - (992, 239) - - - _rotation - 0 - - - id - pfb_arb_resampler_xxx_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - nfilts - 32 - - - rrate - (4.0*baud_rate) / samp_rate - - - samp_delay - 0 - - - atten - 60 - - - taps - firdes.low_pass_2(32, 32, 0.8, 0.1, 60) - - - type - fff - - - - qtgui_freq_sink_x - - autoscale - False - - - average - 1.0 - - - bw - samp_rate - - - alias - - - - fc - 0 - - - comment - - - - ctrlpanel - True - - - affinity - - - - _enabled - 1 - - - fftsize - 1024 - - - _coordinate - (824, 182) - - - gui_hint - - - - _rotation - 0 - - - grid - True - - - id - qtgui_freq_sink_x_0 - - - legend - True - - - alpha1 - 1.0 - - - color1 - "blue" - - - label1 - - - - width1 - 1 - - - alpha10 - 1.0 - - - color10 - "dark blue" - - - label10 - - - - width10 - 1 - - - alpha2 - 1.0 - - - color2 - "red" - - - label2 - - - - width2 - 1 - - - alpha3 - 1.0 - - - color3 - "green" - - - label3 - - - - width3 - 1 - - - alpha4 - 1.0 - - - color4 - "black" - - - label4 - - - - width4 - 1 - - - alpha5 - 1.0 - - - color5 - "cyan" - - - label5 - - - - width5 - 1 - - - alpha6 - 1.0 - - - color6 - "magenta" - - - label6 - - - - width6 - 1 - - - alpha7 - 1.0 - - - color7 - "yellow" - - - label7 - - - - width7 - 1 - - - alpha8 - 1.0 - - - color8 - "dark red" - - - label8 - - - - width8 - 1 - - - alpha9 - 1.0 - - - color9 - "dark green" - - - label9 - - - - width9 - 1 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - name - "" - - - nconnections - 1 - - - showports - True - - - freqhalf - True - - - tr_chan - 0 - - - tr_level - 0.0 - - - tr_mode - qtgui.TRIG_MODE_FREE - - - tr_tag - "" - - - type - complex - - - update_time - 0.01 - - - wintype - firdes.WIN_BLACKMAN_hARRIS - - - ymax - 10 - - - ymin - -140 - - - - qtgui_time_sink_x - - autoscale - False - - - alias - - - - comment - - - - ctrlpanel - True - - - affinity - - - - entags - True - - - _enabled - 1 - - - _coordinate - (800, 486) - - - gui_hint - - - - _rotation - 180 - - - grid - False - - - id - qtgui_time_sink_x_0 - - - legend - True - - - alpha1 - 1.0 - - - color1 - "blue" - - - label1 - - - - marker1 - 2 - - - style1 - 1 - - - width1 - 1 - - - alpha10 - 1.0 - - - color10 - "blue" - - - label10 - - - - marker10 - -1 - - - style10 - 1 - - - width10 - 1 - - - alpha2 - 1.0 - - - color2 - "red" - - - label2 - - - - marker2 - -1 - - - style2 - 1 - - - width2 - 1 - - - alpha3 - 1.0 - - - color3 - "green" - - - label3 - - - - marker3 - -1 - - - style3 - 1 - - - width3 - 1 - - - alpha4 - 1.0 - - - color4 - "black" - - - label4 - - - - marker4 - -1 - - - style4 - 1 - - - width4 - 1 - - - alpha5 - 1.0 - - - color5 - "cyan" - - - label5 - - - - marker5 - -1 - - - style5 - 1 - - - width5 - 1 - - - alpha6 - 1.0 - - - color6 - "magenta" - - - label6 - - - - marker6 - -1 - - - style6 - 1 - - - width6 - 1 - - - alpha7 - 1.0 - - - color7 - "yellow" - - - label7 - - - - marker7 - -1 - - - style7 - 1 - - - width7 - 1 - - - alpha8 - 1.0 - - - color8 - "dark red" - - - label8 - - - - marker8 - -1 - - - style8 - 1 - - - width8 - 1 - - - alpha9 - 1.0 - - - color9 - "dark green" - - - label9 - - - - marker9 - -1 - - - style9 - 1 - - - width9 - 1 - - - name - "Clock Recovery" - - - nconnections - 1 - - - size - 1024 - - - srate - baud_rate - - - tr_chan - 0 - - - tr_delay - 0 - - - tr_level - 0.0 - - - tr_mode - qtgui.TRIG_MODE_FREE - - - tr_slope - qtgui.TRIG_SLOPE_POS - - - tr_tag - "" - - - type - float - - - update_time - 0.10 - - - ylabel - Amplitude - - - yunit - "" - - - ymax - 1 - - - ymin - -1 - - - - qtgui_waterfall_sink_x - - bw - samp_rate - - - alias - - - - fc - 0 - - - comment - - - - affinity - - - - _enabled - 1 - - - fftsize - 4096 - - - _coordinate - (680, 134) - - - gui_hint - - - - _rotation - 0 - - - grid - True - - - id - qtgui_waterfall_sink_x_0 - - - int_max - 10 - - - int_min - -140 - - - legend - True - - - alpha1 - 1.0 - - - color1 - 0 - - - label1 - - - - alpha10 - 1.0 - - - color10 - 0 - - - label10 - - - - alpha2 - 1.0 - - - color2 - 0 - - - label2 - - - - alpha3 - 1.0 - - - color3 - 0 - - - label3 - - - - alpha4 - 1.0 - - - color4 - 0 - - - label4 - - - - alpha5 - 1.0 - - - color5 - 0 - - - label5 - - - - alpha6 - 1.0 - - - color6 - 0 - - - label6 - - - - alpha7 - 1.0 - - - color7 - 0 - - - label7 - - - - alpha8 - 1.0 - - - color8 - 0 - - - label8 - - - - alpha9 - 1.0 - - - color9 - 0 - - - label9 - - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - name - "" - - - nconnections - 1 - - - showports - True - - - freqhalf - True - - - type - complex - - - update_time - 0.05 - - - wintype - firdes.WIN_BLACKMAN_hARRIS - - - - satnogs_multi_format_msg_sink - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (344, 380) - - - _rotation - 180 - - - id - satnogs_multi_format_msg_sink_0 - - - format - 0 - - - - satnogs_multi_format_msg_sink - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (400, 596) - - - _rotation - 180 - - - id - satnogs_multi_format_msg_sink_0_0 - - - format - 1 - - - - satnogs_udp_msg_sink - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (360, 478) - - - _rotation - 180 - - - id - satnogs_udp_msg_sink_0 - - - addr - "10.2.110.42" - - - mtu - 1500 - - - port - 16886 - - - - satnogs_upsat_fsk_frame_acquisition - - alias - - - - check_crc - False - - - comment - - - - affinity - - - - _enabled - 1 - - - preamble - [0x33]*8 - - - _coordinate - (640, 369) - - - _rotation - 180 - - - id - satnogs_upsat_fsk_frame_acquisition_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - sync_word - [0x7A, 0x0E] - - - ax_25 - True - - - manchester - False - - - whitening - False - - - - analog_quadrature_demod_cf_0_0 - pfb_arb_resampler_xxx_0 - 0 - 0 - - - digital_clock_recovery_mm_xx_0 - qtgui_time_sink_x_0 - 0 - 0 - - - digital_clock_recovery_mm_xx_0 - satnogs_upsat_fsk_frame_acquisition_0 - 0 - 0 - - - freq_xlating_fir_filter_xxx_0 - analog_quadrature_demod_cf_0_0 - 0 - 0 - - - freq_xlating_fir_filter_xxx_0 - qtgui_freq_sink_x_0 - 0 - 0 - - - freq_xlating_fir_filter_xxx_0 - qtgui_waterfall_sink_x_0 - 0 - 0 - - - osmosdr_source_0 - freq_xlating_fir_filter_xxx_0 - 0 - 0 - - - pfb_arb_resampler_xxx_0 - digital_clock_recovery_mm_xx_0 - 0 - 0 - - - satnogs_upsat_fsk_frame_acquisition_0 - satnogs_multi_format_msg_sink_0 - pdu - in - - - satnogs_upsat_fsk_frame_acquisition_0 - satnogs_multi_format_msg_sink_0_0 - pdu - in - - - satnogs_upsat_fsk_frame_acquisition_0 - satnogs_udp_msg_sink_0 - pdu - in - - diff --git a/apps/flowgraphs/satellites/upsat_afsk_transmitter.grc b/apps/flowgraphs/satellites/upsat_afsk_transmitter.grc deleted file mode 100644 index 7c2f3d4..0000000 --- a/apps/flowgraphs/satellites/upsat_afsk_transmitter.grc +++ /dev/null @@ -1,1644 +0,0 @@ - - - - Fri Mar 18 13:57:31 2016 - - options - - author - - - - window_size - 1720, 1080 - - - category - Custom - - - comment - - - - description - - - - _enabled - True - - - _coordinate - (8, 8) - - - _rotation - 0 - - - generate_options - qt_gui - - - hier_block_src_path - .: - - - id - debug_afsk_transceiver_osmocom - - - max_nouts - 0 - - - qt_qss_theme - - - - realtime_scheduling - - - - run_command - {python} -u {filename} - - - run_options - prompt - - - run - True - - - thread_safe_setters - - - - title - - - - - variable_qtgui_range - - comment - - - - value - 0.1 - - - _enabled - True - - - _coordinate - (880, 10) - - - gui_hint - - - - _rotation - 0 - - - id - atten - - - label - Attenuation - - - min_len - 200 - - - orient - Qt.Horizontal - - - start - 0 - - - step - 0.01 - - - stop - 1 - - - rangeType - float - - - widget - counter_slider - - - - variable - - comment - FSK baud rate - - - _enabled - True - - - _coordinate - (624, 10) - - - _rotation - 0 - - - id - baud_rate - - - value - 1200 - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (0, 194) - - - _rotation - 0 - - - id - gaussian_taps - - - value - filter.firdes.gaussian(1.0, samples_per_symbol_tx, 1.0, 4*samples_per_symbol_tx) - - - - variable - - comment - - - - _enabled - 1 - - - _coordinate - (0, 322) - - - _rotation - 0 - - - id - interp_taps - - - value - numpy.convolve(numpy.array(gaussian_taps), numpy.array(sq_wave)) - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (424, 18) - - - _rotation - 0 - - - id - mark_freq - - - value - 2200.0 - - - - variable - - comment - SDR device -TX sampling rate - - - _enabled - True - - - _coordinate - (224, 13) - - - _rotation - 0 - - - id - samp_rate_tx - - - value - 48e3 - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (512, 18) - - - _rotation - 0 - - - id - samples_per_symbol_tx - - - value - 40 - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (336, 18) - - - _rotation - 0 - - - id - space_freq - - - value - 1200.0 - - - - variable - - comment - - - - _enabled - 1 - - - _coordinate - (0, 258) - - - _rotation - 0 - - - id - sq_wave - - - value - (1.0, ) * samples_per_symbol_tx - - - - variable - - comment - The TX center frequency - of the system - - - _enabled - True - - - _coordinate - (720, 10) - - - _rotation - 0 - - - id - tx_frequency - - - value - 145.835e6 - - - - audio_sink - - alias - - - - comment - - - - affinity - - - - device_name - - - - _enabled - 1 - - - _coordinate - (776, 370) - - - _rotation - 180 - - - id - audio_sink_0_0 - - - num_inputs - 1 - - - ok_to_block - True - - - samp_rate - 48000 - - - - audio_source - - alias - - - - comment - - - - affinity - - - - device_name - - - - _enabled - 0 - - - _coordinate - (872, 504) - - - _rotation - 0 - - - id - audio_source_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - num_outputs - 1 - - - ok_to_block - True - - - samp_rate - 48000 - - - - blocks_multiply_const_vxx - - alias - - - - comment - - - - const - 1.0-atten - - - affinity - - - - _enabled - True - - - _coordinate - (904, 242) - - - _rotation - 0 - - - id - blocks_multiply_const_vxx_0 - - - type - float - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - vlen - 1 - - - - import - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (16, 130) - - - _rotation - 0 - - - id - import_0 - - - import - import math - - - - import - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (16, 402) - - - _rotation - 0 - - - id - import_1 - - - import - from gnuradio import filter - - - - import - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (16, 458) - - - _rotation - 0 - - - id - import_2 - - - import - import numpy - - - - interp_fir_filter_xxx - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (672, 234) - - - _rotation - 0 - - - id - interp_fir_filter_xxx_0 - - - interp - samples_per_symbol_tx - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - samp_delay - 0 - - - taps - interp_taps - - - type - fff - - - - qtgui_time_sink_x - - autoscale - False - - - alias - - - - comment - - - - ctrlpanel - True - - - affinity - - - - entags - True - - - _enabled - 0 - - - _coordinate - (1136, 218) - - - gui_hint - - - - _rotation - 0 - - - grid - True - - - id - qtgui_time_sink_x_0_1 - - - legend - True - - - alpha1 - 1.0 - - - color1 - "blue" - - - label1 - - - - marker1 - -1 - - - style1 - 1 - - - width1 - 1 - - - alpha10 - 1.0 - - - color10 - "blue" - - - label10 - - - - marker10 - -1 - - - style10 - 1 - - - width10 - 1 - - - alpha2 - 1.0 - - - color2 - "red" - - - label2 - - - - marker2 - -1 - - - style2 - 1 - - - width2 - 1 - - - alpha3 - 1.0 - - - color3 - "green" - - - label3 - - - - marker3 - -1 - - - style3 - 1 - - - width3 - 1 - - - alpha4 - 1.0 - - - color4 - "black" - - - label4 - - - - marker4 - -1 - - - style4 - 1 - - - width4 - 1 - - - alpha5 - 1.0 - - - color5 - "cyan" - - - label5 - - - - marker5 - -1 - - - style5 - 1 - - - width5 - 1 - - - alpha6 - 1.0 - - - color6 - "magenta" - - - label6 - - - - marker6 - -1 - - - style6 - 1 - - - width6 - 1 - - - alpha7 - 1.0 - - - color7 - "yellow" - - - label7 - - - - marker7 - -1 - - - style7 - 1 - - - width7 - 1 - - - alpha8 - 1.0 - - - color8 - "dark red" - - - label8 - - - - marker8 - -1 - - - style8 - 1 - - - width8 - 1 - - - alpha9 - 1.0 - - - color9 - "dark green" - - - label9 - - - - marker9 - -1 - - - style9 - 1 - - - width9 - 1 - - - name - "Out" - - - nconnections - 1 - - - size - 1024 - - - srate - samp_rate_tx - - - tr_chan - 0 - - - tr_delay - 0 - - - tr_level - 0.0 - - - tr_mode - qtgui.TRIG_MODE_FREE - - - tr_slope - qtgui.TRIG_SLOPE_POS - - - tr_tag - "" - - - type - float - - - update_time - 0.10 - - - ylabel - Amplitude - - - yunit - "" - - - ymax - 1 - - - ymin - -1 - - - - qtgui_time_sink_x - - autoscale - False - - - alias - - - - comment - - - - ctrlpanel - True - - - affinity - - - - entags - True - - - _enabled - 0 - - - _coordinate - (1104, 474) - - - gui_hint - - - - _rotation - 0 - - - grid - True - - - id - qtgui_time_sink_x_0_1_0 - - - legend - True - - - alpha1 - 1.0 - - - color1 - "blue" - - - label1 - - - - marker1 - -1 - - - style1 - 1 - - - width1 - 1 - - - alpha10 - 1.0 - - - color10 - "blue" - - - label10 - - - - marker10 - -1 - - - style10 - 1 - - - width10 - 1 - - - alpha2 - 1.0 - - - color2 - "red" - - - label2 - - - - marker2 - -1 - - - style2 - 1 - - - width2 - 1 - - - alpha3 - 1.0 - - - color3 - "green" - - - label3 - - - - marker3 - -1 - - - style3 - 1 - - - width3 - 1 - - - alpha4 - 1.0 - - - color4 - "black" - - - label4 - - - - marker4 - -1 - - - style4 - 1 - - - width4 - 1 - - - alpha5 - 1.0 - - - color5 - "cyan" - - - label5 - - - - marker5 - -1 - - - style5 - 1 - - - width5 - 1 - - - alpha6 - 1.0 - - - color6 - "magenta" - - - label6 - - - - marker6 - -1 - - - style6 - 1 - - - width6 - 1 - - - alpha7 - 1.0 - - - color7 - "yellow" - - - label7 - - - - marker7 - -1 - - - style7 - 1 - - - width7 - 1 - - - alpha8 - 1.0 - - - color8 - "dark red" - - - label8 - - - - marker8 - -1 - - - style8 - 1 - - - width8 - 1 - - - alpha9 - 1.0 - - - color9 - "dark green" - - - label9 - - - - marker9 - -1 - - - style9 - 1 - - - width9 - 1 - - - name - "In" - - - nconnections - 1 - - - size - 1024 - - - srate - samp_rate_tx - - - tr_chan - 0 - - - tr_delay - 0 - - - tr_level - 0.0 - - - tr_mode - qtgui.TRIG_MODE_FREE - - - tr_slope - qtgui.TRIG_SLOPE_POS - - - tr_tag - "" - - - type - float - - - update_time - 0.10 - - - ylabel - Amplitude - - - yunit - "" - - - ymax - 1 - - - ymin - -1 - - - - satnogs_debug_msg_source - - alias - - - - comment - - - - affinity - - - - delay - 1 - - - _enabled - 1 - - - _coordinate - (152, 146) - - - _rotation - 0 - - - id - satnogs_debug_msg_source_0 - - - maxoutbuf - 0 - - - msg - "HELLO"*4 - - - minoutbuf - 0 - - - repeat - True - - - - satnogs_udp_msg_source - - alias - - - - comment - The transmitter can also receive payloads -from a UDP source. Use netcat or something -similar to produce dynamic payloads. - - - affinity - - - - _enabled - 1 - - - _coordinate - (136, 366) - - - _rotation - 0 - - - id - satnogs_udp_msg_source_0 - - - addr - "127.0.0.1" - - - mtu - 1500 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - port - 16886 - - - - satnogs_upsat_fsk_frame_encoder - - append_crc - False - - - alias - - - - comment - - - - affinity - - - - dest_addr - UPSAT - - - dest_ssid - 0 - - - _enabled - 1 - - - preamble - [0x33]*8 - - - _coordinate - (408, 151) - - - _rotation - 0 - - - id - satnogs_upsat_fsk_frame_encoder_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - settling_samples - 512 - - - msb_first - True - - - src_addr - ABCD - - - src_ssid - 0 - - - sync_word - [0x7A, 0x0E] - - - ax_25 - True - - - manchester - False - - - whitening - True - - - - audio_source_0 - qtgui_time_sink_x_0_1_0 - 0 - 0 - - - blocks_multiply_const_vxx_0 - audio_sink_0_0 - 0 - 0 - - - blocks_multiply_const_vxx_0 - qtgui_time_sink_x_0_1 - 0 - 0 - - - interp_fir_filter_xxx_0 - blocks_multiply_const_vxx_0 - 0 - 0 - - - satnogs_debug_msg_source_0 - satnogs_upsat_fsk_frame_encoder_0 - msg - pdu - - - satnogs_udp_msg_source_0 - satnogs_upsat_fsk_frame_encoder_0 - msg - pdu - - - satnogs_upsat_fsk_frame_encoder_0 - interp_fir_filter_xxx_0 - 0 - 0 - - diff --git a/apps/flowgraphs/satellites/upsat_fsk_receiver.grc b/apps/flowgraphs/satellites/upsat_fsk_receiver.grc deleted file mode 100644 index b2d59a8..0000000 --- a/apps/flowgraphs/satellites/upsat_fsk_receiver.grc +++ /dev/null @@ -1,2942 +0,0 @@ - - - - Fri Mar 18 13:57:31 2016 - - options - - author - - - - window_size - 1720, 1080 - - - category - Custom - - - comment - - - - description - - - - _enabled - True - - - _coordinate - (8, 8) - - - _rotation - 0 - - - generate_options - qt_gui - - - hier_block_src_path - .: - - - id - upsat_fsk_receiver - - - max_nouts - 0 - - - qt_qss_theme - - - - realtime_scheduling - - - - run_command - {python} -u {filename} - - - run_options - prompt - - - run - True - - - thread_safe_setters - - - - title - - - - - variable - - comment - FSK baud rate - - - _enabled - True - - - _coordinate - (672, 10) - - - _rotation - 0 - - - id - baud_rate - - - value - 9600 - - - - variable_qtgui_range - - comment - - - - value - 0 - - - _enabled - True - - - _coordinate - (1392, 10) - - - gui_hint - - - - _rotation - 0 - - - id - bb_gain_rx - - - label - BB Gain RX - - - min_len - 200 - - - orient - Qt.Horizontal - - - start - 0 - - - step - 0.5 - - - stop - 40 - - - rangeType - float - - - widget - counter_slider - - - - variable - - comment - Decimation factor -for the RX after the -SDR received samples - - - _enabled - True - - - _coordinate - (208, 10) - - - _rotation - 0 - - - id - decimation_rx - - - value - 20 - - - - variable - - comment - The FSK frequency deviation - - - _enabled - True - - - _coordinate - (488, 10) - - - _rotation - 0 - - - id - deviation - - - value - 3.9973e3 - - - - variable_qtgui_range - - comment - - - - value - 0 - - - _enabled - True - - - _coordinate - (1288, 10) - - - gui_hint - - - - _rotation - 0 - - - id - if_gain_rx - - - label - IF Gain RX - - - min_len - 200 - - - orient - Qt.Horizontal - - - start - 0 - - - step - 0.5 - - - stop - 40 - - - rangeType - float - - - widget - counter_slider - - - - variable - - comment - To avoid the SDR carrier at the DC -we shift the LO a little further - - - _enabled - 1 - - - _coordinate - (960, 10) - - - _rotation - 0 - - - id - lo_offset - - - value - 100e3 - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (8, 210) - - - _rotation - 0 - - - id - modulation_index - - - value - deviation / (baud_rate / 2.0) - - - - variable_qtgui_range - - comment - - - - value - 0 - - - _enabled - True - - - _coordinate - (1184, 10) - - - gui_hint - - - - _rotation - 0 - - - id - rf_gain_rx - - - label - RF Gain RX - - - min_len - 200 - - - orient - Qt.Horizontal - - - start - 0 - - - step - 0.5 - - - stop - 40 - - - rangeType - float - - - widget - counter_slider - - - - variable - - comment - The RX center frequency - of the system - - - _enabled - True - - - _coordinate - (792, 10) - - - _rotation - 0 - - - id - rx_frequency - - - value - 435.765e6 - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (16, 130) - - - _rotation - 0 - - - id - samp_rate - - - value - samp_rate_rx/decimation_rx - - - - variable - - comment - SDR device -TX sampling rate - - - _enabled - True - - - _coordinate - (360, 10) - - - _rotation - 0 - - - id - samp_rate_rx - - - value - 2.5e6 - - - - variable_low_pass_filter_taps - - beta - 6.76 - - - comment - - - - cutoff_freq - 20000 - - - _enabled - 1 - - - _coordinate - (1184, 146) - - - _rotation - 0 - - - gain - 1.0 - - - id - taps - - - samp_rate - samp_rate_rx - - - width - 60000 - - - win - firdes.WIN_HAMMING - - - - analog_quadrature_demod_cf - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (792, 250) - - - _rotation - 0 - - - gain - (samp_rate / baud_rate)/(math.pi*modulation_index) - - - id - analog_quadrature_demod_cf_0_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - - digital_clock_recovery_mm_xx - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (888, 370) - - - _rotation - 180 - - - gain_mu - 0.175 - - - gain_omega - 0.25*0.175*0.175 - - - id - digital_clock_recovery_mm_xx_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - mu - 0.5 - - - omega_relative_limit - 0.005 - - - omega - samp_rate/baud_rate - - - type - float - - - - freq_xlating_fir_filter_xxx - - alias - - - - center_freq - lo_offset - - - comment - - - - affinity - - - - decim - decimation_rx - - - _enabled - 1 - - - _coordinate - (424, 226) - - - _rotation - 0 - - - id - freq_xlating_fir_filter_xxx_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - samp_rate - samp_rate_rx - - - taps - taps - - - type - ccc - - - - import - - alias - - - - comment - - - - _enabled - 1 - - - _coordinate - (1184, 354) - - - _rotation - 0 - - - id - import_0 - - - import - import numpy - - - - import - - alias - - - - comment - - - - _enabled - 1 - - - _coordinate - (1184, 298) - - - _rotation - 0 - - - id - import_0_0 - - - import - import math - - - - import - - alias - - - - comment - - - - _enabled - 1 - - - _coordinate - (1184, 410) - - - _rotation - 0 - - - id - import_0_1 - - - import - from gnuradio import filter - - - - osmosdr_source - - alias - - - - ant0 - - - - bb_gain0 - bb_gain_rx - - - bw0 - samp_rate_rx - - - dc_offset_mode0 - 0 - - - corr0 - 0 - - - freq0 - rx_frequency - lo_offset - - - gain_mode0 - False - - - if_gain0 - if_gain_rx - - - iq_balance_mode0 - 0 - - - gain0 - rf_gain_rx - - - ant10 - - - - bb_gain10 - 20 - - - bw10 - 0 - - - dc_offset_mode10 - 0 - - - corr10 - 0 - - - freq10 - 100e6 - - - gain_mode10 - False - - - if_gain10 - 20 - - - iq_balance_mode10 - 0 - - - gain10 - 10 - - - ant11 - - - - bb_gain11 - 20 - - - bw11 - 0 - - - dc_offset_mode11 - 0 - - - corr11 - 0 - - - freq11 - 100e6 - - - gain_mode11 - False - - - if_gain11 - 20 - - - iq_balance_mode11 - 0 - - - gain11 - 10 - - - ant12 - - - - bb_gain12 - 20 - - - bw12 - 0 - - - dc_offset_mode12 - 0 - - - corr12 - 0 - - - freq12 - 100e6 - - - gain_mode12 - False - - - if_gain12 - 20 - - - iq_balance_mode12 - 0 - - - gain12 - 10 - - - ant13 - - - - bb_gain13 - 20 - - - bw13 - 0 - - - dc_offset_mode13 - 0 - - - corr13 - 0 - - - freq13 - 100e6 - - - gain_mode13 - False - - - if_gain13 - 20 - - - iq_balance_mode13 - 0 - - - gain13 - 10 - - - ant14 - - - - bb_gain14 - 20 - - - bw14 - 0 - - - dc_offset_mode14 - 0 - - - corr14 - 0 - - - freq14 - 100e6 - - - gain_mode14 - False - - - if_gain14 - 20 - - - iq_balance_mode14 - 0 - - - gain14 - 10 - - - ant15 - - - - bb_gain15 - 20 - - - bw15 - 0 - - - dc_offset_mode15 - 0 - - - corr15 - 0 - - - freq15 - 100e6 - - - gain_mode15 - False - - - if_gain15 - 20 - - - iq_balance_mode15 - 0 - - - gain15 - 10 - - - ant16 - - - - bb_gain16 - 20 - - - bw16 - 0 - - - dc_offset_mode16 - 0 - - - corr16 - 0 - - - freq16 - 100e6 - - - gain_mode16 - False - - - if_gain16 - 20 - - - iq_balance_mode16 - 0 - - - gain16 - 10 - - - ant17 - - - - bb_gain17 - 20 - - - bw17 - 0 - - - dc_offset_mode17 - 0 - - - corr17 - 0 - - - freq17 - 100e6 - - - gain_mode17 - False - - - if_gain17 - 20 - - - iq_balance_mode17 - 0 - - - gain17 - 10 - - - ant18 - - - - bb_gain18 - 20 - - - bw18 - 0 - - - dc_offset_mode18 - 0 - - - corr18 - 0 - - - freq18 - 100e6 - - - gain_mode18 - False - - - if_gain18 - 20 - - - iq_balance_mode18 - 0 - - - gain18 - 10 - - - ant19 - - - - bb_gain19 - 20 - - - bw19 - 0 - - - dc_offset_mode19 - 0 - - - corr19 - 0 - - - freq19 - 100e6 - - - gain_mode19 - False - - - if_gain19 - 20 - - - iq_balance_mode19 - 0 - - - gain19 - 10 - - - ant1 - - - - bb_gain1 - 20 - - - bw1 - 0 - - - dc_offset_mode1 - 0 - - - corr1 - 0 - - - freq1 - 100e6 - - - gain_mode1 - False - - - if_gain1 - 20 - - - iq_balance_mode1 - 0 - - - gain1 - 10 - - - ant20 - - - - bb_gain20 - 20 - - - bw20 - 0 - - - dc_offset_mode20 - 0 - - - corr20 - 0 - - - freq20 - 100e6 - - - gain_mode20 - False - - - if_gain20 - 20 - - - iq_balance_mode20 - 0 - - - gain20 - 10 - - - ant21 - - - - bb_gain21 - 20 - - - bw21 - 0 - - - dc_offset_mode21 - 0 - - - corr21 - 0 - - - freq21 - 100e6 - - - gain_mode21 - False - - - if_gain21 - 20 - - - iq_balance_mode21 - 0 - - - gain21 - 10 - - - ant22 - - - - bb_gain22 - 20 - - - bw22 - 0 - - - dc_offset_mode22 - 0 - - - corr22 - 0 - - - freq22 - 100e6 - - - gain_mode22 - False - - - if_gain22 - 20 - - - iq_balance_mode22 - 0 - - - gain22 - 10 - - - ant23 - - - - bb_gain23 - 20 - - - bw23 - 0 - - - dc_offset_mode23 - 0 - - - corr23 - 0 - - - freq23 - 100e6 - - - gain_mode23 - False - - - if_gain23 - 20 - - - iq_balance_mode23 - 0 - - - gain23 - 10 - - - ant24 - - - - bb_gain24 - 20 - - - bw24 - 0 - - - dc_offset_mode24 - 0 - - - corr24 - 0 - - - freq24 - 100e6 - - - gain_mode24 - False - - - if_gain24 - 20 - - - iq_balance_mode24 - 0 - - - gain24 - 10 - - - ant25 - - - - bb_gain25 - 20 - - - bw25 - 0 - - - dc_offset_mode25 - 0 - - - corr25 - 0 - - - freq25 - 100e6 - - - gain_mode25 - False - - - if_gain25 - 20 - - - iq_balance_mode25 - 0 - - - gain25 - 10 - - - ant26 - - - - bb_gain26 - 20 - - - bw26 - 0 - - - dc_offset_mode26 - 0 - - - corr26 - 0 - - - freq26 - 100e6 - - - gain_mode26 - False - - - if_gain26 - 20 - - - iq_balance_mode26 - 0 - - - gain26 - 10 - - - ant27 - - - - bb_gain27 - 20 - - - bw27 - 0 - - - dc_offset_mode27 - 0 - - - corr27 - 0 - - - freq27 - 100e6 - - - gain_mode27 - False - - - if_gain27 - 20 - - - iq_balance_mode27 - 0 - - - gain27 - 10 - - - ant28 - - - - bb_gain28 - 20 - - - bw28 - 0 - - - dc_offset_mode28 - 0 - - - corr28 - 0 - - - freq28 - 100e6 - - - gain_mode28 - False - - - if_gain28 - 20 - - - iq_balance_mode28 - 0 - - - gain28 - 10 - - - ant29 - - - - bb_gain29 - 20 - - - bw29 - 0 - - - dc_offset_mode29 - 0 - - - corr29 - 0 - - - freq29 - 100e6 - - - gain_mode29 - False - - - if_gain29 - 20 - - - iq_balance_mode29 - 0 - - - gain29 - 10 - - - ant2 - - - - bb_gain2 - 20 - - - bw2 - 0 - - - dc_offset_mode2 - 0 - - - corr2 - 0 - - - freq2 - 100e6 - - - gain_mode2 - False - - - if_gain2 - 20 - - - iq_balance_mode2 - 0 - - - gain2 - 10 - - - ant30 - - - - bb_gain30 - 20 - - - bw30 - 0 - - - dc_offset_mode30 - 0 - - - corr30 - 0 - - - freq30 - 100e6 - - - gain_mode30 - False - - - if_gain30 - 20 - - - iq_balance_mode30 - 0 - - - gain30 - 10 - - - ant31 - - - - bb_gain31 - 20 - - - bw31 - 0 - - - dc_offset_mode31 - 0 - - - corr31 - 0 - - - freq31 - 100e6 - - - gain_mode31 - False - - - if_gain31 - 20 - - - iq_balance_mode31 - 0 - - - gain31 - 10 - - - ant3 - - - - bb_gain3 - 20 - - - bw3 - 0 - - - dc_offset_mode3 - 0 - - - corr3 - 0 - - - freq3 - 100e6 - - - gain_mode3 - False - - - if_gain3 - 20 - - - iq_balance_mode3 - 0 - - - gain3 - 10 - - - ant4 - - - - bb_gain4 - 20 - - - bw4 - 0 - - - dc_offset_mode4 - 0 - - - corr4 - 0 - - - freq4 - 100e6 - - - gain_mode4 - False - - - if_gain4 - 20 - - - iq_balance_mode4 - 0 - - - gain4 - 10 - - - ant5 - - - - bb_gain5 - 20 - - - bw5 - 0 - - - dc_offset_mode5 - 0 - - - corr5 - 0 - - - freq5 - 100e6 - - - gain_mode5 - False - - - if_gain5 - 20 - - - iq_balance_mode5 - 0 - - - gain5 - 10 - - - ant6 - - - - bb_gain6 - 20 - - - bw6 - 0 - - - dc_offset_mode6 - 0 - - - corr6 - 0 - - - freq6 - 100e6 - - - gain_mode6 - False - - - if_gain6 - 20 - - - iq_balance_mode6 - 0 - - - gain6 - 10 - - - ant7 - - - - bb_gain7 - 20 - - - bw7 - 0 - - - dc_offset_mode7 - 0 - - - corr7 - 0 - - - freq7 - 100e6 - - - gain_mode7 - False - - - if_gain7 - 20 - - - iq_balance_mode7 - 0 - - - gain7 - 10 - - - ant8 - - - - bb_gain8 - 20 - - - bw8 - 0 - - - dc_offset_mode8 - 0 - - - corr8 - 0 - - - freq8 - 100e6 - - - gain_mode8 - False - - - if_gain8 - 20 - - - iq_balance_mode8 - 0 - - - gain8 - 10 - - - ant9 - - - - bb_gain9 - 20 - - - bw9 - 0 - - - dc_offset_mode9 - 0 - - - corr9 - 0 - - - freq9 - 100e6 - - - gain_mode9 - False - - - if_gain9 - 20 - - - iq_balance_mode9 - 0 - - - gain9 - 10 - - - comment - - - - affinity - - - - args - - - - _enabled - 1 - - - _coordinate - (160, 162) - - - _rotation - 0 - - - id - osmosdr_source_0 - - - maxoutbuf - 0 - - - clock_source0 - - - - time_source0 - - - - clock_source1 - - - - time_source1 - - - - clock_source2 - - - - time_source2 - - - - clock_source3 - - - - time_source3 - - - - clock_source4 - - - - time_source4 - - - - clock_source5 - - - - time_source5 - - - - clock_source6 - - - - time_source6 - - - - clock_source7 - - - - time_source7 - - - - minoutbuf - 0 - - - nchan - 1 - - - num_mboards - 1 - - - type - fc32 - - - sample_rate - samp_rate_rx - - - sync - - - - - qtgui_freq_sink_x - - autoscale - False - - - average - 1.0 - - - bw - samp_rate - - - alias - - - - fc - 0 - - - comment - - - - ctrlpanel - True - - - affinity - - - - _enabled - 1 - - - fftsize - 1024 - - - _coordinate - (896, 178) - - - gui_hint - - - - _rotation - 0 - - - grid - True - - - id - qtgui_freq_sink_x_0 - - - legend - True - - - alpha1 - 1.0 - - - color1 - "blue" - - - label1 - - - - width1 - 1 - - - alpha10 - 1.0 - - - color10 - "dark blue" - - - label10 - - - - width10 - 1 - - - alpha2 - 1.0 - - - color2 - "red" - - - label2 - - - - width2 - 1 - - - alpha3 - 1.0 - - - color3 - "green" - - - label3 - - - - width3 - 1 - - - alpha4 - 1.0 - - - color4 - "black" - - - label4 - - - - width4 - 1 - - - alpha5 - 1.0 - - - color5 - "cyan" - - - label5 - - - - width5 - 1 - - - alpha6 - 1.0 - - - color6 - "magenta" - - - label6 - - - - width6 - 1 - - - alpha7 - 1.0 - - - color7 - "yellow" - - - label7 - - - - width7 - 1 - - - alpha8 - 1.0 - - - color8 - "dark red" - - - label8 - - - - width8 - 1 - - - alpha9 - 1.0 - - - color9 - "dark green" - - - label9 - - - - width9 - 1 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - name - "" - - - nconnections - 1 - - - showports - True - - - freqhalf - True - - - tr_chan - 0 - - - tr_level - 0.0 - - - tr_mode - qtgui.TRIG_MODE_FREE - - - tr_tag - "" - - - type - complex - - - update_time - 0.01 - - - wintype - firdes.WIN_BLACKMAN_hARRIS - - - ymax - 10 - - - ymin - -140 - - - - qtgui_waterfall_sink_x - - bw - samp_rate - - - alias - - - - fc - 0 - - - comment - - - - affinity - - - - _enabled - 1 - - - fftsize - 4096 - - - _coordinate - (696, 130) - - - gui_hint - - - - _rotation - 0 - - - grid - True - - - id - qtgui_waterfall_sink_x_0 - - - int_max - 10 - - - int_min - -140 - - - legend - True - - - alpha1 - 1.0 - - - color1 - 0 - - - label1 - - - - alpha10 - 1.0 - - - color10 - 0 - - - label10 - - - - alpha2 - 1.0 - - - color2 - 0 - - - label2 - - - - alpha3 - 1.0 - - - color3 - 0 - - - label3 - - - - alpha4 - 1.0 - - - color4 - 0 - - - label4 - - - - alpha5 - 1.0 - - - color5 - 0 - - - label5 - - - - alpha6 - 1.0 - - - color6 - 0 - - - label6 - - - - alpha7 - 1.0 - - - color7 - 0 - - - label7 - - - - alpha8 - 1.0 - - - color8 - 0 - - - label8 - - - - alpha9 - 1.0 - - - color9 - 0 - - - label9 - - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - name - "" - - - nconnections - 1 - - - showports - True - - - freqhalf - True - - - type - complex - - - update_time - 0.05 - - - wintype - firdes.WIN_BLACKMAN_hARRIS - - - - satnogs_multi_format_msg_sink - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (360, 370) - - - _rotation - 180 - - - id - satnogs_multi_format_msg_sink_0 - - - format - 0 - - - - satnogs_multi_format_msg_sink - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (416, 586) - - - _rotation - 180 - - - id - satnogs_multi_format_msg_sink_0_0 - - - format - 1 - - - - satnogs_udp_msg_sink - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (376, 474) - - - _rotation - 180 - - - id - satnogs_udp_msg_sink_0 - - - addr - "10.2.110.42" - - - mtu - 1500 - - - port - 16886 - - - - satnogs_upsat_fsk_frame_acquisition - - alias - - - - check_crc - False - - - comment - - - - affinity - - - - _enabled - 1 - - - preamble - [0x33]*8 - - - _coordinate - (656, 362) - - - _rotation - 180 - - - id - satnogs_upsat_fsk_frame_acquisition_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - sync_word - [0x7A, 0x0E] - - - ax_25 - True - - - manchester - False - - - whitening - False - - - - analog_quadrature_demod_cf_0_0 - digital_clock_recovery_mm_xx_0 - 0 - 0 - - - digital_clock_recovery_mm_xx_0 - satnogs_upsat_fsk_frame_acquisition_0 - 0 - 0 - - - freq_xlating_fir_filter_xxx_0 - analog_quadrature_demod_cf_0_0 - 0 - 0 - - - freq_xlating_fir_filter_xxx_0 - qtgui_freq_sink_x_0 - 0 - 0 - - - freq_xlating_fir_filter_xxx_0 - qtgui_waterfall_sink_x_0 - 0 - 0 - - - osmosdr_source_0 - freq_xlating_fir_filter_xxx_0 - 0 - 0 - - - satnogs_upsat_fsk_frame_acquisition_0 - satnogs_multi_format_msg_sink_0 - pdu - in - - - satnogs_upsat_fsk_frame_acquisition_0 - satnogs_multi_format_msg_sink_0_0 - pdu - in - - - satnogs_upsat_fsk_frame_acquisition_0 - satnogs_udp_msg_sink_0 - pdu - in - - diff --git a/apps/flowgraphs/satellites/upsat_fsk_transmitter.grc b/apps/flowgraphs/satellites/upsat_fsk_transmitter.grc deleted file mode 100644 index 1486fd2..0000000 --- a/apps/flowgraphs/satellites/upsat_fsk_transmitter.grc +++ /dev/null @@ -1,2360 +0,0 @@ - - - - Fri Mar 18 13:57:31 2016 - - options - - author - - - - window_size - 1720, 1080 - - - category - Custom - - - comment - - - - description - - - - _enabled - True - - - _coordinate - (8, 8) - - - _rotation - 0 - - - generate_options - qt_gui - - - hier_block_src_path - .: - - - id - upsat_fsk_transmitter - - - max_nouts - 0 - - - qt_qss_theme - - - - realtime_scheduling - - - - run_command - {python} -u {filename} - - - run_options - prompt - - - run - True - - - thread_safe_setters - - - - title - - - - - variable - - comment - FSK baud rate - - - _enabled - True - - - _coordinate - (504, 18) - - - _rotation - 0 - - - id - baud_rate - - - value - 1200 - - - - variable_qtgui_range - - comment - - - - value - 0 - - - _enabled - True - - - _coordinate - (1256, 10) - - - gui_hint - - - - _rotation - 0 - - - id - bb_gain_rx - - - label - BB Gain RX - - - min_len - 200 - - - orient - Qt.Horizontal - - - start - 0 - - - step - 0.5 - - - stop - 40 - - - rangeType - float - - - widget - counter_slider - - - - variable_qtgui_range - - comment - - - - value - 0 - - - _enabled - True - - - _coordinate - (1256, 146) - - - gui_hint - - - - _rotation - 0 - - - id - bb_gain_tx - - - label - BB Gain TX - - - min_len - 200 - - - orient - Qt.Horizontal - - - start - 0 - - - step - 0.5 - - - stop - 40 - - - rangeType - float - - - widget - counter_slider - - - - variable - - comment - The FSK frequency deviation - - - _enabled - True - - - _coordinate - (328, 18) - - - _rotation - 0 - - - id - deviation - - - value - 3.9973e3 - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (8, 338) - - - _rotation - 0 - - - id - gaussian_taps - - - value - filter.firdes.gaussian(1.0, samples_per_symbol_tx, 1.0, 4*samples_per_symbol_tx) - - - - variable_qtgui_range - - comment - - - - value - 0 - - - _enabled - True - - - _coordinate - (1152, 10) - - - gui_hint - - - - _rotation - 0 - - - id - if_gain_rx - - - label - IF Gain RX - - - min_len - 200 - - - orient - Qt.Horizontal - - - start - 0 - - - step - 0.5 - - - stop - 40 - - - rangeType - float - - - widget - counter_slider - - - - variable_qtgui_range - - comment - - - - value - 0 - - - _enabled - True - - - _coordinate - (1152, 146) - - - gui_hint - - - - _rotation - 0 - - - id - if_gain_tx - - - label - IF Gain TX - - - min_len - 200 - - - orient - Qt.Horizontal - - - start - 0 - - - step - 0.5 - - - stop - 40 - - - rangeType - float - - - widget - counter_slider - - - - variable - - comment - - - - _enabled - 1 - - - _coordinate - (8, 466) - - - _rotation - 0 - - - id - interp_taps - - - value - numpy.convolve(numpy.array(gaussian_taps), numpy.array(sq_wave)) - - - - variable - - comment - To avoid the SDR carrier at the DC -we shift the LO a little further - - - _enabled - 1 - - - _coordinate - (768, 10) - - - _rotation - 0 - - - id - lo_offset - - - value - 100e3 - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (8, 266) - - - _rotation - 0 - - - id - modulation_index - - - value - deviation / (baud_rate / 2.0) - - - - variable_qtgui_range - - comment - - - - value - 0 - - - _enabled - True - - - _coordinate - (1040, 10) - - - gui_hint - - - - _rotation - 0 - - - id - rf_gain_rx - - - label - RF Gain RX - - - min_len - 200 - - - orient - Qt.Horizontal - - - start - 0 - - - step - 0.5 - - - stop - 40 - - - rangeType - float - - - widget - counter_slider - - - - variable_qtgui_range - - comment - - - - value - 0 - - - _enabled - True - - - _coordinate - (1040, 146) - - - gui_hint - - - - _rotation - 0 - - - id - rf_gain_tx - - - label - RF Gain TX - - - min_len - 200 - - - orient - Qt.Horizontal - - - start - 0 - - - step - 0.5 - - - stop - 70 - - - rangeType - float - - - widget - counter_slider - - - - variable - - comment - SDR device -TX sampling rate - - - _enabled - True - - - _coordinate - (208, 10) - - - _rotation - 0 - - - id - samp_rate_tx - - - value - 2e6 - - - - variable - - comment - Samples per FSK symbol. -Should be changed only for better -spectrum mask, or if the resampling -is too great and becomes a bottlneck. - - - _enabled - True - - - _coordinate - (8, 117) - - - _rotation - 0 - - - id - samples_per_symbol_tx - - - value - 4*8 - - - - variable - - comment - - - - _enabled - 1 - - - _coordinate - (8, 402) - - - _rotation - 0 - - - id - sq_wave - - - value - (1.0, ) * samples_per_symbol_tx - - - - variable - - comment - The TX center frequency - of the system - - - _enabled - True - - - _coordinate - (608, 18) - - - _rotation - 0 - - - id - tx_frequency - - - value - 145.835e6 - - - - analog_frequency_modulator_fc - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (1120, 306) - - - _rotation - 0 - - - id - analog_frequency_modulator_fc_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - sensitivity - (math.pi*modulation_index) / samples_per_symbol_tx - - - - analog_sig_source_x - - amp - 1 - - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - freq - lo_offset - - - _coordinate - (1032, 370) - - - _rotation - 180 - - - id - analog_sig_source_x_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - offset - 0 - - - type - complex - - - samp_rate - samp_rate_tx - - - waveform - analog.GR_COS_WAVE - - - - blocks_multiply_xx - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (840, 434) - - - _rotation - 180 - - - id - blocks_multiply_xx_0 - - - type - complex - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - num_inputs - 2 - - - vlen - 1 - - - - import - - alias - - - - comment - - - - _enabled - 1 - - - _coordinate - (1368, 66) - - - _rotation - 0 - - - id - import_0 - - - import - import numpy - - - - import - - alias - - - - comment - - - - _enabled - 1 - - - _coordinate - (1368, 10) - - - _rotation - 0 - - - id - import_0_0 - - - import - import math - - - - import - - alias - - - - comment - - - - _enabled - 1 - - - _coordinate - (1368, 122) - - - _rotation - 0 - - - id - import_0_1 - - - import - from gnuradio import filter - - - - interp_fir_filter_xxx - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (888, 298) - - - _rotation - 0 - - - id - interp_fir_filter_xxx_0 - - - interp - samples_per_symbol_tx - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - samp_delay - 0 - - - taps - interp_taps - - - type - fff - - - - osmosdr_sink - - alias - - - - ant0 - - - - bb_gain0 - bb_gain_tx - - - bw0 - samp_rate_tx - - - corr0 - 0 - - - freq0 - tx_frequency - lo_offset - - - if_gain0 - if_gain_tx - - - gain0 - rf_gain_tx - - - ant10 - - - - bb_gain10 - 20 - - - bw10 - 0 - - - corr10 - 0 - - - freq10 - 100e6 - - - if_gain10 - 20 - - - gain10 - 10 - - - ant11 - - - - bb_gain11 - 20 - - - bw11 - 0 - - - corr11 - 0 - - - freq11 - 100e6 - - - if_gain11 - 20 - - - gain11 - 10 - - - ant12 - - - - bb_gain12 - 20 - - - bw12 - 0 - - - corr12 - 0 - - - freq12 - 100e6 - - - if_gain12 - 20 - - - gain12 - 10 - - - ant13 - - - - bb_gain13 - 20 - - - bw13 - 0 - - - corr13 - 0 - - - freq13 - 100e6 - - - if_gain13 - 20 - - - gain13 - 10 - - - ant14 - - - - bb_gain14 - 20 - - - bw14 - 0 - - - corr14 - 0 - - - freq14 - 100e6 - - - if_gain14 - 20 - - - gain14 - 10 - - - ant15 - - - - bb_gain15 - 20 - - - bw15 - 0 - - - corr15 - 0 - - - freq15 - 100e6 - - - if_gain15 - 20 - - - gain15 - 10 - - - ant16 - - - - bb_gain16 - 20 - - - bw16 - 0 - - - corr16 - 0 - - - freq16 - 100e6 - - - if_gain16 - 20 - - - gain16 - 10 - - - ant17 - - - - bb_gain17 - 20 - - - bw17 - 0 - - - corr17 - 0 - - - freq17 - 100e6 - - - if_gain17 - 20 - - - gain17 - 10 - - - ant18 - - - - bb_gain18 - 20 - - - bw18 - 0 - - - corr18 - 0 - - - freq18 - 100e6 - - - if_gain18 - 20 - - - gain18 - 10 - - - ant19 - - - - bb_gain19 - 20 - - - bw19 - 0 - - - corr19 - 0 - - - freq19 - 100e6 - - - if_gain19 - 20 - - - gain19 - 10 - - - ant1 - - - - bb_gain1 - 20 - - - bw1 - 0 - - - corr1 - 0 - - - freq1 - 100e6 - - - if_gain1 - 20 - - - gain1 - 10 - - - ant20 - - - - bb_gain20 - 20 - - - bw20 - 0 - - - corr20 - 0 - - - freq20 - 100e6 - - - if_gain20 - 20 - - - gain20 - 10 - - - ant21 - - - - bb_gain21 - 20 - - - bw21 - 0 - - - corr21 - 0 - - - freq21 - 100e6 - - - if_gain21 - 20 - - - gain21 - 10 - - - ant22 - - - - bb_gain22 - 20 - - - bw22 - 0 - - - corr22 - 0 - - - freq22 - 100e6 - - - if_gain22 - 20 - - - gain22 - 10 - - - ant23 - - - - bb_gain23 - 20 - - - bw23 - 0 - - - corr23 - 0 - - - freq23 - 100e6 - - - if_gain23 - 20 - - - gain23 - 10 - - - ant24 - - - - bb_gain24 - 20 - - - bw24 - 0 - - - corr24 - 0 - - - freq24 - 100e6 - - - if_gain24 - 20 - - - gain24 - 10 - - - ant25 - - - - bb_gain25 - 20 - - - bw25 - 0 - - - corr25 - 0 - - - freq25 - 100e6 - - - if_gain25 - 20 - - - gain25 - 10 - - - ant26 - - - - bb_gain26 - 20 - - - bw26 - 0 - - - corr26 - 0 - - - freq26 - 100e6 - - - if_gain26 - 20 - - - gain26 - 10 - - - ant27 - - - - bb_gain27 - 20 - - - bw27 - 0 - - - corr27 - 0 - - - freq27 - 100e6 - - - if_gain27 - 20 - - - gain27 - 10 - - - ant28 - - - - bb_gain28 - 20 - - - bw28 - 0 - - - corr28 - 0 - - - freq28 - 100e6 - - - if_gain28 - 20 - - - gain28 - 10 - - - ant29 - - - - bb_gain29 - 20 - - - bw29 - 0 - - - corr29 - 0 - - - freq29 - 100e6 - - - if_gain29 - 20 - - - gain29 - 10 - - - ant2 - - - - bb_gain2 - 20 - - - bw2 - 0 - - - corr2 - 0 - - - freq2 - 100e6 - - - if_gain2 - 20 - - - gain2 - 10 - - - ant30 - - - - bb_gain30 - 20 - - - bw30 - 0 - - - corr30 - 0 - - - freq30 - 100e6 - - - if_gain30 - 20 - - - gain30 - 10 - - - ant31 - - - - bb_gain31 - 20 - - - bw31 - 0 - - - corr31 - 0 - - - freq31 - 100e6 - - - if_gain31 - 20 - - - gain31 - 10 - - - ant3 - - - - bb_gain3 - 20 - - - bw3 - 0 - - - corr3 - 0 - - - freq3 - 100e6 - - - if_gain3 - 20 - - - gain3 - 10 - - - ant4 - - - - bb_gain4 - 20 - - - bw4 - 0 - - - corr4 - 0 - - - freq4 - 100e6 - - - if_gain4 - 20 - - - gain4 - 10 - - - ant5 - - - - bb_gain5 - 20 - - - bw5 - 0 - - - corr5 - 0 - - - freq5 - 100e6 - - - if_gain5 - 20 - - - gain5 - 10 - - - ant6 - - - - bb_gain6 - 20 - - - bw6 - 0 - - - corr6 - 0 - - - freq6 - 100e6 - - - if_gain6 - 20 - - - gain6 - 10 - - - ant7 - - - - bb_gain7 - 20 - - - bw7 - 0 - - - corr7 - 0 - - - freq7 - 100e6 - - - if_gain7 - 20 - - - gain7 - 10 - - - ant8 - - - - bb_gain8 - 20 - - - bw8 - 0 - - - corr8 - 0 - - - freq8 - 100e6 - - - if_gain8 - 20 - - - gain8 - 10 - - - ant9 - - - - bb_gain9 - 20 - - - bw9 - 0 - - - corr9 - 0 - - - freq9 - 100e6 - - - if_gain9 - 20 - - - gain9 - 10 - - - comment - - - - affinity - - - - args - - - - _enabled - 1 - - - _coordinate - (424, 482) - - - _rotation - 180 - - - id - osmosdr_sink_0 - - - type - fc32 - - - clock_source0 - - - - time_source0 - - - - clock_source1 - - - - time_source1 - - - - clock_source2 - - - - time_source2 - - - - clock_source3 - - - - time_source3 - - - - clock_source4 - - - - time_source4 - - - - clock_source5 - - - - time_source5 - - - - clock_source6 - - - - time_source6 - - - - clock_source7 - - - - time_source7 - - - - nchan - 1 - - - num_mboards - 1 - - - sample_rate - samp_rate_tx - - - sync - - - - - pfb_arb_resampler_xxx - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (1328, 434) - - - _rotation - 180 - - - id - pfb_arb_resampler_xxx_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - nfilts - 32 - - - rrate - samp_rate_tx / (baud_rate * samples_per_symbol_tx) - - - samp_delay - 0 - - - atten - 60 - - - taps - firdes.low_pass_2(32, 32, 0.8, 0.1, 60) - - - type - ccf - - - - satnogs_debug_msg_source - - alias - - - - comment - - - - affinity - - - - delay - 1 - - - _enabled - 1 - - - _coordinate - (256, 218) - - - _rotation - 0 - - - id - satnogs_debug_msg_source_0 - - - maxoutbuf - 0 - - - msg - 'HELLO UPSAT FROM EARTH' * 2 - - - minoutbuf - 0 - - - repeat - True - - - - satnogs_udp_msg_source - - alias - - - - comment - The transmitter can also receive payloads -from a UDP source. Use netcat or something -similar to produce dynamic payloads. - - - affinity - - - - _enabled - 1 - - - _coordinate - (256, 314) - - - _rotation - 0 - - - id - satnogs_udp_msg_source_0 - - - addr - "127.0.0.1" - - - mtu - 1500 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - port - 16886 - - - - satnogs_upsat_fsk_frame_encoder - - append_crc - False - - - alias - - - - comment - - - - affinity - - - - dest_addr - UPSAT - - - dest_ssid - 0 - - - _enabled - 1 - - - preamble - [0x33]*8 - - - _coordinate - (568, 218) - - - _rotation - 0 - - - id - satnogs_upsat_fsk_frame_encoder_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - settling_samples - 512 - - - msb_first - True - - - src_addr - ABCD - - - src_ssid - 0 - - - sync_word - [0x7A, 0x0E] - - - ax_25 - True - - - manchester - False - - - whitening - False - - - - analog_frequency_modulator_fc_0 - pfb_arb_resampler_xxx_0 - 0 - 0 - - - analog_sig_source_x_0 - blocks_multiply_xx_0 - 0 - 1 - - - blocks_multiply_xx_0 - osmosdr_sink_0 - 0 - 0 - - - interp_fir_filter_xxx_0 - analog_frequency_modulator_fc_0 - 0 - 0 - - - pfb_arb_resampler_xxx_0 - blocks_multiply_xx_0 - 0 - 0 - - - satnogs_debug_msg_source_0 - satnogs_upsat_fsk_frame_encoder_0 - msg - pdu - - - satnogs_udp_msg_source_0 - satnogs_upsat_fsk_frame_encoder_0 - msg - pdu - - - satnogs_upsat_fsk_frame_encoder_0 - interp_fir_filter_xxx_0 - 0 - 0 - - diff --git a/apps/flowgraphs/satellites/upsat_transceiver_cli.grc b/apps/flowgraphs/satellites/upsat_transceiver_cli.grc deleted file mode 100644 index 09d37b8..0000000 --- a/apps/flowgraphs/satellites/upsat_transceiver_cli.grc +++ /dev/null @@ -1,4652 +0,0 @@ - - - - Fri Jul 1 17:53:00 2016 - - options - - author - Manolis Surligas (surligas@gmail.com) - - - window_size - 1768,1080 - - - category - Custom - - - comment - - - - description - SATNOGS transceiver for UPSAT satellite - - - _enabled - True - - - _coordinate - (8, 8) - - - _rotation - 0 - - - generate_options - no_gui - - - hier_block_src_path - .: - - - id - upsat_transceiver_cli - - - max_nouts - 0 - - - qt_qss_theme - - - - realtime_scheduling - - - - run_command - {python} -u {filename} - - - run_options - run - - - run - True - - - thread_safe_setters - - - - title - UPSat Tranceiver - - - - variable - - comment - FSK baud rate - - - _enabled - True - - - _coordinate - (1048, 13) - - - _rotation - 0 - - - id - baud_rate_downlink - - - value - 9600 - - - - variable - - comment - FSK baud rate - - - _enabled - True - - - _coordinate - (1048, 109) - - - _rotation - 0 - - - id - baud_rate_uplink - - - value - 1200 - - - - variable - - comment - Decimation factor -for the RX after the -SDR received samples - - - _enabled - True - - - _coordinate - (736, 13) - - - _rotation - 0 - - - id - decimation_rx - - - value - 20 - - - - variable - - comment - The FSK frequency deviation - - - _enabled - True - - - _coordinate - (872, 13) - - - _rotation - 0 - - - id - deviation - - - value - 3.9973e3 - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (168, 925) - - - _rotation - 0 - - - id - first_stage_samp_rate_rx - - - value - samp_rate_rx / decimation_rx - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (16, 901) - - - _rotation - 0 - - - id - gaussian_taps - - - value - filter.firdes.gaussian(1.0, samples_per_symbol_tx, 1.0, 4*samples_per_symbol_tx) - - - - variable - - comment - - - - _enabled - 1 - - - _coordinate - (168, 981) - - - _rotation - 0 - - - id - interp_taps - - - value - numpy.convolve(numpy.array(gaussian_taps), numpy.array(sq_wave)) - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (296, 13) - - - _rotation - 0 - - - id - modulation_index_downlink - - - value - deviation / (baud_rate_downlink / 2.0) - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (296, 77) - - - _rotation - 0 - - - id - modulation_index_uplink - - - value - deviation / (baud_rate_uplink / 2.0) - - - - variable - - comment - The RX center frequency - of the system - - - _enabled - True - - - _coordinate - (1368, 13) - - - _rotation - 0 - - - id - rx_frequency - - - value - 435.765e6 - - - - variable - - comment - SDR device -TX sampling rate - - - _enabled - True - - - _coordinate - (760, 885) - - - _rotation - 0 - - - id - samp_rate_rx - - - value - satnogs.hw_rx_settings[rx_sdr_device]['samp_rate'] - - - - variable - - comment - SDR device -TX sampling rate - - - _enabled - True - - - _coordinate - (760, 773) - - - _rotation - 0 - - - id - samp_rate_tx - - - value - satnogs.hw_tx_settings[rx_sdr_device]['samp_rate'] - - - - variable - - comment - Samples per FSK symbol. -Should be changed only for better -spectrum mask, or if the resampling -is too great and becomes a bottlneck. - - - _enabled - True - - - _coordinate - (536, 13) - - - _rotation - 0 - - - id - samples_per_symbol_tx - - - value - 4*8 - - - - variable - - comment - - - - _enabled - 1 - - - _coordinate - (16, 981) - - - _rotation - 0 - - - id - sq_wave - - - value - (1.0, ) * samples_per_symbol_tx - - - - variable_low_pass_filter_taps - - beta - 6.76 - - - comment - - - - cutoff_freq - 20000 - - - _enabled - 1 - - - _coordinate - (16, 762) - - - _rotation - 0 - - - gain - 1.0 - - - id - taps - - - samp_rate - samp_rate_rx - - - width - 60000 - - - win - firdes.WIN_HAMMING - - - - variable - - comment - The TX center frequency - of the system - - - _enabled - True - - - _coordinate - (1216, 13) - - - _rotation - 0 - - - id - tx_frequency - - - value - 145.835e6 - - - - analog_frequency_modulator_fc - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (792, 228) - - - _rotation - 0 - - - id - analog_frequency_modulator_fc_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - sensitivity - (math.pi*modulation_index_uplink) / samples_per_symbol_tx - - - - analog_quadrature_demod_cf - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (552, 524) - - - _rotation - 0 - - - gain - ((first_stage_samp_rate_rx) / baud_rate_downlink)/(math.pi*modulation_index_downlink) - - - id - analog_quadrature_demod_cf_0_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - - analog_sig_source_x - - amp - 1 - - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - freq - lo_offset - - - _coordinate - (952, 272) - - - _rotation - 180 - - - id - analog_sig_source_x_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - offset - 0 - - - type - complex - - - samp_rate - samp_rate_tx - - - waveform - analog.GR_COS_WAVE - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (248, 774) - - - _rotation - 0 - - - id - bind_addr - - - label - - - - short_id - - - - type - string - - - value - 0.0.0.0 - - - - blocks_multiply_xx - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (832, 352) - - - _rotation - 180 - - - id - blocks_multiply_xx_0 - - - type - complex - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - num_inputs - 2 - - - vlen - 1 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (248, 846) - - - _rotation - 0 - - - id - dest_addr - - - label - - - - short_id - - - - type - string - - - value - 127.0.0.1 - - - - digital_binary_slicer_fb - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (944, 528) - - - _rotation - 0 - - - id - digital_binary_slicer_fb_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - - digital_clock_recovery_mm_xx - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (736, 496) - - - _rotation - 0 - - - gain_mu - 0.175 - - - gain_omega - 0.25*0.175*0.175 - - - id - digital_clock_recovery_mm_xx_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - mu - 0.5 - - - omega_relative_limit - 0.005 - - - omega - first_stage_samp_rate_rx/baud_rate_downlink - - - type - float - - - - freq_xlating_fir_filter_xxx - - alias - - - - center_freq - lo_offset - - - comment - - - - affinity - - - - decim - decimation_rx - - - _enabled - 1 - - - _coordinate - (304, 503) - - - _rotation - 0 - - - id - freq_xlating_fir_filter_xxx_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - samp_rate - samp_rate_rx - - - taps - taps - - - type - ccc - - - - import - - alias - - - - comment - - - - _enabled - 1 - - - _coordinate - (184, 60) - - - _rotation - 0 - - - id - import_0 - - - import - import numpy - - - - import - - alias - - - - comment - - - - _enabled - 1 - - - _coordinate - (184, 12) - - - _rotation - 0 - - - id - import_0_0 - - - import - import math - - - - import - - alias - - - - comment - - - - _enabled - 1 - - - _coordinate - (184, 108) - - - _rotation - 0 - - - id - import_0_1 - - - import - from gnuradio import filter - - - - interp_fir_filter_xxx - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (592, 221) - - - _rotation - 0 - - - id - interp_fir_filter_xxx_0 - - - interp - samples_per_symbol_tx - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - samp_delay - 0 - - - taps - interp_taps - - - type - fff - - - - parameter - - alias - - - - comment - To avoid the SDR carrier at the DC -we shift the LO a little further - - - _enabled - True - - - _coordinate - (864, 774) - - - _rotation - 0 - - - id - lo_offset - - - label - - - - short_id - - - - type - eng_float - - - value - 100e3 - - - - osmosdr_sink - - alias - - - - ant0 - satnogs.hw_tx_settings[tx_sdr_device]['antenna'] - - - bb_gain0 - satnogs.hw_tx_settings[tx_sdr_device]['bb_gain'] - - - bw0 - samp_rate_tx - - - corr0 - 0 - - - freq0 - tx_frequency - lo_offset - - - if_gain0 - satnogs.hw_tx_settings[tx_sdr_device]['if_gain'] - - - gain0 - satnogs.hw_tx_settings[tx_sdr_device]['rf_gain'] - - - ant10 - - - - bb_gain10 - 20 - - - bw10 - 0 - - - corr10 - 0 - - - freq10 - 100e6 - - - if_gain10 - 20 - - - gain10 - 10 - - - ant11 - - - - bb_gain11 - 20 - - - bw11 - 0 - - - corr11 - 0 - - - freq11 - 100e6 - - - if_gain11 - 20 - - - gain11 - 10 - - - ant12 - - - - bb_gain12 - 20 - - - bw12 - 0 - - - corr12 - 0 - - - freq12 - 100e6 - - - if_gain12 - 20 - - - gain12 - 10 - - - ant13 - - - - bb_gain13 - 20 - - - bw13 - 0 - - - corr13 - 0 - - - freq13 - 100e6 - - - if_gain13 - 20 - - - gain13 - 10 - - - ant14 - - - - bb_gain14 - 20 - - - bw14 - 0 - - - corr14 - 0 - - - freq14 - 100e6 - - - if_gain14 - 20 - - - gain14 - 10 - - - ant15 - - - - bb_gain15 - 20 - - - bw15 - 0 - - - corr15 - 0 - - - freq15 - 100e6 - - - if_gain15 - 20 - - - gain15 - 10 - - - ant16 - - - - bb_gain16 - 20 - - - bw16 - 0 - - - corr16 - 0 - - - freq16 - 100e6 - - - if_gain16 - 20 - - - gain16 - 10 - - - ant17 - - - - bb_gain17 - 20 - - - bw17 - 0 - - - corr17 - 0 - - - freq17 - 100e6 - - - if_gain17 - 20 - - - gain17 - 10 - - - ant18 - - - - bb_gain18 - 20 - - - bw18 - 0 - - - corr18 - 0 - - - freq18 - 100e6 - - - if_gain18 - 20 - - - gain18 - 10 - - - ant19 - - - - bb_gain19 - 20 - - - bw19 - 0 - - - corr19 - 0 - - - freq19 - 100e6 - - - if_gain19 - 20 - - - gain19 - 10 - - - ant1 - - - - bb_gain1 - 20 - - - bw1 - 0 - - - corr1 - 0 - - - freq1 - 100e6 - - - if_gain1 - 20 - - - gain1 - 10 - - - ant20 - - - - bb_gain20 - 20 - - - bw20 - 0 - - - corr20 - 0 - - - freq20 - 100e6 - - - if_gain20 - 20 - - - gain20 - 10 - - - ant21 - - - - bb_gain21 - 20 - - - bw21 - 0 - - - corr21 - 0 - - - freq21 - 100e6 - - - if_gain21 - 20 - - - gain21 - 10 - - - ant22 - - - - bb_gain22 - 20 - - - bw22 - 0 - - - corr22 - 0 - - - freq22 - 100e6 - - - if_gain22 - 20 - - - gain22 - 10 - - - ant23 - - - - bb_gain23 - 20 - - - bw23 - 0 - - - corr23 - 0 - - - freq23 - 100e6 - - - if_gain23 - 20 - - - gain23 - 10 - - - ant24 - - - - bb_gain24 - 20 - - - bw24 - 0 - - - corr24 - 0 - - - freq24 - 100e6 - - - if_gain24 - 20 - - - gain24 - 10 - - - ant25 - - - - bb_gain25 - 20 - - - bw25 - 0 - - - corr25 - 0 - - - freq25 - 100e6 - - - if_gain25 - 20 - - - gain25 - 10 - - - ant26 - - - - bb_gain26 - 20 - - - bw26 - 0 - - - corr26 - 0 - - - freq26 - 100e6 - - - if_gain26 - 20 - - - gain26 - 10 - - - ant27 - - - - bb_gain27 - 20 - - - bw27 - 0 - - - corr27 - 0 - - - freq27 - 100e6 - - - if_gain27 - 20 - - - gain27 - 10 - - - ant28 - - - - bb_gain28 - 20 - - - bw28 - 0 - - - corr28 - 0 - - - freq28 - 100e6 - - - if_gain28 - 20 - - - gain28 - 10 - - - ant29 - - - - bb_gain29 - 20 - - - bw29 - 0 - - - corr29 - 0 - - - freq29 - 100e6 - - - if_gain29 - 20 - - - gain29 - 10 - - - ant2 - - - - bb_gain2 - 20 - - - bw2 - 0 - - - corr2 - 0 - - - freq2 - 100e6 - - - if_gain2 - 20 - - - gain2 - 10 - - - ant30 - - - - bb_gain30 - 20 - - - bw30 - 0 - - - corr30 - 0 - - - freq30 - 100e6 - - - if_gain30 - 20 - - - gain30 - 10 - - - ant31 - - - - bb_gain31 - 20 - - - bw31 - 0 - - - corr31 - 0 - - - freq31 - 100e6 - - - if_gain31 - 20 - - - gain31 - 10 - - - ant3 - - - - bb_gain3 - 20 - - - bw3 - 0 - - - corr3 - 0 - - - freq3 - 100e6 - - - if_gain3 - 20 - - - gain3 - 10 - - - ant4 - - - - bb_gain4 - 20 - - - bw4 - 0 - - - corr4 - 0 - - - freq4 - 100e6 - - - if_gain4 - 20 - - - gain4 - 10 - - - ant5 - - - - bb_gain5 - 20 - - - bw5 - 0 - - - corr5 - 0 - - - freq5 - 100e6 - - - if_gain5 - 20 - - - gain5 - 10 - - - ant6 - - - - bb_gain6 - 20 - - - bw6 - 0 - - - corr6 - 0 - - - freq6 - 100e6 - - - if_gain6 - 20 - - - gain6 - 10 - - - ant7 - - - - bb_gain7 - 20 - - - bw7 - 0 - - - corr7 - 0 - - - freq7 - 100e6 - - - if_gain7 - 20 - - - gain7 - 10 - - - ant8 - - - - bb_gain8 - 20 - - - bw8 - 0 - - - corr8 - 0 - - - freq8 - 100e6 - - - if_gain8 - 20 - - - gain8 - 10 - - - ant9 - - - - bb_gain9 - 20 - - - bw9 - 0 - - - corr9 - 0 - - - freq9 - 100e6 - - - if_gain9 - 20 - - - gain9 - 10 - - - comment - - - - affinity - - - - args - satnogs.hw_tx_settings[rx_sdr_device]['dev_arg'] - - - _enabled - 1 - - - _coordinate - (544, 315) - - - _rotation - 180 - - - id - osmosdr_sink_0 - - - type - fc32 - - - clock_source0 - - - - time_source0 - - - - clock_source1 - - - - time_source1 - - - - clock_source2 - - - - time_source2 - - - - clock_source3 - - - - time_source3 - - - - clock_source4 - - - - time_source4 - - - - clock_source5 - - - - time_source5 - - - - clock_source6 - - - - time_source6 - - - - clock_source7 - - - - time_source7 - - - - nchan - 1 - - - num_mboards - 1 - - - sample_rate - samp_rate_tx - - - sync - - - - - osmosdr_source - - alias - - - - ant0 - satnogs.hw_rx_settings[rx_sdr_device]['antenna'] - - - bb_gain0 - satnogs.hw_rx_settings[rx_sdr_device]['bb_gain'] - - - bw0 - samp_rate_rx - - - dc_offset_mode0 - 0 - - - corr0 - 0 - - - freq0 - rx_frequency - lo_offset - - - gain_mode0 - False - - - if_gain0 - satnogs.hw_rx_settings[rx_sdr_device]['if_gain'] - - - iq_balance_mode0 - 0 - - - gain0 - satnogs.hw_rx_settings[rx_sdr_device]['rf_gain'] - - - ant10 - - - - bb_gain10 - 20 - - - bw10 - 0 - - - dc_offset_mode10 - 0 - - - corr10 - 0 - - - freq10 - 100e6 - - - gain_mode10 - False - - - if_gain10 - 20 - - - iq_balance_mode10 - 0 - - - gain10 - 10 - - - ant11 - - - - bb_gain11 - 20 - - - bw11 - 0 - - - dc_offset_mode11 - 0 - - - corr11 - 0 - - - freq11 - 100e6 - - - gain_mode11 - False - - - if_gain11 - 20 - - - iq_balance_mode11 - 0 - - - gain11 - 10 - - - ant12 - - - - bb_gain12 - 20 - - - bw12 - 0 - - - dc_offset_mode12 - 0 - - - corr12 - 0 - - - freq12 - 100e6 - - - gain_mode12 - False - - - if_gain12 - 20 - - - iq_balance_mode12 - 0 - - - gain12 - 10 - - - ant13 - - - - bb_gain13 - 20 - - - bw13 - 0 - - - dc_offset_mode13 - 0 - - - corr13 - 0 - - - freq13 - 100e6 - - - gain_mode13 - False - - - if_gain13 - 20 - - - iq_balance_mode13 - 0 - - - gain13 - 10 - - - ant14 - - - - bb_gain14 - 20 - - - bw14 - 0 - - - dc_offset_mode14 - 0 - - - corr14 - 0 - - - freq14 - 100e6 - - - gain_mode14 - False - - - if_gain14 - 20 - - - iq_balance_mode14 - 0 - - - gain14 - 10 - - - ant15 - - - - bb_gain15 - 20 - - - bw15 - 0 - - - dc_offset_mode15 - 0 - - - corr15 - 0 - - - freq15 - 100e6 - - - gain_mode15 - False - - - if_gain15 - 20 - - - iq_balance_mode15 - 0 - - - gain15 - 10 - - - ant16 - - - - bb_gain16 - 20 - - - bw16 - 0 - - - dc_offset_mode16 - 0 - - - corr16 - 0 - - - freq16 - 100e6 - - - gain_mode16 - False - - - if_gain16 - 20 - - - iq_balance_mode16 - 0 - - - gain16 - 10 - - - ant17 - - - - bb_gain17 - 20 - - - bw17 - 0 - - - dc_offset_mode17 - 0 - - - corr17 - 0 - - - freq17 - 100e6 - - - gain_mode17 - False - - - if_gain17 - 20 - - - iq_balance_mode17 - 0 - - - gain17 - 10 - - - ant18 - - - - bb_gain18 - 20 - - - bw18 - 0 - - - dc_offset_mode18 - 0 - - - corr18 - 0 - - - freq18 - 100e6 - - - gain_mode18 - False - - - if_gain18 - 20 - - - iq_balance_mode18 - 0 - - - gain18 - 10 - - - ant19 - - - - bb_gain19 - 20 - - - bw19 - 0 - - - dc_offset_mode19 - 0 - - - corr19 - 0 - - - freq19 - 100e6 - - - gain_mode19 - False - - - if_gain19 - 20 - - - iq_balance_mode19 - 0 - - - gain19 - 10 - - - ant1 - - - - bb_gain1 - 20 - - - bw1 - 0 - - - dc_offset_mode1 - 0 - - - corr1 - 0 - - - freq1 - 100e6 - - - gain_mode1 - False - - - if_gain1 - 20 - - - iq_balance_mode1 - 0 - - - gain1 - 10 - - - ant20 - - - - bb_gain20 - 20 - - - bw20 - 0 - - - dc_offset_mode20 - 0 - - - corr20 - 0 - - - freq20 - 100e6 - - - gain_mode20 - False - - - if_gain20 - 20 - - - iq_balance_mode20 - 0 - - - gain20 - 10 - - - ant21 - - - - bb_gain21 - 20 - - - bw21 - 0 - - - dc_offset_mode21 - 0 - - - corr21 - 0 - - - freq21 - 100e6 - - - gain_mode21 - False - - - if_gain21 - 20 - - - iq_balance_mode21 - 0 - - - gain21 - 10 - - - ant22 - - - - bb_gain22 - 20 - - - bw22 - 0 - - - dc_offset_mode22 - 0 - - - corr22 - 0 - - - freq22 - 100e6 - - - gain_mode22 - False - - - if_gain22 - 20 - - - iq_balance_mode22 - 0 - - - gain22 - 10 - - - ant23 - - - - bb_gain23 - 20 - - - bw23 - 0 - - - dc_offset_mode23 - 0 - - - corr23 - 0 - - - freq23 - 100e6 - - - gain_mode23 - False - - - if_gain23 - 20 - - - iq_balance_mode23 - 0 - - - gain23 - 10 - - - ant24 - - - - bb_gain24 - 20 - - - bw24 - 0 - - - dc_offset_mode24 - 0 - - - corr24 - 0 - - - freq24 - 100e6 - - - gain_mode24 - False - - - if_gain24 - 20 - - - iq_balance_mode24 - 0 - - - gain24 - 10 - - - ant25 - - - - bb_gain25 - 20 - - - bw25 - 0 - - - dc_offset_mode25 - 0 - - - corr25 - 0 - - - freq25 - 100e6 - - - gain_mode25 - False - - - if_gain25 - 20 - - - iq_balance_mode25 - 0 - - - gain25 - 10 - - - ant26 - - - - bb_gain26 - 20 - - - bw26 - 0 - - - dc_offset_mode26 - 0 - - - corr26 - 0 - - - freq26 - 100e6 - - - gain_mode26 - False - - - if_gain26 - 20 - - - iq_balance_mode26 - 0 - - - gain26 - 10 - - - ant27 - - - - bb_gain27 - 20 - - - bw27 - 0 - - - dc_offset_mode27 - 0 - - - corr27 - 0 - - - freq27 - 100e6 - - - gain_mode27 - False - - - if_gain27 - 20 - - - iq_balance_mode27 - 0 - - - gain27 - 10 - - - ant28 - - - - bb_gain28 - 20 - - - bw28 - 0 - - - dc_offset_mode28 - 0 - - - corr28 - 0 - - - freq28 - 100e6 - - - gain_mode28 - False - - - if_gain28 - 20 - - - iq_balance_mode28 - 0 - - - gain28 - 10 - - - ant29 - - - - bb_gain29 - 20 - - - bw29 - 0 - - - dc_offset_mode29 - 0 - - - corr29 - 0 - - - freq29 - 100e6 - - - gain_mode29 - False - - - if_gain29 - 20 - - - iq_balance_mode29 - 0 - - - gain29 - 10 - - - ant2 - - - - bb_gain2 - 20 - - - bw2 - 0 - - - dc_offset_mode2 - 0 - - - corr2 - 0 - - - freq2 - 100e6 - - - gain_mode2 - False - - - if_gain2 - 20 - - - iq_balance_mode2 - 0 - - - gain2 - 10 - - - ant30 - - - - bb_gain30 - 20 - - - bw30 - 0 - - - dc_offset_mode30 - 0 - - - corr30 - 0 - - - freq30 - 100e6 - - - gain_mode30 - False - - - if_gain30 - 20 - - - iq_balance_mode30 - 0 - - - gain30 - 10 - - - ant31 - - - - bb_gain31 - 20 - - - bw31 - 0 - - - dc_offset_mode31 - 0 - - - corr31 - 0 - - - freq31 - 100e6 - - - gain_mode31 - False - - - if_gain31 - 20 - - - iq_balance_mode31 - 0 - - - gain31 - 10 - - - ant3 - - - - bb_gain3 - 20 - - - bw3 - 0 - - - dc_offset_mode3 - 0 - - - corr3 - 0 - - - freq3 - 100e6 - - - gain_mode3 - False - - - if_gain3 - 20 - - - iq_balance_mode3 - 0 - - - gain3 - 10 - - - ant4 - - - - bb_gain4 - 20 - - - bw4 - 0 - - - dc_offset_mode4 - 0 - - - corr4 - 0 - - - freq4 - 100e6 - - - gain_mode4 - False - - - if_gain4 - 20 - - - iq_balance_mode4 - 0 - - - gain4 - 10 - - - ant5 - - - - bb_gain5 - 20 - - - bw5 - 0 - - - dc_offset_mode5 - 0 - - - corr5 - 0 - - - freq5 - 100e6 - - - gain_mode5 - False - - - if_gain5 - 20 - - - iq_balance_mode5 - 0 - - - gain5 - 10 - - - ant6 - - - - bb_gain6 - 20 - - - bw6 - 0 - - - dc_offset_mode6 - 0 - - - corr6 - 0 - - - freq6 - 100e6 - - - gain_mode6 - False - - - if_gain6 - 20 - - - iq_balance_mode6 - 0 - - - gain6 - 10 - - - ant7 - - - - bb_gain7 - 20 - - - bw7 - 0 - - - dc_offset_mode7 - 0 - - - corr7 - 0 - - - freq7 - 100e6 - - - gain_mode7 - False - - - if_gain7 - 20 - - - iq_balance_mode7 - 0 - - - gain7 - 10 - - - ant8 - - - - bb_gain8 - 20 - - - bw8 - 0 - - - dc_offset_mode8 - 0 - - - corr8 - 0 - - - freq8 - 100e6 - - - gain_mode8 - False - - - if_gain8 - 20 - - - iq_balance_mode8 - 0 - - - gain8 - 10 - - - ant9 - - - - bb_gain9 - 20 - - - bw9 - 0 - - - dc_offset_mode9 - 0 - - - corr9 - 0 - - - freq9 - 100e6 - - - gain_mode9 - False - - - if_gain9 - 20 - - - iq_balance_mode9 - 0 - - - gain9 - 10 - - - comment - - - - affinity - - - - args - satnogs.hw_rx_settings[rx_sdr_device]['dev_arg'] - - - _enabled - 1 - - - _coordinate - (64, 438) - - - _rotation - 0 - - - id - osmosdr_source_0 - - - maxoutbuf - 0 - - - clock_source0 - - - - time_source0 - - - - clock_source1 - - - - time_source1 - - - - clock_source2 - - - - time_source2 - - - - clock_source3 - - - - time_source3 - - - - clock_source4 - - - - time_source4 - - - - clock_source5 - - - - time_source5 - - - - clock_source6 - - - - time_source6 - - - - clock_source7 - - - - time_source7 - - - - minoutbuf - 0 - - - nchan - 1 - - - num_mboards - 1 - - - type - fc32 - - - sample_rate - samp_rate_rx - - - sync - - - - - pfb_arb_resampler_xxx - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (1080, 359) - - - _rotation - 180 - - - id - pfb_arb_resampler_xxx_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - nfilts - 32 - - - rrate - samp_rate_tx / (baud_rate_uplink * samples_per_symbol_tx) - - - samp_delay - 0 - - - atten - 60 - - - taps - firdes.low_pass_2(32, 32, 0.8, 0.1, 60) - - - type - ccf - - - - qtgui_freq_sink_x - - autoscale - False - - - average - 1.0 - - - axislabels - True - - - bw - samp_rate_rx/decimation_rx - - - alias - - - - fc - 0 - - - comment - - - - ctrlpanel - True - - - affinity - - - - _enabled - 0 - - - fftsize - 1024 - - - _coordinate - (312, 406) - - - gui_hint - - - - _rotation - 180 - - - grid - True - - - id - qtgui_freq_sink_x_0 - - - legend - True - - - alpha1 - 1.0 - - - color1 - "blue" - - - label1 - - - - width1 - 1 - - - alpha10 - 1.0 - - - color10 - "dark blue" - - - label10 - - - - width10 - 1 - - - alpha2 - 1.0 - - - color2 - "red" - - - label2 - - - - width2 - 1 - - - alpha3 - 1.0 - - - color3 - "green" - - - label3 - - - - width3 - 1 - - - alpha4 - 1.0 - - - color4 - "black" - - - label4 - - - - width4 - 1 - - - alpha5 - 1.0 - - - color5 - "cyan" - - - label5 - - - - width5 - 1 - - - alpha6 - 1.0 - - - color6 - "magenta" - - - label6 - - - - width6 - 1 - - - alpha7 - 1.0 - - - color7 - "yellow" - - - label7 - - - - width7 - 1 - - - alpha8 - 1.0 - - - color8 - "dark red" - - - label8 - - - - width8 - 1 - - - alpha9 - 1.0 - - - color9 - "dark green" - - - label9 - - - - width9 - 1 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - name - "" - - - nconnections - 1 - - - showports - True - - - freqhalf - True - - - tr_chan - 0 - - - tr_level - 0.0 - - - tr_mode - qtgui.TRIG_MODE_FREE - - - tr_tag - "" - - - type - complex - - - update_time - 0.01 - - - wintype - firdes.WIN_BLACKMAN_hARRIS - - - label - Relative Gain - - - ymax - 0 - - - ymin - -140 - - - units - dB - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (160, 774) - - - _rotation - 0 - - - id - recv_port - - - label - - - - short_id - - - - type - intx - - - value - 16886 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (648, 870) - - - _rotation - 0 - - - id - rx_sdr_device - - - label - - - - short_id - - - - type - string - - - value - usrpb200 - - - - satnogs_ax25_decoder_bm - - n_sync_flags - 3 - - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - descrambling - True - - - _coordinate - (1312, 586) - - - _rotation - 180 - - - id - satnogs_ax25_decoder_bm_0 - - - maxoutbuf - 0 - - - max_frame_len - 256 - - - minoutbuf - 0 - - - promisc - False - - - addr - 'GND' - - - ssid - 0 - - - - satnogs_multi_format_msg_sink - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - _coordinate - (1080, 562) - - - _rotation - 180 - - - id - satnogs_multi_format_msg_sink_0 - - - format - 1 - - - - satnogs_qb50_deframer - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - _coordinate - (968, 624) - - - _rotation - 180 - - - id - satnogs_qb50_deframer_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - wod_ssid - 0xe - - - - satnogs_udp_msg_sink - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (728, 670) - - - _rotation - 180 - - - id - satnogs_udp_msg_sink_0_0 - - - addr - dest_addr - - - mtu - 1500 - - - port - send_port - - - - satnogs_udp_msg_sink - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (728, 598) - - - _rotation - 180 - - - id - satnogs_udp_msg_sink_0_0_0 - - - addr - dest_addr - - - mtu - 1500 - - - port - wod_port - - - - satnogs_udp_msg_source - - alias - - - - comment - The transmitter can also receive payloads -from a UDP source. Use netcat or something -similar to produce dynamic payloads. - - - affinity - - - - _enabled - 1 - - - _coordinate - (0, 214) - - - _rotation - 0 - - - id - satnogs_udp_msg_source_0 - - - addr - bind_addr - - - mtu - 1500 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - port - recv_port - - - - satnogs_upsat_fsk_frame_encoder - - append_crc - False - - - alias - - - - comment - - - - affinity - - - - dest_addr - ON02GR - - - dest_ssid - 0 - - - _enabled - 1 - - - preamble - [0x33]*8 - - - _coordinate - (304, 151) - - - _rotation - 0 - - - id - satnogs_upsat_fsk_frame_encoder_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - settling_samples - 64 - - - msb_first - True - - - src_addr - ABCD - - - src_ssid - 0 - - - sync_word - [0x7A, 0x0E] - - - ax_25 - True - - - manchester - False - - - whitening - False - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (160, 846) - - - _rotation - 0 - - - id - send_port - - - label - - - - short_id - - - - type - intx - - - value - 5022 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (648, 774) - - - _rotation - 0 - - - id - tx_sdr_device - - - label - - - - short_id - - - - type - string - - - value - usrpb200 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (352, 846) - - - _rotation - 0 - - - id - wod_port - - - label - - - - short_id - - - - type - intx - - - value - 5023 - - - - analog_frequency_modulator_fc_0 - pfb_arb_resampler_xxx_0 - 0 - 0 - - - analog_quadrature_demod_cf_0_0 - digital_clock_recovery_mm_xx_0 - 0 - 0 - - - analog_sig_source_x_0 - blocks_multiply_xx_0 - 0 - 1 - - - blocks_multiply_xx_0 - osmosdr_sink_0 - 0 - 0 - - - digital_binary_slicer_fb_0 - satnogs_ax25_decoder_bm_0 - 0 - 0 - - - digital_clock_recovery_mm_xx_0 - digital_binary_slicer_fb_0 - 0 - 0 - - - freq_xlating_fir_filter_xxx_0 - analog_quadrature_demod_cf_0_0 - 0 - 0 - - - freq_xlating_fir_filter_xxx_0 - qtgui_freq_sink_x_0 - 0 - 0 - - - interp_fir_filter_xxx_0 - analog_frequency_modulator_fc_0 - 0 - 0 - - - osmosdr_source_0 - freq_xlating_fir_filter_xxx_0 - 0 - 0 - - - pfb_arb_resampler_xxx_0 - blocks_multiply_xx_0 - 0 - 0 - - - satnogs_ax25_decoder_bm_0 - satnogs_multi_format_msg_sink_0 - failed_pdu - in - - - satnogs_ax25_decoder_bm_0 - satnogs_qb50_deframer_0 - pdu - in - - - satnogs_qb50_deframer_0 - satnogs_udp_msg_sink_0_0 - out - in - - - satnogs_qb50_deframer_0 - satnogs_udp_msg_sink_0_0_0 - wod - in - - - satnogs_udp_msg_source_0 - satnogs_upsat_fsk_frame_encoder_0 - msg - pdu - - - satnogs_upsat_fsk_frame_encoder_0 - interp_fir_filter_xxx_0 - 0 - 0 - - diff --git a/apps/flowgraphs/satellites/upsat_transceiver_cli.py b/apps/flowgraphs/satellites/upsat_transceiver_cli.py deleted file mode 100755 index de55623..0000000 --- a/apps/flowgraphs/satellites/upsat_transceiver_cli.py +++ /dev/null @@ -1,364 +0,0 @@ -#!/usr/bin/env python2 -# -*- coding: utf-8 -*- -################################################## -# GNU Radio Python Flow Graph -# Title: UPSat Tranceiver -# Author: Manolis Surligas (surligas@gmail.com) -# Description: SATNOGS transceiver for UPSAT satellite -# Generated: Wed Oct 12 20:16:02 2016 -################################################## - -from gnuradio import analog -from gnuradio import blocks -from gnuradio import digital -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 gnuradio.filter import pfb -from optparse import OptionParser -import math -import numpy -import osmosdr -import satnogs -import time - - -class upsat_transceiver_cli(gr.top_block): - - def __init__(self, bind_addr="0.0.0.0", dest_addr="127.0.0.1", lo_offset=100e3, recv_port=16886, rx_sdr_device="usrpb200", send_port=5022, tx_sdr_device="usrpb200", wod_port=5023): - gr.top_block.__init__(self, "UPSat Tranceiver") - - ################################################## - # Parameters - ################################################## - self.bind_addr = bind_addr - self.dest_addr = dest_addr - self.lo_offset = lo_offset - self.recv_port = recv_port - self.rx_sdr_device = rx_sdr_device - self.send_port = send_port - self.tx_sdr_device = tx_sdr_device - self.wod_port = wod_port - - ################################################## - # Variables - ################################################## - self.samples_per_symbol_tx = samples_per_symbol_tx = 4*8 - self.sq_wave = sq_wave = (1.0, ) * samples_per_symbol_tx - self.samp_rate_rx = samp_rate_rx = satnogs.hw_rx_settings[rx_sdr_device]['samp_rate'] - self.gaussian_taps = gaussian_taps = filter.firdes.gaussian(1.0, samples_per_symbol_tx, 1.0, 4*samples_per_symbol_tx) - self.deviation = deviation = 3.9973e3 - self.decimation_rx = decimation_rx = 20 - self.baud_rate_uplink = baud_rate_uplink = 1200 - self.baud_rate_downlink = baud_rate_downlink = 9600 - self.tx_frequency = tx_frequency = 145.835e6 - - self.taps = taps = firdes.low_pass(1.0, samp_rate_rx, 20000, 60000, firdes.WIN_HAMMING, 6.76) - - self.samp_rate_tx = samp_rate_tx = satnogs.hw_tx_settings[rx_sdr_device]['samp_rate'] - self.rx_frequency = rx_frequency = 435.765e6 - self.modulation_index_uplink = modulation_index_uplink = deviation / (baud_rate_uplink / 2.0) - self.modulation_index_downlink = modulation_index_downlink = deviation / (baud_rate_downlink / 2.0) - self.interp_taps = interp_taps = numpy.convolve(numpy.array(gaussian_taps), numpy.array(sq_wave)) - self.first_stage_samp_rate_rx = first_stage_samp_rate_rx = samp_rate_rx / decimation_rx - - ################################################## - # Blocks - ################################################## - self.satnogs_upsat_fsk_frame_encoder_0 = satnogs.upsat_fsk_frame_encoder([0x33]*8 , [0x7A, 0x0E], False, False, False, True, True, "ABCD", 0, "ON02GR", 0, 64) - self.satnogs_udp_msg_source_0 = satnogs.udp_msg_source(bind_addr, recv_port, 1500) - self.satnogs_udp_msg_sink_0_0_0 = satnogs.udp_msg_sink(dest_addr, wod_port, 1500) - self.satnogs_udp_msg_sink_0_0 = satnogs.udp_msg_sink(dest_addr, send_port, 1500) - self.satnogs_qb50_deframer_0 = satnogs.qb50_deframer(0xe) - self.satnogs_multi_format_msg_sink_0 = satnogs.multi_format_msg_sink(1) - self.satnogs_ax25_decoder_bm_0 = satnogs.ax25_decoder_bm('GND', 0, False, True, 256, 3) - self.pfb_arb_resampler_xxx_0 = pfb.arb_resampler_ccf( - samp_rate_tx / (baud_rate_uplink * samples_per_symbol_tx), - taps=(firdes.low_pass_2(32, 32, 0.8, 0.1, 60)), - flt_size=32) - self.pfb_arb_resampler_xxx_0.declare_sample_delay(0) - - self.osmosdr_source_0 = osmosdr.source( args="numchan=" + str(1) + " " + satnogs.hw_rx_settings[rx_sdr_device]['dev_arg'] ) - self.osmosdr_source_0.set_sample_rate(samp_rate_rx) - self.osmosdr_source_0.set_center_freq(rx_frequency - lo_offset, 0) - self.osmosdr_source_0.set_freq_corr(0, 0) - self.osmosdr_source_0.set_dc_offset_mode(0, 0) - self.osmosdr_source_0.set_iq_balance_mode(0, 0) - self.osmosdr_source_0.set_gain_mode(False, 0) - self.osmosdr_source_0.set_gain(satnogs.hw_rx_settings[rx_sdr_device]['rf_gain'], 0) - self.osmosdr_source_0.set_if_gain(satnogs.hw_rx_settings[rx_sdr_device]['if_gain'], 0) - self.osmosdr_source_0.set_bb_gain(satnogs.hw_rx_settings[rx_sdr_device]['bb_gain'], 0) - self.osmosdr_source_0.set_antenna(satnogs.hw_rx_settings[rx_sdr_device]['antenna'], 0) - self.osmosdr_source_0.set_bandwidth(samp_rate_rx, 0) - - self.osmosdr_sink_0 = osmosdr.sink( args="numchan=" + str(1) + " " + satnogs.hw_tx_settings[rx_sdr_device]['dev_arg'] ) - self.osmosdr_sink_0.set_sample_rate(samp_rate_tx) - self.osmosdr_sink_0.set_center_freq(tx_frequency - lo_offset, 0) - self.osmosdr_sink_0.set_freq_corr(0, 0) - self.osmosdr_sink_0.set_gain(satnogs.hw_tx_settings[tx_sdr_device]['rf_gain'], 0) - self.osmosdr_sink_0.set_if_gain(satnogs.hw_tx_settings[tx_sdr_device]['if_gain'], 0) - self.osmosdr_sink_0.set_bb_gain(satnogs.hw_tx_settings[tx_sdr_device]['bb_gain'], 0) - self.osmosdr_sink_0.set_antenna(satnogs.hw_tx_settings[tx_sdr_device]['antenna'], 0) - self.osmosdr_sink_0.set_bandwidth(samp_rate_tx, 0) - - self.interp_fir_filter_xxx_0 = filter.interp_fir_filter_fff(samples_per_symbol_tx, (interp_taps)) - self.interp_fir_filter_xxx_0.declare_sample_delay(0) - self.freq_xlating_fir_filter_xxx_0 = filter.freq_xlating_fir_filter_ccc(decimation_rx, (taps), lo_offset, samp_rate_rx) - self.digital_clock_recovery_mm_xx_0 = digital.clock_recovery_mm_ff(first_stage_samp_rate_rx/baud_rate_downlink, 0.25*0.175*0.175, 0.5, 0.175, 0.005) - self.digital_binary_slicer_fb_0 = digital.binary_slicer_fb() - self.blocks_multiply_xx_0 = blocks.multiply_vcc(1) - self.analog_sig_source_x_0 = analog.sig_source_c(samp_rate_tx, analog.GR_COS_WAVE, lo_offset , 1, 0) - self.analog_quadrature_demod_cf_0_0 = analog.quadrature_demod_cf(((first_stage_samp_rate_rx) / baud_rate_downlink)/(math.pi*modulation_index_downlink)) - self.analog_frequency_modulator_fc_0 = analog.frequency_modulator_fc((math.pi*modulation_index_uplink) / samples_per_symbol_tx) - - ################################################## - # Connections - ################################################## - self.msg_connect((self.satnogs_ax25_decoder_bm_0, 'failed_pdu'), (self.satnogs_multi_format_msg_sink_0, 'in')) - self.msg_connect((self.satnogs_ax25_decoder_bm_0, 'pdu'), (self.satnogs_qb50_deframer_0, 'in')) - self.msg_connect((self.satnogs_qb50_deframer_0, 'out'), (self.satnogs_udp_msg_sink_0_0, 'in')) - self.msg_connect((self.satnogs_qb50_deframer_0, 'wod'), (self.satnogs_udp_msg_sink_0_0_0, 'in')) - self.msg_connect((self.satnogs_udp_msg_source_0, 'msg'), (self.satnogs_upsat_fsk_frame_encoder_0, 'pdu')) - self.connect((self.analog_frequency_modulator_fc_0, 0), (self.pfb_arb_resampler_xxx_0, 0)) - self.connect((self.analog_quadrature_demod_cf_0_0, 0), (self.digital_clock_recovery_mm_xx_0, 0)) - self.connect((self.analog_sig_source_x_0, 0), (self.blocks_multiply_xx_0, 1)) - self.connect((self.blocks_multiply_xx_0, 0), (self.osmosdr_sink_0, 0)) - self.connect((self.digital_binary_slicer_fb_0, 0), (self.satnogs_ax25_decoder_bm_0, 0)) - self.connect((self.digital_clock_recovery_mm_xx_0, 0), (self.digital_binary_slicer_fb_0, 0)) - self.connect((self.freq_xlating_fir_filter_xxx_0, 0), (self.analog_quadrature_demod_cf_0_0, 0)) - self.connect((self.interp_fir_filter_xxx_0, 0), (self.analog_frequency_modulator_fc_0, 0)) - self.connect((self.osmosdr_source_0, 0), (self.freq_xlating_fir_filter_xxx_0, 0)) - self.connect((self.pfb_arb_resampler_xxx_0, 0), (self.blocks_multiply_xx_0, 0)) - self.connect((self.satnogs_upsat_fsk_frame_encoder_0, 0), (self.interp_fir_filter_xxx_0, 0)) - - def get_bind_addr(self): - return self.bind_addr - - def set_bind_addr(self, bind_addr): - self.bind_addr = bind_addr - - def get_dest_addr(self): - return self.dest_addr - - def set_dest_addr(self, dest_addr): - self.dest_addr = dest_addr - - def get_lo_offset(self): - return self.lo_offset - - def set_lo_offset(self, lo_offset): - self.lo_offset = lo_offset - self.osmosdr_source_0.set_center_freq(self.rx_frequency - self.lo_offset, 0) - self.osmosdr_sink_0.set_center_freq(self.tx_frequency - self.lo_offset, 0) - self.freq_xlating_fir_filter_xxx_0.set_center_freq(self.lo_offset) - self.analog_sig_source_x_0.set_frequency(self.lo_offset ) - - def get_recv_port(self): - return self.recv_port - - def set_recv_port(self, recv_port): - self.recv_port = recv_port - - def get_rx_sdr_device(self): - return self.rx_sdr_device - - def set_rx_sdr_device(self, rx_sdr_device): - self.rx_sdr_device = rx_sdr_device - self.set_samp_rate_tx(satnogs.hw_tx_settings[self.rx_sdr_device]['samp_rate']) - self.set_samp_rate_rx(satnogs.hw_rx_settings[self.rx_sdr_device]['samp_rate']) - self.osmosdr_source_0.set_gain(satnogs.hw_rx_settings[self.rx_sdr_device]['rf_gain'], 0) - self.osmosdr_source_0.set_if_gain(satnogs.hw_rx_settings[self.rx_sdr_device]['if_gain'], 0) - self.osmosdr_source_0.set_bb_gain(satnogs.hw_rx_settings[self.rx_sdr_device]['bb_gain'], 0) - self.osmosdr_source_0.set_antenna(satnogs.hw_rx_settings[self.rx_sdr_device]['antenna'], 0) - - def get_send_port(self): - return self.send_port - - def set_send_port(self, send_port): - self.send_port = send_port - - def get_tx_sdr_device(self): - return self.tx_sdr_device - - def set_tx_sdr_device(self, tx_sdr_device): - self.tx_sdr_device = tx_sdr_device - self.osmosdr_sink_0.set_gain(satnogs.hw_tx_settings[self.tx_sdr_device]['rf_gain'], 0) - self.osmosdr_sink_0.set_if_gain(satnogs.hw_tx_settings[self.tx_sdr_device]['if_gain'], 0) - self.osmosdr_sink_0.set_bb_gain(satnogs.hw_tx_settings[self.tx_sdr_device]['bb_gain'], 0) - self.osmosdr_sink_0.set_antenna(satnogs.hw_tx_settings[self.tx_sdr_device]['antenna'], 0) - - def get_wod_port(self): - return self.wod_port - - def set_wod_port(self, wod_port): - self.wod_port = wod_port - - def get_samples_per_symbol_tx(self): - return self.samples_per_symbol_tx - - def set_samples_per_symbol_tx(self, samples_per_symbol_tx): - self.samples_per_symbol_tx = samples_per_symbol_tx - self.set_sq_wave((1.0, ) * self.samples_per_symbol_tx) - self.pfb_arb_resampler_xxx_0.set_rate(self.samp_rate_tx / (self.baud_rate_uplink * self.samples_per_symbol_tx)) - self.set_gaussian_taps(filter.firdes.gaussian(1.0, self.samples_per_symbol_tx, 1.0, 4*self.samples_per_symbol_tx)) - self.analog_frequency_modulator_fc_0.set_sensitivity((math.pi*self.modulation_index_uplink) / self.samples_per_symbol_tx) - - def get_sq_wave(self): - return self.sq_wave - - def set_sq_wave(self, sq_wave): - self.sq_wave = sq_wave - self.set_interp_taps(numpy.convolve(numpy.array(self.gaussian_taps), numpy.array(self.sq_wave))) - - def get_samp_rate_rx(self): - return self.samp_rate_rx - - def set_samp_rate_rx(self, samp_rate_rx): - self.samp_rate_rx = samp_rate_rx - self.set_first_stage_samp_rate_rx(self.samp_rate_rx / self.decimation_rx) - self.osmosdr_source_0.set_sample_rate(self.samp_rate_rx) - self.osmosdr_source_0.set_bandwidth(self.samp_rate_rx, 0) - - def get_gaussian_taps(self): - return self.gaussian_taps - - def set_gaussian_taps(self, gaussian_taps): - self.gaussian_taps = gaussian_taps - self.set_interp_taps(numpy.convolve(numpy.array(self.gaussian_taps), numpy.array(self.sq_wave))) - - def get_deviation(self): - return self.deviation - - def set_deviation(self, deviation): - self.deviation = deviation - self.set_modulation_index_uplink(self.deviation / (self.baud_rate_uplink / 2.0)) - self.set_modulation_index_downlink(self.deviation / (self.baud_rate_downlink / 2.0)) - - def get_decimation_rx(self): - return self.decimation_rx - - def set_decimation_rx(self, decimation_rx): - self.decimation_rx = decimation_rx - self.set_first_stage_samp_rate_rx(self.samp_rate_rx / self.decimation_rx) - - def get_baud_rate_uplink(self): - return self.baud_rate_uplink - - def set_baud_rate_uplink(self, baud_rate_uplink): - self.baud_rate_uplink = baud_rate_uplink - self.set_modulation_index_uplink(self.deviation / (self.baud_rate_uplink / 2.0)) - self.pfb_arb_resampler_xxx_0.set_rate(self.samp_rate_tx / (self.baud_rate_uplink * self.samples_per_symbol_tx)) - - def get_baud_rate_downlink(self): - return self.baud_rate_downlink - - def set_baud_rate_downlink(self, baud_rate_downlink): - self.baud_rate_downlink = baud_rate_downlink - self.set_modulation_index_downlink(self.deviation / (self.baud_rate_downlink / 2.0)) - self.digital_clock_recovery_mm_xx_0.set_omega(self.first_stage_samp_rate_rx/self.baud_rate_downlink) - self.analog_quadrature_demod_cf_0_0.set_gain(((self.first_stage_samp_rate_rx) / self.baud_rate_downlink)/(math.pi*self.modulation_index_downlink)) - - def get_tx_frequency(self): - return self.tx_frequency - - def set_tx_frequency(self, tx_frequency): - self.tx_frequency = tx_frequency - self.osmosdr_sink_0.set_center_freq(self.tx_frequency - self.lo_offset, 0) - - def get_taps(self): - return self.taps - - def set_taps(self, taps): - self.taps = taps - self.freq_xlating_fir_filter_xxx_0.set_taps((self.taps)) - - def get_samp_rate_tx(self): - return self.samp_rate_tx - - def set_samp_rate_tx(self, samp_rate_tx): - self.samp_rate_tx = samp_rate_tx - self.pfb_arb_resampler_xxx_0.set_rate(self.samp_rate_tx / (self.baud_rate_uplink * self.samples_per_symbol_tx)) - self.osmosdr_sink_0.set_sample_rate(self.samp_rate_tx) - self.osmosdr_sink_0.set_bandwidth(self.samp_rate_tx, 0) - self.analog_sig_source_x_0.set_sampling_freq(self.samp_rate_tx) - - def get_rx_frequency(self): - return self.rx_frequency - - def set_rx_frequency(self, rx_frequency): - self.rx_frequency = rx_frequency - self.osmosdr_source_0.set_center_freq(self.rx_frequency - self.lo_offset, 0) - - def get_modulation_index_uplink(self): - return self.modulation_index_uplink - - def set_modulation_index_uplink(self, modulation_index_uplink): - self.modulation_index_uplink = modulation_index_uplink - self.analog_frequency_modulator_fc_0.set_sensitivity((math.pi*self.modulation_index_uplink) / self.samples_per_symbol_tx) - - def get_modulation_index_downlink(self): - return self.modulation_index_downlink - - def set_modulation_index_downlink(self, modulation_index_downlink): - self.modulation_index_downlink = modulation_index_downlink - self.analog_quadrature_demod_cf_0_0.set_gain(((self.first_stage_samp_rate_rx) / self.baud_rate_downlink)/(math.pi*self.modulation_index_downlink)) - - def get_interp_taps(self): - return self.interp_taps - - def set_interp_taps(self, interp_taps): - self.interp_taps = interp_taps - self.interp_fir_filter_xxx_0.set_taps((self.interp_taps)) - - def get_first_stage_samp_rate_rx(self): - return self.first_stage_samp_rate_rx - - def set_first_stage_samp_rate_rx(self, first_stage_samp_rate_rx): - self.first_stage_samp_rate_rx = first_stage_samp_rate_rx - self.digital_clock_recovery_mm_xx_0.set_omega(self.first_stage_samp_rate_rx/self.baud_rate_downlink) - self.analog_quadrature_demod_cf_0_0.set_gain(((self.first_stage_samp_rate_rx) / self.baud_rate_downlink)/(math.pi*self.modulation_index_downlink)) - - -def argument_parser(): - description = 'SATNOGS transceiver for UPSAT satellite' - parser = OptionParser(usage="%prog: [options]", option_class=eng_option, description=description) - parser.add_option( - "", "--bind-addr", dest="bind_addr", type="string", default="0.0.0.0", - help="Set bind_addr [default=%default]") - parser.add_option( - "", "--dest-addr", dest="dest_addr", type="string", default="127.0.0.1", - help="Set dest_addr [default=%default]") - parser.add_option( - "", "--lo-offset", dest="lo_offset", type="eng_float", default=eng_notation.num_to_str(100e3), - help="Set lo_offset [default=%default]") - parser.add_option( - "", "--recv-port", dest="recv_port", type="intx", default=16886, - help="Set recv_port [default=%default]") - parser.add_option( - "", "--rx-sdr-device", dest="rx_sdr_device", type="string", default="usrpb200", - help="Set rx_sdr_device [default=%default]") - parser.add_option( - "", "--send-port", dest="send_port", type="intx", default=5022, - help="Set send_port [default=%default]") - parser.add_option( - "", "--tx-sdr-device", dest="tx_sdr_device", type="string", default="usrpb200", - help="Set tx_sdr_device [default=%default]") - parser.add_option( - "", "--wod-port", dest="wod_port", type="intx", default=5023, - help="Set wod_port [default=%default]") - return parser - - -def main(top_block_cls=upsat_transceiver_cli, options=None): - if options is None: - options, _ = argument_parser().parse_args() - - tb = top_block_cls(bind_addr=options.bind_addr, dest_addr=options.dest_addr, lo_offset=options.lo_offset, recv_port=options.recv_port, rx_sdr_device=options.rx_sdr_device, send_port=options.send_port, tx_sdr_device=options.tx_sdr_device, wod_port=options.wod_port) - tb.start() - tb.wait() - - -if __name__ == '__main__': - main() diff --git a/apps/flowgraphs/satellites/upsat_transceiver_qt.grc b/apps/flowgraphs/satellites/upsat_transceiver_qt.grc deleted file mode 100644 index 7e96555..0000000 --- a/apps/flowgraphs/satellites/upsat_transceiver_qt.grc +++ /dev/null @@ -1,4885 +0,0 @@ - - - - Fri Jul 1 17:53:00 2016 - - options - - author - Manolis Surligas (surligas@gmail.com) - - - window_size - 1768,1080 - - - category - Custom - - - comment - - - - description - SATNOGS transceiver for UPSAT satellite - - - _enabled - True - - - _coordinate - (8, 12) - - - _rotation - 0 - - - generate_options - qt_gui - - - hier_block_src_path - .: - - - id - upsat_transceiver_qt - - - max_nouts - 0 - - - qt_qss_theme - - - - realtime_scheduling - - - - run_command - {python} -u {filename} - - - run_options - prompt - - - run - True - - - thread_safe_setters - - - - title - UPSat Transceiver QT - - - - variable - - comment - FSK baud rate - - - _enabled - True - - - _coordinate - (1048, 16) - - - _rotation - 0 - - - id - baud_rate_downlink - - - value - 9600 - - - - variable - - comment - FSK baud rate - - - _enabled - True - - - _coordinate - (1048, 112) - - - _rotation - 0 - - - id - baud_rate_uplink - - - value - 1200 - - - - variable - - comment - Decimation factor -for the RX after the -SDR received samples - - - _enabled - True - - - _coordinate - (696, 20) - - - _rotation - 0 - - - id - decimation_rx - - - value - 20 - - - - variable - - comment - The FSK frequency deviation - - - _enabled - True - - - _coordinate - (840, 20) - - - _rotation - 0 - - - id - deviation - - - value - 3.9973e3 - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (168, 932) - - - _rotation - 0 - - - id - first_stage_samp_rate_rx - - - value - samp_rate_rx / decimation_rx - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (16, 904) - - - _rotation - 0 - - - id - gaussian_taps - - - value - filter.firdes.gaussian(1.0, samples_per_symbol_tx, 1.0, 4*samples_per_symbol_tx) - - - - variable - - comment - - - - _enabled - 1 - - - _coordinate - (168, 1004) - - - _rotation - 0 - - - id - interp_taps - - - value - numpy.convolve(numpy.array(gaussian_taps), numpy.array(sq_wave)) - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (296, 16) - - - _rotation - 0 - - - id - modulation_index_downlink - - - value - deviation / (baud_rate_downlink / 2.0) - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (296, 80) - - - _rotation - 0 - - - id - modulation_index_uplink - - - value - deviation / (baud_rate_uplink / 2.0) - - - - variable - - comment - The RX center frequency - of the system - - - _enabled - True - - - _coordinate - (1368, 16) - - - _rotation - 0 - - - id - rx_frequency - - - value - 435.765e6 - - - - variable - - comment - SDR device -TX sampling rate - - - _enabled - True - - - _coordinate - (752, 900) - - - _rotation - 0 - - - id - samp_rate_rx - - - value - satnogs.hw_rx_settings[rx_sdr_device]['samp_rate'] - - - - variable - - comment - SDR device -TX sampling rate - - - _enabled - True - - - _coordinate - (760, 776) - - - _rotation - 0 - - - id - samp_rate_tx - - - value - satnogs.hw_tx_settings[rx_sdr_device]['samp_rate'] - - - - variable - - comment - Samples per FSK symbol. -Should be changed only for better -spectrum mask, or if the resampling -is too great and becomes a bottlneck. - - - _enabled - True - - - _coordinate - (472, 12) - - - _rotation - 0 - - - id - samples_per_symbol_tx - - - value - 4*8 - - - - variable - - comment - - - - _enabled - 1 - - - _coordinate - (16, 984) - - - _rotation - 0 - - - id - sq_wave - - - value - (1.0, ) * samples_per_symbol_tx - - - - variable_low_pass_filter_taps - - beta - 6.76 - - - comment - - - - cutoff_freq - 20000 - - - _enabled - 1 - - - _coordinate - (16, 760) - - - _rotation - 0 - - - gain - 1.0 - - - id - taps - - - samp_rate - samp_rate_rx - - - width - 60000 - - - win - firdes.WIN_HAMMING - - - - variable - - comment - The TX center frequency - of the system - - - _enabled - True - - - _coordinate - (1216, 16) - - - _rotation - 0 - - - id - tx_frequency - - - value - 145.835e6 - - - - analog_frequency_modulator_fc - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (792, 232) - - - _rotation - 0 - - - id - analog_frequency_modulator_fc_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - sensitivity - (math.pi*modulation_index_uplink) / samples_per_symbol_tx - - - - analog_quadrature_demod_cf - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (552, 528) - - - _rotation - 0 - - - gain - ((first_stage_samp_rate_rx) / baud_rate_downlink)/(math.pi*modulation_index_downlink) - - - id - analog_quadrature_demod_cf_0_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - - analog_sig_source_x - - amp - 1 - - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - freq - lo_offset - - - _coordinate - (952, 272) - - - _rotation - 180 - - - id - analog_sig_source_x_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - offset - 0 - - - type - complex - - - samp_rate - samp_rate_tx - - - waveform - analog.GR_COS_WAVE - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (272, 756) - - - _rotation - 0 - - - id - bind_addr - - - label - - - - short_id - - - - type - string - - - value - 0.0.0.0 - - - - blocks_multiply_xx - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (832, 352) - - - _rotation - 180 - - - id - blocks_multiply_xx_0 - - - type - complex - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - num_inputs - 2 - - - vlen - 1 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (272, 844) - - - _rotation - 0 - - - id - dest_addr - - - label - - - - short_id - - - - type - string - - - value - 127.0.0.1 - - - - digital_binary_slicer_fb - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (944, 528) - - - _rotation - 0 - - - id - digital_binary_slicer_fb_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - - digital_clock_recovery_mm_xx - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (736, 496) - - - _rotation - 0 - - - gain_mu - 0.175 - - - gain_omega - 0.25*0.175*0.175 - - - id - digital_clock_recovery_mm_xx_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - mu - 0.5 - - - omega_relative_limit - 0.005 - - - omega - first_stage_samp_rate_rx/baud_rate_downlink - - - type - float - - - - freq_xlating_fir_filter_xxx - - alias - - - - center_freq - lo_offset - - - comment - - - - affinity - - - - decim - decimation_rx - - - _enabled - 1 - - - _coordinate - (304, 504) - - - _rotation - 0 - - - id - freq_xlating_fir_filter_xxx_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - samp_rate - samp_rate_rx - - - taps - taps - - - type - ccc - - - - import - - alias - - - - comment - - - - _enabled - 1 - - - _coordinate - (184, 64) - - - _rotation - 0 - - - id - import_0 - - - import - import numpy - - - - import - - alias - - - - comment - - - - _enabled - 1 - - - _coordinate - (184, 16) - - - _rotation - 0 - - - id - import_0_0 - - - import - import math - - - - import - - alias - - - - comment - - - - _enabled - 1 - - - _coordinate - (184, 112) - - - _rotation - 0 - - - id - import_0_1 - - - import - from gnuradio import filter - - - - interp_fir_filter_xxx - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (592, 224) - - - _rotation - 0 - - - id - interp_fir_filter_xxx_0 - - - interp - samples_per_symbol_tx - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - samp_delay - 0 - - - taps - interp_taps - - - type - fff - - - - parameter - - alias - - - - comment - To avoid the SDR carrier at the DC -we shift the LO a little further - - - _enabled - True - - - _coordinate - (888, 772) - - - _rotation - 0 - - - id - lo_offset - - - label - - - - short_id - - - - type - eng_float - - - value - 100e3 - - - - osmosdr_sink - - alias - - - - ant0 - satnogs.hw_tx_settings[tx_sdr_device]['antenna'] - - - bb_gain0 - satnogs.hw_tx_settings[tx_sdr_device]['bb_gain'] - - - bw0 - samp_rate_tx - - - corr0 - 0 - - - freq0 - tx_frequency - lo_offset - - - if_gain0 - satnogs.hw_tx_settings[tx_sdr_device]['if_gain'] - - - gain0 - satnogs.hw_tx_settings[tx_sdr_device]['rf_gain'] - - - ant10 - - - - bb_gain10 - 20 - - - bw10 - 0 - - - corr10 - 0 - - - freq10 - 100e6 - - - if_gain10 - 20 - - - gain10 - 10 - - - ant11 - - - - bb_gain11 - 20 - - - bw11 - 0 - - - corr11 - 0 - - - freq11 - 100e6 - - - if_gain11 - 20 - - - gain11 - 10 - - - ant12 - - - - bb_gain12 - 20 - - - bw12 - 0 - - - corr12 - 0 - - - freq12 - 100e6 - - - if_gain12 - 20 - - - gain12 - 10 - - - ant13 - - - - bb_gain13 - 20 - - - bw13 - 0 - - - corr13 - 0 - - - freq13 - 100e6 - - - if_gain13 - 20 - - - gain13 - 10 - - - ant14 - - - - bb_gain14 - 20 - - - bw14 - 0 - - - corr14 - 0 - - - freq14 - 100e6 - - - if_gain14 - 20 - - - gain14 - 10 - - - ant15 - - - - bb_gain15 - 20 - - - bw15 - 0 - - - corr15 - 0 - - - freq15 - 100e6 - - - if_gain15 - 20 - - - gain15 - 10 - - - ant16 - - - - bb_gain16 - 20 - - - bw16 - 0 - - - corr16 - 0 - - - freq16 - 100e6 - - - if_gain16 - 20 - - - gain16 - 10 - - - ant17 - - - - bb_gain17 - 20 - - - bw17 - 0 - - - corr17 - 0 - - - freq17 - 100e6 - - - if_gain17 - 20 - - - gain17 - 10 - - - ant18 - - - - bb_gain18 - 20 - - - bw18 - 0 - - - corr18 - 0 - - - freq18 - 100e6 - - - if_gain18 - 20 - - - gain18 - 10 - - - ant19 - - - - bb_gain19 - 20 - - - bw19 - 0 - - - corr19 - 0 - - - freq19 - 100e6 - - - if_gain19 - 20 - - - gain19 - 10 - - - ant1 - - - - bb_gain1 - 20 - - - bw1 - 0 - - - corr1 - 0 - - - freq1 - 100e6 - - - if_gain1 - 20 - - - gain1 - 10 - - - ant20 - - - - bb_gain20 - 20 - - - bw20 - 0 - - - corr20 - 0 - - - freq20 - 100e6 - - - if_gain20 - 20 - - - gain20 - 10 - - - ant21 - - - - bb_gain21 - 20 - - - bw21 - 0 - - - corr21 - 0 - - - freq21 - 100e6 - - - if_gain21 - 20 - - - gain21 - 10 - - - ant22 - - - - bb_gain22 - 20 - - - bw22 - 0 - - - corr22 - 0 - - - freq22 - 100e6 - - - if_gain22 - 20 - - - gain22 - 10 - - - ant23 - - - - bb_gain23 - 20 - - - bw23 - 0 - - - corr23 - 0 - - - freq23 - 100e6 - - - if_gain23 - 20 - - - gain23 - 10 - - - ant24 - - - - bb_gain24 - 20 - - - bw24 - 0 - - - corr24 - 0 - - - freq24 - 100e6 - - - if_gain24 - 20 - - - gain24 - 10 - - - ant25 - - - - bb_gain25 - 20 - - - bw25 - 0 - - - corr25 - 0 - - - freq25 - 100e6 - - - if_gain25 - 20 - - - gain25 - 10 - - - ant26 - - - - bb_gain26 - 20 - - - bw26 - 0 - - - corr26 - 0 - - - freq26 - 100e6 - - - if_gain26 - 20 - - - gain26 - 10 - - - ant27 - - - - bb_gain27 - 20 - - - bw27 - 0 - - - corr27 - 0 - - - freq27 - 100e6 - - - if_gain27 - 20 - - - gain27 - 10 - - - ant28 - - - - bb_gain28 - 20 - - - bw28 - 0 - - - corr28 - 0 - - - freq28 - 100e6 - - - if_gain28 - 20 - - - gain28 - 10 - - - ant29 - - - - bb_gain29 - 20 - - - bw29 - 0 - - - corr29 - 0 - - - freq29 - 100e6 - - - if_gain29 - 20 - - - gain29 - 10 - - - ant2 - - - - bb_gain2 - 20 - - - bw2 - 0 - - - corr2 - 0 - - - freq2 - 100e6 - - - if_gain2 - 20 - - - gain2 - 10 - - - ant30 - - - - bb_gain30 - 20 - - - bw30 - 0 - - - corr30 - 0 - - - freq30 - 100e6 - - - if_gain30 - 20 - - - gain30 - 10 - - - ant31 - - - - bb_gain31 - 20 - - - bw31 - 0 - - - corr31 - 0 - - - freq31 - 100e6 - - - if_gain31 - 20 - - - gain31 - 10 - - - ant3 - - - - bb_gain3 - 20 - - - bw3 - 0 - - - corr3 - 0 - - - freq3 - 100e6 - - - if_gain3 - 20 - - - gain3 - 10 - - - ant4 - - - - bb_gain4 - 20 - - - bw4 - 0 - - - corr4 - 0 - - - freq4 - 100e6 - - - if_gain4 - 20 - - - gain4 - 10 - - - ant5 - - - - bb_gain5 - 20 - - - bw5 - 0 - - - corr5 - 0 - - - freq5 - 100e6 - - - if_gain5 - 20 - - - gain5 - 10 - - - ant6 - - - - bb_gain6 - 20 - - - bw6 - 0 - - - corr6 - 0 - - - freq6 - 100e6 - - - if_gain6 - 20 - - - gain6 - 10 - - - ant7 - - - - bb_gain7 - 20 - - - bw7 - 0 - - - corr7 - 0 - - - freq7 - 100e6 - - - if_gain7 - 20 - - - gain7 - 10 - - - ant8 - - - - bb_gain8 - 20 - - - bw8 - 0 - - - corr8 - 0 - - - freq8 - 100e6 - - - if_gain8 - 20 - - - gain8 - 10 - - - ant9 - - - - bb_gain9 - 20 - - - bw9 - 0 - - - corr9 - 0 - - - freq9 - 100e6 - - - if_gain9 - 20 - - - gain9 - 10 - - - comment - - - - affinity - - - - args - satnogs.hw_tx_settings[rx_sdr_device]['dev_arg'] - - - _enabled - 1 - - - _coordinate - (544, 312) - - - _rotation - 180 - - - id - osmosdr_sink_0 - - - type - fc32 - - - clock_source0 - - - - time_source0 - - - - clock_source1 - - - - time_source1 - - - - clock_source2 - - - - time_source2 - - - - clock_source3 - - - - time_source3 - - - - clock_source4 - - - - time_source4 - - - - clock_source5 - - - - time_source5 - - - - clock_source6 - - - - time_source6 - - - - clock_source7 - - - - time_source7 - - - - nchan - 1 - - - num_mboards - 1 - - - sample_rate - samp_rate_tx - - - sync - - - - - osmosdr_source - - alias - - - - ant0 - satnogs.hw_rx_settings[rx_sdr_device]['antenna'] - - - bb_gain0 - satnogs.hw_rx_settings[rx_sdr_device]['bb_gain'] - - - bw0 - samp_rate_rx - - - dc_offset_mode0 - 0 - - - corr0 - 0 - - - freq0 - rx_frequency - lo_offset - - - gain_mode0 - False - - - if_gain0 - satnogs.hw_rx_settings[rx_sdr_device]['if_gain'] - - - iq_balance_mode0 - 0 - - - gain0 - satnogs.hw_rx_settings[rx_sdr_device]['rf_gain'] - - - ant10 - - - - bb_gain10 - 20 - - - bw10 - 0 - - - dc_offset_mode10 - 0 - - - corr10 - 0 - - - freq10 - 100e6 - - - gain_mode10 - False - - - if_gain10 - 20 - - - iq_balance_mode10 - 0 - - - gain10 - 10 - - - ant11 - - - - bb_gain11 - 20 - - - bw11 - 0 - - - dc_offset_mode11 - 0 - - - corr11 - 0 - - - freq11 - 100e6 - - - gain_mode11 - False - - - if_gain11 - 20 - - - iq_balance_mode11 - 0 - - - gain11 - 10 - - - ant12 - - - - bb_gain12 - 20 - - - bw12 - 0 - - - dc_offset_mode12 - 0 - - - corr12 - 0 - - - freq12 - 100e6 - - - gain_mode12 - False - - - if_gain12 - 20 - - - iq_balance_mode12 - 0 - - - gain12 - 10 - - - ant13 - - - - bb_gain13 - 20 - - - bw13 - 0 - - - dc_offset_mode13 - 0 - - - corr13 - 0 - - - freq13 - 100e6 - - - gain_mode13 - False - - - if_gain13 - 20 - - - iq_balance_mode13 - 0 - - - gain13 - 10 - - - ant14 - - - - bb_gain14 - 20 - - - bw14 - 0 - - - dc_offset_mode14 - 0 - - - corr14 - 0 - - - freq14 - 100e6 - - - gain_mode14 - False - - - if_gain14 - 20 - - - iq_balance_mode14 - 0 - - - gain14 - 10 - - - ant15 - - - - bb_gain15 - 20 - - - bw15 - 0 - - - dc_offset_mode15 - 0 - - - corr15 - 0 - - - freq15 - 100e6 - - - gain_mode15 - False - - - if_gain15 - 20 - - - iq_balance_mode15 - 0 - - - gain15 - 10 - - - ant16 - - - - bb_gain16 - 20 - - - bw16 - 0 - - - dc_offset_mode16 - 0 - - - corr16 - 0 - - - freq16 - 100e6 - - - gain_mode16 - False - - - if_gain16 - 20 - - - iq_balance_mode16 - 0 - - - gain16 - 10 - - - ant17 - - - - bb_gain17 - 20 - - - bw17 - 0 - - - dc_offset_mode17 - 0 - - - corr17 - 0 - - - freq17 - 100e6 - - - gain_mode17 - False - - - if_gain17 - 20 - - - iq_balance_mode17 - 0 - - - gain17 - 10 - - - ant18 - - - - bb_gain18 - 20 - - - bw18 - 0 - - - dc_offset_mode18 - 0 - - - corr18 - 0 - - - freq18 - 100e6 - - - gain_mode18 - False - - - if_gain18 - 20 - - - iq_balance_mode18 - 0 - - - gain18 - 10 - - - ant19 - - - - bb_gain19 - 20 - - - bw19 - 0 - - - dc_offset_mode19 - 0 - - - corr19 - 0 - - - freq19 - 100e6 - - - gain_mode19 - False - - - if_gain19 - 20 - - - iq_balance_mode19 - 0 - - - gain19 - 10 - - - ant1 - - - - bb_gain1 - 20 - - - bw1 - 0 - - - dc_offset_mode1 - 0 - - - corr1 - 0 - - - freq1 - 100e6 - - - gain_mode1 - False - - - if_gain1 - 20 - - - iq_balance_mode1 - 0 - - - gain1 - 10 - - - ant20 - - - - bb_gain20 - 20 - - - bw20 - 0 - - - dc_offset_mode20 - 0 - - - corr20 - 0 - - - freq20 - 100e6 - - - gain_mode20 - False - - - if_gain20 - 20 - - - iq_balance_mode20 - 0 - - - gain20 - 10 - - - ant21 - - - - bb_gain21 - 20 - - - bw21 - 0 - - - dc_offset_mode21 - 0 - - - corr21 - 0 - - - freq21 - 100e6 - - - gain_mode21 - False - - - if_gain21 - 20 - - - iq_balance_mode21 - 0 - - - gain21 - 10 - - - ant22 - - - - bb_gain22 - 20 - - - bw22 - 0 - - - dc_offset_mode22 - 0 - - - corr22 - 0 - - - freq22 - 100e6 - - - gain_mode22 - False - - - if_gain22 - 20 - - - iq_balance_mode22 - 0 - - - gain22 - 10 - - - ant23 - - - - bb_gain23 - 20 - - - bw23 - 0 - - - dc_offset_mode23 - 0 - - - corr23 - 0 - - - freq23 - 100e6 - - - gain_mode23 - False - - - if_gain23 - 20 - - - iq_balance_mode23 - 0 - - - gain23 - 10 - - - ant24 - - - - bb_gain24 - 20 - - - bw24 - 0 - - - dc_offset_mode24 - 0 - - - corr24 - 0 - - - freq24 - 100e6 - - - gain_mode24 - False - - - if_gain24 - 20 - - - iq_balance_mode24 - 0 - - - gain24 - 10 - - - ant25 - - - - bb_gain25 - 20 - - - bw25 - 0 - - - dc_offset_mode25 - 0 - - - corr25 - 0 - - - freq25 - 100e6 - - - gain_mode25 - False - - - if_gain25 - 20 - - - iq_balance_mode25 - 0 - - - gain25 - 10 - - - ant26 - - - - bb_gain26 - 20 - - - bw26 - 0 - - - dc_offset_mode26 - 0 - - - corr26 - 0 - - - freq26 - 100e6 - - - gain_mode26 - False - - - if_gain26 - 20 - - - iq_balance_mode26 - 0 - - - gain26 - 10 - - - ant27 - - - - bb_gain27 - 20 - - - bw27 - 0 - - - dc_offset_mode27 - 0 - - - corr27 - 0 - - - freq27 - 100e6 - - - gain_mode27 - False - - - if_gain27 - 20 - - - iq_balance_mode27 - 0 - - - gain27 - 10 - - - ant28 - - - - bb_gain28 - 20 - - - bw28 - 0 - - - dc_offset_mode28 - 0 - - - corr28 - 0 - - - freq28 - 100e6 - - - gain_mode28 - False - - - if_gain28 - 20 - - - iq_balance_mode28 - 0 - - - gain28 - 10 - - - ant29 - - - - bb_gain29 - 20 - - - bw29 - 0 - - - dc_offset_mode29 - 0 - - - corr29 - 0 - - - freq29 - 100e6 - - - gain_mode29 - False - - - if_gain29 - 20 - - - iq_balance_mode29 - 0 - - - gain29 - 10 - - - ant2 - - - - bb_gain2 - 20 - - - bw2 - 0 - - - dc_offset_mode2 - 0 - - - corr2 - 0 - - - freq2 - 100e6 - - - gain_mode2 - False - - - if_gain2 - 20 - - - iq_balance_mode2 - 0 - - - gain2 - 10 - - - ant30 - - - - bb_gain30 - 20 - - - bw30 - 0 - - - dc_offset_mode30 - 0 - - - corr30 - 0 - - - freq30 - 100e6 - - - gain_mode30 - False - - - if_gain30 - 20 - - - iq_balance_mode30 - 0 - - - gain30 - 10 - - - ant31 - - - - bb_gain31 - 20 - - - bw31 - 0 - - - dc_offset_mode31 - 0 - - - corr31 - 0 - - - freq31 - 100e6 - - - gain_mode31 - False - - - if_gain31 - 20 - - - iq_balance_mode31 - 0 - - - gain31 - 10 - - - ant3 - - - - bb_gain3 - 20 - - - bw3 - 0 - - - dc_offset_mode3 - 0 - - - corr3 - 0 - - - freq3 - 100e6 - - - gain_mode3 - False - - - if_gain3 - 20 - - - iq_balance_mode3 - 0 - - - gain3 - 10 - - - ant4 - - - - bb_gain4 - 20 - - - bw4 - 0 - - - dc_offset_mode4 - 0 - - - corr4 - 0 - - - freq4 - 100e6 - - - gain_mode4 - False - - - if_gain4 - 20 - - - iq_balance_mode4 - 0 - - - gain4 - 10 - - - ant5 - - - - bb_gain5 - 20 - - - bw5 - 0 - - - dc_offset_mode5 - 0 - - - corr5 - 0 - - - freq5 - 100e6 - - - gain_mode5 - False - - - if_gain5 - 20 - - - iq_balance_mode5 - 0 - - - gain5 - 10 - - - ant6 - - - - bb_gain6 - 20 - - - bw6 - 0 - - - dc_offset_mode6 - 0 - - - corr6 - 0 - - - freq6 - 100e6 - - - gain_mode6 - False - - - if_gain6 - 20 - - - iq_balance_mode6 - 0 - - - gain6 - 10 - - - ant7 - - - - bb_gain7 - 20 - - - bw7 - 0 - - - dc_offset_mode7 - 0 - - - corr7 - 0 - - - freq7 - 100e6 - - - gain_mode7 - False - - - if_gain7 - 20 - - - iq_balance_mode7 - 0 - - - gain7 - 10 - - - ant8 - - - - bb_gain8 - 20 - - - bw8 - 0 - - - dc_offset_mode8 - 0 - - - corr8 - 0 - - - freq8 - 100e6 - - - gain_mode8 - False - - - if_gain8 - 20 - - - iq_balance_mode8 - 0 - - - gain8 - 10 - - - ant9 - - - - bb_gain9 - 20 - - - bw9 - 0 - - - dc_offset_mode9 - 0 - - - corr9 - 0 - - - freq9 - 100e6 - - - gain_mode9 - False - - - if_gain9 - 20 - - - iq_balance_mode9 - 0 - - - gain9 - 10 - - - comment - - - - affinity - - - - args - satnogs.hw_rx_settings[rx_sdr_device]['dev_arg'] - - - _enabled - 1 - - - _coordinate - (64, 440) - - - _rotation - 0 - - - id - osmosdr_source_0 - - - maxoutbuf - 0 - - - clock_source0 - - - - time_source0 - - - - clock_source1 - - - - time_source1 - - - - clock_source2 - - - - time_source2 - - - - clock_source3 - - - - time_source3 - - - - clock_source4 - - - - time_source4 - - - - clock_source5 - - - - time_source5 - - - - clock_source6 - - - - time_source6 - - - - clock_source7 - - - - time_source7 - - - - minoutbuf - 0 - - - nchan - 1 - - - num_mboards - 1 - - - type - fc32 - - - sample_rate - samp_rate_rx - - - sync - - - - - pfb_arb_resampler_xxx - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (1080, 360) - - - _rotation - 180 - - - id - pfb_arb_resampler_xxx_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - nfilts - 32 - - - rrate - samp_rate_tx / (baud_rate_uplink * samples_per_symbol_tx) - - - samp_delay - 0 - - - atten - 60 - - - taps - firdes.low_pass_2(32, 32, 0.8, 0.1, 60) - - - type - ccf - - - - qtgui_freq_sink_x - - autoscale - False - - - average - 1.0 - - - axislabels - True - - - bw - samp_rate_rx/decimation_rx - - - alias - - - - fc - 0 - - - comment - - - - ctrlpanel - True - - - affinity - - - - _enabled - 1 - - - fftsize - 1024 - - - _coordinate - (312, 408) - - - gui_hint - - - - _rotation - 180 - - - grid - True - - - id - qtgui_freq_sink_x_0 - - - legend - True - - - alpha1 - 1.0 - - - color1 - "blue" - - - label1 - - - - width1 - 1 - - - alpha10 - 1.0 - - - color10 - "dark blue" - - - label10 - - - - width10 - 1 - - - alpha2 - 1.0 - - - color2 - "red" - - - label2 - - - - width2 - 1 - - - alpha3 - 1.0 - - - color3 - "green" - - - label3 - - - - width3 - 1 - - - alpha4 - 1.0 - - - color4 - "black" - - - label4 - - - - width4 - 1 - - - alpha5 - 1.0 - - - color5 - "cyan" - - - label5 - - - - width5 - 1 - - - alpha6 - 1.0 - - - color6 - "magenta" - - - label6 - - - - width6 - 1 - - - alpha7 - 1.0 - - - color7 - "yellow" - - - label7 - - - - width7 - 1 - - - alpha8 - 1.0 - - - color8 - "dark red" - - - label8 - - - - width8 - 1 - - - alpha9 - 1.0 - - - color9 - "dark green" - - - label9 - - - - width9 - 1 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - name - "" - - - nconnections - 1 - - - showports - True - - - freqhalf - True - - - tr_chan - 0 - - - tr_level - 0.0 - - - tr_mode - qtgui.TRIG_MODE_FREE - - - tr_tag - "" - - - type - complex - - - update_time - 0.01 - - - wintype - firdes.WIN_BLACKMAN_hARRIS - - - label - Relative Gain - - - ymax - 0 - - - ymin - -140 - - - units - dB - - - - qtgui_waterfall_sink_x - - axislabels - True - - - bw - 50e3 - - - alias - - - - fc - 0 - - - comment - - - - affinity - - - - _enabled - True - - - fftsize - 1024 - - - _coordinate - (296, 628) - - - gui_hint - - - - _rotation - 180 - - - grid - False - - - id - qtgui_waterfall_sink_x_0 - - - int_max - 10 - - - int_min - -140 - - - legend - True - - - alpha1 - 1.0 - - - color1 - 0 - - - label1 - - - - alpha10 - 1.0 - - - color10 - 0 - - - label10 - - - - alpha2 - 1.0 - - - color2 - 0 - - - label2 - - - - alpha3 - 1.0 - - - color3 - 0 - - - label3 - - - - alpha4 - 1.0 - - - color4 - 0 - - - label4 - - - - alpha5 - 1.0 - - - color5 - 0 - - - label5 - - - - alpha6 - 1.0 - - - color6 - 0 - - - label6 - - - - alpha7 - 1.0 - - - color7 - 0 - - - label7 - - - - alpha8 - 1.0 - - - color8 - 0 - - - label8 - - - - alpha9 - 1.0 - - - color9 - 0 - - - label9 - - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - name - "" - - - nconnections - 1 - - - showports - True - - - freqhalf - True - - - type - complex - - - update_time - 0.10 - - - wintype - firdes.WIN_BLACKMAN_hARRIS - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (168, 756) - - - _rotation - 0 - - - id - recv_port - - - label - - - - short_id - - - - type - intx - - - value - 16886 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (648, 900) - - - _rotation - 0 - - - id - rx_sdr_device - - - label - - - - short_id - - - - type - string - - - value - usrpb200 - - - - satnogs_ax25_decoder_bm - - n_sync_flags - 3 - - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - descrambling - True - - - _coordinate - (1312, 584) - - - _rotation - 180 - - - id - satnogs_ax25_decoder_bm_0 - - - maxoutbuf - 0 - - - max_frame_len - 256 - - - minoutbuf - 0 - - - promisc - False - - - addr - 'GND' - - - ssid - 0 - - - - satnogs_multi_format_msg_sink - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - _coordinate - (1080, 560) - - - _rotation - 180 - - - id - satnogs_multi_format_msg_sink_0 - - - format - 1 - - - - satnogs_qb50_deframer - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - _coordinate - (968, 624) - - - _rotation - 180 - - - id - satnogs_qb50_deframer_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - wod_ssid - 0xe - - - - satnogs_udp_msg_sink - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (728, 672) - - - _rotation - 180 - - - id - satnogs_udp_msg_sink_0_0 - - - addr - dest_addr - - - mtu - 1500 - - - port - send_port - - - - satnogs_udp_msg_sink - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (728, 600) - - - _rotation - 180 - - - id - satnogs_udp_msg_sink_0_0_0 - - - addr - dest_addr - - - mtu - 1500 - - - port - wod_port - - - - satnogs_udp_msg_source - - alias - - - - comment - The transmitter can also receive payloads -from a UDP source. Use netcat or something -similar to produce dynamic payloads. - - - affinity - - - - _enabled - 1 - - - _coordinate - (16, 208) - - - _rotation - 0 - - - id - satnogs_udp_msg_source_0 - - - addr - bind_addr - - - mtu - 1500 - - - maxoutbuf - 0 - - - msg_type - 0 - - - minoutbuf - 0 - - - port - recv_port - - - - satnogs_upsat_fsk_frame_encoder - - append_crc - False - - - alias - - - - comment - - - - affinity - - - - dest_addr - ON02GR - - - dest_ssid - 0 - - - _enabled - 1 - - - preamble - [0x33]*8 - - - _coordinate - (304, 152) - - - _rotation - 0 - - - id - satnogs_upsat_fsk_frame_encoder_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - settling_samples - 64 - - - msb_first - True - - - src_addr - ABCD - - - src_ssid - 0 - - - sync_word - [0x7A, 0x0E] - - - ax_25 - True - - - manchester - False - - - whitening - False - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (168, 844) - - - _rotation - 0 - - - id - send_port - - - label - - - - short_id - - - - type - intx - - - value - 5022 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (648, 776) - - - _rotation - 0 - - - id - tx_sdr_device - - - label - - - - short_id - - - - type - string - - - value - usrpb200 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (552, 780) - - - _rotation - 0 - - - id - wod_port - - - label - - - - short_id - - - - type - intx - - - value - 5023 - - - - analog_frequency_modulator_fc_0 - pfb_arb_resampler_xxx_0 - 0 - 0 - - - analog_quadrature_demod_cf_0_0 - digital_clock_recovery_mm_xx_0 - 0 - 0 - - - analog_sig_source_x_0 - blocks_multiply_xx_0 - 0 - 1 - - - blocks_multiply_xx_0 - osmosdr_sink_0 - 0 - 0 - - - digital_binary_slicer_fb_0 - satnogs_ax25_decoder_bm_0 - 0 - 0 - - - digital_clock_recovery_mm_xx_0 - digital_binary_slicer_fb_0 - 0 - 0 - - - freq_xlating_fir_filter_xxx_0 - analog_quadrature_demod_cf_0_0 - 0 - 0 - - - freq_xlating_fir_filter_xxx_0 - qtgui_freq_sink_x_0 - 0 - 0 - - - freq_xlating_fir_filter_xxx_0 - qtgui_waterfall_sink_x_0 - 0 - 0 - - - interp_fir_filter_xxx_0 - analog_frequency_modulator_fc_0 - 0 - 0 - - - osmosdr_source_0 - freq_xlating_fir_filter_xxx_0 - 0 - 0 - - - pfb_arb_resampler_xxx_0 - blocks_multiply_xx_0 - 0 - 0 - - - satnogs_ax25_decoder_bm_0 - satnogs_multi_format_msg_sink_0 - failed_pdu - in - - - satnogs_ax25_decoder_bm_0 - satnogs_qb50_deframer_0 - pdu - in - - - satnogs_qb50_deframer_0 - satnogs_udp_msg_sink_0_0 - out - in - - - satnogs_qb50_deframer_0 - satnogs_udp_msg_sink_0_0_0 - wod - in - - - satnogs_udp_msg_source_0 - satnogs_upsat_fsk_frame_encoder_0 - msg - pdu - - - satnogs_upsat_fsk_frame_encoder_0 - interp_fir_filter_xxx_0 - 0 - 0 - - diff --git a/apps/flowgraphs/satellites/upsat_transceiver_qt.py b/apps/flowgraphs/satellites/upsat_transceiver_qt.py deleted file mode 100755 index 17d3a26..0000000 --- a/apps/flowgraphs/satellites/upsat_transceiver_qt.py +++ /dev/null @@ -1,500 +0,0 @@ -#!/usr/bin/env python2 -# -*- coding: utf-8 -*- -################################################## -# GNU Radio Python Flow Graph -# Title: UPSat Transceiver QT -# Author: Manolis Surligas (surligas@gmail.com) -# Description: SATNOGS transceiver for UPSAT satellite -# Generated: Tue Mar 20 20:00:52 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 blocks -from gnuradio import digital -from gnuradio import eng_notation -from gnuradio import filter -from gnuradio import gr -from gnuradio import qtgui -from gnuradio.eng_option import eng_option -from gnuradio.filter import firdes -from gnuradio.filter import pfb -from optparse import OptionParser -import math -import numpy -import osmosdr -import satnogs -import sip -import sys -import time -from gnuradio import qtgui - - -class upsat_transceiver_qt(gr.top_block, Qt.QWidget): - - def __init__(self, bind_addr='0.0.0.0', dest_addr='127.0.0.1', lo_offset=100e3, recv_port=16886, rx_sdr_device='usrpb200', send_port=5022, tx_sdr_device='usrpb200', wod_port=5023): - gr.top_block.__init__(self, "UPSat Transceiver QT") - Qt.QWidget.__init__(self) - self.setWindowTitle("UPSat Transceiver QT") - 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", "upsat_transceiver_qt") - self.restoreGeometry(self.settings.value("geometry").toByteArray()) - - ################################################## - # Parameters - ################################################## - self.bind_addr = bind_addr - self.dest_addr = dest_addr - self.lo_offset = lo_offset - self.recv_port = recv_port - self.rx_sdr_device = rx_sdr_device - self.send_port = send_port - self.tx_sdr_device = tx_sdr_device - self.wod_port = wod_port - - ################################################## - # Variables - ################################################## - self.samples_per_symbol_tx = samples_per_symbol_tx = 4*8 - self.sq_wave = sq_wave = (1.0, ) * samples_per_symbol_tx - self.samp_rate_rx = samp_rate_rx = satnogs.hw_rx_settings[rx_sdr_device]['samp_rate'] - self.gaussian_taps = gaussian_taps = filter.firdes.gaussian(1.0, samples_per_symbol_tx, 1.0, 4*samples_per_symbol_tx) - self.deviation = deviation = 3.9973e3 - self.decimation_rx = decimation_rx = 20 - self.baud_rate_uplink = baud_rate_uplink = 1200 - self.baud_rate_downlink = baud_rate_downlink = 9600 - self.tx_frequency = tx_frequency = 145.835e6 - - self.taps = taps = firdes.low_pass(1.0, samp_rate_rx, 20000, 60000, firdes.WIN_HAMMING, 6.76) - - self.samp_rate_tx = samp_rate_tx = satnogs.hw_tx_settings[rx_sdr_device]['samp_rate'] - self.rx_frequency = rx_frequency = 435.765e6 - self.modulation_index_uplink = modulation_index_uplink = deviation / (baud_rate_uplink / 2.0) - self.modulation_index_downlink = modulation_index_downlink = deviation / (baud_rate_downlink / 2.0) - self.interp_taps = interp_taps = numpy.convolve(numpy.array(gaussian_taps), numpy.array(sq_wave)) - self.first_stage_samp_rate_rx = first_stage_samp_rate_rx = samp_rate_rx / decimation_rx - - ################################################## - # Blocks - ################################################## - self.satnogs_upsat_fsk_frame_encoder_0 = satnogs.upsat_fsk_frame_encoder([0x33]*8 , [0x7A, 0x0E], False, False, False, True, True, 'ABCD', 0, 'ON02GR', 0, 64) - self.satnogs_udp_msg_source_0 = satnogs.udp_msg_source(bind_addr, recv_port, 1500, 0) - self.satnogs_udp_msg_sink_0_0_0 = satnogs.udp_msg_sink(dest_addr, wod_port, 1500) - self.satnogs_udp_msg_sink_0_0 = satnogs.udp_msg_sink(dest_addr, send_port, 1500) - self.satnogs_qb50_deframer_0 = satnogs.qb50_deframer(0xe) - self.satnogs_multi_format_msg_sink_0 = satnogs.multi_format_msg_sink(1, False, True, '') - self.satnogs_ax25_decoder_bm_0 = satnogs.ax25_decoder_bm('GND', 0, False, True, 256, 3) - self.qtgui_waterfall_sink_x_0 = qtgui.waterfall_sink_c( - 1024, #size - firdes.WIN_BLACKMAN_hARRIS, #wintype - 0, #fc - 50e3, #bw - "", #name - 1 #number of inputs - ) - self.qtgui_waterfall_sink_x_0.set_update_time(0.10) - self.qtgui_waterfall_sink_x_0.enable_grid(False) - self.qtgui_waterfall_sink_x_0.enable_axis_labels(True) - - if not True: - self.qtgui_waterfall_sink_x_0.disable_legend() - - if "complex" == "float" or "complex" == "msg_float": - self.qtgui_waterfall_sink_x_0.set_plot_pos_half(not True) - - labels = ['', '', '', '', '', - '', '', '', '', ''] - colors = [0, 0, 0, 0, 0, - 0, 0, 0, 0, 0] - alphas = [1.0, 1.0, 1.0, 1.0, 1.0, - 1.0, 1.0, 1.0, 1.0, 1.0] - for i in xrange(1): - if len(labels[i]) == 0: - self.qtgui_waterfall_sink_x_0.set_line_label(i, "Data {0}".format(i)) - else: - self.qtgui_waterfall_sink_x_0.set_line_label(i, labels[i]) - self.qtgui_waterfall_sink_x_0.set_color_map(i, colors[i]) - self.qtgui_waterfall_sink_x_0.set_line_alpha(i, alphas[i]) - - self.qtgui_waterfall_sink_x_0.set_intensity_range(-140, 10) - - self._qtgui_waterfall_sink_x_0_win = sip.wrapinstance(self.qtgui_waterfall_sink_x_0.pyqwidget(), Qt.QWidget) - self.top_layout.addWidget(self._qtgui_waterfall_sink_x_0_win) - self.qtgui_freq_sink_x_0 = qtgui.freq_sink_c( - 1024, #size - firdes.WIN_BLACKMAN_hARRIS, #wintype - 0, #fc - samp_rate_rx/decimation_rx, #bw - "", #name - 1 #number of inputs - ) - self.qtgui_freq_sink_x_0.set_update_time(0.01) - self.qtgui_freq_sink_x_0.set_y_axis(-140, 0) - 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(True) - 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(True) - - 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 = ['', '', '', '', '', - '', '', '', '', ''] - 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 xrange(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_layout.addWidget(self._qtgui_freq_sink_x_0_win) - self.pfb_arb_resampler_xxx_0 = pfb.arb_resampler_ccf( - samp_rate_tx / (baud_rate_uplink * samples_per_symbol_tx), - taps=(firdes.low_pass_2(32, 32, 0.8, 0.1, 60)), - flt_size=32) - self.pfb_arb_resampler_xxx_0.declare_sample_delay(0) - - self.osmosdr_source_0 = osmosdr.source( args="numchan=" + str(1) + " " + satnogs.hw_rx_settings[rx_sdr_device]['dev_arg'] ) - self.osmosdr_source_0.set_sample_rate(samp_rate_rx) - self.osmosdr_source_0.set_center_freq(rx_frequency - lo_offset, 0) - self.osmosdr_source_0.set_freq_corr(0, 0) - self.osmosdr_source_0.set_dc_offset_mode(0, 0) - self.osmosdr_source_0.set_iq_balance_mode(0, 0) - self.osmosdr_source_0.set_gain_mode(False, 0) - self.osmosdr_source_0.set_gain(satnogs.hw_rx_settings[rx_sdr_device]['rf_gain'], 0) - self.osmosdr_source_0.set_if_gain(satnogs.hw_rx_settings[rx_sdr_device]['if_gain'], 0) - self.osmosdr_source_0.set_bb_gain(satnogs.hw_rx_settings[rx_sdr_device]['bb_gain'], 0) - self.osmosdr_source_0.set_antenna(satnogs.hw_rx_settings[rx_sdr_device]['antenna'], 0) - self.osmosdr_source_0.set_bandwidth(samp_rate_rx, 0) - - self.osmosdr_sink_0 = osmosdr.sink( args="numchan=" + str(1) + " " + satnogs.hw_tx_settings[rx_sdr_device]['dev_arg'] ) - self.osmosdr_sink_0.set_sample_rate(samp_rate_tx) - self.osmosdr_sink_0.set_center_freq(tx_frequency - lo_offset, 0) - self.osmosdr_sink_0.set_freq_corr(0, 0) - self.osmosdr_sink_0.set_gain(satnogs.hw_tx_settings[tx_sdr_device]['rf_gain'], 0) - self.osmosdr_sink_0.set_if_gain(satnogs.hw_tx_settings[tx_sdr_device]['if_gain'], 0) - self.osmosdr_sink_0.set_bb_gain(satnogs.hw_tx_settings[tx_sdr_device]['bb_gain'], 0) - self.osmosdr_sink_0.set_antenna(satnogs.hw_tx_settings[tx_sdr_device]['antenna'], 0) - self.osmosdr_sink_0.set_bandwidth(samp_rate_tx, 0) - - self.interp_fir_filter_xxx_0 = filter.interp_fir_filter_fff(samples_per_symbol_tx, (interp_taps)) - self.interp_fir_filter_xxx_0.declare_sample_delay(0) - self.freq_xlating_fir_filter_xxx_0 = filter.freq_xlating_fir_filter_ccc(decimation_rx, (taps), lo_offset, samp_rate_rx) - self.digital_clock_recovery_mm_xx_0 = digital.clock_recovery_mm_ff(first_stage_samp_rate_rx/baud_rate_downlink, 0.25*0.175*0.175, 0.5, 0.175, 0.005) - self.digital_binary_slicer_fb_0 = digital.binary_slicer_fb() - self.blocks_multiply_xx_0 = blocks.multiply_vcc(1) - self.analog_sig_source_x_0 = analog.sig_source_c(samp_rate_tx, analog.GR_COS_WAVE, lo_offset , 1, 0) - self.analog_quadrature_demod_cf_0_0 = analog.quadrature_demod_cf(((first_stage_samp_rate_rx) / baud_rate_downlink)/(math.pi*modulation_index_downlink)) - self.analog_frequency_modulator_fc_0 = analog.frequency_modulator_fc((math.pi*modulation_index_uplink) / samples_per_symbol_tx) - - ################################################## - # Connections - ################################################## - self.msg_connect((self.satnogs_ax25_decoder_bm_0, 'failed_pdu'), (self.satnogs_multi_format_msg_sink_0, 'in')) - self.msg_connect((self.satnogs_ax25_decoder_bm_0, 'pdu'), (self.satnogs_qb50_deframer_0, 'in')) - self.msg_connect((self.satnogs_qb50_deframer_0, 'out'), (self.satnogs_udp_msg_sink_0_0, 'in')) - self.msg_connect((self.satnogs_qb50_deframer_0, 'wod'), (self.satnogs_udp_msg_sink_0_0_0, 'in')) - self.msg_connect((self.satnogs_udp_msg_source_0, 'msg'), (self.satnogs_upsat_fsk_frame_encoder_0, 'pdu')) - self.connect((self.analog_frequency_modulator_fc_0, 0), (self.pfb_arb_resampler_xxx_0, 0)) - self.connect((self.analog_quadrature_demod_cf_0_0, 0), (self.digital_clock_recovery_mm_xx_0, 0)) - self.connect((self.analog_sig_source_x_0, 0), (self.blocks_multiply_xx_0, 1)) - self.connect((self.blocks_multiply_xx_0, 0), (self.osmosdr_sink_0, 0)) - self.connect((self.digital_binary_slicer_fb_0, 0), (self.satnogs_ax25_decoder_bm_0, 0)) - self.connect((self.digital_clock_recovery_mm_xx_0, 0), (self.digital_binary_slicer_fb_0, 0)) - self.connect((self.freq_xlating_fir_filter_xxx_0, 0), (self.analog_quadrature_demod_cf_0_0, 0)) - self.connect((self.freq_xlating_fir_filter_xxx_0, 0), (self.qtgui_freq_sink_x_0, 0)) - self.connect((self.freq_xlating_fir_filter_xxx_0, 0), (self.qtgui_waterfall_sink_x_0, 0)) - self.connect((self.interp_fir_filter_xxx_0, 0), (self.analog_frequency_modulator_fc_0, 0)) - self.connect((self.osmosdr_source_0, 0), (self.freq_xlating_fir_filter_xxx_0, 0)) - self.connect((self.pfb_arb_resampler_xxx_0, 0), (self.blocks_multiply_xx_0, 0)) - self.connect((self.satnogs_upsat_fsk_frame_encoder_0, 0), (self.interp_fir_filter_xxx_0, 0)) - - def closeEvent(self, event): - self.settings = Qt.QSettings("GNU Radio", "upsat_transceiver_qt") - self.settings.setValue("geometry", self.saveGeometry()) - event.accept() - - def get_bind_addr(self): - return self.bind_addr - - def set_bind_addr(self, bind_addr): - self.bind_addr = bind_addr - - def get_dest_addr(self): - return self.dest_addr - - def set_dest_addr(self, dest_addr): - self.dest_addr = dest_addr - - def get_lo_offset(self): - return self.lo_offset - - def set_lo_offset(self, lo_offset): - self.lo_offset = lo_offset - self.osmosdr_source_0.set_center_freq(self.rx_frequency - self.lo_offset, 0) - self.osmosdr_sink_0.set_center_freq(self.tx_frequency - self.lo_offset, 0) - self.freq_xlating_fir_filter_xxx_0.set_center_freq(self.lo_offset) - self.analog_sig_source_x_0.set_frequency(self.lo_offset ) - - def get_recv_port(self): - return self.recv_port - - def set_recv_port(self, recv_port): - self.recv_port = recv_port - - def get_rx_sdr_device(self): - return self.rx_sdr_device - - def set_rx_sdr_device(self, rx_sdr_device): - self.rx_sdr_device = rx_sdr_device - self.set_samp_rate_tx(satnogs.hw_tx_settings[self.rx_sdr_device]['samp_rate']) - self.set_samp_rate_rx(satnogs.hw_rx_settings[self.rx_sdr_device]['samp_rate']) - self.osmosdr_source_0.set_gain(satnogs.hw_rx_settings[self.rx_sdr_device]['rf_gain'], 0) - self.osmosdr_source_0.set_if_gain(satnogs.hw_rx_settings[self.rx_sdr_device]['if_gain'], 0) - self.osmosdr_source_0.set_bb_gain(satnogs.hw_rx_settings[self.rx_sdr_device]['bb_gain'], 0) - self.osmosdr_source_0.set_antenna(satnogs.hw_rx_settings[self.rx_sdr_device]['antenna'], 0) - - def get_send_port(self): - return self.send_port - - def set_send_port(self, send_port): - self.send_port = send_port - - def get_tx_sdr_device(self): - return self.tx_sdr_device - - def set_tx_sdr_device(self, tx_sdr_device): - self.tx_sdr_device = tx_sdr_device - self.osmosdr_sink_0.set_gain(satnogs.hw_tx_settings[self.tx_sdr_device]['rf_gain'], 0) - self.osmosdr_sink_0.set_if_gain(satnogs.hw_tx_settings[self.tx_sdr_device]['if_gain'], 0) - self.osmosdr_sink_0.set_bb_gain(satnogs.hw_tx_settings[self.tx_sdr_device]['bb_gain'], 0) - self.osmosdr_sink_0.set_antenna(satnogs.hw_tx_settings[self.tx_sdr_device]['antenna'], 0) - - def get_wod_port(self): - return self.wod_port - - def set_wod_port(self, wod_port): - self.wod_port = wod_port - - def get_samples_per_symbol_tx(self): - return self.samples_per_symbol_tx - - def set_samples_per_symbol_tx(self, samples_per_symbol_tx): - self.samples_per_symbol_tx = samples_per_symbol_tx - self.set_sq_wave((1.0, ) * self.samples_per_symbol_tx) - self.pfb_arb_resampler_xxx_0.set_rate(self.samp_rate_tx / (self.baud_rate_uplink * self.samples_per_symbol_tx)) - self.set_gaussian_taps(filter.firdes.gaussian(1.0, self.samples_per_symbol_tx, 1.0, 4*self.samples_per_symbol_tx)) - self.analog_frequency_modulator_fc_0.set_sensitivity((math.pi*self.modulation_index_uplink) / self.samples_per_symbol_tx) - - def get_sq_wave(self): - return self.sq_wave - - def set_sq_wave(self, sq_wave): - self.sq_wave = sq_wave - self.set_interp_taps(numpy.convolve(numpy.array(self.gaussian_taps), numpy.array(self.sq_wave))) - - def get_samp_rate_rx(self): - return self.samp_rate_rx - - def set_samp_rate_rx(self, samp_rate_rx): - self.samp_rate_rx = samp_rate_rx - self.set_first_stage_samp_rate_rx(self.samp_rate_rx / self.decimation_rx) - self.qtgui_freq_sink_x_0.set_frequency_range(0, self.samp_rate_rx/self.decimation_rx) - self.osmosdr_source_0.set_sample_rate(self.samp_rate_rx) - self.osmosdr_source_0.set_bandwidth(self.samp_rate_rx, 0) - - def get_gaussian_taps(self): - return self.gaussian_taps - - def set_gaussian_taps(self, gaussian_taps): - self.gaussian_taps = gaussian_taps - self.set_interp_taps(numpy.convolve(numpy.array(self.gaussian_taps), numpy.array(self.sq_wave))) - - def get_deviation(self): - return self.deviation - - def set_deviation(self, deviation): - self.deviation = deviation - self.set_modulation_index_uplink(self.deviation / (self.baud_rate_uplink / 2.0)) - self.set_modulation_index_downlink(self.deviation / (self.baud_rate_downlink / 2.0)) - - def get_decimation_rx(self): - return self.decimation_rx - - def set_decimation_rx(self, decimation_rx): - self.decimation_rx = decimation_rx - self.set_first_stage_samp_rate_rx(self.samp_rate_rx / self.decimation_rx) - self.qtgui_freq_sink_x_0.set_frequency_range(0, self.samp_rate_rx/self.decimation_rx) - - def get_baud_rate_uplink(self): - return self.baud_rate_uplink - - def set_baud_rate_uplink(self, baud_rate_uplink): - self.baud_rate_uplink = baud_rate_uplink - self.set_modulation_index_uplink(self.deviation / (self.baud_rate_uplink / 2.0)) - self.pfb_arb_resampler_xxx_0.set_rate(self.samp_rate_tx / (self.baud_rate_uplink * self.samples_per_symbol_tx)) - - def get_baud_rate_downlink(self): - return self.baud_rate_downlink - - def set_baud_rate_downlink(self, baud_rate_downlink): - self.baud_rate_downlink = baud_rate_downlink - self.set_modulation_index_downlink(self.deviation / (self.baud_rate_downlink / 2.0)) - self.digital_clock_recovery_mm_xx_0.set_omega(self.first_stage_samp_rate_rx/self.baud_rate_downlink) - self.analog_quadrature_demod_cf_0_0.set_gain(((self.first_stage_samp_rate_rx) / self.baud_rate_downlink)/(math.pi*self.modulation_index_downlink)) - - def get_tx_frequency(self): - return self.tx_frequency - - def set_tx_frequency(self, tx_frequency): - self.tx_frequency = tx_frequency - self.osmosdr_sink_0.set_center_freq(self.tx_frequency - self.lo_offset, 0) - - def get_taps(self): - return self.taps - - def set_taps(self, taps): - self.taps = taps - self.freq_xlating_fir_filter_xxx_0.set_taps((self.taps)) - - def get_samp_rate_tx(self): - return self.samp_rate_tx - - def set_samp_rate_tx(self, samp_rate_tx): - self.samp_rate_tx = samp_rate_tx - self.pfb_arb_resampler_xxx_0.set_rate(self.samp_rate_tx / (self.baud_rate_uplink * self.samples_per_symbol_tx)) - self.osmosdr_sink_0.set_sample_rate(self.samp_rate_tx) - self.osmosdr_sink_0.set_bandwidth(self.samp_rate_tx, 0) - self.analog_sig_source_x_0.set_sampling_freq(self.samp_rate_tx) - - def get_rx_frequency(self): - return self.rx_frequency - - def set_rx_frequency(self, rx_frequency): - self.rx_frequency = rx_frequency - self.osmosdr_source_0.set_center_freq(self.rx_frequency - self.lo_offset, 0) - - def get_modulation_index_uplink(self): - return self.modulation_index_uplink - - def set_modulation_index_uplink(self, modulation_index_uplink): - self.modulation_index_uplink = modulation_index_uplink - self.analog_frequency_modulator_fc_0.set_sensitivity((math.pi*self.modulation_index_uplink) / self.samples_per_symbol_tx) - - def get_modulation_index_downlink(self): - return self.modulation_index_downlink - - def set_modulation_index_downlink(self, modulation_index_downlink): - self.modulation_index_downlink = modulation_index_downlink - self.analog_quadrature_demod_cf_0_0.set_gain(((self.first_stage_samp_rate_rx) / self.baud_rate_downlink)/(math.pi*self.modulation_index_downlink)) - - def get_interp_taps(self): - return self.interp_taps - - def set_interp_taps(self, interp_taps): - self.interp_taps = interp_taps - self.interp_fir_filter_xxx_0.set_taps((self.interp_taps)) - - def get_first_stage_samp_rate_rx(self): - return self.first_stage_samp_rate_rx - - def set_first_stage_samp_rate_rx(self, first_stage_samp_rate_rx): - self.first_stage_samp_rate_rx = first_stage_samp_rate_rx - self.digital_clock_recovery_mm_xx_0.set_omega(self.first_stage_samp_rate_rx/self.baud_rate_downlink) - self.analog_quadrature_demod_cf_0_0.set_gain(((self.first_stage_samp_rate_rx) / self.baud_rate_downlink)/(math.pi*self.modulation_index_downlink)) - - -def argument_parser(): - description = 'SATNOGS transceiver for UPSAT satellite' - parser = OptionParser(usage="%prog: [options]", option_class=eng_option, description=description) - parser.add_option( - "", "--bind-addr", dest="bind_addr", type="string", default='0.0.0.0', - help="Set bind_addr [default=%default]") - parser.add_option( - "", "--dest-addr", dest="dest_addr", type="string", default='127.0.0.1', - help="Set dest_addr [default=%default]") - parser.add_option( - "", "--lo-offset", dest="lo_offset", type="eng_float", default=eng_notation.num_to_str(100e3), - help="Set lo_offset [default=%default]") - parser.add_option( - "", "--recv-port", dest="recv_port", type="intx", default=16886, - help="Set recv_port [default=%default]") - parser.add_option( - "", "--rx-sdr-device", dest="rx_sdr_device", type="string", default='usrpb200', - help="Set rx_sdr_device [default=%default]") - parser.add_option( - "", "--send-port", dest="send_port", type="intx", default=5022, - help="Set send_port [default=%default]") - parser.add_option( - "", "--tx-sdr-device", dest="tx_sdr_device", type="string", default='usrpb200', - help="Set tx_sdr_device [default=%default]") - parser.add_option( - "", "--wod-port", dest="wod_port", type="intx", default=5023, - help="Set wod_port [default=%default]") - return parser - - -def main(top_block_cls=upsat_transceiver_qt, options=None): - if options is None: - options, _ = argument_parser().parse_args() - - 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(bind_addr=options.bind_addr, dest_addr=options.dest_addr, lo_offset=options.lo_offset, recv_port=options.recv_port, rx_sdr_device=options.rx_sdr_device, send_port=options.send_port, tx_sdr_device=options.tx_sdr_device, wod_port=options.wod_port) - tb.start() - tb.show() - - def quitting(): - tb.stop() - tb.wait() - qapp.connect(qapp, Qt.SIGNAL("aboutToQuit()"), quitting) - qapp.exec_() - - -if __name__ == '__main__': - main() diff --git a/cmake/Modules/FindNova.cmake b/cmake/Modules/FindNova.cmake deleted file mode 100644 index ab45e18..0000000 --- a/cmake/Modules/FindNova.cmake +++ /dev/null @@ -1,26 +0,0 @@ -INCLUDE(FindPkgConfig) -PKG_CHECK_MODULES(PC_NOVA Nova) - -FIND_PATH( - NOVA_INCLUDE_DIRS - NAMES libnova/libnova.h - HINTS $ENV{NOVA_DIR}/include - ${PC_NOVA_INCLUDEDIR} - PATHS /usr/local/include - /usr/include -) - -FIND_LIBRARY( - NOVA_LIBRARIES - NAMES nova - HINTS $ENV{NOVA_DIR}/lib - ${PC_NOVA_LIBDIR} - PATHS /usr/local/lib - /usr/local/lib64 - /usr/lib - /usr/lib64 -) - -INCLUDE(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(NOVA DEFAULT_MSG NOVA_LIBRARIES NOVA_INCLUDE_DIRS) -MARK_AS_ADVANCED(NOVA_LIBRARIES NOVA_INCLUDE_DIRS) \ No newline at end of file diff --git a/include/satnogs/CMakeLists.txt b/include/satnogs/CMakeLists.txt index 65b45ce..c90b792 100644 --- a/include/satnogs/CMakeLists.txt +++ b/include/satnogs/CMakeLists.txt @@ -24,7 +24,6 @@ list(APPEND DEBUG_HEADER_FILES morse_debug_source.h debug_msg_source_raw.h debug_msg_source.h - leo_channel.h cw_encoder.h ) diff --git a/include/satnogs/leo_channel.h b/include/satnogs/leo_channel.h deleted file mode 100644 index 2d71ab5..0000000 --- a/include/satnogs/leo_channel.h +++ /dev/null @@ -1,722 +0,0 @@ -/* -*- c++ -*- */ -/* GNU GENERAL PUBLIC LICENSE - * Version 3, 29 June 2007 - * - * Copyright (C) 2007 Free Software Foundation, Inc. - * Everyone is permitted to copy and distribute verbatim copies - * of this license document, but changing it is not allowed. - * - * Preamble - * - * The GNU General Public License is a free, copyleft license for - * software and other kinds of works. - * - * The licenses for most software and other practical works are designed - * to take away your freedom to share and change the works. By contrast, - * the GNU General Public License is intended to guarantee your freedom to - * share and change all versions of a program--to make sure it remains free - * software for all its users. We, the Free Software Foundation, use the - * GNU General Public License for most of our software; it applies also to - * any other work released this way by its authors. You can apply it to - * your programs, too. - * - * When we speak of free software, we are referring to freedom, not - * price. Our General Public Licenses are designed to make sure that you - * have the freedom to distribute copies of free software (and charge for - * them if you wish), that you receive source code or can get it if you - * want it, that you can change the software or use pieces of it in new - * free programs, and that you know you can do these things. - * - * To protect your rights, we need to prevent others from denying you - * these rights or asking you to surrender the rights. Therefore, you have - * certain responsibilities if you distribute copies of the software, or if - * you modify it: responsibilities to respect the freedom of others. - * - * For example, if you distribute copies of such a program, whether - * gratis or for a fee, you must pass on to the recipients the same - * freedoms that you received. You must make sure that they, too, receive - * or can get the source code. And you must show them these terms so they - * know their rights. - * - * Developers that use the GNU GPL protect your rights with two steps: - * (1) assert copyright on the software, and (2) offer you this License - * giving you legal permission to copy, distribute and/or modify it. - * - * For the developers' and authors' protection, the GPL clearly explains - * that there is no warranty for this free software. For both users' and - * authors' sake, the GPL requires that modified versions be marked as - * changed, so that their problems will not be attributed erroneously to - * authors of previous versions. - * - * Some devices are designed to deny users access to install or run - * modified versions of the software inside them, although the manufacturer - * can do so. This is fundamentally incompatible with the aim of - * protecting users' freedom to change the software. The systematic - * pattern of such abuse occurs in the area of products for individuals to - * use, which is precisely where it is most unacceptable. Therefore, we - * have designed this version of the GPL to prohibit the practice for those - * products. If such problems arise substantially in other domains, we - * stand ready to extend this provision to those domains in future versions - * of the GPL, as needed to protect the freedom of users. - * - * Finally, every program is threatened constantly by software patents. - * States should not allow patents to restrict development and use of - * software on general-purpose computers, but in those that do, we wish to - * avoid the special danger that patents applied to a free program could - * make it effectively proprietary. To prevent this, the GPL assures that - * patents cannot be used to render the program non-free. - * - * The precise terms and conditions for copying, distribution and - * modification follow. - * - * TERMS AND CONDITIONS - * - * 0. Definitions. - * - * "This License" refers to version 3 of the GNU General Public License. - * - * "Copyright" also means copyright-like laws that apply to other kinds of - * works, such as semiconductor masks. - * - * "The Program" refers to any copyrightable work licensed under this - * License. Each licensee is addressed as "you". "Licensees" and - * "recipients" may be individuals or organizations. - * - * To "modify" a work means to copy from or adapt all or part of the work - * in a fashion requiring copyright permission, other than the making of an - * exact copy. The resulting work is called a "modified version" of the - * earlier work or a work "based on" the earlier work. - * - * A "covered work" means either the unmodified Program or a work based - * on the Program. - * - * To "propagate" a work means to do anything with it that, without - * permission, would make you directly or secondarily liable for - * infringement under applicable copyright law, except executing it on a - * computer or modifying a private copy. Propagation includes copying, - * distribution (with or without modification), making available to the - * public, and in some countries other activities as well. - * - * To "convey" a work means any kind of propagation that enables other - * parties to make or receive copies. Mere interaction with a user through - * a computer network, with no transfer of a copy, is not conveying. - * - * An interactive user interface displays "Appropriate Legal Notices" - * to the extent that it includes a convenient and prominently visible - * feature that (1) displays an appropriate copyright notice, and (2) - * tells the user that there is no warranty for the work (except to the - * extent that warranties are provided), that licensees may convey the - * work under this License, and how to view a copy of this License. If - * the interface presents a list of user commands or options, such as a - * menu, a prominent item in the list meets this criterion. - * - * 1. Source Code. - * - * The "source code" for a work means the preferred form of the work - * for making modifications to it. "Object code" means any non-source - * form of a work. - * - * A "Standard Interface" means an interface that either is an official - * standard defined by a recognized standards body, or, in the case of - * interfaces specified for a particular programming language, one that - * is widely used among developers working in that language. - * - * The "System Libraries" of an executable work include anything, other - * than the work as a whole, that (a) is included in the normal form of - * packaging a Major Component, but which is not part of that Major - * Component, and (b) serves only to enable use of the work with that - * Major Component, or to implement a Standard Interface for which an - * implementation is available to the public in source code form. A - * "Major Component", in this context, means a major essential component - * (kernel, window system, and so on) of the specific operating system - * (if any) on which the executable work runs, or a compiler used to - * produce the work, or an object code interpreter used to run it. - * - * The "Corresponding Source" for a work in object code form means all - * the source code needed to generate, install, and (for an executable - * work) run the object code and to modify the work, including scripts to - * control those activities. However, it does not include the work's - * System Libraries, or general-purpose tools or generally available free - * programs which are used unmodified in performing those activities but - * which are not part of the work. For example, Corresponding Source - * includes interface definition files associated with source files for - * the work, and the source code for shared libraries and dynamically - * linked subprograms that the work is specifically designed to require, - * such as by intimate data communication or control flow between those - * subprograms and other parts of the work. - * - * The Corresponding Source need not include anything that users - * can regenerate automatically from other parts of the Corresponding - * Source. - * - * The Corresponding Source for a work in source code form is that - * same work. - * - * 2. Basic Permissions. - * - * All rights granted under this License are granted for the term of - * copyright on the Program, and are irrevocable provided the stated - * conditions are met. This License explicitly affirms your unlimited - * permission to run the unmodified Program. The output from running a - * covered work is covered by this License only if the output, given its - * content, constitutes a covered work. This License acknowledges your - * rights of fair use or other equivalent, as provided by copyright law. - * - * You may make, run and propagate covered works that you do not - * convey, without conditions so long as your license otherwise remains - * in force. You may convey covered works to others for the sole purpose - * of having them make modifications exclusively for you, or provide you - * with facilities for running those works, provided that you comply with - * the terms of this License in conveying all material for which you do - * not control copyright. Those thus making or running the covered works - * for you must do so exclusively on your behalf, under your direction - * and control, on terms that prohibit them from making any copies of - * your copyrighted material outside their relationship with you. - * - * Conveying under any other circumstances is permitted solely under - * the conditions stated below. Sublicensing is not allowed; section 10 - * makes it unnecessary. - * - * 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - * - * No covered work shall be deemed part of an effective technological - * measure under any applicable law fulfilling obligations under article - * 11 of the WIPO copyright treaty adopted on 20 December 1996, or - * similar laws prohibiting or restricting circumvention of such - * measures. - * - * When you convey a covered work, you waive any legal power to forbid - * circumvention of technological measures to the extent such circumvention - * is effected by exercising rights under this License with respect to - * the covered work, and you disclaim any intention to limit operation or - * modification of the work as a means of enforcing, against the work's - * users, your or third parties' legal rights to forbid circumvention of - * technological measures. - * - * 4. Conveying Verbatim Copies. - * - * You may convey verbatim copies of the Program's source code as you - * receive it, in any medium, provided that you conspicuously and - * appropriately publish on each copy an appropriate copyright notice; - * keep intact all notices stating that this License and any - * non-permissive terms added in accord with section 7 apply to the code; - * keep intact all notices of the absence of any warranty; and give all - * recipients a copy of this License along with the Program. - * - * You may charge any price or no price for each copy that you convey, - * and you may offer support or warranty protection for a fee. - * - * 5. Conveying Modified Source Versions. - * - * You may convey a work based on the Program, or the modifications to - * produce it from the Program, in the form of source code under the - * terms of section 4, provided that you also meet all of these conditions: - * - * a) The work must carry prominent notices stating that you modified - * it, and giving a relevant date. - * - * b) The work must carry prominent notices stating that it is - * released under this License and any conditions added under section - * 7. This requirement modifies the requirement in section 4 to - * "keep intact all notices". - * - * c) You must license the entire work, as a whole, under this - * License to anyone who comes into possession of a copy. This - * License will therefore apply, along with any applicable section 7 - * additional terms, to the whole of the work, and all its parts, - * regardless of how they are packaged. This License gives no - * permission to license the work in any other way, but it does not - * invalidate such permission if you have separately received it. - * - * d) If the work has interactive user interfaces, each must display - * Appropriate Legal Notices; however, if the Program has interactive - * interfaces that do not display Appropriate Legal Notices, your - * work need not make them do so. - * - * A compilation of a covered work with other separate and independent - * works, which are not by their nature extensions of the covered work, - * and which are not combined with it such as to form a larger program, - * in or on a volume of a storage or distribution medium, is called an - * "aggregate" if the compilation and its resulting copyright are not - * used to limit the access or legal rights of the compilation's users - * beyond what the individual works permit. Inclusion of a covered work - * in an aggregate does not cause this License to apply to the other - * parts of the aggregate. - * - * 6. Conveying Non-Source Forms. - * - * You may convey a covered work in object code form under the terms - * of sections 4 and 5, provided that you also convey the - * machine-readable Corresponding Source under the terms of this License, - * in one of these ways: - * - * a) Convey the object code in, or embodied in, a physical product - * (including a physical distribution medium), accompanied by the - * Corresponding Source fixed on a durable physical medium - * customarily used for software interchange. - * - * b) Convey the object code in, or embodied in, a physical product - * (including a physical distribution medium), accompanied by a - * written offer, valid for at least three years and valid for as - * long as you offer spare parts or customer support for that product - * model, to give anyone who possesses the object code either (1) a - * copy of the Corresponding Source for all the software in the - * product that is covered by this License, on a durable physical - * medium customarily used for software interchange, for a price no - * more than your reasonable cost of physically performing this - * conveying of source, or (2) access to copy the - * Corresponding Source from a network server at no charge. - * - * c) Convey individual copies of the object code with a copy of the - * written offer to provide the Corresponding Source. This - * alternative is allowed only occasionally and noncommercially, and - * only if you received the object code with such an offer, in accord - * with subsection 6b. - * - * d) Convey the object code by offering access from a designated - * place (gratis or for a charge), and offer equivalent access to the - * Corresponding Source in the same way through the same place at no - * further charge. You need not require recipients to copy the - * Corresponding Source along with the object code. If the place to - * copy the object code is a network server, the Corresponding Source - * may be on a different server (operated by you or a third party) - * that supports equivalent copying facilities, provided you maintain - * clear directions next to the object code saying where to find the - * Corresponding Source. Regardless of what server hosts the - * Corresponding Source, you remain obligated to ensure that it is - * available for as long as needed to satisfy these requirements. - * - * e) Convey the object code using peer-to-peer transmission, provided - * you inform other peers where the object code and Corresponding - * Source of the work are being offered to the general public at no - * charge under subsection 6d. - * - * A separable portion of the object code, whose source code is excluded - * from the Corresponding Source as a System Library, need not be - * included in conveying the object code work. - * - * A "User Product" is either (1) a "consumer product", which means any - * tangible personal property which is normally used for personal, family, - * or household purposes, or (2) anything designed or sold for incorporation - * into a dwelling. In determining whether a product is a consumer product, - * doubtful cases shall be resolved in favor of coverage. For a particular - * product received by a particular user, "normally used" refers to a - * typical or common use of that class of product, regardless of the status - * of the particular user or of the way in which the particular user - * actually uses, or expects or is expected to use, the product. A product - * is a consumer product regardless of whether the product has substantial - * commercial, industrial or non-consumer uses, unless such uses represent - * the only significant mode of use of the product. - * - * "Installation Information" for a User Product means any methods, - * procedures, authorization keys, or other information required to install - * and execute modified versions of a covered work in that User Product from - * a modified version of its Corresponding Source. The information must - * suffice to ensure that the continued functioning of the modified object - * code is in no case prevented or interfered with solely because - * modification has been made. - * - * If you convey an object code work under this section in, or with, or - * specifically for use in, a User Product, and the conveying occurs as - * part of a transaction in which the right of possession and use of the - * User Product is transferred to the recipient in perpetuity or for a - * fixed term (regardless of how the transaction is characterized), the - * Corresponding Source conveyed under this section must be accompanied - * by the Installation Information. But this requirement does not apply - * if neither you nor any third party retains the ability to install - * modified object code on the User Product (for example, the work has - * been installed in ROM). - * - * The requirement to provide Installation Information does not include a - * requirement to continue to provide support service, warranty, or updates - * for a work that has been modified or installed by the recipient, or for - * the User Product in which it has been modified or installed. Access to a - * network may be denied when the modification itself materially and - * adversely affects the operation of the network or violates the rules and - * protocols for communication across the network. - * - * Corresponding Source conveyed, and Installation Information provided, - * in accord with this section must be in a format that is publicly - * documented (and with an implementation available to the public in - * source code form), and must require no special password or key for - * unpacking, reading or copying. - * - * 7. Additional Terms. - * - * "Additional permissions" are terms that supplement the terms of this - * License by making exceptions from one or more of its conditions. - * Additional permissions that are applicable to the entire Program shall - * be treated as though they were included in this License, to the extent - * that they are valid under applicable law. If additional permissions - * apply only to part of the Program, that part may be used separately - * under those permissions, but the entire Program remains governed by - * this License without regard to the additional permissions. - * - * When you convey a copy of a covered work, you may at your option - * remove any additional permissions from that copy, or from any part of - * it. (Additional permissions may be written to require their own - * removal in certain cases when you modify the work.) You may place - * additional permissions on material, added by you to a covered work, - * for which you have or can give appropriate copyright permission. - * - * Notwithstanding any other provision of this License, for material you - * add to a covered work, you may (if authorized by the copyright holders of - * that material) supplement the terms of this License with terms: - * - * a) Disclaiming warranty or limiting liability differently from the - * terms of sections 15 and 16 of this License; or - * - * b) Requiring preservation of specified reasonable legal notices or - * author attributions in that material or in the Appropriate Legal - * Notices displayed by works containing it; or - * - * c) Prohibiting misrepresentation of the origin of that material, or - * requiring that modified versions of such material be marked in - * reasonable ways as different from the original version; or - * - * d) Limiting the use for publicity purposes of names of licensors or - * authors of the material; or - * - * e) Declining to grant rights under trademark law for use of some - * trade names, trademarks, or service marks; or - * - * f) Requiring indemnification of licensors and authors of that - * material by anyone who conveys the material (or modified versions of - * it) with contractual assumptions of liability to the recipient, for - * any liability that these contractual assumptions directly impose on - * those licensors and authors. - * - * All other non-permissive additional terms are considered "further - * restrictions" within the meaning of section 10. If the Program as you - * received it, or any part of it, contains a notice stating that it is - * governed by this License along with a term that is a further - * restriction, you may remove that term. If a license document contains - * a further restriction but permits relicensing or conveying under this - * License, you may add to a covered work material governed by the terms - * of that license document, provided that the further restriction does - * not survive such relicensing or conveying. - * - * If you add terms to a covered work in accord with this section, you - * must place, in the relevant source files, a statement of the - * additional terms that apply to those files, or a notice indicating - * where to find the applicable terms. - * - * Additional terms, permissive or non-permissive, may be stated in the - * form of a separately written license, or stated as exceptions; - * the above requirements apply either way. - * - * 8. Termination. - * - * You may not propagate or modify a covered work except as expressly - * provided under this License. Any attempt otherwise to propagate or - * modify it is void, and will automatically terminate your rights under - * this License (including any patent licenses granted under the third - * paragraph of section 11). - * - * However, if you cease all violation of this License, then your - * license from a particular copyright holder is reinstated (a) - * provisionally, unless and until the copyright holder explicitly and - * finally terminates your license, and (b) permanently, if the copyright - * holder fails to notify you of the violation by some reasonable means - * prior to 60 days after the cessation. - * - * Moreover, your license from a particular copyright holder is - * reinstated permanently if the copyright holder notifies you of the - * violation by some reasonable means, this is the first time you have - * received notice of violation of this License (for any work) from that - * copyright holder, and you cure the violation prior to 30 days after - * your receipt of the notice. - * - * Termination of your rights under this section does not terminate the - * licenses of parties who have received copies or rights from you under - * this License. If your rights have been terminated and not permanently - * reinstated, you do not qualify to receive new licenses for the same - * material under section 10. - * - * 9. Acceptance Not Required for Having Copies. - * - * You are not required to accept this License in order to receive or - * run a copy of the Program. Ancillary propagation of a covered work - * occurring solely as a consequence of using peer-to-peer transmission - * to receive a copy likewise does not require acceptance. However, - * nothing other than this License grants you permission to propagate or - * modify any covered work. These actions infringe copyright if you do - * not accept this License. Therefore, by modifying or propagating a - * covered work, you indicate your acceptance of this License to do so. - * - * 10. Automatic Licensing of Downstream Recipients. - * - * Each time you convey a covered work, the recipient automatically - * receives a license from the original licensors, to run, modify and - * propagate that work, subject to this License. You are not responsible - * for enforcing compliance by third parties with this License. - * - * An "entity transaction" is a transaction transferring control of an - * organization, or substantially all assets of one, or subdividing an - * organization, or merging organizations. If propagation of a covered - * work results from an entity transaction, each party to that - * transaction who receives a copy of the work also receives whatever - * licenses to the work the party's predecessor in interest had or could - * give under the previous paragraph, plus a right to possession of the - * Corresponding Source of the work from the predecessor in interest, if - * the predecessor has it or can get it with reasonable efforts. - * - * You may not impose any further restrictions on the exercise of the - * rights granted or affirmed under this License. For example, you may - * not impose a license fee, royalty, or other charge for exercise of - * rights granted under this License, and you may not initiate litigation - * (including a cross-claim or counterclaim in a lawsuit) alleging that - * any patent claim is infringed by making, using, selling, offering for - * sale, or importing the Program or any portion of it. - * - * 11. Patents. - * - * A "contributor" is a copyright holder who authorizes use under this - * License of the Program or a work on which the Program is based. The - * work thus licensed is called the contributor's "contributor version". - * - * A contributor's "essential patent claims" are all patent claims - * owned or controlled by the contributor, whether already acquired or - * hereafter acquired, that would be infringed by some manner, permitted - * by this License, of making, using, or selling its contributor version, - * but do not include claims that would be infringed only as a - * consequence of further modification of the contributor version. For - * purposes of this definition, "control" includes the right to grant - * patent sublicenses in a manner consistent with the requirements of - * this License. - * - * Each contributor grants you a non-exclusive, worldwide, royalty-free - * patent license under the contributor's essential patent claims, to - * make, use, sell, offer for sale, import and otherwise run, modify and - * propagate the contents of its contributor version. - * - * In the following three paragraphs, a "patent license" is any express - * agreement or commitment, however denominated, not to enforce a patent - * (such as an express permission to practice a patent or covenant not to - * sue for patent infringement). To "grant" such a patent license to a - * party means to make such an agreement or commitment not to enforce a - * patent against the party. - * - * If you convey a covered work, knowingly relying on a patent license, - * and the Corresponding Source of the work is not available for anyone - * to copy, free of charge and under the terms of this License, through a - * publicly available network server or other readily accessible means, - * then you must either (1) cause the Corresponding Source to be so - * available, or (2) arrange to deprive yourself of the benefit of the - * patent license for this particular work, or (3) arrange, in a manner - * consistent with the requirements of this License, to extend the patent - * license to downstream recipients. "Knowingly relying" means you have - * actual knowledge that, but for the patent license, your conveying the - * covered work in a country, or your recipient's use of the covered work - * in a country, would infringe one or more identifiable patents in that - * country that you have reason to believe are valid. - * - * If, pursuant to or in connection with a single transaction or - * arrangement, you convey, or propagate by procuring conveyance of, a - * covered work, and grant a patent license to some of the parties - * receiving the covered work authorizing them to use, propagate, modify - * or convey a specific copy of the covered work, then the patent license - * you grant is automatically extended to all recipients of the covered - * work and works based on it. - * - * A patent license is "discriminatory" if it does not include within - * the scope of its coverage, prohibits the exercise of, or is - * conditioned on the non-exercise of one or more of the rights that are - * specifically granted under this License. You may not convey a covered - * work if you are a party to an arrangement with a third party that is - * in the business of distributing software, under which you make payment - * to the third party based on the extent of your activity of conveying - * the work, and under which the third party grants, to any of the - * parties who would receive the covered work from you, a discriminatory - * patent license (a) in connection with copies of the covered work - * conveyed by you (or copies made from those copies), or (b) primarily - * for and in connection with specific products or compilations that - * contain the covered work, unless you entered into that arrangement, - * or that patent license was granted, prior to 28 March 2007. - * - * Nothing in this License shall be construed as excluding or limiting - * any implied license or other defenses to infringement that may - * otherwise be available to you under applicable patent law. - * - * 12. No Surrender of Others' Freedom. - * - * If conditions are imposed on you (whether by court order, agreement or - * otherwise) that contradict the conditions of this License, they do not - * excuse you from the conditions of this License. If you cannot convey a - * covered work so as to satisfy simultaneously your obligations under this - * License and any other pertinent obligations, then as a consequence you may - * not convey it at all. For example, if you agree to terms that obligate you - * to collect a royalty for further conveying from those to whom you convey - * the Program, the only way you could satisfy both those terms and this - * License would be to refrain entirely from conveying the Program. - * - * 13. Use with the GNU Affero General Public License. - * - * Notwithstanding any other provision of this License, you have - * permission to link or combine any covered work with a work licensed - * under version 3 of the GNU Affero General Public License into a single - * combined work, and to convey the resulting work. The terms of this - * License will continue to apply to the part which is the covered work, - * but the special requirements of the GNU Affero General Public License, - * section 13, concerning interaction through a network will apply to the - * combination as such. - * - * 14. Revised Versions of this License. - * - * The Free Software Foundation may publish revised and/or new versions of - * the GNU General Public License from time to time. Such new versions will - * be similar in spirit to the present version, but may differ in detail to - * address new problems or concerns. - * - * Each version is given a distinguishing version number. If the - * Program specifies that a certain numbered version of the GNU General - * Public License "or any later version" applies to it, you have the - * option of following the terms and conditions either of that numbered - * version or of any later version published by the Free Software - * Foundation. If the Program does not specify a version number of the - * GNU General Public License, you may choose any version ever published - * by the Free Software Foundation. - * - * If the Program specifies that a proxy can decide which future - * versions of the GNU General Public License can be used, that proxy's - * public statement of acceptance of a version permanently authorizes you - * to choose that version for the Program. - * - * Later license versions may give you additional or different - * permissions. However, no additional obligations are imposed on any - * author or copyright holder as a result of your choosing to follow a - * later version. - * - * 15. Disclaimer of Warranty. - * - * THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY - * APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT - * HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY - * OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM - * IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF - * ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - * - * 16. Limitation of Liability. - * - * IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING - * WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS - * THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY - * GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE - * USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF - * DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD - * PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), - * EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGES. - * - * 17. Interpretation of Sections 15 and 16. - * - * If the disclaimer of warranty and limitation of liability provided - * above cannot be given local legal effect according to their terms, - * reviewing courts shall apply local law that most closely approximates - * an absolute waiver of all civil liability in connection with the - * Program, unless a warranty or assumption of liability accompanies a - * copy of the Program in return for a fee. - * - * END OF TERMS AND CONDITIONS - * - * How to Apply These Terms to Your New Programs - * - * If you develop a new program, and you want it to be of the greatest - * possible use to the public, the best way to achieve this is to make it - * free software which everyone can redistribute and change under these terms. - * - * To do so, attach the following notices to the program. It is safest - * to attach them to the start of each source file to most effectively - * state the exclusion of warranty; and each file should have at least - * the "copyright" line and a pointer to where the full notice is found. - * - * {one line to give the program's name and a brief idea of what it does.} - * Copyright (C) {year} {name of author} - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * Also add information on how to contact you by electronic and paper mail. - * - * If the program does terminal interaction, make it output a short - * notice like this when it starts in an interactive mode: - * - * {project} Copyright (C) {year} {fullname} - * This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - * This is free software, and you are welcome to redistribute it - * under certain conditions; type `show c' for details. - * - * The hypothetical commands `show w' and `show c' should show the appropriate - * parts of the General Public License. Of course, your program's commands - * might be different; for a GUI interface, you would use an "about box". - * - * You should also get your employer (if you work as a programmer) or school, - * if any, to sign a "copyright disclaimer" for the program, if necessary. - * For more information on this, and how to apply and follow the GNU GPL, see - * . - * - * The GNU General Public License does not permit incorporating your program - * into proprietary programs. If your program is a subroutine library, you - * may consider it more useful to permit linking proprietary applications with - * the library. If this is what you want to do, use the GNU Lesser General - * Public License instead of this License. But first, please read - * . - */ - -#ifndef INCLUDED_SATNOGS_LEO_CHANNEL_H -#define INCLUDED_SATNOGS_LEO_CHANNEL_H - -#include -#include - -namespace gr -{ - namespace satnogs - { - - /*! - * \brief Channel model that emulates the signal of a LEO satellite. - * It adds the proper doppler shift and in the future will emulate also - * the signal fading based on the sattelite position. - * - * \ingroup satnogs - * - */ - class SATNOGS_API leo_channel : virtual public gr::sync_block - { - public: - typedef boost::shared_ptr sptr; - - /*! - * \brief Return a shared_ptr to a new instance of satnogs::leo_channel. - * - * To avoid accidental use of raw pointers, satnogs::leo_channel's - * constructor is in a private implementation - * class. satnogs::leo_channel::make is the public interface for - * creating new instances. - */ - static sptr - make (const double freq, const double samp_rate, - const double sat_altitude, - const double sat_inclination, - const size_t pass_duration_sec = 420, - const size_t freq_shifts_per_sec = 100); - }; - - } // namespace satnogs -} // namespace gr - -#endif /* INCLUDED_SATNOGS_LEO_CHANNEL_H */ - diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 8c85248..cbbe6c9 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -38,7 +38,6 @@ list(APPEND satnogs_debug_sources morse_debug_source_impl.cc debug_msg_source_impl.cc debug_msg_source_raw_impl.cc - leo_channel_impl.cc cw_encoder_impl.cc ) list(APPEND satnogs_sources @@ -94,7 +93,6 @@ target_link_libraries(gnuradio-satnogs gnuradio-blocks gnuradio-digital ${CMAKE_THREAD_LIBS_INIT} - ${NOVA_LIBRARIES} ${VOLK_LIBRARIES} ${OGGVORBIS_LIBRARIES} ${PNG_LIBRARIES} diff --git a/lib/leo_channel_impl.cc b/lib/leo_channel_impl.cc deleted file mode 100644 index e60f8fb..0000000 --- a/lib/leo_channel_impl.cc +++ /dev/null @@ -1,79 +0,0 @@ -/* -*- c++ -*- */ -/* - * gr-satnogs: SatNOGS GNU Radio Out-Of-Tree Module - * - * Copyright (C) 2016, Libre Space Foundation - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include -#include "leo_channel_impl.h" - -namespace gr -{ - namespace satnogs - { - - leo_channel::sptr - leo_channel::make (const double freq, const double samp_rate, - const double sat_altitude, const double sat_inclination, - const size_t pass_duration_sec, - const size_t freq_shifts_per_sec) - { - return gnuradio::get_initial_sptr ( - new leo_channel_impl (freq, freq_shifts_per_sec)); - } - - /* - * The private constructor - */ - leo_channel_impl::leo_channel_impl (const double freq, - const size_t freq_shifts_per_sec) : - gr::sync_block ("leo_channel", - gr::io_signature::make (1, 1, sizeof(gr_complex)), - gr::io_signature::make (1, 1, sizeof(gr_complex))), - d_freq (freq), - d_shifts_per_sec (freq_shifts_per_sec) - { - } - - /* - * Our virtual destructor. - */ - leo_channel_impl::~leo_channel_impl () - { - } - - int - leo_channel_impl::work (int noutput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items) - { - const gr_complex *in = (const gr_complex *) input_items[0]; - gr_complex *out = (gr_complex *) output_items[0]; - - // Do <+signal processing+> - - // Tell runtime system how many output items we produced. - return noutput_items; - } - - } /* namespace satnogs */ -} /* namespace gr */ - diff --git a/lib/leo_channel_impl.h b/lib/leo_channel_impl.h deleted file mode 100644 index b19e78b..0000000 --- a/lib/leo_channel_impl.h +++ /dev/null @@ -1,52 +0,0 @@ -/* -*- c++ -*- */ -/* - * gr-satnogs: SatNOGS GNU Radio Out-Of-Tree Module - * - * Copyright (C) 2016, Libre Space Foundation - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#ifndef INCLUDED_SATNOGS_LEO_CHANNEL_IMPL_H -#define INCLUDED_SATNOGS_LEO_CHANNEL_IMPL_H - -#include -#include - -namespace gr -{ - namespace satnogs - { - - class leo_channel_impl : public leo_channel - { - private: - const double d_freq; - const size_t d_shifts_per_sec; - - public: - leo_channel_impl (const double freq, const size_t freq_shifts_per_sec); - ~leo_channel_impl (); - - // Where all the action really happens - int - work (int noutput_items, gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items); - }; - - } // namespace satnogs -} // namespace gr - -#endif /* INCLUDED_SATNOGS_LEO_CHANNEL_IMPL_H */ - diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index 3254b72..8148c44 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -35,9 +35,7 @@ configure_file(satnogs_info.py.in ${CMAKE_BINARY_DIR}/satnogs_info.py GR_PYTHON_INSTALL( FILES __init__.py - dsp_settings.py hw_settings.py - satnogs_upsat_transmitter.py utils.py ${CMAKE_BINARY_DIR}/satnogs_info.py DESTINATION ${GR_PYTHON_DIR}/satnogs diff --git a/python/__init__.py b/python/__init__.py index 6ca33c4..ad758e8 100644 --- a/python/__init__.py +++ b/python/__init__.py @@ -28,9 +28,7 @@ import sys try: # this might fail if the module is python-only from satnogs_swig import * - from dsp_settings import * from hw_settings import * - from satnogs_upsat_transmitter import * from utils import * except ImportError as err: sys.stderr.write("Failed to import SatNOGS ({})\n".format(err)) diff --git a/python/dsp_settings.py b/python/dsp_settings.py deleted file mode 100644 index 43ef43b..0000000 --- a/python/dsp_settings.py +++ /dev/null @@ -1,32 +0,0 @@ -#! /usr/bin/python -# -# gr-satnogs: SatNOGS GNU Radio Out-Of-Tree Module -# -# Copyright (C) 2016, Libre Space Foundation -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see -# - -#=============================================================================== -# This file provides a variaty of settings for the flowgraphs -# based on the hardware SDR device that they are using -#=============================================================================== - -fm_demod_settings = {'usrpb200' : {'decimation_rx' : 5, 'audio_gain' : 0.9}, - 'usrp2' : {'decimation_rx' : 5, 'audio_gain' : 0.9}, - 'airspy' : {'decimation_rx' : 10, 'audio_gain' : 0.9}, - 'airspymini' : {'decimation_rx' : 5, 'audio_gain' : 0.9}, - 'hackrf' : {'decimation_rx' : 5, 'audio_gain' : 0.9}, - 'rtlsdr' : {'decimation_rx' : 5, 'audio_gain' : 0.9} - } \ No newline at end of file diff --git a/python/satnogs_upsat_transmitter.py b/python/satnogs_upsat_transmitter.py deleted file mode 100644 index a94f5fd..0000000 --- a/python/satnogs_upsat_transmitter.py +++ /dev/null @@ -1,111 +0,0 @@ -#! /usr/bin/python - -import satnogs -import satnogs_swig -import math -from gnuradio import blocks -from gnuradio import filter -from gnuradio import analog -from gnuradio import gr -from gnuradio.filter import firdes -from gnuradio.gr.runtime_swig import sizeof_gr_complex - - -class satnogs_upsat_transmitter(gr.hier_block2): - - def __init__(self, - frame_preamble, - sync_word, - append_crc, - whitening, - manchester, - msb_first, - ax25_format, - dest_addr, - dest_ssid, - src_addr, - src_ssid, - settling_samples, - samps_per_symbol, - interpolation_taps, - samp_rate, - lo_offset, - deviation, - baud_rate): - gr.hier_block2.__init__(self, "satnogs_upsat_transmitter", - gr.io_signature(0 , 0 , 0), - # Output 0: The complex TX signal for the SDR device - # Output 1: The constellation output for the vector analyzer - gr.io_signature(1, 1, sizeof_gr_complex)) - self.frame_preamble = frame_preamble - self.sync_word = sync_word - self.append_crc = append_crc - self.whitening = whitening - self.manchester = manchester - self.msb_first = msb_first - self.ax25_format = ax25_format - self.dest_addr = dest_addr - self.dest_ssid = dest_ssid - self.src_addr = src_addr - self.src_ssid = src_ssid - self.settling_samples = settling_samples - self.samps_per_symbol = samps_per_symbol - self.interpolation_taps = interpolation_taps - self.samp_rate = samp_rate - self.lo_offset = lo_offset - self.deviation=deviation - self.baud_rate=baud_rate - self.message_port_register_hier_out("in") - - - self.modulation_index = self.deviation/(self.baud_rate / 2.0) - self.sensitivity = (math.pi*self.modulation_index) / self.samps_per_symbol - self.resampling_rate = self.samp_rate / (self.baud_rate*self.samps_per_symbol ) - self.par_taps = filter.firdes.low_pass_2(32, 32, 0.8, 0.1, 60) - self.num_filters = 32 - -#================================================================= -# TX Related blocks -#================================================================= - - self.fsk_frame_encoder = satnogs_swig.upsat_fsk_frame_encoder(self.frame_preamble, - self.sync_word, - self.append_crc, - self.whitening, - self.manchester, - self.msb_first, - self.ax25_format, - self.dest_addr, - self.dest_ssid, - self.src_addr, - self.src_ssid, - self.settling_samples - ) - - self.interp_fir_filter = filter.interp_fir_filter_fff(self.samps_per_symbol, - self.interpolation_taps - ) - - self.frequency_modulator = analog.frequency_modulator_fc(self.sensitivity) - self.signal_source = analog.sig_source_c(self.samp_rate, - 102, - self.lo_offset, - 1, - 0) - self.polyphase_arbitrary_resampler = filter.pfb_arb_resampler_ccf(self.resampling_rate, - self.par_taps, - self.num_filters) - self.multiply = blocks.multiply_cc(1) - -#================================================================= -# Connections -#================================================================= - self.msg_connect((self, "in"), (self.fsk_frame_encoder, "pdu")) - self.connect((self.fsk_frame_encoder, 0), (self.interp_fir_filter, 0)) - self.connect((self.interp_fir_filter, 0), (self.frequency_modulator, 0)) - self.connect((self.frequency_modulator, 0), (self.polyphase_arbitrary_resampler, 0)) - self.connect((self.signal_source, 0) , (self.multiply, 0)) - self.connect((self.polyphase_arbitrary_resampler, 0) , (self.multiply, 1)) - self.connect((self.multiply, 0), self) - - diff --git a/swig/satnogs_debug_swig.i b/swig/satnogs_debug_swig.i index fdeb447..3c01990 100644 --- a/swig/satnogs_debug_swig.i +++ b/swig/satnogs_debug_swig.i @@ -12,7 +12,6 @@ #include "satnogs/morse_debug_source.h" #include "satnogs/debug_msg_source.h" #include "satnogs/debug_msg_source_raw.h" -#include "satnogs/leo_channel.h" #include "satnogs/cw_encoder.h" %} @@ -25,8 +24,5 @@ GR_SWIG_BLOCK_MAGIC2(satnogs, debug_msg_source); %include "satnogs/debug_msg_source_raw.h" GR_SWIG_BLOCK_MAGIC2(satnogs, debug_msg_source_raw); -%include "satnogs/leo_channel.h" -GR_SWIG_BLOCK_MAGIC2(satnogs, leo_channel); - %include "satnogs/cw_encoder.h" GR_SWIG_BLOCK_MAGIC2(satnogs, cw_encoder);