From 860395a997f463e0100b884729fbecb2f92b1227 Mon Sep 17 00:00:00 2001 From: Manolis Surligas Date: Thu, 26 Sep 2019 18:10:54 +0300 Subject: [PATCH] Remove obsolete flowgraphs Update the obsolete flowgraphs and update the existing with the new decoding architecture blocks. Client should not have big problems with the new decoders as we utilizing the multiformat frame sink that takes care of it. This is just a work around for testing as we move forward for fully socket-based communication with the client --- apps/CMakeLists.txt | 7 - apps/flowgraphs/afsk1200_ax25.grc | 372 +- apps/flowgraphs/apt_demod.grc | 2888 ----------- apps/flowgraphs/ax25_transceiver_qt.grc | 4470 ----------------- apps/flowgraphs/bpsk_ax25.grc | 374 +- apps/flowgraphs/bpsk_decoder.grc | 3055 ----------- apps/flowgraphs/bpsk_demod.grc | 3207 ------------ apps/flowgraphs/cw_decoder.grc | 6 +- apps/flowgraphs/example_flowgraph.grc | 10 +- apps/flowgraphs/fm_demod.grc | 84 +- apps/flowgraphs/fsk9600_ax25.grc | 3484 ------------- apps/flowgraphs/fsk9600_g3ruh_ax25.grc | 3484 ------------- apps/flowgraphs/fsk_ax25.grc | 380 +- apps/flowgraphs/generic_iq_receiver.grc | 2858 ----------- apps/flowgraphs/msk_ax25.grc | 378 +- .../satellites/amsat_fox_duv_decoder.grc | 318 +- apps/flowgraphs/satellites/meteor_decoder.grc | 6 +- .../satellites/noaa_apt_decoder.grc | 86 +- .../reaktor_hello_world_fsk9600_decoder.grc | 170 +- .../satnogs_amsat_fox_duv_decoder.py | 30 +- .../satellites/satnogs_meteor_decoder.py | 9 +- .../satellites/satnogs_noaa_apt_decoder.py | 6 +- ...ogs_reaktor_hello_world_fsk9600_decoder.py | 30 +- apps/flowgraphs/satnogs_afsk1200_ax25.py | 38 +- apps/flowgraphs/satnogs_apt_demod.py | 326 -- apps/flowgraphs/satnogs_bpsk_ax25.py | 35 +- apps/flowgraphs/satnogs_bpsk_decoder.py | 452 -- apps/flowgraphs/satnogs_bpsk_demod.py | 341 -- apps/flowgraphs/satnogs_cw_decoder.py | 9 +- apps/flowgraphs/satnogs_example_flowgraph.py | 7 +- apps/flowgraphs/satnogs_fm_demod.py | 7 +- apps/flowgraphs/satnogs_fsk9600_ax25.py | 378 -- apps/flowgraphs/satnogs_fsk9600_g3ruh_ax25.py | 378 -- apps/flowgraphs/satnogs_fsk_ax25.py | 38 +- .../flowgraphs/satnogs_generic_iq_receiver.py | 268 - apps/flowgraphs/satnogs_msk_ax25.py | 38 +- apps/scripts/CMakeLists.txt | 4 - apps/scripts/satnogs_waterfall.gp | 94 - lib/frame_file_sink_impl.cc | 27 +- lib/multi_format_msg_sink_impl.cc | 23 +- 40 files changed, 1544 insertions(+), 26631 deletions(-) delete mode 100644 apps/flowgraphs/apt_demod.grc delete mode 100644 apps/flowgraphs/ax25_transceiver_qt.grc delete mode 100644 apps/flowgraphs/bpsk_decoder.grc delete mode 100644 apps/flowgraphs/bpsk_demod.grc delete mode 100644 apps/flowgraphs/fsk9600_ax25.grc delete mode 100644 apps/flowgraphs/fsk9600_g3ruh_ax25.grc delete mode 100644 apps/flowgraphs/generic_iq_receiver.grc delete mode 100755 apps/flowgraphs/satnogs_apt_demod.py delete mode 100755 apps/flowgraphs/satnogs_bpsk_decoder.py delete mode 100755 apps/flowgraphs/satnogs_bpsk_demod.py delete mode 100755 apps/flowgraphs/satnogs_fsk9600_ax25.py delete mode 100755 apps/flowgraphs/satnogs_fsk9600_g3ruh_ax25.py delete mode 100755 apps/flowgraphs/satnogs_generic_iq_receiver.py delete mode 100644 apps/scripts/CMakeLists.txt delete mode 100755 apps/scripts/satnogs_waterfall.gp diff --git a/apps/CMakeLists.txt b/apps/CMakeLists.txt index b54538f..5b4b8f8 100644 --- a/apps/CMakeLists.txt +++ b/apps/CMakeLists.txt @@ -20,18 +20,11 @@ include(GrPython) add_subdirectory(flowgraphs/satellites) -add_subdirectory(scripts) GR_PYTHON_INSTALL( PROGRAMS flowgraphs/satnogs_fm_demod.py - flowgraphs/satnogs_generic_iq_receiver.py - flowgraphs/satnogs_bpsk_demod.py flowgraphs/satnogs_cw_decoder.py - flowgraphs/satnogs_bpsk_decoder.py - flowgraphs/satnogs_apt_demod.py - flowgraphs/satnogs_fsk9600_ax25.py - flowgraphs/satnogs_fsk9600_g3ruh_ax25.py flowgraphs/satnogs_afsk1200_ax25.py flowgraphs/satnogs_example_flowgraph.py flowgraphs/satnogs_fsk_ax25.py diff --git a/apps/flowgraphs/afsk1200_ax25.grc b/apps/flowgraphs/afsk1200_ax25.grc index dd1dcf9..8432ea1 100644 --- a/apps/flowgraphs/afsk1200_ax25.grc +++ b/apps/flowgraphs/afsk1200_ax25.grc @@ -197,6 +197,108 @@ 3000 + + variable_ax25_decoder + + comment + + + + _enabled + True + + + descrambling + True + + + _coordinate + (1619, 953) + + + _rotation + 0 + + + id + variable_ax25_decoder_0 + + + value + 'ok' + + + frame_len + 512 + + + crc_check + True + + + promisc + True + + + addr + 'GND' + + + ssid + 0 + + + + variable_ax25_decoder + + comment + + + + _enabled + True + + + descrambling + False + + + _coordinate + (1779, 953) + + + _rotation + 0 + + + id + variable_ax25_decoder_0_0 + + + value + 'ok' + + + frame_len + 512 + + + crc_check + True + + + promisc + True + + + addr + 'GND' + + + ssid + 0 + + analog_quadrature_demod_cf @@ -1304,7 +1406,7 @@ value - 1000 + 20 @@ -3570,124 +3672,6 @@ max_modulation_freq = 3000 satnogs.not_set_samp_rate_rx - - satnogs_ax25_decoder_bm - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - descrambling - False - - - _coordinate - (1563, 662) - - - _rotation - 180 - - - id - satnogs_ax25_decoder_bm_0 - - - maxoutbuf - 0 - - - max_frame_len - 1024 - - - minoutbuf - 0 - - - promisc - True - - - addr - 'GND' - - - ssid - 0 - - - - satnogs_ax25_decoder_bm - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - descrambling - True - - - _coordinate - (1563, 785) - - - _rotation - 180 - - - id - satnogs_ax25_decoder_bm_0_0 - - - maxoutbuf - 0 - - - max_frame_len - 1024 - - - minoutbuf - 0 - - - promisc - True - - - addr - 'GND' - - - ssid - 0 - - satnogs_coarse_doppler_correction_cc @@ -3735,6 +3719,100 @@ max_modulation_freq = 3000 rx_freq + + satnogs_frame_decoder + + alias + + + + comment + + + + affinity + + + + decoder_object + variable_ax25_decoder_0 + + + _enabled + True + + + _coordinate + (1627, 789) + + + _rotation + 180 + + + id + satnogs_frame_decoder_0_0 + + + itype + byte + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + + satnogs_frame_decoder + + alias + + + + comment + + + + affinity + + + + decoder_object + variable_ax25_decoder_0_0 + + + _enabled + 1 + + + _coordinate + (1627, 718) + + + _rotation + 180 + + + id + satnogs_frame_decoder_0_0_0 + + + itype + byte + + + maxoutbuf + 0 + + + minoutbuf + 0 + + satnogs_frame_file_sink @@ -3884,7 +3962,7 @@ max_modulation_freq = 3000 _coordinate - (8, 164) + (7, 171) _rotation @@ -3920,7 +3998,7 @@ max_modulation_freq = 3000 interval - 1000 + int(1000.0/doppler_correction_per_sec) + 1 @@ -4301,13 +4379,13 @@ max_modulation_freq = 3000 digital_binary_slicer_fb_0 - satnogs_ax25_decoder_bm_0 + satnogs_frame_decoder_0_0 0 0 digital_binary_slicer_fb_0 - satnogs_ax25_decoder_bm_0_0 + satnogs_frame_decoder_0_0_0 0 0 @@ -4365,36 +4443,36 @@ max_modulation_freq = 3000 0 0 - - satnogs_ax25_decoder_bm_0 - satnogs_frame_file_sink_0_1_0 - pdu - frame - - - satnogs_ax25_decoder_bm_0 - satnogs_udp_msg_sink_0_0 - pdu - in - - - satnogs_ax25_decoder_bm_0_0 - satnogs_frame_file_sink_0_1_0 - pdu - frame - - - satnogs_ax25_decoder_bm_0_0 - satnogs_udp_msg_sink_0_0 - pdu - in - satnogs_coarse_doppler_correction_cc_0 pfb_arb_resampler_xxx_0 0 0 + + satnogs_frame_decoder_0_0 + satnogs_frame_file_sink_0_1_0 + out + frame + + + satnogs_frame_decoder_0_0 + satnogs_udp_msg_sink_0_0 + out + in + + + satnogs_frame_decoder_0_0_0 + satnogs_frame_file_sink_0_1_0 + out + frame + + + satnogs_frame_decoder_0_0_0 + satnogs_udp_msg_sink_0_0 + out + in + satnogs_tcp_rigctl_msg_source_0 satnogs_coarse_doppler_correction_cc_0 diff --git a/apps/flowgraphs/apt_demod.grc b/apps/flowgraphs/apt_demod.grc deleted file mode 100644 index 5ca4a8b..0000000 --- a/apps/flowgraphs/apt_demod.grc +++ /dev/null @@ -1,2888 +0,0 @@ - - - - Thu May 5 00:22:45 2016 - - options - - author - Manolis Surligas (surligas@gmail.com) - - - window_size - 3000, 3000 - - - category - Custom - - - comment - - - - description - A generic APT demodulation block - - - _enabled - True - - - _coordinate - (8, 8) - - - _rotation - 0 - - - generate_options - no_gui - - - hier_block_src_path - .: - - - id - satnogs_apt_demod - - - max_nouts - 0 - - - qt_qss_theme - - - - realtime_scheduling - - - - run_command - {python} -u {filename} - - - run_options - run - - - run - True - - - thread_safe_setters - - - - title - APT Generic Demodulation - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (1704, 52) - - - _rotation - 0 - - - id - audio_samp_rate - - - value - 48000 - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (805, 857) - - - _rotation - 0 - - - id - deviation - - - value - 17000 - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (1704, 260) - - - _rotation - 0 - - - id - filter_rate - - - value - 250000 - - - - variable - - comment - SDR device -TX sampling rate - - - _enabled - True - - - _coordinate - (1704, 476) - - - _rotation - 0 - - - id - samp_rate_rx - - - value - satnogs.hw_rx_settings[rx_sdr_device]['samp_rate'] - - - - variable_low_pass_filter_taps - - beta - 6.76 - - - comment - - - - cutoff_freq - 100e3 - - - _enabled - 1 - - - _coordinate - (48, 716) - - - _rotation - 0 - - - gain - 12.0 - - - id - taps - - - samp_rate - samp_rate_rx - - - width - 60000 - - - win - firdes.WIN_HAMMING - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (1704, 164) - - - _rotation - 0 - - - id - xlate_filter_taps - - - value - firdes.low_pass(1, samp_rate_rx, 125000, 25000, firdes.WIN_HAMMING, 6.76) - - - - analog_quadrature_demod_cf - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - _coordinate - (1224, 564) - - - _rotation - 180 - - - gain - (2*math.pi*deviation)/96000 - - - id - analog_quadrature_demod_cf_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (382, 937) - - - _rotation - 0 - - - id - antenna - - - label - - - - short_id - - - - type - string - - - value - satnogs.not_set_antenna - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (295, 937) - - - _rotation - 0 - - - id - bb_gain - - - label - - - - short_id - - - - type - eng_float - - - value - satnogs.not_set_rx_bb_gain - - - - rational_resampler_xxx - - alias - - - - comment - - - - affinity - - - - decim - 125 - - - _enabled - True - - - fbw - 0 - - - _coordinate - (1112, 268) - - - _rotation - 0 - - - id - blks2_rational_resampler_xxx_1 - - - interp - 48 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - taps - [] - - - type - ccc - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (672, 940) - - - _rotation - 0 - - - id - decoded_data_file_path - - - label - - - - short_id - - - - type - string - - - value - /tmp/.satnogs/data/data - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (47, 937) - - - _rotation - 0 - - - id - dev_args - - - label - - - - short_id - - - - type - string - - - value - satnogs.not_set_dev_args - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (47, 857) - - - _rotation - 0 - - - id - doppler_correction_per_sec - - - label - - - - short_id - - - - type - intx - - - value - 20 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (456, 940) - - - _rotation - 0 - - - id - enable_iq_dump - - - label - - - - short_id - - - - type - intx - - - value - 0 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (494, 857) - - - _rotation - 180 - - - id - file_path - - - label - - - - short_id - - - - type - string - - - value - test.ogg - - - - freq_xlating_fir_filter_xxx - - alias - - - - center_freq - lo_offset - - - comment - - - - affinity - - - - decim - int(samp_rate_rx/filter_rate) - - - _enabled - 1 - - - _coordinate - (680, 268) - - - _rotation - 0 - - - id - freq_xlating_fir_filter_xxx_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - samp_rate - samp_rate_rx - - - taps - xlate_filter_taps - - - type - ccc - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (215, 937) - - - _rotation - 0 - - - id - if_gain - - - label - - - - short_id - - - - type - eng_float - - - value - satnogs.not_set_rx_if_gain - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (568, 940) - - - _rotation - 0 - - - id - iq_file_path - - - label - - - - short_id - - - - type - string - - - value - /tmp/iq.dat - - - - parameter - - alias - - - - comment - To avoid the SDR carrier at the DC -we shift the LO a little further - - - _enabled - True - - - _coordinate - (1704, 324) - - - _rotation - 0 - - - id - lo_offset - - - label - - - - short_id - - - - type - eng_float - - - value - 100e3 - - - - osmosdr_source - - alias - - - - ant0 - satnogs.handle_rx_antenna(rx_sdr_device, antenna) - - - bb_gain0 - satnogs.handle_rx_bb_gain(rx_sdr_device, bb_gain) - - - bw0 - samp_rate_rx - - - dc_offset_mode0 - 2 - - - corr0 - ppm - - - freq0 - rx_freq - lo_offset - - - gain_mode0 - False - - - if_gain0 - satnogs.handle_rx_if_gain(rx_sdr_device, if_gain) - - - iq_balance_mode0 - 0 - - - gain0 - satnogs.handle_rx_rf_gain(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.handle_rx_dev_args(rx_sdr_device, dev_args) - - - _enabled - 1 - - - _coordinate - (15, 311) - - - _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 - - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (734, 857) - - - _rotation - 0 - - - id - ppm - - - label - - - - short_id - - - - type - intx - - - value - 0 - - - - rational_resampler_xxx - - alias - - - - comment - - - - affinity - - - - decim - 2 - - - _enabled - True - - - fbw - 0 - - - _coordinate - (1000, 540) - - - _rotation - 180 - - - id - rational_resampler_xxx_0 - - - interp - 1 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - taps - - - - type - fff - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (143, 937) - - - _rotation - 0 - - - id - rf_gain - - - label - - - - short_id - - - - type - eng_float - - - value - satnogs.not_set_rx_rf_gain - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (327, 857) - - - _rotation - 0 - - - id - rigctl_port - - - label - - - - short_id - - - - type - intx - - - value - 4532 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (414, 857) - - - _rotation - 0 - - - id - rx_freq - - - label - - - - short_id - - - - type - eng_float - - - value - 100e6 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (215, 857) - - - _rotation - 0 - - - id - rx_sdr_device - - - label - - - - short_id - - - - type - string - - - value - usrpb200 - - - - satnogs_coarse_doppler_correction_cc - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - _coordinate - (352, 276) - - - _rotation - 0 - - - id - satnogs_coarse_doppler_correction_cc_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - sampling_rate - samp_rate_rx - - - target_freq - rx_freq - - - - satnogs_iq_sink - - append - False - - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - filename - iq_file_path - - - _coordinate - (1296, 108) - - - _rotation - 0 - - - id - satnogs_iq_sink_0 - - - scale - 32767 - - - status - enable_iq_dump - - - - satnogs_ogg_encoder - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - filename - file_path - - - _coordinate - (792, 548) - - - _rotation - 180 - - - id - satnogs_ogg_encoder_0 - - - quality - 1.0 - - - samp_rate - audio_samp_rate - - - - satnogs_tcp_rigctl_msg_source - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (16, 204) - - - _rotation - 0 - - - id - satnogs_tcp_rigctl_msg_source_0 - - - addr - "127.0.0.1" - - - mtu - 1500 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - mode - False - - - port - rigctl_port - - - interval - 1000/doppler_correction_per_sec - - - - satnogs_waterfall_sink - - alias - - - - center_freq - 0.0 - - - comment - - - - affinity - - - - _enabled - True - - - fft_size - 1024 - - - filename - waterfall_file_path - - - _coordinate - (1456, 252) - - - _rotation - 0 - - - id - satnogs_waterfall_sink_0 - - - mode - 1 - - - pps - 10 - - - samp_rate - audio_samp_rate*2 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (598, 857) - - - _rotation - 0 - - - id - waterfall_file_path - - - label - - - - short_id - - - - type - string - - - value - /tmp/waterfall.dat - - - - analog_quadrature_demod_cf_0 - rational_resampler_xxx_0 - 0 - 0 - - - blks2_rational_resampler_xxx_1 - analog_quadrature_demod_cf_0 - 0 - 0 - - - blks2_rational_resampler_xxx_1 - satnogs_iq_sink_0 - 0 - 0 - - - blks2_rational_resampler_xxx_1 - satnogs_waterfall_sink_0 - 0 - 0 - - - freq_xlating_fir_filter_xxx_0 - blks2_rational_resampler_xxx_1 - 0 - 0 - - - osmosdr_source_0 - satnogs_coarse_doppler_correction_cc_0 - 0 - 0 - - - rational_resampler_xxx_0 - satnogs_ogg_encoder_0 - 0 - 0 - - - satnogs_coarse_doppler_correction_cc_0 - freq_xlating_fir_filter_xxx_0 - 0 - 0 - - - satnogs_tcp_rigctl_msg_source_0 - satnogs_coarse_doppler_correction_cc_0 - freq - freq - - diff --git a/apps/flowgraphs/ax25_transceiver_qt.grc b/apps/flowgraphs/ax25_transceiver_qt.grc deleted file mode 100644 index f7d2129..0000000 --- a/apps/flowgraphs/ax25_transceiver_qt.grc +++ /dev/null @@ -1,4470 +0,0 @@ - - - - Fri Jul 1 17:53:00 2016 - - options - - author - - - - window_size - 1768,1080 - - - category - Custom - - - comment - - - - description - - - - _enabled - True - - - _coordinate - (8, 8) - - - _rotation - 0 - - - generate_options - qt_gui - - - hier_block_src_path - .: - - - id - fsk9600_ax25_transceiver_qt - - - 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 - (544, 5) - - - _rotation - 0 - - - id - baud_rate - - - value - 9600 - - - - variable_qtgui_range - - comment - - - - value - 0 - - - _enabled - True - - - _coordinate - (1296, 1) - - - 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 - (1304, 137) - - - 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 - Decimation factor -for the RX after the -SDR received samples - - - _enabled - True - - - _coordinate - (664, 109) - - - _rotation - 0 - - - id - decimation_rx - - - value - 40 - - - - variable - - comment - The FSK frequency deviation - - - _enabled - True - - - _coordinate - (368, 5) - - - _rotation - 0 - - - id - deviation - - - value - 3.9973e3 - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (8, 325) - - - _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 - (1192, 1) - - - 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 - (1192, 137) - - - 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, 453) - - - _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 - (784, 5) - - - _rotation - 0 - - - id - lo_offset - - - value - 100e3 - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (8, 253) - - - _rotation - 0 - - - id - modulation_index - - - value - deviation / (baud_rate / 2.0) - - - - variable_qtgui_range - - comment - - - - value - 0 - - - _enabled - True - - - _coordinate - (1080, 1) - - - 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 - (1080, 137) - - - 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 - The RX center frequency - of the system - - - _enabled - True - - - _coordinate - (808, 109) - - - _rotation - 0 - - - id - rx_frequency - - - value - 435.8e6 - - - - variable - - comment - SDR device -TX sampling rate - - - _enabled - True - - - _coordinate - (528, 109) - - - _rotation - 0 - - - id - samp_rate_rx - - - value - 1e6 - - - - variable - - comment - SDR device -TX sampling rate - - - _enabled - True - - - _coordinate - (248, 5) - - - _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, 109) - - - _rotation - 0 - - - id - samples_per_symbol_tx - - - value - 4*8 - - - - variable - - comment - - - - _enabled - 1 - - - _coordinate - (8, 389) - - - _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 - (648, 5) - - - _rotation - 0 - - - id - tx_frequency - - - value - 435.8e6 - - - - analog_frequency_modulator_fc - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (1208, 308) - - - _rotation - 0 - - - id - analog_frequency_modulator_fc_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - sensitivity - (math.pi*modulation_index) / samples_per_symbol_tx - - - - analog_quadrature_demod_cf - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (528, 644) - - - _rotation - 0 - - - gain - ((samp_rate_rx/decimation_rx) / baud_rate)/(math.pi*modulation_index) - - - 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 - (1056, 368) - - - _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_char_to_float - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - _coordinate - (808, 308) - - - _rotation - 0 - - - id - blocks_char_to_float_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - scale - 1 - - - vlen - 1 - - - - blocks_multiply_xx - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (896, 448) - - - _rotation - 180 - - - id - blocks_multiply_xx_0 - - - type - complex - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - num_inputs - 2 - - - vlen - 1 - - - - digital_binary_slicer_fb - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (1024, 648) - - - _rotation - 0 - - - id - digital_binary_slicer_fb_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - - digital_clock_recovery_mm_xx - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (776, 616) - - - _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 - (samp_rate_rx/decimation_rx)/baud_rate - - - type - float - - - - digital_map_bb - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - _coordinate - (688, 308) - - - _rotation - 0 - - - id - digital_map_bb_0 - - - map - [1, -1] - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - - freq_xlating_fir_filter_xxx - - alias - - - - center_freq - lo_offset - - - comment - - - - affinity - - - - decim - decimation_rx - - - _enabled - 1 - - - _coordinate - (304, 623) - - - _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 - (1472, 60) - - - _rotation - 0 - - - id - import_0 - - - import - import numpy - - - - import - - alias - - - - comment - - - - _enabled - 1 - - - _coordinate - (1480, 4) - - - _rotation - 0 - - - id - import_0_0 - - - import - import math - - - - import - - alias - - - - comment - - - - _enabled - 1 - - - _coordinate - (1480, 108) - - - _rotation - 0 - - - id - import_0_1 - - - import - from gnuradio import filter - - - - interp_fir_filter_xxx - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (984, 301) - - - _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 - (640, 418) - - - _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 - - - - 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 - (32, 572) - - - _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 - (1224, 455) - - - _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_ax25_decoder_bm - - n_sync_flags - 2 - - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - descrambling - True - - - _coordinate - (1272, 760) - - - _rotation - 180 - - - id - satnogs_ax25_decoder_bm_0 - - - maxoutbuf - 0 - - - max_frame_len - 256 - - - minoutbuf - 0 - - - promisc - False - - - addr - 'GND' - - - ssid - 0 - - - - satnogs_ax25_encoder_mb - - alias - - - - comment - - - - affinity - - - - dest_addr - UPSAT - - - dest_ssid - 0 - - - _enabled - True - - - scramble - True - - - _coordinate - (480, 266) - - - _rotation - 0 - - - id - satnogs_ax25_encoder_mb_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - postamble_len - 16 - - - preamble_len - 32 - - - src_addr - GND - - - src_ssid - 0 - - - - satnogs_debug_msg_source - - alias - - - - comment - - - - affinity - - - - delay - 2 - - - _enabled - 1 - - - _coordinate - (232, 190) - - - _rotation - 0 - - - id - satnogs_debug_msg_source_0 - - - maxoutbuf - 0 - - - msg - 'HELLO UPSAT FROM EARTH' * 2 - - - minoutbuf - 0 - - - repeat - True - - - - satnogs_multi_format_msg_sink - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - filename - - - - _coordinate - (928, 860) - - - _rotation - 180 - - - id - satnogs_multi_format_msg_sink_0_0 - - - outstream - True - - - timestamp - False - - - format - 0 - - - - satnogs_udp_msg_sink - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (928, 766) - - - _rotation - 180 - - - id - satnogs_udp_msg_sink_0_0 - - - addr - udp_IP - - - mtu - 1500 - - - port - udp_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 - (240, 294) - - - _rotation - 0 - - - id - satnogs_udp_msg_source_0 - - - addr - "127.0.0.1" - - - mtu - 1500 - - - maxoutbuf - 0 - - - msg_type - 0 - - - minoutbuf - 0 - - - port - 16886 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (87, 937) - - - _rotation - 0 - - - id - udp_IP - - - label - - - - short_id - - - - type - string - - - value - 127.0.0.1 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (207, 937) - - - _rotation - 0 - - - id - udp_port - - - label - - - - short_id - - - - type - intx - - - value - 16887 - - - - 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_char_to_float_0 - interp_fir_filter_xxx_0 - 0 - 0 - - - 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 - - - digital_map_bb_0 - blocks_char_to_float_0 - 0 - 0 - - - freq_xlating_fir_filter_xxx_0 - analog_quadrature_demod_cf_0_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_0 - pdu - in - - - satnogs_ax25_decoder_bm_0 - satnogs_udp_msg_sink_0_0 - pdu - in - - - satnogs_ax25_encoder_mb_0 - digital_map_bb_0 - 0 - 0 - - - satnogs_debug_msg_source_0 - satnogs_ax25_encoder_mb_0 - msg - info - - - satnogs_udp_msg_source_0 - satnogs_ax25_encoder_mb_0 - msg - info - - diff --git a/apps/flowgraphs/bpsk_ax25.grc b/apps/flowgraphs/bpsk_ax25.grc index 775b8c9..91acedc 100644 --- a/apps/flowgraphs/bpsk_ax25.grc +++ b/apps/flowgraphs/bpsk_ax25.grc @@ -248,6 +248,108 @@ 4 + + variable_ax25_decoder + + comment + + + + _enabled + True + + + descrambling + True + + + _coordinate + (1276, 690) + + + _rotation + 0 + + + id + variable_ax25_decoder_0 + + + value + 'ok' + + + frame_len + 512 + + + crc_check + True + + + promisc + True + + + addr + 'GND' + + + ssid + 0 + + + + variable_ax25_decoder + + comment + + + + _enabled + True + + + descrambling + False + + + _coordinate + (1436, 690) + + + _rotation + 0 + + + id + variable_ax25_decoder_0_0 + + + value + 'ok' + + + frame_len + 512 + + + crc_check + True + + + promisc + True + + + addr + 'GND' + + + ssid + 0 + + analog_agc2_xx @@ -3298,124 +3400,6 @@ reception performance. satnogs.not_set_samp_rate_rx - - satnogs_ax25_decoder_bm - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - descrambling - True - - - _coordinate - (1182, 491) - - - _rotation - 180 - - - id - satnogs_ax25_decoder_bm_0 - - - maxoutbuf - 0 - - - max_frame_len - 1024 - - - minoutbuf - 0 - - - promisc - True - - - addr - 'GND' - - - ssid - 0 - - - - satnogs_ax25_decoder_bm - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - descrambling - False - - - _coordinate - (1182, 611) - - - _rotation - 180 - - - id - satnogs_ax25_decoder_bm_0_0 - - - maxoutbuf - 0 - - - max_frame_len - 1024 - - - minoutbuf - 0 - - - promisc - True - - - addr - 'GND' - - - ssid - 0 - - satnogs_coarse_doppler_correction_cc @@ -3463,6 +3447,100 @@ reception performance. rx_freq + + satnogs_frame_decoder + + alias + + + + comment + + + + affinity + + + + decoder_object + variable_ax25_decoder_0 + + + _enabled + True + + + _coordinate + (1332, 598) + + + _rotation + 180 + + + id + satnogs_frame_decoder_0_0 + + + itype + byte + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + + satnogs_frame_decoder + + alias + + + + comment + + + + affinity + + + + decoder_object + variable_ax25_decoder_0_0 + + + _enabled + 1 + + + _coordinate + (1332, 510) + + + _rotation + 180 + + + id + satnogs_frame_decoder_0_0_0 + + + itype + byte + + + maxoutbuf + 0 + + + minoutbuf + 0 + + satnogs_frame_file_sink @@ -3483,7 +3561,7 @@ reception performance. _coordinate - (936, 684) + (997, 674) _rotation @@ -3612,7 +3690,7 @@ reception performance. _coordinate - (216, 148) + (215, 147) _rotation @@ -3648,7 +3726,7 @@ reception performance. interval - 1000 + int(1.0/doppler_correction_per_sec) * 1000 + 1 @@ -3671,7 +3749,7 @@ reception performance. _coordinate - (936, 596) + (997, 578) _rotation @@ -3922,13 +4000,13 @@ reception performance. digital_constellation_receiver_cb_0 - satnogs_ax25_decoder_bm_0 + satnogs_frame_decoder_0_0 0 0 digital_constellation_receiver_cb_0 - satnogs_ax25_decoder_bm_0_0 + satnogs_frame_decoder_0_0_0 0 0 @@ -3986,30 +4064,6 @@ reception performance. 0 0 - - satnogs_ax25_decoder_bm_0 - satnogs_frame_file_sink_0_1_0 - pdu - frame - - - satnogs_ax25_decoder_bm_0 - satnogs_udp_msg_sink_0_0 - pdu - in - - - satnogs_ax25_decoder_bm_0_0 - satnogs_frame_file_sink_0_1_0 - pdu - frame - - - satnogs_ax25_decoder_bm_0_0 - satnogs_udp_msg_sink_0_0 - pdu - in - satnogs_coarse_doppler_correction_cc_0 analog_agc2_xx_0 @@ -4022,6 +4076,30 @@ reception performance. 0 0 + + satnogs_frame_decoder_0_0 + satnogs_frame_file_sink_0_1_0 + out + frame + + + satnogs_frame_decoder_0_0 + satnogs_udp_msg_sink_0_0 + out + in + + + satnogs_frame_decoder_0_0_0 + satnogs_frame_file_sink_0_1_0 + out + frame + + + satnogs_frame_decoder_0_0_0 + satnogs_udp_msg_sink_0_0 + out + in + satnogs_tcp_rigctl_msg_source_0 satnogs_coarse_doppler_correction_cc_0 diff --git a/apps/flowgraphs/bpsk_decoder.grc b/apps/flowgraphs/bpsk_decoder.grc deleted file mode 100644 index 047dd3e..0000000 --- a/apps/flowgraphs/bpsk_decoder.grc +++ /dev/null @@ -1,3055 +0,0 @@ - - - - Thu May 5 00:22:45 2016 - - options - - author - Patrick Dohmen, DL4PD - - - window_size - 3000, 3000 - - - category - Custom - - - comment - - - - description - A BPSK decoder block for gr-satnogs - - - _enabled - True - - - _coordinate - (8, 8) - - - _rotation - 0 - - - generate_options - no_gui - - - hier_block_src_path - .: - - - id - satnogs_bpsk_decoder - - - max_nouts - 0 - - - qt_qss_theme - - - - realtime_scheduling - - - - run_command - {python} -u {filename} - - - run_options - run - - - run - True - - - thread_safe_setters - - - - title - BPSK Decoder - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (896, 180) - - - _rotation - 0 - - - id - alpha - - - value - 0.1 - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (1704, 52) - - - _rotation - 0 - - - id - audio_samp_rate - - - value - 48000 - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (1152, 20) - - - _rotation - 0 - - - id - deviation - - - value - 5000 - - - - variable - - comment - Filtershape: - -Use the following values for different filter shapes - -Sharp: 0.1 -Normal: 0.2 -Soft: 0.5 - - - _enabled - True - - - _coordinate - (1032, 180) - - - _rotation - 0 - - - id - filt_mode - - - value - 0.1 - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (1704, 260) - - - _rotation - 0 - - - id - filter_rate - - - value - 250000 - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (200, 772) - - - _rotation - 0 - - - id - nfilts - - - value - 16 - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (48, 772) - - - _rotation - 0 - - - id - rrc_taps - - - value - firdes.root_raised_cosine(nfilts, nfilts, 1.0/float(samp_per_sym), 0.35, 11*samp_per_sym*nfilts) - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (264, 772) - - - _rotation - 0 - - - id - samp_per_sym - - - value - 5 - - - - variable - - comment - SDR device -TX sampling rate - - - _enabled - True - - - _coordinate - (1704, 460) - - - _rotation - 0 - - - id - samp_rate_rx - - - value - satnogs.hw_rx_settings[rx_sdr_device]['samp_rate'] - - - - variable_low_pass_filter_taps - - beta - 6.76 - - - comment - - - - cutoff_freq - 100e3 - - - _enabled - 1 - - - _coordinate - (200, 12) - - - _rotation - 0 - - - gain - 12.0 - - - id - taps - - - samp_rate - samp_rate_rx - - - width - 60000 - - - win - firdes.WIN_HAMMING - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (1704, 164) - - - _rotation - 0 - - - id - xlate_filter_taps - - - value - firdes.low_pass(1, samp_rate_rx, 125000, 25000, firdes.WIN_HAMMING, 6.76) - - - - analog_agc2_xx - - attack_rate - 0.01 - - - alias - - - - comment - - - - affinity - - - - decay_rate - 0.001 - - - _enabled - True - - - _coordinate - (280, 652) - - - _rotation - 0 - - - gain - 1.0 - - - id - analog_agc2_xx_0 - - - max_gain - 65536 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - reference - 0.5 - - - type - complex - - - - analog_agc2_xx - - attack_rate - 0.01 - - - alias - - - - comment - - - - affinity - - - - decay_rate - 0.001 - - - _enabled - 1 - - - _coordinate - (1360, 452) - - - _rotation - 180 - - - gain - 0.0 - - - id - analog_agc2_xx_0_0 - - - max_gain - 65536 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - reference - 0.015 - - - type - complex - - - - analog_sig_source_x - - amp - 1 - - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - freq - cw_offset/1200.0*baudrate - - - _coordinate - (1360, 568) - - - _rotation - 180 - - - id - analog_sig_source_x_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - offset - 0 - - - type - complex - - - samp_rate - audio_samp_rate - - - waveform - analog.GR_COS_WAVE - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (704, 100) - - - _rotation - 0 - - - id - antenna - - - label - - - - short_id - - - - type - string - - - value - satnogs.not_set_antenna - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (304, 500) - - - _rotation - 0 - - - id - baudrate - - - label - baudrate - - - short_id - - - - type - intx - - - value - 1200 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (616, 100) - - - _rotation - 0 - - - id - bb_gain - - - label - - - - short_id - - - - type - eng_float - - - value - satnogs.not_set_rx_bb_gain - - - - rational_resampler_xxx - - alias - - - - comment - We get: - - 250 kHz input sampling rate (samp_rate_rx/filter_rate) from first stage - - 48 kHz output sampling rate - - - affinity - - - - decim - int(samp_rate_rx/(samp_rate_rx/filter_rate)) - - - _enabled - True - - - fbw - 0 - - - _coordinate - (864, 268) - - - _rotation - 0 - - - id - blks2_rational_resampler_xxx_1 - - - interp - audio_samp_rate - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - taps - [] - - - type - ccc - - - - rational_resampler_xxx - - alias - - - - comment - We get: - - 48 kHz input sampling rate - - 12 kHz output sampling rate - - - affinity - - - - decim - 48000 - - - _enabled - True - - - fbw - 0 - - - _coordinate - (1344, 60) - - - _rotation - 0 - - - id - blks2_rational_resampler_xxx_1_0 - - - interp - max(12000, int(3*(1+alpha)*baudrate)) - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - taps - [] - - - type - ccc - - - - blocks_complex_to_real - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - _coordinate - (1040, 504) - - - _rotation - 180 - - - id - blocks_complex_to_real_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - vlen - 1 - - - - blocks_complex_to_real - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - _coordinate - (1000, 656) - - - _rotation - 0 - - - id - blocks_complex_to_real_0_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - vlen - 1 - - - - blocks_multiply_xx - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - _coordinate - (1216, 488) - - - _rotation - 180 - - - id - blocks_multiply_xx_0 - - - type - complex - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - num_inputs - 2 - - - vlen - 1 - - - - blocks_multiply_xx - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - _coordinate - (864, 568) - - - _rotation - 180 - - - id - blocks_multiply_xx_0_0 - - - type - complex - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - num_inputs - 2 - - - vlen - 1 - - - - parameter - - alias - - - - comment - The CW offset shifts the carrier from 0 Hz to a -frequency that corresponds to the CW audio -tone. This tone is typically 500-800 Hz. - - - _enabled - True - - - _coordinate - (1360, 684) - - - _rotation - 0 - - - id - cw_offset - - - label - - - - short_id - - - - type - eng_float - - - value - 1500 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (1000, 100) - - - _rotation - 0 - - - id - decoded_data_file_path - - - label - - - - short_id - - - - type - string - - - value - /tmp/.satnogs/data/data - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (368, 100) - - - _rotation - 0 - - - id - dev_args - - - label - - - - short_id - - - - type - string - - - value - satnogs.not_set_dev_args - - - - digital_binary_slicer_fb - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - _coordinate - (1176, 656) - - - _rotation - 0 - - - id - digital_binary_slicer_fb_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - - digital_costas_loop_cc - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (816, 656) - - - _rotation - 0 - - - id - digital_costas_loop_cc_0_0_0_0 - - - w - 0.063 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - order - 2 - - - use_snr - False - - - - digital_pfb_clock_sync_xxx - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - filter_size - nfilts - - - _coordinate - (456, 652) - - - _rotation - 0 - - - id - digital_pfb_clock_sync_xxx_0 - - - init_phase - nfilts/2 - - - loop_bw - 0.063 - - - maxoutbuf - 0 - - - max_dev - 1.5 - - - minoutbuf - 0 - - - osps - 1 - - - sps - samp_per_sym - - - taps - rrc_taps - - - type - ccf - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (368, 20) - - - _rotation - 0 - - - id - doppler_correction_per_sec - - - label - - - - short_id - - - - type - intx - - - value - 20 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (776, 100) - - - _rotation - 0 - - - id - enable_iq_dump - - - label - - - - short_id - - - - type - intx - - - value - 0 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (840, 20) - - - _rotation - 180 - - - id - file_path - - - label - - - - short_id - - - - type - string - - - value - test.ogg - - - - freq_xlating_fir_filter_xxx - - alias - - - - center_freq - lo_offset - - - comment - - - - affinity - - - - decim - int(samp_rate_rx/filter_rate) - - - _enabled - 1 - - - _coordinate - (608, 268) - - - _rotation - 0 - - - id - freq_xlating_fir_filter_xxx_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - samp_rate - samp_rate_rx - - - taps - xlate_filter_taps - - - type - ccc - - - - freq_xlating_fir_filter_xxx - - alias - - - - center_freq - cw_offset/1200.0*baudrate - - - comment - - - - affinity - - - - decim - audio_samp_rate/(samp_per_sym*baudrate) - - - _enabled - True - - - _coordinate - (48, 660) - - - _rotation - 0 - - - id - freq_xlating_fir_filter_xxx_0_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - samp_rate - audio_samp_rate - - - taps - firdes.low_pass(1, audio_samp_rate, (1+alpha)*baudrate, (1+alpha)*baudrate*filt_mode) - - - type - ccf - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (536, 100) - - - _rotation - 0 - - - id - if_gain - - - label - - - - short_id - - - - type - eng_float - - - value - satnogs.not_set_rx_if_gain - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (896, 100) - - - _rotation - 0 - - - id - iq_file_path - - - label - - - - short_id - - - - type - string - - - value - /tmp/iq.dat - - - - parameter - - alias - - - - comment - To avoid the SDR carrier at the DC -we shift the LO a little further - - - _enabled - True - - - _coordinate - (1704, 324) - - - _rotation - 0 - - - id - lo_offset - - - label - - - - short_id - - - - type - eng_float - - - value - 100e3 - - - - low_pass_filter - - beta - 6.76 - - - alias - - - - comment - - - - affinity - - - - cutoff_freq - (1+alpha)*baudrate - - - decim - 1 - - - _enabled - True - - - type - fir_filter_ccf - - - _coordinate - (1344, 308) - - - _rotation - 0 - - - gain - 1 - - - id - low_pass_filter_0 - - - interp - 1 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - samp_rate - audio_samp_rate - - - width - ((1+alpha)*baudrate)*filt_mode - - - win - firdes.WIN_HAMMING - - - - osmosdr_source - - alias - - - - ant0 - satnogs.handle_rx_antenna(rx_sdr_device, antenna) - - - bb_gain0 - satnogs.handle_rx_bb_gain(rx_sdr_device, bb_gain) - - - bw0 - samp_rate_rx - - - dc_offset_mode0 - 2 - - - corr0 - ppm - - - freq0 - rx_freq - lo_offset - - - gain_mode0 - False - - - if_gain0 - satnogs.handle_rx_if_gain(rx_sdr_device, if_gain) - - - iq_balance_mode0 - 0 - - - gain0 - satnogs.handle_rx_rf_gain(rx_sdr_device, rf_gain) - - - 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 - - - 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 - - - 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 - - - comment - - - - affinity - - - - args - satnogs.handle_rx_dev_args(rx_sdr_device, dev_args) - - - _enabled - 1 - - - _coordinate - (15, 359) - - - _rotation - 0 - - - id - osmosdr_source_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - nchan - 1 - - - type - fc32 - - - sample_rate - samp_rate_rx - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (1080, 20) - - - _rotation - 0 - - - id - ppm - - - label - - - - short_id - - - - type - intx - - - value - 0 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (464, 100) - - - _rotation - 0 - - - id - rf_gain - - - label - - - - short_id - - - - type - eng_float - - - value - satnogs.not_set_rx_rf_gain - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (656, 20) - - - _rotation - 0 - - - id - rigctl_port - - - label - - - - short_id - - - - type - intx - - - value - 4532 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (752, 20) - - - _rotation - 0 - - - id - rx_freq - - - label - - - - short_id - - - - type - eng_float - - - value - 100e6 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (536, 20) - - - _rotation - 0 - - - id - rx_sdr_device - - - label - - - - short_id - - - - type - string - - - value - rtlsdr - - - - satnogs_ax25_decoder_bm - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - descrambling - True - - - _coordinate - (1016, 756) - - - _rotation - 180 - - - id - satnogs_ax25_decoder_bm_0 - - - maxoutbuf - 0 - - - max_frame_len - 1024 - - - minoutbuf - 0 - - - promisc - True - - - addr - 'GND' - - - ssid - 0 - - - - satnogs_ax25_decoder_bm - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - descrambling - False - - - _coordinate - (1016, 868) - - - _rotation - 180 - - - id - satnogs_ax25_decoder_bm_0_0 - - - maxoutbuf - 0 - - - max_frame_len - 1024 - - - minoutbuf - 0 - - - promisc - True - - - addr - 'GND' - - - ssid - 0 - - - - satnogs_coarse_doppler_correction_cc - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (368, 404) - - - _rotation - 0 - - - id - satnogs_coarse_doppler_correction_cc_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - sampling_rate - samp_rate_rx - - - target_freq - rx_freq - - - - satnogs_doppler_correction_cc - - alias - - - - comment - - - - affinity - - - - corrections_per_sec - 1000 - - - _enabled - 0 - - - _coordinate - (360, 248) - - - _rotation - 0 - - - id - satnogs_doppler_correction_cc_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - sampling_rate - samp_rate_rx - - - target_freq - rx_freq - - - - satnogs_frame_file_sink - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - _coordinate - (712, 796) - - - _rotation - 180 - - - id - satnogs_frame_file_sink_0_1_0 - - - output_type - 0 - - - prefix_name - decoded_data_file_path - - - - satnogs_iq_sink - - append - False - - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - filename - iq_file_path - - - _coordinate - (1344, 228) - - - _rotation - 0 - - - id - satnogs_iq_sink_0 - - - scale - 32767 - - - status - enable_iq_dump - - - - satnogs_ogg_encoder - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - filename - file_path - - - _coordinate - (864, 484) - - - _rotation - 180 - - - id - satnogs_ogg_encoder_0 - - - quality - 1.0 - - - samp_rate - audio_samp_rate - - - - satnogs_tcp_rigctl_msg_source - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (16, 204) - - - _rotation - 0 - - - id - satnogs_tcp_rigctl_msg_source_0 - - - addr - "127.0.0.1" - - - mtu - 1500 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - mode - False - - - port - rigctl_port - - - interval - 1000/doppler_correction_per_sec - - - - satnogs_udp_msg_sink - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (744, 860) - - - _rotation - 180 - - - id - satnogs_udp_msg_sink_0_0 - - - addr - udp_IP - - - mtu - 1500 - - - port - udp_port - - - - satnogs_waterfall_sink - - alias - - - - center_freq - 0.0 - - - comment - - - - affinity - - - - _enabled - True - - - fft_size - 1024 - - - filename - waterfall_file_path - - - _coordinate - (1536, 44) - - - _rotation - 0 - - - id - satnogs_waterfall_sink_0 - - - mode - 1 - - - pps - 10 - - - samp_rate - max(12000, int(3*(1+alpha)*baudrate)) - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (560, 860) - - - _rotation - 0 - - - id - udp_IP - - - label - - - - short_id - - - - type - string - - - value - 127.0.0.1 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (656, 860) - - - _rotation - 0 - - - id - udp_port - - - label - - - - short_id - - - - type - intx - - - value - 16887 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (944, 20) - - - _rotation - 0 - - - id - waterfall_file_path - - - label - - - - short_id - - - - type - string - - - value - /tmp/waterfall.dat - - - - analog_agc2_xx_0 - digital_pfb_clock_sync_xxx_0 - 0 - 0 - - - analog_agc2_xx_0_0 - blocks_multiply_xx_0 - 0 - 1 - - - analog_sig_source_x_0 - blocks_multiply_xx_0 - 0 - 0 - - - analog_sig_source_x_0 - blocks_multiply_xx_0_0 - 0 - 0 - - - blks2_rational_resampler_xxx_1 - blks2_rational_resampler_xxx_1_0 - 0 - 0 - - - blks2_rational_resampler_xxx_1 - blocks_multiply_xx_0_0 - 0 - 1 - - - blks2_rational_resampler_xxx_1 - low_pass_filter_0 - 0 - 0 - - - blks2_rational_resampler_xxx_1 - satnogs_iq_sink_0 - 0 - 0 - - - blks2_rational_resampler_xxx_1_0 - satnogs_waterfall_sink_0 - 0 - 0 - - - blocks_complex_to_real_0 - satnogs_ogg_encoder_0 - 0 - 0 - - - blocks_complex_to_real_0_0 - digital_binary_slicer_fb_0 - 0 - 0 - - - blocks_multiply_xx_0 - blocks_complex_to_real_0 - 0 - 0 - - - blocks_multiply_xx_0_0 - freq_xlating_fir_filter_xxx_0_0 - 0 - 0 - - - digital_binary_slicer_fb_0 - satnogs_ax25_decoder_bm_0 - 0 - 0 - - - digital_binary_slicer_fb_0 - satnogs_ax25_decoder_bm_0_0 - 0 - 0 - - - digital_costas_loop_cc_0_0_0_0 - blocks_complex_to_real_0_0 - 0 - 0 - - - digital_pfb_clock_sync_xxx_0 - digital_costas_loop_cc_0_0_0_0 - 0 - 0 - - - freq_xlating_fir_filter_xxx_0 - blks2_rational_resampler_xxx_1 - 0 - 0 - - - freq_xlating_fir_filter_xxx_0_0 - analog_agc2_xx_0 - 0 - 0 - - - low_pass_filter_0 - analog_agc2_xx_0_0 - 0 - 0 - - - osmosdr_source_0 - satnogs_coarse_doppler_correction_cc_0 - 0 - 0 - - - satnogs_ax25_decoder_bm_0 - satnogs_frame_file_sink_0_1_0 - pdu - frame - - - satnogs_ax25_decoder_bm_0 - satnogs_udp_msg_sink_0_0 - pdu - in - - - satnogs_ax25_decoder_bm_0_0 - satnogs_frame_file_sink_0_1_0 - pdu - frame - - - satnogs_ax25_decoder_bm_0_0 - satnogs_udp_msg_sink_0_0 - pdu - in - - - satnogs_coarse_doppler_correction_cc_0 - freq_xlating_fir_filter_xxx_0 - 0 - 0 - - - satnogs_doppler_correction_cc_0 - freq_xlating_fir_filter_xxx_0 - 0 - 0 - - - satnogs_tcp_rigctl_msg_source_0 - satnogs_coarse_doppler_correction_cc_0 - freq - freq - - - satnogs_tcp_rigctl_msg_source_0 - satnogs_doppler_correction_cc_0 - freq - freq - - diff --git a/apps/flowgraphs/bpsk_demod.grc b/apps/flowgraphs/bpsk_demod.grc deleted file mode 100644 index 82bd45d..0000000 --- a/apps/flowgraphs/bpsk_demod.grc +++ /dev/null @@ -1,3207 +0,0 @@ - - - - Thu May 5 00:22:45 2016 - - options - - author - surligas, cshields, csete - - - window_size - 3000, 3000 - - - category - Custom - - - comment - - - - description - A generic BPSK demodulation block - - - _enabled - True - - - _coordinate - (8, 8) - - - _rotation - 0 - - - generate_options - no_gui - - - hier_block_src_path - .: - - - id - satnogs_bpsk_demod - - - max_nouts - 0 - - - qt_qss_theme - - - - realtime_scheduling - - - - run_command - {python} -u {filename} - - - run_options - run - - - run - True - - - thread_safe_setters - - - - title - BPSK Generic Demodulation - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (1704, 52) - - - _rotation - 0 - - - id - audio_samp_rate - - - value - 48000 - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (845, 985) - - - _rotation - 0 - - - id - deviation - - - value - 5000 - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (1704, 260) - - - _rotation - 0 - - - id - filter_rate - - - value - 250000 - - - - variable - - comment - SDR device -TX sampling rate - - - _enabled - True - - - _coordinate - (1704, 460) - - - _rotation - 0 - - - id - samp_rate_rx - - - value - satnogs.hw_rx_settings[rx_sdr_device]['samp_rate'] - - - - variable_low_pass_filter_taps - - beta - 6.76 - - - comment - - - - cutoff_freq - 100e3 - - - _enabled - 1 - - - _coordinate - (48, 716) - - - _rotation - 0 - - - gain - 12.0 - - - id - taps - - - samp_rate - samp_rate_rx - - - width - 60000 - - - win - firdes.WIN_HAMMING - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (1704, 164) - - - _rotation - 0 - - - id - xlate_filter_taps - - - value - firdes.low_pass(1, samp_rate_rx, 125000, 25000, firdes.WIN_HAMMING, 6.76) - - - - analog_agc2_xx - - attack_rate - 0.01 - - - alias - - - - comment - - - - affinity - - - - decay_rate - 0.001 - - - _enabled - 1 - - - _coordinate - (1472, 60) - - - _rotation - 0 - - - gain - 0.0 - - - id - analog_agc2_xx_0_0 - - - max_gain - 65536 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - reference - 0.015 - - - type - complex - - - - analog_sig_source_x - - amp - 1 - - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - freq - cw_offset - - - _coordinate - (1360, 568) - - - _rotation - 180 - - - id - analog_sig_source_x_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - offset - 0 - - - type - complex - - - samp_rate - audio_samp_rate - - - waveform - analog.GR_COS_WAVE - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (398, 1065) - - - _rotation - 0 - - - id - antenna - - - label - - - - short_id - - - - type - string - - - value - satnogs.not_set_antenna - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (311, 1065) - - - _rotation - 0 - - - id - bb_gain - - - label - - - - short_id - - - - type - eng_float - - - value - satnogs.not_set_rx_bb_gain - - - - rational_resampler_xxx - - alias - - - - comment - - - - affinity - - - - decim - 125 - - - _enabled - True - - - fbw - 0 - - - _coordinate - (992, 268) - - - _rotation - 0 - - - id - blks2_rational_resampler_xxx_1 - - - interp - 24 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - taps - [] - - - type - ccc - - - - blocks_complex_to_real - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - _coordinate - (1016, 504) - - - _rotation - 180 - - - id - blocks_complex_to_real_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - vlen - 1 - - - - blocks_multiply_xx - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - _coordinate - (1216, 488) - - - _rotation - 180 - - - id - blocks_multiply_xx_0 - - - type - complex - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - num_inputs - 2 - - - vlen - 1 - - - - parameter - - alias - - - - comment - The CW offset shifts the carrier from 0 Hz to a -frequency that corresponds to the CW audio -tone. This tone is typically 500-800 Hz. - - - _enabled - True - - - _coordinate - (1360, 684) - - - _rotation - 0 - - - id - cw_offset - - - label - - - - short_id - - - - type - eng_float - - - value - 1500 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (696, 1068) - - - _rotation - 0 - - - id - decoded_data_file_path - - - label - - - - short_id - - - - type - string - - - value - /tmp/.satnogs/data/data - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (63, 1065) - - - _rotation - 0 - - - id - dev_args - - - label - - - - short_id - - - - type - string - - - value - satnogs.not_set_dev_args - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (64, 984) - - - _rotation - 0 - - - id - doppler_correction_per_sec - - - label - - - - short_id - - - - type - intx - - - value - 20 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (472, 1068) - - - _rotation - 0 - - - id - enable_iq_dump - - - label - - - - short_id - - - - type - intx - - - value - 0 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (534, 985) - - - _rotation - 180 - - - id - file_path - - - label - - - - short_id - - - - type - string - - - value - test.ogg - - - - freq_xlating_fir_filter_xxx - - alias - - - - center_freq - lo_offset - - - comment - - - - affinity - - - - decim - int(samp_rate_rx/filter_rate) - - - _enabled - 1 - - - _coordinate - (680, 268) - - - _rotation - 0 - - - id - freq_xlating_fir_filter_xxx_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - samp_rate - samp_rate_rx - - - taps - xlate_filter_taps - - - type - ccc - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (231, 1065) - - - _rotation - 0 - - - id - if_gain - - - label - - - - short_id - - - - type - eng_float - - - value - satnogs.not_set_rx_if_gain - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (592, 1068) - - - _rotation - 0 - - - id - iq_file_path - - - label - - - - short_id - - - - type - string - - - value - /tmp/iq.dat - - - - parameter - - alias - - - - comment - To avoid the SDR carrier at the DC -we shift the LO a little further - - - _enabled - True - - - _coordinate - (1704, 324) - - - _rotation - 0 - - - id - lo_offset - - - label - - - - short_id - - - - type - eng_float - - - value - 100e3 - - - - low_pass_filter - - beta - 6.76 - - - alias - - - - comment - - - - affinity - - - - cutoff_freq - 2000 - - - decim - 1 - - - _enabled - True - - - type - fir_filter_ccf - - - _coordinate - (1256, 36) - - - _rotation - 0 - - - gain - 1 - - - id - low_pass_filter_0 - - - interp - 1 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - samp_rate - audio_samp_rate - - - width - 1000 - - - win - firdes.WIN_HAMMING - - - - osmosdr_source - - alias - - - - ant0 - satnogs.handle_rx_antenna(rx_sdr_device, antenna) - - - bb_gain0 - satnogs.handle_rx_bb_gain(rx_sdr_device, bb_gain) - - - bw0 - samp_rate_rx - - - dc_offset_mode0 - 2 - - - corr0 - ppm - - - freq0 - rx_freq - lo_offset - - - gain_mode0 - False - - - if_gain0 - satnogs.handle_rx_if_gain(rx_sdr_device, if_gain) - - - iq_balance_mode0 - 0 - - - gain0 - satnogs.handle_rx_rf_gain(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.handle_rx_dev_args(rx_sdr_device, dev_args) - - - _enabled - 1 - - - _coordinate - (15, 359) - - - _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 - - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (773, 985) - - - _rotation - 0 - - - id - ppm - - - label - - - - short_id - - - - type - intx - - - value - 0 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (159, 1065) - - - _rotation - 0 - - - id - rf_gain - - - label - - - - short_id - - - - type - eng_float - - - value - satnogs.not_set_rx_rf_gain - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (351, 985) - - - _rotation - 0 - - - id - rigctl_port - - - label - - - - short_id - - - - type - intx - - - value - 4532 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (446, 985) - - - _rotation - 0 - - - id - rx_freq - - - label - - - - short_id - - - - type - eng_float - - - value - 100e6 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (231, 985) - - - _rotation - 0 - - - id - rx_sdr_device - - - label - - - - short_id - - - - type - string - - - value - usrpb200 - - - - satnogs_coarse_doppler_correction_cc - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (368, 404) - - - _rotation - 0 - - - id - satnogs_coarse_doppler_correction_cc_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - sampling_rate - samp_rate_rx - - - target_freq - rx_freq - - - - satnogs_doppler_correction_cc - - alias - - - - comment - - - - affinity - - - - corrections_per_sec - 1000 - - - _enabled - 0 - - - _coordinate - (360, 248) - - - _rotation - 0 - - - id - satnogs_doppler_correction_cc_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - sampling_rate - samp_rate_rx - - - target_freq - rx_freq - - - - satnogs_iq_sink - - append - False - - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - filename - iq_file_path - - - _coordinate - (1272, 372) - - - _rotation - 0 - - - id - satnogs_iq_sink_0 - - - scale - 32767 - - - status - enable_iq_dump - - - - satnogs_ogg_encoder - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - filename - file_path - - - _coordinate - (680, 472) - - - _rotation - 180 - - - id - satnogs_ogg_encoder_0 - - - quality - 1.0 - - - samp_rate - audio_samp_rate - - - - satnogs_tcp_rigctl_msg_source - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (16, 204) - - - _rotation - 0 - - - id - satnogs_tcp_rigctl_msg_source_0 - - - addr - "127.0.0.1" - - - mtu - 1500 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - mode - False - - - port - rigctl_port - - - interval - 1000/doppler_correction_per_sec - - - - satnogs_waterfall_sink - - alias - - - - center_freq - 0.0 - - - comment - - - - affinity - - - - _enabled - True - - - fft_size - 1024 - - - filename - waterfall_file_path - - - _coordinate - (1408, 248) - - - _rotation - 0 - - - id - satnogs_waterfall_sink_0 - - - mode - 1 - - - pps - 10 - - - samp_rate - audio_samp_rate - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (638, 985) - - - _rotation - 0 - - - id - waterfall_file_path - - - label - - - - short_id - - - - type - string - - - value - /tmp/waterfall.dat - - - - analog_agc2_xx_0_0 - blocks_multiply_xx_0 - 0 - 1 - - - analog_sig_source_x_0 - blocks_multiply_xx_0 - 0 - 0 - - - blks2_rational_resampler_xxx_1 - low_pass_filter_0 - 0 - 0 - - - blks2_rational_resampler_xxx_1 - satnogs_iq_sink_0 - 0 - 0 - - - blks2_rational_resampler_xxx_1 - satnogs_waterfall_sink_0 - 0 - 0 - - - blocks_complex_to_real_0 - satnogs_ogg_encoder_0 - 0 - 0 - - - blocks_multiply_xx_0 - blocks_complex_to_real_0 - 0 - 0 - - - freq_xlating_fir_filter_xxx_0 - blks2_rational_resampler_xxx_1 - 0 - 0 - - - low_pass_filter_0 - analog_agc2_xx_0_0 - 0 - 0 - - - osmosdr_source_0 - satnogs_coarse_doppler_correction_cc_0 - 0 - 0 - - - satnogs_coarse_doppler_correction_cc_0 - freq_xlating_fir_filter_xxx_0 - 0 - 0 - - - satnogs_doppler_correction_cc_0 - freq_xlating_fir_filter_xxx_0 - 0 - 0 - - - satnogs_tcp_rigctl_msg_source_0 - satnogs_coarse_doppler_correction_cc_0 - freq - freq - - - satnogs_tcp_rigctl_msg_source_0 - satnogs_doppler_correction_cc_0 - freq - freq - - diff --git a/apps/flowgraphs/cw_decoder.grc b/apps/flowgraphs/cw_decoder.grc index b1a9146..b4029a5 100644 --- a/apps/flowgraphs/cw_decoder.grc +++ b/apps/flowgraphs/cw_decoder.grc @@ -969,7 +969,7 @@ tone. This tone is typically 1 kHz. value - 1000 + 20 @@ -3604,7 +3604,7 @@ we shift the LO a little further _coordinate - (8, 140) + (7, 155) _rotation @@ -3640,7 +3640,7 @@ we shift the LO a little further interval - 1000 + int(1000.0/doppler_correction_per_sec) + 1 diff --git a/apps/flowgraphs/example_flowgraph.grc b/apps/flowgraphs/example_flowgraph.grc index eb5afd2..5ca717a 100644 --- a/apps/flowgraphs/example_flowgraph.grc +++ b/apps/flowgraphs/example_flowgraph.grc @@ -1,5 +1,5 @@ - + Thu May 5 00:22:45 2016 @@ -2747,7 +2747,7 @@ doppler correction block. _coordinate - (16, 204) + (7, 211) _rotation @@ -2755,7 +2755,7 @@ doppler correction block. id - satnogs_tcp_rigctl_msg_source_0 + satnogs_tcp_rigctl_msg_source_0_0 addr @@ -2783,7 +2783,7 @@ doppler correction block. interval - 1000/doppler_correction_per_sec + int(1000.0/doppler_correction_per_sec) + 1 @@ -2931,7 +2931,7 @@ doppler correction block. 0 - satnogs_tcp_rigctl_msg_source_0 + satnogs_tcp_rigctl_msg_source_0_0 satnogs_coarse_doppler_correction_cc_0 freq freq diff --git a/apps/flowgraphs/fm_demod.grc b/apps/flowgraphs/fm_demod.grc index 809ebab..12979f8 100644 --- a/apps/flowgraphs/fm_demod.grc +++ b/apps/flowgraphs/fm_demod.grc @@ -1,5 +1,5 @@ - + Thu May 5 00:22:45 2016 @@ -72,6 +72,10 @@ run True + + sizing_mode + fixed + thread_safe_setters @@ -80,6 +84,10 @@ title FM Generic Demodulation + + placement + (0,0) + variable @@ -120,7 +128,7 @@ _coordinate - (928, 1028) + (869, 985) _rotation @@ -174,7 +182,7 @@ _coordinate - (1040, 1028) + (973, 993) _rotation @@ -202,7 +210,7 @@ TX sampling rate _coordinate - (1088, 860) + (1061, 857) _rotation @@ -368,6 +376,10 @@ TX sampling rate short_id + + hide + none + type string @@ -411,6 +423,10 @@ TX sampling rate short_id + + hide + none + type eng_float @@ -513,6 +529,10 @@ TX sampling rate short_id + + hide + none + type string @@ -556,6 +576,10 @@ TX sampling rate short_id + + hide + none + type string @@ -599,6 +623,10 @@ TX sampling rate short_id + + hide + none + type intx @@ -642,6 +670,10 @@ TX sampling rate short_id + + hide + none + type intx @@ -685,6 +717,10 @@ TX sampling rate short_id + + hide + none + type string @@ -787,6 +823,10 @@ TX sampling rate short_id + + hide + none + type eng_float @@ -830,6 +870,10 @@ TX sampling rate short_id + + hide + none + type string @@ -874,6 +918,10 @@ we shift the LO a little further short_id + + hide + none + type eng_float @@ -2402,6 +2450,10 @@ max_modulation_freq = 3000 short_id + + hide + none + type intx @@ -2445,6 +2497,10 @@ max_modulation_freq = 3000 short_id + + hide + none + type eng_float @@ -2488,6 +2544,10 @@ max_modulation_freq = 3000 short_id + + hide + none + type intx @@ -2531,6 +2591,10 @@ max_modulation_freq = 3000 short_id + + hide + none + type eng_float @@ -2574,6 +2638,10 @@ max_modulation_freq = 3000 short_id + + hide + none + type string @@ -2740,7 +2808,7 @@ max_modulation_freq = 3000 _coordinate - (16, 204) + (15, 243) _rotation @@ -2776,7 +2844,7 @@ max_modulation_freq = 3000 interval - 1000/doppler_correction_per_sec + int(1000.0/doppler_correction_per_sec) + 1 @@ -2868,6 +2936,10 @@ max_modulation_freq = 3000 short_id + + hide + none + type string diff --git a/apps/flowgraphs/fsk9600_ax25.grc b/apps/flowgraphs/fsk9600_ax25.grc deleted file mode 100644 index 605fbc9..0000000 --- a/apps/flowgraphs/fsk9600_ax25.grc +++ /dev/null @@ -1,3484 +0,0 @@ - - - - Thu May 5 00:22:45 2016 - - options - - author - Manolis Surligas (surligas@gmail.com) - - - window_size - 3000, 3000 - - - category - Custom - - - comment - - - - description - FSK9600 AX.25 decoder - - - _enabled - True - - - _coordinate - (8, 8) - - - _rotation - 0 - - - generate_options - no_gui - - - hier_block_src_path - .: - - - id - satnogs_fsk9600_ax25 - - - max_nouts - 0 - - - qt_qss_theme - - - - realtime_scheduling - - - - run_command - {python} -u {filename} - - - run_options - run - - - run - True - - - thread_safe_setters - - - - title - FSK9600 AX.25 decoder - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (462, 546) - - - _rotation - 0 - - - id - audio_samp_rate - - - value - 48000 - - - - variable - - comment - - - - _enabled - 1 - - - _coordinate - (111, 769) - - - _rotation - 0 - - - id - baud_rate - - - value - 9600 - - - - variable - - comment - - - - _enabled - 1 - - - _coordinate - (31, 769) - - - _rotation - 0 - - - id - deviation - - - value - 5000 - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (750, 706) - - - _rotation - 0 - - - id - filter_rate - - - value - 250000 - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (207, 769) - - - _rotation - 0 - - - id - modulation_index - - - value - deviation / (baud_rate / 2.0) - - - - variable - - comment - SDR device -TX sampling rate - - - _enabled - True - - - _coordinate - (351, 546) - - - _rotation - 0 - - - id - samp_rate_rx - - - value - satnogs.hw_rx_settings[rx_sdr_device]['samp_rate'] - - - - variable_low_pass_filter_taps - - beta - 6.76 - - - comment - - - - cutoff_freq - 100e3 - - - _enabled - 1 - - - _coordinate - (31, 542) - - - _rotation - 0 - - - gain - 12.0 - - - id - taps - - - samp_rate - samp_rate_rx - - - width - 60000 - - - win - firdes.WIN_HAMMING - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (590, 698) - - - _rotation - 0 - - - id - xlate_filter_taps - - - value - firdes.low_pass(1, samp_rate_rx, 125000, 25000, firdes.WIN_HAMMING, 6.76) - - - - analog_quadrature_demod_cf - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - _coordinate - (1046, 339) - - - _rotation - 180 - - - gain - ((audio_samp_rate) / baud_rate)/(math.pi*modulation_index) - - - id - analog_quadrature_demod_cf_0_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (263, 865) - - - _rotation - 0 - - - id - antenna - - - label - - - - short_id - - - - type - string - - - value - satnogs.not_set_antenna - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (175, 865) - - - _rotation - 0 - - - id - bb_gain - - - label - - - - short_id - - - - type - eng_float - - - value - satnogs.not_set_rx_bb_gain - - - - rational_resampler_xxx - - alias - - - - comment - - - - affinity - - - - decim - int(samp_rate_rx / (int(samp_rate_rx/filter_rate))) - - - _enabled - True - - - fbw - 0 - - - _coordinate - (1272, 268) - - - _rotation - 0 - - - id - blks2_rational_resampler_xxx_1 - - - interp - 48000 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - taps - [] - - - type - ccc - - - - dc_blocker_xx - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - _coordinate - (855, 427) - - - _rotation - 0 - - - id - dc_blocker_xx_0 - - - length - 1024 - - - long_form - True - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - type - ff - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (199, 546) - - - _rotation - 0 - - - id - decoded_data_file_path - - - label - - - - short_id - - - - type - string - - - value - /tmp/.satnogs/data/data - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (470, 690) - - - _rotation - 0 - - - id - dev_args - - - label - - - - short_id - - - - type - string - - - value - satnogs.not_set_dev_args - - - - digital_binary_slicer_fb - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (1675, 446) - - - _rotation - 0 - - - id - digital_binary_slicer_fb_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - - digital_clock_recovery_mm_xx - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (1262, 407) - - - _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 - 48e3/9600 - - - type - float - - - - digital_costas_loop_cc - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - _coordinate - (1022, 255) - - - _rotation - 0 - - - id - digital_costas_loop_cc_0 - - - w - 2.0 * math.pi / 100.0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - order - 2 - - - use_snr - False - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (31, 690) - - - _rotation - 0 - - - id - doppler_correction_per_sec - - - label - - - - short_id - - - - type - intx - - - value - 1000 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (343, 865) - - - _rotation - 0 - - - id - enable_iq_dump - - - label - - - - short_id - - - - type - intx - - - value - 0 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (167, 945) - - - _rotation - 180 - - - id - file_path - - - label - - - - short_id - - - - type - string - - - value - test.wav - - - - freq_xlating_fir_filter_xxx - - alias - - - - center_freq - lo_offset - - - comment - - - - affinity - - - - decim - int(samp_rate_rx/filter_rate) - - - _enabled - 1 - - - _coordinate - (680, 268) - - - _rotation - 0 - - - id - freq_xlating_fir_filter_xxx_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - samp_rate - samp_rate_rx - - - taps - xlate_filter_taps - - - type - ccc - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (95, 865) - - - _rotation - 0 - - - id - if_gain - - - label - - - - short_id - - - - type - eng_float - - - value - satnogs.not_set_rx_if_gain - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (470, 865) - - - _rotation - 0 - - - id - iq_file_path - - - label - - - - short_id - - - - type - string - - - value - /tmp/iq.dat - - - - parameter - - alias - - - - comment - To avoid the SDR carrier at the DC -we shift the LO a little further - - - _enabled - True - - - _coordinate - (263, 945) - - - _rotation - 0 - - - id - lo_offset - - - label - - - - short_id - - - - type - eng_float - - - value - 100e3 - - - - low_pass_filter - - beta - 6.76 - - - alias - - - - comment - - - - affinity - - - - cutoff_freq - 7850 - - - decim - 1 - - - _enabled - True - - - type - fir_filter_fff - - - _coordinate - (1054, 391) - - - _rotation - 0 - - - gain - 1 - - - id - low_pass_filter_0 - - - interp - 1 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - samp_rate - audio_samp_rate - - - width - audio_samp_rate * 0.15 - - - win - firdes.WIN_HAMMING - - - - osmosdr_source - - alias - - - - ant0 - satnogs.handle_rx_antenna(rx_sdr_device, antenna) - - - bb_gain0 - satnogs.handle_rx_bb_gain(rx_sdr_device, bb_gain) - - - bw0 - samp_rate_rx - - - dc_offset_mode0 - 2 - - - corr0 - ppm - - - freq0 - rx_freq - lo_offset - - - gain_mode0 - False - - - if_gain0 - satnogs.handle_rx_if_gain(rx_sdr_device, if_gain) - - - iq_balance_mode0 - 0 - - - gain0 - satnogs.handle_rx_rf_gain(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.handle_rx_dev_args(rx_sdr_device, dev_args) - - - _enabled - 1 - - - _coordinate - (15, 319) - - - _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 - - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (470, 945) - - - _rotation - 0 - - - id - ppm - - - label - - - - short_id - - - - type - intx - - - value - 0 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (23, 865) - - - _rotation - 0 - - - id - rf_gain - - - label - - - - short_id - - - - type - eng_float - - - value - satnogs.not_set_rx_rf_gain - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (382, 690) - - - _rotation - 0 - - - id - rigctl_port - - - label - - - - short_id - - - - type - intx - - - value - 4532 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (303, 690) - - - _rotation - 0 - - - id - rx_freq - - - label - - - - short_id - - - - type - eng_float - - - value - 100e6 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (191, 690) - - - _rotation - 0 - - - id - rx_sdr_device - - - label - - - - short_id - - - - type - string - - - value - usrpb200 - - - - satnogs_ax25_decoder_bm - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - descrambling - False - - - _coordinate - (1374, 543) - - - _rotation - 180 - - - id - satnogs_ax25_decoder_bm_0 - - - maxoutbuf - 0 - - - max_frame_len - 1024 - - - minoutbuf - 0 - - - promisc - True - - - addr - 'GND' - - - ssid - 0 - - - - satnogs_coarse_doppler_correction_cc - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - _coordinate - (352, 276) - - - _rotation - 0 - - - id - satnogs_coarse_doppler_correction_cc_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - sampling_rate - samp_rate_rx - - - target_freq - rx_freq - - - - satnogs_frame_file_sink - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - _coordinate - (1148, 546) - - - _rotation - 180 - - - id - satnogs_frame_file_sink_0_1_0 - - - output_type - 0 - - - prefix_name - decoded_data_file_path - - - - satnogs_iq_sink - - append - False - - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - filename - /tmp/iq.bin - - - _coordinate - (1286, 139) - - - _rotation - 0 - - - id - satnogs_iq_sink_0 - - - scale - 16768 - - - status - enable_iq_dump - - - - satnogs_ogg_encoder - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - filename - file_path - - - _coordinate - (831, 499) - - - _rotation - 180 - - - id - satnogs_ogg_encoder_0 - - - quality - 1.0 - - - samp_rate - audio_samp_rate - - - - satnogs_quad_demod_filter_ff - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - _coordinate - (1460, 434) - - - _rotation - 0 - - - gain - ((audio_samp_rate) / baud_rate)/(math.pi*modulation_index) - - - id - satnogs_quad_demod_filter_ff_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - win - 80 - - - - satnogs_tcp_rigctl_msg_source - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (16, 204) - - - _rotation - 0 - - - id - satnogs_tcp_rigctl_msg_source_0 - - - addr - "127.0.0.1" - - - mtu - 1500 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - mode - False - - - port - rigctl_port - - - interval - 1000 - - - - satnogs_udp_msg_sink - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (1180, 650) - - - _rotation - 180 - - - id - satnogs_udp_msg_sink_0_0 - - - addr - udp_IP - - - mtu - 1500 - - - port - udp_port - - - - satnogs_waterfall_sink - - alias - - - - center_freq - 0.0 - - - comment - - - - affinity - - - - _enabled - True - - - fft_size - 1024 - - - filename - waterfall_file_path - - - _coordinate - (1486, 255) - - - _rotation - 0 - - - id - satnogs_waterfall_sink_0 - - - mode - 1 - - - pps - 10 - - - samp_rate - audio_samp_rate - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (837, 706) - - - _rotation - 0 - - - id - udp_IP - - - label - - - - short_id - - - - type - string - - - value - 127.0.0.1 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (949, 706) - - - _rotation - 0 - - - id - udp_port - - - label - - - - short_id - - - - type - intx - - - value - 16887 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (23, 945) - - - _rotation - 0 - - - id - waterfall_file_path - - - label - - - - short_id - - - - type - string - - - value - /tmp/waterfall.dat - - - - analog_quadrature_demod_cf_0_0 - dc_blocker_xx_0 - 0 - 0 - - - blks2_rational_resampler_xxx_1 - analog_quadrature_demod_cf_0_0 - 0 - 0 - - - blks2_rational_resampler_xxx_1 - satnogs_iq_sink_0 - 0 - 0 - - - blks2_rational_resampler_xxx_1 - satnogs_waterfall_sink_0 - 0 - 0 - - - dc_blocker_xx_0 - low_pass_filter_0 - 0 - 0 - - - digital_binary_slicer_fb_0 - satnogs_ax25_decoder_bm_0 - 0 - 0 - - - digital_clock_recovery_mm_xx_0 - satnogs_quad_demod_filter_ff_0 - 0 - 0 - - - digital_costas_loop_cc_0 - blks2_rational_resampler_xxx_1 - 0 - 0 - - - freq_xlating_fir_filter_xxx_0 - digital_costas_loop_cc_0 - 0 - 0 - - - low_pass_filter_0 - digital_clock_recovery_mm_xx_0 - 0 - 0 - - - low_pass_filter_0 - satnogs_ogg_encoder_0 - 0 - 0 - - - osmosdr_source_0 - satnogs_coarse_doppler_correction_cc_0 - 0 - 0 - - - satnogs_ax25_decoder_bm_0 - satnogs_frame_file_sink_0_1_0 - pdu - frame - - - satnogs_ax25_decoder_bm_0 - satnogs_udp_msg_sink_0_0 - pdu - in - - - satnogs_coarse_doppler_correction_cc_0 - freq_xlating_fir_filter_xxx_0 - 0 - 0 - - - satnogs_quad_demod_filter_ff_0 - digital_binary_slicer_fb_0 - 0 - 0 - - - satnogs_tcp_rigctl_msg_source_0 - satnogs_coarse_doppler_correction_cc_0 - freq - freq - - diff --git a/apps/flowgraphs/fsk9600_g3ruh_ax25.grc b/apps/flowgraphs/fsk9600_g3ruh_ax25.grc deleted file mode 100644 index 6e9e592..0000000 --- a/apps/flowgraphs/fsk9600_g3ruh_ax25.grc +++ /dev/null @@ -1,3484 +0,0 @@ - - - - Thu May 5 00:22:45 2016 - - options - - author - Manolis Surligas (surligas@gmail.com) - - - window_size - 3000, 3000 - - - category - Custom - - - comment - - - - description - FSK9600 AX.25 decoder with G3RUH support - - - _enabled - True - - - _coordinate - (8, 8) - - - _rotation - 0 - - - generate_options - no_gui - - - hier_block_src_path - .: - - - id - satnogs_fsk9600_g3ruh_ax25 - - - max_nouts - 0 - - - qt_qss_theme - - - - realtime_scheduling - - - - run_command - {python} -u {filename} - - - run_options - run - - - run - True - - - thread_safe_setters - - - - title - FSK9600 AX.25 decoder with G3RUH support - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (446, 586) - - - _rotation - 0 - - - id - audio_samp_rate - - - value - 48000 - - - - variable - - comment - - - - _enabled - 1 - - - _coordinate - (95, 809) - - - _rotation - 0 - - - id - baud_rate - - - value - 9600 - - - - variable - - comment - - - - _enabled - 1 - - - _coordinate - (15, 809) - - - _rotation - 0 - - - id - deviation - - - value - 5000 - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (734, 746) - - - _rotation - 0 - - - id - filter_rate - - - value - 250000 - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (191, 809) - - - _rotation - 0 - - - id - modulation_index - - - value - deviation / (baud_rate / 2.0) - - - - variable - - comment - SDR device -TX sampling rate - - - _enabled - True - - - _coordinate - (335, 586) - - - _rotation - 0 - - - id - samp_rate_rx - - - value - satnogs.hw_rx_settings[rx_sdr_device]['samp_rate'] - - - - variable_low_pass_filter_taps - - beta - 6.76 - - - comment - - - - cutoff_freq - 100e3 - - - _enabled - 1 - - - _coordinate - (15, 590) - - - _rotation - 0 - - - gain - 12.0 - - - id - taps - - - samp_rate - samp_rate_rx - - - width - 60000 - - - win - firdes.WIN_HAMMING - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (574, 738) - - - _rotation - 0 - - - id - xlate_filter_taps - - - value - firdes.low_pass(1, samp_rate_rx, 125000, 25000, firdes.WIN_HAMMING, 6.76) - - - - analog_quadrature_demod_cf - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - _coordinate - (1046, 339) - - - _rotation - 180 - - - gain - ((audio_samp_rate) / baud_rate)/(math.pi*modulation_index) - - - id - analog_quadrature_demod_cf_0_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (247, 905) - - - _rotation - 0 - - - id - antenna - - - label - - - - short_id - - - - type - string - - - value - satnogs.not_set_antenna - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (159, 905) - - - _rotation - 0 - - - id - bb_gain - - - label - - - - short_id - - - - type - eng_float - - - value - satnogs.not_set_rx_bb_gain - - - - rational_resampler_xxx - - alias - - - - comment - - - - affinity - - - - decim - int(samp_rate_rx / (int(samp_rate_rx/filter_rate))) - - - _enabled - True - - - fbw - 0 - - - _coordinate - (1272, 268) - - - _rotation - 0 - - - id - blks2_rational_resampler_xxx_1 - - - interp - 48000 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - taps - [] - - - type - ccc - - - - dc_blocker_xx - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - _coordinate - (855, 427) - - - _rotation - 0 - - - id - dc_blocker_xx_0 - - - length - 1024 - - - long_form - True - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - type - ff - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (183, 586) - - - _rotation - 0 - - - id - decoded_data_file_path - - - label - - - - short_id - - - - type - string - - - value - /tmp/.satnogs/data/data - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (454, 730) - - - _rotation - 0 - - - id - dev_args - - - label - - - - short_id - - - - type - string - - - value - satnogs.not_set_dev_args - - - - digital_binary_slicer_fb - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (1723, 446) - - - _rotation - 0 - - - id - digital_binary_slicer_fb_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - - digital_clock_recovery_mm_xx - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (1262, 407) - - - _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 - 48e3/9600 - - - type - float - - - - digital_costas_loop_cc - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - _coordinate - (968, 148) - - - _rotation - 0 - - - id - digital_costas_loop_cc_0 - - - w - 2.0 * math.pi / 100.0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - order - 2 - - - use_snr - False - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (15, 730) - - - _rotation - 0 - - - id - doppler_correction_per_sec - - - label - - - - short_id - - - - type - intx - - - value - 1000 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (327, 905) - - - _rotation - 0 - - - id - enable_iq_dump - - - label - - - - short_id - - - - type - intx - - - value - 0 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (151, 985) - - - _rotation - 180 - - - id - file_path - - - label - - - - short_id - - - - type - string - - - value - test.wav - - - - freq_xlating_fir_filter_xxx - - alias - - - - center_freq - lo_offset - - - comment - - - - affinity - - - - decim - int(samp_rate_rx/filter_rate) - - - _enabled - 1 - - - _coordinate - (680, 268) - - - _rotation - 0 - - - id - freq_xlating_fir_filter_xxx_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - samp_rate - samp_rate_rx - - - taps - xlate_filter_taps - - - type - ccc - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (79, 905) - - - _rotation - 0 - - - id - if_gain - - - label - - - - short_id - - - - type - eng_float - - - value - satnogs.not_set_rx_if_gain - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (454, 905) - - - _rotation - 0 - - - id - iq_file_path - - - label - - - - short_id - - - - type - string - - - value - /tmp/iq.dat - - - - parameter - - alias - - - - comment - To avoid the SDR carrier at the DC -we shift the LO a little further - - - _enabled - True - - - _coordinate - (247, 985) - - - _rotation - 0 - - - id - lo_offset - - - label - - - - short_id - - - - type - eng_float - - - value - 100e3 - - - - low_pass_filter - - beta - 6.76 - - - alias - - - - comment - - - - affinity - - - - cutoff_freq - 7850 - - - decim - 1 - - - _enabled - True - - - type - fir_filter_fff - - - _coordinate - (1054, 391) - - - _rotation - 0 - - - gain - 1 - - - id - low_pass_filter_0 - - - interp - 1 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - samp_rate - audio_samp_rate - - - width - audio_samp_rate * 0.15 - - - win - firdes.WIN_HAMMING - - - - osmosdr_source - - alias - - - - ant0 - satnogs.handle_rx_antenna(rx_sdr_device, antenna) - - - bb_gain0 - satnogs.handle_rx_bb_gain(rx_sdr_device, bb_gain) - - - bw0 - samp_rate_rx - - - dc_offset_mode0 - 2 - - - corr0 - ppm - - - freq0 - rx_freq - lo_offset - - - gain_mode0 - False - - - if_gain0 - satnogs.handle_rx_if_gain(rx_sdr_device, if_gain) - - - iq_balance_mode0 - 0 - - - gain0 - satnogs.handle_rx_rf_gain(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.handle_rx_dev_args(rx_sdr_device, dev_args) - - - _enabled - 1 - - - _coordinate - (15, 311) - - - _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 - - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (454, 985) - - - _rotation - 0 - - - id - ppm - - - label - - - - short_id - - - - type - intx - - - value - 0 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (7, 905) - - - _rotation - 0 - - - id - rf_gain - - - label - - - - short_id - - - - type - eng_float - - - value - satnogs.not_set_rx_rf_gain - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (367, 730) - - - _rotation - 0 - - - id - rigctl_port - - - label - - - - short_id - - - - type - intx - - - value - 4532 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (287, 730) - - - _rotation - 0 - - - id - rx_freq - - - label - - - - short_id - - - - type - eng_float - - - value - 100e6 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (175, 730) - - - _rotation - 0 - - - id - rx_sdr_device - - - label - - - - short_id - - - - type - string - - - value - usrpb200 - - - - satnogs_ax25_decoder_bm - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - descrambling - True - - - _coordinate - (1528, 560) - - - _rotation - 180 - - - id - satnogs_ax25_decoder_bm_0 - - - maxoutbuf - 0 - - - max_frame_len - 1024 - - - minoutbuf - 0 - - - promisc - True - - - addr - 'GND' - - - ssid - 0 - - - - satnogs_coarse_doppler_correction_cc - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - _coordinate - (352, 276) - - - _rotation - 0 - - - id - satnogs_coarse_doppler_correction_cc_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - sampling_rate - samp_rate_rx - - - target_freq - rx_freq - - - - satnogs_frame_file_sink - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - _coordinate - (1156, 602) - - - _rotation - 180 - - - id - satnogs_frame_file_sink_0_1_0 - - - output_type - 0 - - - prefix_name - decoded_data_file_path - - - - satnogs_iq_sink - - append - False - - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - filename - iq_file_path - - - _coordinate - (1286, 139) - - - _rotation - 0 - - - id - satnogs_iq_sink_0 - - - scale - 16768 - - - status - enable_iq_dump - - - - satnogs_ogg_encoder - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - filename - file_path - - - _coordinate - (792, 528) - - - _rotation - 180 - - - id - satnogs_ogg_encoder_0 - - - quality - 1.0 - - - samp_rate - audio_samp_rate - - - - satnogs_quad_demod_filter_ff - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - _coordinate - (1476, 434) - - - _rotation - 0 - - - gain - ((audio_samp_rate) / baud_rate)/(math.pi*modulation_index) - - - id - satnogs_quad_demod_filter_ff_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - win - 80 - - - - satnogs_tcp_rigctl_msg_source - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (16, 204) - - - _rotation - 0 - - - id - satnogs_tcp_rigctl_msg_source_0 - - - addr - "127.0.0.1" - - - mtu - 1500 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - mode - False - - - port - rigctl_port - - - interval - 1000 - - - - satnogs_udp_msg_sink - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (1188, 690) - - - _rotation - 180 - - - id - satnogs_udp_msg_sink_0_0 - - - addr - udp_IP - - - mtu - 1500 - - - port - udp_port - - - - satnogs_waterfall_sink - - alias - - - - center_freq - 0.0 - - - comment - - - - affinity - - - - _enabled - True - - - fft_size - 1024 - - - filename - waterfall_file_path - - - _coordinate - (1486, 255) - - - _rotation - 0 - - - id - satnogs_waterfall_sink_0 - - - mode - 1 - - - pps - 10 - - - samp_rate - audio_samp_rate - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (837, 746) - - - _rotation - 0 - - - id - udp_IP - - - label - - - - short_id - - - - type - string - - - value - 127.0.0.1 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (949, 746) - - - _rotation - 0 - - - id - udp_port - - - label - - - - short_id - - - - type - intx - - - value - 16887 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (7, 985) - - - _rotation - 0 - - - id - waterfall_file_path - - - label - - - - short_id - - - - type - string - - - value - /tmp/waterfall.dat - - - - analog_quadrature_demod_cf_0_0 - dc_blocker_xx_0 - 0 - 0 - - - blks2_rational_resampler_xxx_1 - analog_quadrature_demod_cf_0_0 - 0 - 0 - - - blks2_rational_resampler_xxx_1 - satnogs_iq_sink_0 - 0 - 0 - - - blks2_rational_resampler_xxx_1 - satnogs_waterfall_sink_0 - 0 - 0 - - - dc_blocker_xx_0 - low_pass_filter_0 - 0 - 0 - - - digital_binary_slicer_fb_0 - satnogs_ax25_decoder_bm_0 - 0 - 0 - - - digital_clock_recovery_mm_xx_0 - satnogs_quad_demod_filter_ff_0 - 0 - 0 - - - digital_costas_loop_cc_0 - blks2_rational_resampler_xxx_1 - 0 - 0 - - - freq_xlating_fir_filter_xxx_0 - digital_costas_loop_cc_0 - 0 - 0 - - - low_pass_filter_0 - digital_clock_recovery_mm_xx_0 - 0 - 0 - - - low_pass_filter_0 - satnogs_ogg_encoder_0 - 0 - 0 - - - osmosdr_source_0 - satnogs_coarse_doppler_correction_cc_0 - 0 - 0 - - - satnogs_ax25_decoder_bm_0 - satnogs_frame_file_sink_0_1_0 - pdu - frame - - - satnogs_ax25_decoder_bm_0 - satnogs_udp_msg_sink_0_0 - pdu - in - - - satnogs_coarse_doppler_correction_cc_0 - freq_xlating_fir_filter_xxx_0 - 0 - 0 - - - satnogs_quad_demod_filter_ff_0 - digital_binary_slicer_fb_0 - 0 - 0 - - - satnogs_tcp_rigctl_msg_source_0 - satnogs_coarse_doppler_correction_cc_0 - freq - freq - - diff --git a/apps/flowgraphs/fsk_ax25.grc b/apps/flowgraphs/fsk_ax25.grc index ee848f4..6aa9f97 100644 --- a/apps/flowgraphs/fsk_ax25.grc +++ b/apps/flowgraphs/fsk_ax25.grc @@ -116,6 +116,108 @@ 48000 + + variable_ax25_decoder + + comment + + + + _enabled + True + + + descrambling + True + + + _coordinate + (1212, 801) + + + _rotation + 0 + + + id + variable_ax25_decoder_0 + + + value + 'ok' + + + frame_len + 512 + + + crc_check + True + + + promisc + True + + + addr + 'GND' + + + ssid + 0 + + + + variable_ax25_decoder + + comment + + + + _enabled + True + + + descrambling + False + + + _coordinate + (1372, 801) + + + _rotation + 0 + + + id + variable_ax25_decoder_0_0 + + + value + 'ok' + + + frame_len + 512 + + + crc_check + True + + + promisc + True + + + addr + 'GND' + + + ssid + 0 + + analog_quadrature_demod_cf @@ -861,7 +963,7 @@ _coordinate - (1512, 592) + (1523, 606) _rotation @@ -900,7 +1002,7 @@ _coordinate - (1768, 556) + (1771, 570) _rotation @@ -987,7 +1089,7 @@ value - 1000 + 20 @@ -3222,124 +3324,6 @@ we shift the LO a little further satnogs.not_set_samp_rate_rx - - satnogs_ax25_decoder_bm - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - descrambling - True - - - _coordinate - (1240, 492) - - - _rotation - 180 - - - id - satnogs_ax25_decoder_bm_0 - - - maxoutbuf - 0 - - - max_frame_len - 1024 - - - minoutbuf - 0 - - - promisc - True - - - addr - 'GND' - - - ssid - 0 - - - - satnogs_ax25_decoder_bm - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - descrambling - False - - - _coordinate - (1240, 612) - - - _rotation - 180 - - - id - satnogs_ax25_decoder_bm_0_0 - - - maxoutbuf - 0 - - - max_frame_len - 1024 - - - minoutbuf - 0 - - - promisc - True - - - addr - 'GND' - - - ssid - 0 - - satnogs_coarse_doppler_correction_cc @@ -3387,6 +3371,100 @@ we shift the LO a little further rx_freq + + satnogs_frame_decoder + + alias + + + + comment + + + + affinity + + + + decoder_object + variable_ax25_decoder_0 + + + _enabled + True + + + _coordinate + (1220, 638) + + + _rotation + 180 + + + id + satnogs_frame_decoder_0_0 + + + itype + byte + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + + satnogs_frame_decoder + + alias + + + + comment + + + + affinity + + + + decoder_object + variable_ax25_decoder_0_0 + + + _enabled + 1 + + + _coordinate + (1220, 566) + + + _rotation + 180 + + + id + satnogs_frame_decoder_0_0_0 + + + itype + byte + + + maxoutbuf + 0 + + + minoutbuf + 0 + + satnogs_frame_file_sink @@ -3407,7 +3485,7 @@ we shift the LO a little further _coordinate - (936, 684) + (885, 730) _rotation @@ -3536,7 +3614,7 @@ we shift the LO a little further _coordinate - (216, 148) + (215, 147) _rotation @@ -3572,7 +3650,7 @@ we shift the LO a little further interval - 1000 + int(1000.0/doppler_correction_per_sec) + 1 @@ -3595,7 +3673,7 @@ we shift the LO a little further _coordinate - (936, 596) + (885, 634) _rotation @@ -3876,13 +3954,13 @@ we shift the LO a little further digital_binary_slicer_fb_0 - satnogs_ax25_decoder_bm_0 + satnogs_frame_decoder_0_0 0 0 digital_binary_slicer_fb_0 - satnogs_ax25_decoder_bm_0_0 + satnogs_frame_decoder_0_0_0 0 0 @@ -3946,36 +4024,36 @@ we shift the LO a little further 0 0 - - satnogs_ax25_decoder_bm_0 - satnogs_frame_file_sink_0_1_0 - pdu - frame - - - satnogs_ax25_decoder_bm_0 - satnogs_udp_msg_sink_0_0 - pdu - in - - - satnogs_ax25_decoder_bm_0_0 - satnogs_frame_file_sink_0_1_0 - pdu - frame - - - satnogs_ax25_decoder_bm_0_0 - satnogs_udp_msg_sink_0_0 - pdu - in - satnogs_coarse_doppler_correction_cc_0 pfb_arb_resampler_xxx_0 0 0 + + satnogs_frame_decoder_0_0 + satnogs_frame_file_sink_0_1_0 + out + frame + + + satnogs_frame_decoder_0_0 + satnogs_udp_msg_sink_0_0 + out + in + + + satnogs_frame_decoder_0_0_0 + satnogs_frame_file_sink_0_1_0 + out + frame + + + satnogs_frame_decoder_0_0_0 + satnogs_udp_msg_sink_0_0 + out + in + satnogs_tcp_rigctl_msg_source_0 satnogs_coarse_doppler_correction_cc_0 diff --git a/apps/flowgraphs/generic_iq_receiver.grc b/apps/flowgraphs/generic_iq_receiver.grc deleted file mode 100644 index 12b6e3b..0000000 --- a/apps/flowgraphs/generic_iq_receiver.grc +++ /dev/null @@ -1,2858 +0,0 @@ - - - - Thu May 5 00:22:45 2016 - - options - - author - Manolis Surligas (surligas@gmail.com) - - - window_size - - - - category - Custom - - - comment - - - - description - A generic FM demodulation block - - - _enabled - True - - - _coordinate - (8, 8) - - - _rotation - 0 - - - generate_options - no_gui - - - hier_block_src_path - .: - - - id - satnogs_generic_iq_receiver - - - max_nouts - 0 - - - qt_qss_theme - - - - realtime_scheduling - - - - run_command - {python} -u {filename} - - - run_options - run - - - run - True - - - thread_safe_setters - - - - title - Generic IQ samples receiver - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (568, 508) - - - _rotation - 0 - - - id - audio_decimation - - - value - 2 - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (568, 580) - - - _rotation - 0 - - - id - audio_samp_rate - - - value - 44100 - - - - variable - - comment - Decimation factor -for the RX after the -SDR received samples - - - _enabled - True - - - _coordinate - (192, 612) - - - _rotation - 0 - - - id - decimation_rx - - - value - satnogs.fm_demod_settings[rx_sdr_device]['decimation_rx'] - - - - variable - - comment - - - - _enabled - True - - - _coordinate - (432, 476) - - - _rotation - 0 - - - id - quadrature_rate - - - value - samp_rate_rx / decimation_rx - - - - variable - - comment - SDR device -TX sampling rate - - - _enabled - True - - - _coordinate - (192, 484) - - - _rotation - 0 - - - id - samp_rate_rx - - - value - satnogs.hw_rx_settings[rx_sdr_device]['samp_rate'] - - - - variable_low_pass_filter_taps - - beta - 6.76 - - - comment - - - - cutoff_freq - 100e3 - - - _enabled - 1 - - - _coordinate - (560, 648) - - - _rotation - 0 - - - gain - 12.0 - - - id - taps - - - samp_rate - samp_rate_rx - - - width - 60000 - - - win - firdes.WIN_HAMMING - - - - analog_sig_source_x - - amp - 1 - - - alias - - - - comment - - - - affinity - - - - _enabled - 0 - - - freq - -lo_offset - - - _coordinate - (312, 24) - - - _rotation - 0 - - - id - analog_sig_source_x_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - offset - 0 - - - type - complex - - - samp_rate - samp_rate_rx - - - waveform - analog.GR_COS_WAVE - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (398, 937) - - - _rotation - 0 - - - id - antenna - - - label - - - - short_id - - - - type - string - - - value - satnogs.not_set_antenna - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (311, 937) - - - _rotation - 0 - - - id - bb_gain - - - label - - - - short_id - - - - type - eng_float - - - value - satnogs.not_set_rx_bb_gain - - - - blocks_file_sink - - append - False - - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - file - file_path - - - _coordinate - (1136, 284) - - - _rotation - 0 - - - id - blocks_file_sink_0 - - - type - complex - - - unbuffered - True - - - vlen - 1 - - - - blocks_multiply_xx - - alias - - - - comment - - - - affinity - - - - _enabled - 0 - - - _coordinate - (568, 64) - - - _rotation - 0 - - - id - blocks_multiply_xx_0 - - - type - complex - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - num_inputs - 2 - - - vlen - 1 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (63, 937) - - - _rotation - 0 - - - id - dev_args - - - label - - - - short_id - - - - type - string - - - value - satnogs.not_set_dev_args - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (64, 860) - - - _rotation - 0 - - - id - doppler_correction_per_sec - - - label - - - - short_id - - - - type - intx - - - value - 20 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (64, 620) - - - _rotation - 0 - - - id - file_path - - - label - - - - short_id - - - - type - string - - - value - test.wav - - - - freq_xlating_fir_filter_xxx - - alias - - - - center_freq - lo_offset - - - comment - - - - affinity - - - - decim - decimation_rx - - - _enabled - 1 - - - _coordinate - (896, 280) - - - _rotation - 0 - - - id - freq_xlating_fir_filter_xxx_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - samp_rate - samp_rate_rx - - - taps - taps - - - type - ccc - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (231, 937) - - - _rotation - 0 - - - id - if_gain - - - label - - - - short_id - - - - type - eng_float - - - value - satnogs.not_set_rx_if_gain - - - - parameter - - alias - - - - comment - To avoid the SDR carrier at the DC -we shift the LO a little further - - - _enabled - True - - - _coordinate - (328, 476) - - - _rotation - 0 - - - id - lo_offset - - - label - - - - short_id - - - - type - eng_float - - - value - 100e3 - - - - osmosdr_source - - alias - - - - ant0 - satnogs.handle_rx_antenna(rx_sdr_device, antenna) - - - bb_gain0 - satnogs.handle_rx_bb_gain(rx_sdr_device, bb_gain) - - - bw0 - samp_rate_rx - - - dc_offset_mode0 - 2 - - - corr0 - ppm - - - freq0 - rx_freq - lo_offset - - - gain_mode0 - False - - - if_gain0 - satnogs.handle_rx_if_gain(rx_sdr_device, if_gain) - - - iq_balance_mode0 - 0 - - - gain0 - satnogs.handle_rx_rf_gain(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.handle_rx_dev_args(rx_sdr_device, dev_args) - - - _enabled - 1 - - - _coordinate - (23, 271) - - - _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 - - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (183, 769) - - - _rotation - 0 - - - id - ppm - - - label - - - - short_id - - - - type - intx - - - value - 0 - - - - qtgui_freq_sink_x - - autoscale - False - - - average - 0.2 - - - axislabels - True - - - bw - samp_rate_rx - - - alias - - - - fc - 0 - - - comment - - - - ctrlpanel - True - - - affinity - - - - _enabled - 0 - - - fftsize - 1024 - - - _coordinate - (792, 28) - - - 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 - - - label - Relative Gain - - - ymax - 10 - - - ymin - -140 - - - units - dB - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (159, 937) - - - _rotation - 0 - - - id - rf_gain - - - label - - - - short_id - - - - type - eng_float - - - value - satnogs.not_set_rx_rf_gain - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (64, 780) - - - _rotation - 0 - - - id - rigctl_port - - - label - - - - short_id - - - - type - intx - - - value - 4532 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (64, 700) - - - _rotation - 0 - - - id - rx_freq - - - label - - - - short_id - - - - type - eng_float - - - value - 100e6 - - - - parameter - - alias - - - - comment - - - - _enabled - True - - - _coordinate - (64, 484) - - - _rotation - 0 - - - id - rx_sdr_device - - - label - - - - short_id - - - - type - string - - - value - usrpb200 - - - - satnogs_coarse_doppler_correction_cc - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - _coordinate - (568, 288) - - - _rotation - 0 - - - id - satnogs_coarse_doppler_correction_cc_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - sampling_rate - samp_rate_rx - - - target_freq - rx_freq - - - - satnogs_tcp_rigctl_msg_source - - alias - - - - comment - - - - affinity - - - - _enabled - 1 - - - _coordinate - (24, 164) - - - _rotation - 0 - - - id - satnogs_tcp_rigctl_msg_source_0 - - - addr - "127.0.0.1" - - - mtu - 1500 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - mode - False - - - port - rigctl_port - - - interval - 1000/doppler_correction_per_sec - - - - analog_sig_source_x_0 - blocks_multiply_xx_0 - 0 - 0 - - - blocks_multiply_xx_0 - qtgui_freq_sink_x_0 - 0 - 0 - - - freq_xlating_fir_filter_xxx_0 - blocks_file_sink_0 - 0 - 0 - - - osmosdr_source_0 - satnogs_coarse_doppler_correction_cc_0 - 0 - 0 - - - satnogs_coarse_doppler_correction_cc_0 - freq_xlating_fir_filter_xxx_0 - 0 - 0 - - - satnogs_tcp_rigctl_msg_source_0 - satnogs_coarse_doppler_correction_cc_0 - freq - freq - - diff --git a/apps/flowgraphs/msk_ax25.grc b/apps/flowgraphs/msk_ax25.grc index c42e5da..c2e815e 100644 --- a/apps/flowgraphs/msk_ax25.grc +++ b/apps/flowgraphs/msk_ax25.grc @@ -116,6 +116,108 @@ 48000 + + variable_ax25_decoder + + comment + + + + _enabled + True + + + descrambling + True + + + _coordinate + (1196, 777) + + + _rotation + 0 + + + id + variable_ax25_decoder_0 + + + value + 'ok' + + + frame_len + 512 + + + crc_check + True + + + promisc + True + + + addr + 'GND' + + + ssid + 0 + + + + variable_ax25_decoder + + comment + + + + _enabled + True + + + descrambling + False + + + _coordinate + (1356, 777) + + + _rotation + 0 + + + id + variable_ax25_decoder_0_0 + + + value + 'ok' + + + frame_len + 512 + + + crc_check + True + + + promisc + True + + + addr + 'GND' + + + ssid + 0 + + analog_quadrature_demod_cf @@ -987,7 +1089,7 @@ value - 1000 + 20 @@ -1147,7 +1249,7 @@ _coordinate - (8, 148) + (7, 179) _rotation @@ -3222,124 +3324,6 @@ we shift the LO a little further satnogs.not_set_samp_rate_rx - - satnogs_ax25_decoder_bm - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - descrambling - True - - - _coordinate - (1240, 492) - - - _rotation - 180 - - - id - satnogs_ax25_decoder_bm_0 - - - maxoutbuf - 0 - - - max_frame_len - 1024 - - - minoutbuf - 0 - - - promisc - True - - - addr - 'GND' - - - ssid - 0 - - - - satnogs_ax25_decoder_bm - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - descrambling - False - - - _coordinate - (1240, 612) - - - _rotation - 180 - - - id - satnogs_ax25_decoder_bm_0_0 - - - maxoutbuf - 0 - - - max_frame_len - 1024 - - - minoutbuf - 0 - - - promisc - True - - - addr - 'GND' - - - ssid - 0 - - satnogs_coarse_doppler_correction_cc @@ -3387,6 +3371,100 @@ we shift the LO a little further rx_freq + + satnogs_frame_decoder + + alias + + + + comment + + + + affinity + + + + decoder_object + variable_ax25_decoder_0 + + + _enabled + True + + + _coordinate + (1204, 606) + + + _rotation + 180 + + + id + satnogs_frame_decoder_0_0 + + + itype + byte + + + maxoutbuf + 0 + + + minoutbuf + 0 + + + + satnogs_frame_decoder + + alias + + + + comment + + + + affinity + + + + decoder_object + variable_ax25_decoder_0_0 + + + _enabled + 1 + + + _coordinate + (1204, 534) + + + _rotation + 180 + + + id + satnogs_frame_decoder_0_0_0 + + + itype + byte + + + maxoutbuf + 0 + + + minoutbuf + 0 + + satnogs_frame_file_sink @@ -3407,7 +3485,7 @@ we shift the LO a little further _coordinate - (936, 684) + (869, 706) _rotation @@ -3536,7 +3614,7 @@ we shift the LO a little further _coordinate - (216, 148) + (215, 147) _rotation @@ -3572,7 +3650,7 @@ we shift the LO a little further interval - 1000 + int(1000.0/doppler_correction_per_sec) + 1 @@ -3595,7 +3673,7 @@ we shift the LO a little further _coordinate - (936, 596) + (869, 610) _rotation @@ -3876,13 +3954,13 @@ we shift the LO a little further digital_binary_slicer_fb_0 - satnogs_ax25_decoder_bm_0 + satnogs_frame_decoder_0_0 0 0 digital_binary_slicer_fb_0 - satnogs_ax25_decoder_bm_0_0 + satnogs_frame_decoder_0_0_0 0 0 @@ -3946,36 +4024,36 @@ we shift the LO a little further 0 0 - - satnogs_ax25_decoder_bm_0 - satnogs_frame_file_sink_0_1_0 - pdu - frame - - - satnogs_ax25_decoder_bm_0 - satnogs_udp_msg_sink_0_0 - pdu - in - - - satnogs_ax25_decoder_bm_0_0 - satnogs_frame_file_sink_0_1_0 - pdu - frame - - - satnogs_ax25_decoder_bm_0_0 - satnogs_udp_msg_sink_0_0 - pdu - in - satnogs_coarse_doppler_correction_cc_0 pfb_arb_resampler_xxx_0 0 0 + + satnogs_frame_decoder_0_0 + satnogs_frame_file_sink_0_1_0 + out + frame + + + satnogs_frame_decoder_0_0 + satnogs_udp_msg_sink_0_0 + out + in + + + satnogs_frame_decoder_0_0_0 + satnogs_frame_file_sink_0_1_0 + out + frame + + + satnogs_frame_decoder_0_0_0 + satnogs_udp_msg_sink_0_0 + out + in + satnogs_tcp_rigctl_msg_source_0 satnogs_coarse_doppler_correction_cc_0 diff --git a/apps/flowgraphs/satellites/amsat_fox_duv_decoder.grc b/apps/flowgraphs/satellites/amsat_fox_duv_decoder.grc index d55f09d..918f2b0 100644 --- a/apps/flowgraphs/satellites/amsat_fox_duv_decoder.grc +++ b/apps/flowgraphs/satellites/amsat_fox_duv_decoder.grc @@ -1,5 +1,5 @@ - + Thu May 5 00:22:45 2016 @@ -72,6 +72,10 @@ run True + + sizing_mode + fixed + thread_safe_setters @@ -80,6 +84,10 @@ title AMSAT FOX DUV Decoder + + placement + (0,0) + variable @@ -162,6 +170,41 @@ 3000 + + variable_amsat_duv_decoder + + comment + + + + control_symbol + 0011111010 + + + _enabled + True + + + _coordinate + (1212, 730) + + + _rotation + 0 + + + id + variable_amsat_duv_decoder_0 + + + value + 'ok' + + + frame_len + 96 + + analog_quadrature_demod_cf @@ -282,6 +325,10 @@ short_id + + hide + none + type string @@ -325,6 +372,10 @@ short_id + + hide + none + type eng_float @@ -368,6 +419,10 @@ short_id + + hide + none + type eng_float @@ -505,6 +560,10 @@ short_id + + hide + none + type string @@ -548,6 +607,10 @@ short_id + + hide + none + type string @@ -577,11 +640,11 @@ _coordinate - (1360, 640) + (1244, 494) _rotation - 180 + 0 id @@ -693,6 +756,10 @@ short_id + + hide + none + type intx @@ -736,6 +803,10 @@ short_id + + hide + none + type intx @@ -779,6 +850,10 @@ short_id + + hide + none + type string @@ -822,6 +897,10 @@ short_id + + hide + none + type eng_float @@ -865,6 +944,10 @@ short_id + + hide + none + type string @@ -909,6 +992,10 @@ we shift the LO a little further short_id + + hide + none + type eng_float @@ -2498,7 +2585,7 @@ max_modulation_freq = 3000 _coordinate - (528, 164) + (526, 179) _rotation @@ -2575,6 +2662,10 @@ max_modulation_freq = 3000 short_id + + hide + none + type intx @@ -2618,6 +2709,10 @@ max_modulation_freq = 3000 short_id + + hide + none + type eng_float @@ -2661,6 +2756,10 @@ max_modulation_freq = 3000 short_id + + hide + none + type intx @@ -2775,6 +2874,10 @@ max_modulation_freq = 3000 short_id + + hide + none + type eng_float @@ -2818,6 +2921,10 @@ max_modulation_freq = 3000 short_id + + hide + none + type string @@ -2861,6 +2968,10 @@ max_modulation_freq = 3000 short_id + + hide + none + type eng_float @@ -2870,45 +2981,6 @@ max_modulation_freq = 3000 satnogs.not_set_samp_rate_rx - - satnogs_ccsds_rs_decoder_mm - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - _coordinate - (888, 640) - - - _rotation - 180 - - - id - satnogs_ccsds_rs_decoder_mm_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - satnogs_coarse_doppler_correction_cc @@ -2929,7 +3001,7 @@ max_modulation_freq = 3000 _coordinate - (296, 184) + (295, 191) _rotation @@ -2957,54 +3029,7 @@ max_modulation_freq = 3000 - satnogs_decoder_8b10b - - alias - - - - comment - - - - control_symbol - 0011111010 - - - affinity - - - - _enabled - True - - - _coordinate - (1136, 628) - - - _rotation - 180 - - - id - satnogs_decoder_8b10b_0 - - - maxoutbuf - 0 - - - max_frame_len - 960 - - - minoutbuf - 0 - - - - satnogs_fox_telem_mm + satnogs_frame_decoder alias @@ -3017,13 +3042,17 @@ max_modulation_freq = 3000 affinity + + decoder_object + variable_amsat_duv_decoder_0 + _enabled True _coordinate - (544, 640) + (1212, 662) _rotation @@ -3031,7 +3060,11 @@ max_modulation_freq = 3000 id - satnogs_fox_telem_mm_0 + satnogs_frame_decoder_0 + + + itype + byte maxoutbuf @@ -3062,7 +3095,7 @@ max_modulation_freq = 3000 _coordinate - (280, 628) + (718, 618) _rotation @@ -3171,53 +3204,6 @@ max_modulation_freq = 3000 audio_samp_rate - - satnogs_quad_demod_filter_ff - - alias - - - - comment - - - - affinity - - - - _enabled - True - - - _coordinate - (1200, 484) - - - _rotation - 0 - - - gain - 1.2 - - - id - satnogs_quad_demod_filter_ff_0 - - - maxoutbuf - 0 - - - minoutbuf - 0 - - - win - 80 - - satnogs_tcp_rigctl_msg_source @@ -3238,7 +3224,7 @@ max_modulation_freq = 3000 _coordinate - (16, 140) + (15, 163) _rotation @@ -3274,7 +3260,7 @@ max_modulation_freq = 3000 interval - 1000 + int(1000.0/doppler_correction_per_sec) + 1 @@ -3297,7 +3283,7 @@ max_modulation_freq = 3000 _coordinate - (280, 692) + (718, 682) _rotation @@ -3409,6 +3395,10 @@ max_modulation_freq = 3000 short_id + + hide + none + type string @@ -3452,6 +3442,10 @@ max_modulation_freq = 3000 short_id + + hide + none + type intx @@ -3495,6 +3489,10 @@ max_modulation_freq = 3000 short_id + + hide + none + type string @@ -3530,13 +3528,13 @@ max_modulation_freq = 3000 digital_binary_slicer_fb_0_0 - satnogs_decoder_8b10b_0 + satnogs_frame_decoder_0 0 0 digital_clock_recovery_mm_xx_0_0_0 - satnogs_quad_demod_filter_ff_0 + digital_binary_slicer_fb_0_0 0 0 @@ -3588,12 +3586,6 @@ max_modulation_freq = 3000 0 0 - - satnogs_ccsds_rs_decoder_mm_0 - satnogs_fox_telem_mm_0 - pdu - in - satnogs_coarse_doppler_correction_cc_0 pfb_arb_resampler_xxx_0 @@ -3601,29 +3593,17 @@ max_modulation_freq = 3000 0 - satnogs_decoder_8b10b_0 - satnogs_ccsds_rs_decoder_mm_0 - pdu - in - - - satnogs_fox_telem_mm_0 + satnogs_frame_decoder_0 satnogs_frame_file_sink_0_1_0 - raw + out frame - satnogs_fox_telem_mm_0 + satnogs_frame_decoder_0 satnogs_udp_msg_sink_0_0 - raw + out in - - satnogs_quad_demod_filter_ff_0 - digital_binary_slicer_fb_0_0 - 0 - 0 - satnogs_tcp_rigctl_msg_source_0 satnogs_coarse_doppler_correction_cc_0 diff --git a/apps/flowgraphs/satellites/meteor_decoder.grc b/apps/flowgraphs/satellites/meteor_decoder.grc index dbb3d3b..e037ce5 100644 --- a/apps/flowgraphs/satellites/meteor_decoder.grc +++ b/apps/flowgraphs/satellites/meteor_decoder.grc @@ -720,7 +720,7 @@ value - 1000 + 20 @@ -3008,7 +3008,7 @@ we shift the LO a little further _coordinate - (216, 148) + (215, 147) _rotation @@ -3044,7 +3044,7 @@ we shift the LO a little further interval - 1000 + int(1000.0/doppler_correction_per_sec) + 1 diff --git a/apps/flowgraphs/satellites/noaa_apt_decoder.grc b/apps/flowgraphs/satellites/noaa_apt_decoder.grc index 8546f6e..6cca638 100644 --- a/apps/flowgraphs/satellites/noaa_apt_decoder.grc +++ b/apps/flowgraphs/satellites/noaa_apt_decoder.grc @@ -1,5 +1,5 @@ - + Mon Apr 10 23:26:02 2017 @@ -72,6 +72,10 @@ run True + + sizing_mode + fixed + thread_safe_setters @@ -80,6 +84,10 @@ title NOAA APT Decoder + + placement + (0,0) + variable @@ -370,6 +378,10 @@ TX sampling rate short_id + + hide + none + type string @@ -492,6 +504,10 @@ TX sampling rate short_id + + hide + none + type eng_float @@ -578,6 +594,10 @@ TX sampling rate short_id + + hide + none + type string @@ -621,6 +641,10 @@ TX sampling rate short_id + + hide + none + type string @@ -664,6 +688,10 @@ TX sampling rate short_id + + hide + none + type intx @@ -707,6 +735,10 @@ TX sampling rate short_id + + hide + none + type intx @@ -809,6 +841,10 @@ TX sampling rate short_id + + hide + none + type string @@ -907,6 +943,10 @@ TX sampling rate short_id + + hide + none + type intx @@ -1060,6 +1100,10 @@ TX sampling rate short_id + + hide + none + type eng_float @@ -1103,6 +1147,10 @@ TX sampling rate short_id + + hide + none + type string @@ -1147,6 +1195,10 @@ we shift the LO a little further short_id + + hide + none + type eng_float @@ -2597,6 +2649,10 @@ we shift the LO a little further short_id + + hide + none + type intx @@ -2935,6 +2991,10 @@ we shift the LO a little further short_id + + hide + none + type eng_float @@ -2978,6 +3038,10 @@ we shift the LO a little further short_id + + hide + none + type intx @@ -3021,6 +3085,10 @@ we shift the LO a little further short_id + + hide + none + type eng_float @@ -3064,6 +3132,10 @@ we shift the LO a little further short_id + + hide + none + type string @@ -3281,7 +3353,7 @@ we shift the LO a little further _coordinate - (8, 132) + (7, 131) _rotation @@ -3317,7 +3389,7 @@ we shift the LO a little further interval - 1000/doppler_correction_per_sec + int(1000.0/doppler_correction_per_sec) + 1 @@ -3409,6 +3481,10 @@ we shift the LO a little further short_id + + hide + none + type intx @@ -3452,6 +3528,10 @@ we shift the LO a little further short_id + + hide + none + type string diff --git a/apps/flowgraphs/satellites/reaktor_hello_world_fsk9600_decoder.grc b/apps/flowgraphs/satellites/reaktor_hello_world_fsk9600_decoder.grc index 69b6807..dc235aa 100644 --- a/apps/flowgraphs/satellites/reaktor_hello_world_fsk9600_decoder.grc +++ b/apps/flowgraphs/satellites/reaktor_hello_world_fsk9600_decoder.grc @@ -116,6 +116,65 @@ 48000 + + variable_ieee802_15_4_variant_decoder + + crc + satnogs.crc.CRC16_IBM + + + comment + + + + _enabled + True + + + preamble + [0x55, 0x55, 0x55, 0x55, 0x55] + + + _coordinate + (1380, 618) + + + _rotation + 0 + + + id + variable_ieee802_15_4_variant_decoder_0 + + + value + 'ok' + + + frame_len + 256 + + + preamble_thrsh + 2 + + + sync_thrsh + 1 + + + sync_word + [0x35, 0x2E, 0x35, 0x2E] + + + var_len + True + + + whitening + variable_whitening_0 + + variable_whitening @@ -155,6 +214,45 @@ 0x1FF + + variable_whitening + + comment + + + + _enabled + True + + + _coordinate + (1220, 618) + + + _rotation + 0 + + + id + variable_whitening_0_0 + + + value + 'ok' + + + mask + 0x21 + + + order + 8 + + + seed + 0x1FF + + analog_quadrature_demod_cf @@ -939,7 +1037,7 @@ _coordinate - (1672, 532) + (1675, 530) _rotation @@ -1026,7 +1124,7 @@ value - 1000 + 20 @@ -3309,15 +3407,11 @@ we shift the LO a little further - satnogs_frame_acquisition + satnogs_frame_decoder alias - - crc - 3 - comment @@ -3326,25 +3420,17 @@ we shift the LO a little further affinity + + decoder_object + variable_ieee802_15_4_variant_decoder_0 + _enabled True - - frame_len - 256 - - - preamble - [0xAA, 0xAA, 0xAA, 0xAA] - - - frame_size_field_len - 1 - _coordinate - (1228, 490) + (1228, 534) _rotation @@ -3352,40 +3438,20 @@ we shift the LO a little further id - satnogs_frame_acquisition_0 + satnogs_frame_decoder_0_0 + + + itype + byte maxoutbuf 0 - - max_frame_len - 2048 - minoutbuf 0 - - preamble_thrsh - 4 - - - sync_thrsh - 3 - - - sync_word - [0x35, 0x2E, 0x35, 0x2E] - - - variant - 1 - - - whitening - variable_whitening_0 - satnogs_frame_file_sink @@ -3407,7 +3473,7 @@ we shift the LO a little further _coordinate - (936, 684) + (933, 586) _rotation @@ -3536,7 +3602,7 @@ we shift the LO a little further _coordinate - (112, 148) + (111, 163) _rotation @@ -3572,7 +3638,7 @@ we shift the LO a little further interval - 1000 + int(1000.0/doppler_correction_per_sec) + 1 @@ -3595,7 +3661,7 @@ we shift the LO a little further _coordinate - (936, 596) + (933, 506) _rotation @@ -3876,7 +3942,7 @@ we shift the LO a little further digital_binary_slicer_fb_0 - satnogs_frame_acquisition_0 + satnogs_frame_decoder_0_0 0 0 @@ -3947,13 +4013,13 @@ we shift the LO a little further 0 - satnogs_frame_acquisition_0 + satnogs_frame_decoder_0_0 satnogs_frame_file_sink_0_1_0 out frame - satnogs_frame_acquisition_0 + satnogs_frame_decoder_0_0 satnogs_udp_msg_sink_0_0 out in diff --git a/apps/flowgraphs/satellites/satnogs_amsat_fox_duv_decoder.py b/apps/flowgraphs/satellites/satnogs_amsat_fox_duv_decoder.py index 236a40f..06a147a 100755 --- a/apps/flowgraphs/satellites/satnogs_amsat_fox_duv_decoder.py +++ b/apps/flowgraphs/satellites/satnogs_amsat_fox_duv_decoder.py @@ -5,7 +5,7 @@ # Title: AMSAT FOX DUV Decoder # Author: Thanos Giolias (agiolias@csd.uoc.gr), Nikos Karamolegos (karamolegkos.n@gmail.com), Manolis Surligas (surligas@gmail.com) # Description: A DUV Decoder for the AMSAT FOX satellites -# Generated: Wed Sep 5 12:05:57 2018 +# GNU Radio version: 3.7.13.5 ################################################## @@ -57,6 +57,7 @@ class satnogs_amsat_fox_duv_decoder(gr.top_block): ################################################## # Variables ################################################## + self.variable_amsat_duv_decoder_0 = variable_amsat_duv_decoder_0 = satnogs.amsat_duv_decoder_make('0011111010', 96) self.max_modulation_freq = max_modulation_freq = 3000 self.deviation = deviation = 5000 self.audio_samp_rate = audio_samp_rate = 48000 @@ -66,16 +67,12 @@ class satnogs_amsat_fox_duv_decoder(gr.top_block): ################################################## self.satnogs_waterfall_sink_0 = satnogs.waterfall_sink(audio_samp_rate, 0.0, 10, 1024, waterfall_file_path, 1) self.satnogs_udp_msg_sink_0_0 = satnogs.udp_msg_sink(udp_IP, udp_port, 1500) - self.satnogs_tcp_rigctl_msg_source_0 = satnogs.tcp_rigctl_msg_source("127.0.0.1", rigctl_port, False, 1000, 1500) - self.satnogs_quad_demod_filter_ff_0 = satnogs.quad_demod_filter_ff(1.2) + self.satnogs_tcp_rigctl_msg_source_0 = satnogs.tcp_rigctl_msg_source("127.0.0.1", rigctl_port, False, int(1000.0/doppler_correction_per_sec) + 1, 1500) self.satnogs_ogg_encoder_0 = satnogs.ogg_encoder(file_path, audio_samp_rate, 1.0) self.satnogs_iq_sink_0 = satnogs.iq_sink(16768, iq_file_path, False, enable_iq_dump) self.satnogs_frame_file_sink_0_1_0 = satnogs.frame_file_sink(decoded_data_file_path, 0) - self.satnogs_fox_telem_mm_0 = satnogs.fox_telem_mm() - self.satnogs_decoder_8b10b_0 = satnogs.decoder_8b10b('0011111010', 960) - + self.satnogs_frame_decoder_0 = satnogs.frame_decoder(variable_amsat_duv_decoder_0, gr.sizeof_char) self.satnogs_coarse_doppler_correction_cc_0 = satnogs.coarse_doppler_correction_cc(rx_freq, satnogs.handle_samp_rate_rx(rx_sdr_device, samp_rate_rx)) - self.satnogs_ccsds_rs_decoder_mm_0 = satnogs.ccsds_rs_decoder_mm() self.root_raised_cosine_filter_0 = filter.fir_filter_fff(1, firdes.root_raised_cosine( 1, 1, 2.4, 0.5, 512)) self.pfb_arb_resampler_xxx_0 = pfb.arb_resampler_ccf( @@ -108,20 +105,20 @@ class satnogs_amsat_fox_duv_decoder(gr.top_block): self.analog_quadrature_demod_cf_0_0 = analog.quadrature_demod_cf(1.2) self.analog_quadrature_demod_cf_0 = analog.quadrature_demod_cf(1.0) + + ################################################## # Connections ################################################## - self.msg_connect((self.satnogs_ccsds_rs_decoder_mm_0, 'pdu'), (self.satnogs_fox_telem_mm_0, 'in')) - self.msg_connect((self.satnogs_decoder_8b10b_0, 'pdu'), (self.satnogs_ccsds_rs_decoder_mm_0, 'in')) - self.msg_connect((self.satnogs_fox_telem_mm_0, 'raw'), (self.satnogs_frame_file_sink_0_1_0, 'frame')) - self.msg_connect((self.satnogs_fox_telem_mm_0, 'raw'), (self.satnogs_udp_msg_sink_0_0, 'in')) + self.msg_connect((self.satnogs_frame_decoder_0, 'out'), (self.satnogs_frame_file_sink_0_1_0, 'frame')) + self.msg_connect((self.satnogs_frame_decoder_0, 'out'), (self.satnogs_udp_msg_sink_0_0, 'in')) self.msg_connect((self.satnogs_tcp_rigctl_msg_source_0, 'freq'), (self.satnogs_coarse_doppler_correction_cc_0, 'freq')) self.connect((self.analog_quadrature_demod_cf_0, 0), (self.satnogs_ogg_encoder_0, 0)) self.connect((self.analog_quadrature_demod_cf_0_0, 0), (self.low_pass_filter_1, 0)) self.connect((self.blocks_rotator_cc_0, 0), (self.satnogs_coarse_doppler_correction_cc_0, 0)) self.connect((self.dc_blocker_xx_0, 0), (self.root_raised_cosine_filter_0, 0)) - self.connect((self.digital_binary_slicer_fb_0_0, 0), (self.satnogs_decoder_8b10b_0, 0)) - self.connect((self.digital_clock_recovery_mm_xx_0_0_0, 0), (self.satnogs_quad_demod_filter_ff_0, 0)) + self.connect((self.digital_binary_slicer_fb_0_0, 0), (self.satnogs_frame_decoder_0, 0)) + self.connect((self.digital_clock_recovery_mm_xx_0_0_0, 0), (self.digital_binary_slicer_fb_0_0, 0)) self.connect((self.low_pass_filter_0, 0), (self.analog_quadrature_demod_cf_0, 0)) self.connect((self.low_pass_filter_0, 0), (self.analog_quadrature_demod_cf_0_0, 0)) self.connect((self.low_pass_filter_1, 0), (self.dc_blocker_xx_0, 0)) @@ -131,7 +128,6 @@ class satnogs_amsat_fox_duv_decoder(gr.top_block): self.connect((self.pfb_arb_resampler_xxx_0, 0), (self.satnogs_waterfall_sink_0, 0)) self.connect((self.root_raised_cosine_filter_0, 0), (self.digital_clock_recovery_mm_xx_0_0_0, 0)) self.connect((self.satnogs_coarse_doppler_correction_cc_0, 0), (self.pfb_arb_resampler_xxx_0, 0)) - self.connect((self.satnogs_quad_demod_filter_ff_0, 0), (self.digital_binary_slicer_fb_0_0, 0)) def get_antenna(self): return self.antenna @@ -274,6 +270,12 @@ class satnogs_amsat_fox_duv_decoder(gr.top_block): def set_waterfall_file_path(self, waterfall_file_path): self.waterfall_file_path = waterfall_file_path + def get_variable_amsat_duv_decoder_0(self): + return self.variable_amsat_duv_decoder_0 + + def set_variable_amsat_duv_decoder_0(self, variable_amsat_duv_decoder_0): + self.variable_amsat_duv_decoder_0 = variable_amsat_duv_decoder_0 + def get_max_modulation_freq(self): return self.max_modulation_freq diff --git a/apps/flowgraphs/satellites/satnogs_meteor_decoder.py b/apps/flowgraphs/satellites/satnogs_meteor_decoder.py index 3299452..0bdbb07 100755 --- a/apps/flowgraphs/satellites/satnogs_meteor_decoder.py +++ b/apps/flowgraphs/satellites/satnogs_meteor_decoder.py @@ -5,9 +5,10 @@ # Title: satnogs_meteor_decoder # Author: Manolis Surligas (surligas@gmail.com) # Description: METEOR CCSDS Decoder -# Generated: Fri Aug 17 00:39:48 2018 +# GNU Radio version: 3.7.13.5 ################################################## + from gnuradio import analog from gnuradio import blocks from gnuradio import digital @@ -25,7 +26,7 @@ import time class satnogs_meteor_decoder(gr.top_block): - def __init__(self, antenna=satnogs.not_set_antenna, baudrate=9600.0, bb_gain=satnogs.not_set_rx_bb_gain, decoded_data_file_path='/tmp/.satnogs/data/data', dev_args=satnogs.not_set_dev_args, doppler_correction_per_sec=1000, enable_iq_dump=0, file_path='test.wav', if_gain=satnogs.not_set_rx_if_gain, iq_file_path='/tmp/iq.dat', lo_offset=100e3, ppm=0, rf_gain=satnogs.not_set_rx_rf_gain, rigctl_port=4532, rx_freq=100e6, rx_sdr_device='usrpb200', samp_rate_rx=satnogs.not_set_samp_rate_rx, udp_IP='127.0.0.1', udp_port=16887, waterfall_file_path='/tmp/waterfall.dat'): + def __init__(self, antenna=satnogs.not_set_antenna, baudrate=9600.0, bb_gain=satnogs.not_set_rx_bb_gain, decoded_data_file_path='/tmp/.satnogs/data/data', dev_args=satnogs.not_set_dev_args, doppler_correction_per_sec=20, enable_iq_dump=0, file_path='test.wav', if_gain=satnogs.not_set_rx_if_gain, iq_file_path='/tmp/iq.dat', lo_offset=100e3, ppm=0, rf_gain=satnogs.not_set_rx_rf_gain, rigctl_port=4532, rx_freq=100e6, rx_sdr_device='usrpb200', samp_rate_rx=satnogs.not_set_samp_rate_rx, udp_IP='127.0.0.1', udp_port=16887, waterfall_file_path='/tmp/waterfall.dat'): gr.top_block.__init__(self, "satnogs_meteor_decoder") ################################################## @@ -67,7 +68,7 @@ class satnogs_meteor_decoder(gr.top_block): ################################################## self.satnogs_waterfall_sink_0 = satnogs.waterfall_sink((sps*72e3) , 0.0, 10, 1024, waterfall_file_path, 1) self.satnogs_udp_msg_sink_0_0 = satnogs.udp_msg_sink(udp_IP, udp_port, 1500) - self.satnogs_tcp_rigctl_msg_source_0 = satnogs.tcp_rigctl_msg_source("127.0.0.1", rigctl_port, False, 1000, 1500) + self.satnogs_tcp_rigctl_msg_source_0 = satnogs.tcp_rigctl_msg_source("127.0.0.1", rigctl_port, False, int(1000.0/doppler_correction_per_sec) + 1, 1500) self.satnogs_lrpt_sync_0 = satnogs.lrpt_sync(2) self.satnogs_lrpt_decoder_0 = satnogs.lrpt_decoder() self.satnogs_iq_sink_0 = satnogs.iq_sink(16768, iq_file_path, False, enable_iq_dump) @@ -306,7 +307,7 @@ def argument_parser(): "", "--dev-args", dest="dev_args", type="string", default=satnogs.not_set_dev_args, help="Set dev_args [default=%default]") parser.add_option( - "", "--doppler-correction-per-sec", dest="doppler_correction_per_sec", type="intx", default=1000, + "", "--doppler-correction-per-sec", dest="doppler_correction_per_sec", type="intx", default=20, help="Set doppler_correction_per_sec [default=%default]") parser.add_option( "", "--enable-iq-dump", dest="enable_iq_dump", type="intx", default=0, diff --git a/apps/flowgraphs/satellites/satnogs_noaa_apt_decoder.py b/apps/flowgraphs/satellites/satnogs_noaa_apt_decoder.py index 9e43123..7cf0d6e 100755 --- a/apps/flowgraphs/satellites/satnogs_noaa_apt_decoder.py +++ b/apps/flowgraphs/satellites/satnogs_noaa_apt_decoder.py @@ -5,7 +5,7 @@ # Title: NOAA APT Decoder # Author: Manolis Surligas, George Vardakis # Description: A NOAA APT Decoder with automatic image synchronization -# Generated: Wed Jul 4 12:13:02 2018 +# GNU Radio version: 3.7.13.5 ################################################## @@ -67,7 +67,7 @@ class satnogs_noaa_apt_decoder(gr.top_block): # Blocks ################################################## self.satnogs_waterfall_sink_0 = satnogs.waterfall_sink(samp_rate_rx/ ( first_stage_decimation * int(samp_rate_rx/ first_stage_decimation / initial_bandwidth)), 0.0, 8, 1024, waterfall_file_path, 0) - self.satnogs_tcp_rigctl_msg_source_0 = satnogs.tcp_rigctl_msg_source("127.0.0.1", rigctl_port, False, 1000/doppler_correction_per_sec, 1500) + self.satnogs_tcp_rigctl_msg_source_0 = satnogs.tcp_rigctl_msg_source("127.0.0.1", rigctl_port, False, int(1000.0/doppler_correction_per_sec) + 1, 1500) self.satnogs_ogg_encoder_0 = satnogs.ogg_encoder(file_path, 48000, 0.8) self.satnogs_noaa_apt_sink_0 = satnogs.noaa_apt_sink(decoded_data_file_path, 2080, 1800, bool(sync), bool(flip_images)) self.satnogs_iq_sink_0 = satnogs.iq_sink(32767, iq_file_path, False, enable_iq_dump) @@ -129,6 +129,8 @@ class satnogs_noaa_apt_decoder(gr.top_block): audio_decimation=audio_decimation, ) + + ################################################## # Connections ################################################## diff --git a/apps/flowgraphs/satellites/satnogs_reaktor_hello_world_fsk9600_decoder.py b/apps/flowgraphs/satellites/satnogs_reaktor_hello_world_fsk9600_decoder.py index 78d6a87..c97866f 100755 --- a/apps/flowgraphs/satellites/satnogs_reaktor_hello_world_fsk9600_decoder.py +++ b/apps/flowgraphs/satellites/satnogs_reaktor_hello_world_fsk9600_decoder.py @@ -27,7 +27,7 @@ import time class satnogs_reaktor_hello_world_fsk9600_decoder(gr.top_block): - def __init__(self, antenna=satnogs.not_set_antenna, baudrate=9600.0, bb_gain=satnogs.not_set_rx_bb_gain, decoded_data_file_path='/tmp/.satnogs/data/data', dev_args=satnogs.not_set_dev_args, doppler_correction_per_sec=1000, enable_iq_dump=0, file_path='test.wav', if_gain=satnogs.not_set_rx_if_gain, iq_file_path='/tmp/iq.dat', lo_offset=100e3, ppm=0, rf_gain=satnogs.not_set_rx_rf_gain, rigctl_port=4532, rx_freq=100e6, rx_sdr_device='usrpb200', samp_rate_rx=satnogs.not_set_samp_rate_rx, udp_IP='127.0.0.1', udp_port=16887, waterfall_file_path='/tmp/waterfall.dat'): + def __init__(self, antenna=satnogs.not_set_antenna, baudrate=9600.0, bb_gain=satnogs.not_set_rx_bb_gain, decoded_data_file_path='/tmp/.satnogs/data/data', dev_args=satnogs.not_set_dev_args, doppler_correction_per_sec=20, enable_iq_dump=0, file_path='test.wav', if_gain=satnogs.not_set_rx_if_gain, iq_file_path='/tmp/iq.dat', lo_offset=100e3, ppm=0, rf_gain=satnogs.not_set_rx_rf_gain, rigctl_port=4532, rx_freq=100e6, rx_sdr_device='usrpb200', samp_rate_rx=satnogs.not_set_samp_rate_rx, udp_IP='127.0.0.1', udp_port=16887, waterfall_file_path='/tmp/waterfall.dat'): gr.top_block.__init__(self, "satnogs_reaktor_hello_world_fsk9600_decoder") ################################################## @@ -58,6 +58,8 @@ class satnogs_reaktor_hello_world_fsk9600_decoder(gr.top_block): # Variables ################################################## self.variable_whitening_0 = variable_whitening_0 = satnogs.whitening_make(0x21, 0x1FF, 8) + self.variable_whitening_0_0 = variable_whitening_0_0 = satnogs.whitening_make(0x21, 0x1FF, 8) + self.variable_ieee802_15_4_variant_decoder_0 = variable_ieee802_15_4_variant_decoder_0 = satnogs.ieee802_15_4_variant_decoder_make([0x55, 0x55, 0x55, 0x55, 0x55], 2, [0x35, 0x2E, 0x35, 0x2E], 1, satnogs.crc.CRC16_IBM, variable_whitening_0, True, 256) self.audio_samp_rate = audio_samp_rate = 48000 ################################################## @@ -65,11 +67,11 @@ class satnogs_reaktor_hello_world_fsk9600_decoder(gr.top_block): ################################################## self.satnogs_waterfall_sink_0 = satnogs.waterfall_sink(audio_samp_rate, 0.0, 10, 1024, waterfall_file_path, 1) self.satnogs_udp_msg_sink_0_0 = satnogs.udp_msg_sink(udp_IP, udp_port, 1500) - self.satnogs_tcp_rigctl_msg_source_0 = satnogs.tcp_rigctl_msg_source("127.0.0.1", rigctl_port, False, 1000, 1500) + self.satnogs_tcp_rigctl_msg_source_0 = satnogs.tcp_rigctl_msg_source("127.0.0.1", rigctl_port, False, int(1000.0/doppler_correction_per_sec) + 1, 1500) self.satnogs_ogg_encoder_0 = satnogs.ogg_encoder(file_path, audio_samp_rate, 1.0) self.satnogs_iq_sink_0 = satnogs.iq_sink(16768, iq_file_path, False, enable_iq_dump) self.satnogs_frame_file_sink_0_1_0 = satnogs.frame_file_sink(decoded_data_file_path, 0) - self.satnogs_frame_acquisition_0 = satnogs.frame_acquisition(1, [0xAA, 0xAA, 0xAA, 0xAA], 4, [0x35, 0x2E, 0x35, 0x2E], 3, 1, 256, 3, variable_whitening_0, 2048) + self.satnogs_frame_decoder_0_0 = satnogs.frame_decoder(variable_ieee802_15_4_variant_decoder_0, gr.sizeof_char) self.satnogs_coarse_doppler_correction_cc_0 = satnogs.coarse_doppler_correction_cc(rx_freq, satnogs.handle_samp_rate_rx(rx_sdr_device, samp_rate_rx)) self.pfb_arb_resampler_xxx_0_0_0 = pfb.arb_resampler_ccf( (2.0*baudrate)/audio_samp_rate, @@ -107,7 +109,7 @@ class satnogs_reaktor_hello_world_fsk9600_decoder(gr.top_block): self.blocks_vco_c_0 = blocks.vco_c(audio_samp_rate, -audio_samp_rate, 1.0) self.blocks_rotator_cc_0 = blocks.rotator_cc(-2.0 * math.pi * (lo_offset / satnogs.handle_samp_rate_rx(rx_sdr_device, samp_rate_rx))) self.blocks_multiply_xx_0_0 = blocks.multiply_vcc(1) - self.blocks_moving_average_xx_0 = blocks.moving_average_ff(1024, 1.0/1024.0, 4096) + self.blocks_moving_average_xx_0 = blocks.moving_average_ff(1024, 1.0/1024.0, 4096, 1) self.blocks_delay_0 = blocks.delay(gr.sizeof_gr_complex*1, 1024/2) self.analog_quadrature_demod_cf_0_0_0_1 = analog.quadrature_demod_cf(1.2) self.analog_quadrature_demod_cf_0_0_0_0 = analog.quadrature_demod_cf(1.0) @@ -118,8 +120,8 @@ class satnogs_reaktor_hello_world_fsk9600_decoder(gr.top_block): ################################################## # Connections ################################################## - self.msg_connect((self.satnogs_frame_acquisition_0, 'out'), (self.satnogs_frame_file_sink_0_1_0, 'frame')) - self.msg_connect((self.satnogs_frame_acquisition_0, 'out'), (self.satnogs_udp_msg_sink_0_0, 'in')) + self.msg_connect((self.satnogs_frame_decoder_0_0, 'out'), (self.satnogs_frame_file_sink_0_1_0, 'frame')) + self.msg_connect((self.satnogs_frame_decoder_0_0, 'out'), (self.satnogs_udp_msg_sink_0_0, 'in')) self.msg_connect((self.satnogs_tcp_rigctl_msg_source_0, 'freq'), (self.satnogs_coarse_doppler_correction_cc_0, 'freq')) self.connect((self.analog_quadrature_demod_cf_0_0_0, 0), (self.dc_blocker_xx_0_0, 0)) self.connect((self.analog_quadrature_demod_cf_0_0_0_0, 0), (self.blocks_moving_average_xx_0, 0)) @@ -131,7 +133,7 @@ class satnogs_reaktor_hello_world_fsk9600_decoder(gr.top_block): self.connect((self.blocks_vco_c_0, 0), (self.blocks_multiply_xx_0_0, 1)) self.connect((self.dc_blocker_xx_0_0, 0), (self.satnogs_ogg_encoder_0, 0)) self.connect((self.dc_blocker_xx_0_0_0, 0), (self.digital_clock_recovery_mm_xx_0, 0)) - self.connect((self.digital_binary_slicer_fb_0, 0), (self.satnogs_frame_acquisition_0, 0)) + self.connect((self.digital_binary_slicer_fb_0, 0), (self.satnogs_frame_decoder_0_0, 0)) self.connect((self.digital_clock_recovery_mm_xx_0, 0), (self.digital_binary_slicer_fb_0, 0)) self.connect((self.low_pass_filter_0, 0), (self.pfb_arb_resampler_xxx_0_0_0, 0)) self.connect((self.low_pass_filter_1, 0), (self.dc_blocker_xx_0_0_0, 0)) @@ -294,6 +296,18 @@ class satnogs_reaktor_hello_world_fsk9600_decoder(gr.top_block): def set_variable_whitening_0(self, variable_whitening_0): self.variable_whitening_0 = variable_whitening_0 + def get_variable_whitening_0_0(self): + return self.variable_whitening_0_0 + + def set_variable_whitening_0_0(self, variable_whitening_0_0): + self.variable_whitening_0_0 = variable_whitening_0_0 + + def get_variable_ieee802_15_4_variant_decoder_0(self): + return self.variable_ieee802_15_4_variant_decoder_0 + + def set_variable_ieee802_15_4_variant_decoder_0(self, variable_ieee802_15_4_variant_decoder_0): + self.variable_ieee802_15_4_variant_decoder_0 = variable_ieee802_15_4_variant_decoder_0 + def get_audio_samp_rate(self): return self.audio_samp_rate @@ -323,7 +337,7 @@ def argument_parser(): "", "--dev-args", dest="dev_args", type="string", default=satnogs.not_set_dev_args, help="Set dev_args [default=%default]") parser.add_option( - "", "--doppler-correction-per-sec", dest="doppler_correction_per_sec", type="intx", default=1000, + "", "--doppler-correction-per-sec", dest="doppler_correction_per_sec", type="intx", default=20, help="Set doppler_correction_per_sec [default=%default]") parser.add_option( "", "--enable-iq-dump", dest="enable_iq_dump", type="intx", default=0, diff --git a/apps/flowgraphs/satnogs_afsk1200_ax25.py b/apps/flowgraphs/satnogs_afsk1200_ax25.py index 45a36e8..cbf733e 100755 --- a/apps/flowgraphs/satnogs_afsk1200_ax25.py +++ b/apps/flowgraphs/satnogs_afsk1200_ax25.py @@ -27,7 +27,7 @@ import time class satnogs_afsk1200_ax25(gr.top_block): - def __init__(self, antenna=satnogs.not_set_antenna, baudrate=1200.0, bb_gain=satnogs.not_set_rx_bb_gain, decoded_data_file_path='/tmp/.satnogs/data/data', dev_args=satnogs.not_set_dev_args, doppler_correction_per_sec=1000, enable_iq_dump=0, file_path='test.wav', if_gain=satnogs.not_set_rx_if_gain, iq_file_path='/tmp/iq.dat', lo_offset=100e3, mark_frequency=2200.0, ppm=0, rf_gain=satnogs.not_set_rx_rf_gain, rigctl_port=4532, rx_freq=100e6, rx_sdr_device='usrpb200', samp_rate_rx=satnogs.not_set_samp_rate_rx, space_frequency=1200.0, udp_IP='127.0.0.1', udp_port=16887, waterfall_file_path='/tmp/waterfall.dat'): + def __init__(self, antenna=satnogs.not_set_antenna, baudrate=1200.0, bb_gain=satnogs.not_set_rx_bb_gain, decoded_data_file_path='/tmp/.satnogs/data/data', dev_args=satnogs.not_set_dev_args, doppler_correction_per_sec=20, enable_iq_dump=0, file_path='test.wav', if_gain=satnogs.not_set_rx_if_gain, iq_file_path='/tmp/iq.dat', lo_offset=100e3, mark_frequency=2200.0, ppm=0, rf_gain=satnogs.not_set_rx_rf_gain, rigctl_port=4532, rx_freq=100e6, rx_sdr_device='usrpb200', samp_rate_rx=satnogs.not_set_samp_rate_rx, space_frequency=1200.0, udp_IP='127.0.0.1', udp_port=16887, waterfall_file_path='/tmp/waterfall.dat'): gr.top_block.__init__(self, "AFSK1200 AX.25 decoder ") ################################################## @@ -59,6 +59,8 @@ class satnogs_afsk1200_ax25(gr.top_block): ################################################## # Variables ################################################## + self.variable_ax25_decoder_0_0 = variable_ax25_decoder_0_0 = satnogs.ax25_decoder_make('GND', 0, True, False, True, 512) + self.variable_ax25_decoder_0 = variable_ax25_decoder_0 = satnogs.ax25_decoder_make('GND', 0, True, True, True, 512) self.max_modulation_freq = max_modulation_freq = 3000 self.deviation = deviation = 5000 self.baud_rate = baud_rate = 1200 @@ -69,13 +71,13 @@ class satnogs_afsk1200_ax25(gr.top_block): ################################################## self.satnogs_waterfall_sink_0 = satnogs.waterfall_sink(audio_samp_rate, 0.0, 10, 1024, waterfall_file_path, 1) self.satnogs_udp_msg_sink_0_0 = satnogs.udp_msg_sink(udp_IP, udp_port, 1500) - self.satnogs_tcp_rigctl_msg_source_0 = satnogs.tcp_rigctl_msg_source("127.0.0.1", rigctl_port, False, 1000, 1500) + self.satnogs_tcp_rigctl_msg_source_0 = satnogs.tcp_rigctl_msg_source("127.0.0.1", rigctl_port, False, int(1000.0/doppler_correction_per_sec) + 1, 1500) self.satnogs_ogg_encoder_0 = satnogs.ogg_encoder(file_path, audio_samp_rate, 1.0) self.satnogs_iq_sink_0 = satnogs.iq_sink(16768, iq_file_path, False, enable_iq_dump) self.satnogs_frame_file_sink_0_1_0 = satnogs.frame_file_sink(decoded_data_file_path, 0) + self.satnogs_frame_decoder_0_0_0 = satnogs.frame_decoder(variable_ax25_decoder_0_0, gr.sizeof_char) + self.satnogs_frame_decoder_0_0 = satnogs.frame_decoder(variable_ax25_decoder_0, gr.sizeof_char) self.satnogs_coarse_doppler_correction_cc_0 = satnogs.coarse_doppler_correction_cc(rx_freq, satnogs.handle_samp_rate_rx(rx_sdr_device, samp_rate_rx)) - self.satnogs_ax25_decoder_bm_0_0 = satnogs.ax25_decoder_bm('GND', 0, True, True, 1024) - self.satnogs_ax25_decoder_bm_0 = satnogs.ax25_decoder_bm('GND', 0, True, False, 1024) self.pfb_arb_resampler_xxx_0 = pfb.arb_resampler_ccf( audio_samp_rate/satnogs.handle_samp_rate_rx(rx_sdr_device, samp_rate_rx), taps=None, @@ -109,7 +111,7 @@ class satnogs_afsk1200_ax25(gr.top_block): self.blocks_rotator_cc_0 = blocks.rotator_cc(-2.0 * math.pi * (lo_offset / satnogs.handle_samp_rate_rx(rx_sdr_device, samp_rate_rx))) self.blocks_multiply_xx_0_0 = blocks.multiply_vcc(1) self.blocks_multiply_xx_0 = blocks.multiply_vcc(1) - self.blocks_moving_average_xx_0 = blocks.moving_average_ff(1024, 1.0/1024.0, 4096) + self.blocks_moving_average_xx_0 = blocks.moving_average_ff(1024, 1.0/1024.0, 4096, 1) self.blocks_float_to_complex_0 = blocks.float_to_complex(1) self.blocks_delay_0 = blocks.delay(gr.sizeof_gr_complex*1, 1024/2) self.band_pass_filter_0 = filter.fir_filter_fff(1, firdes.band_pass( @@ -124,10 +126,10 @@ class satnogs_afsk1200_ax25(gr.top_block): ################################################## # Connections ################################################## - self.msg_connect((self.satnogs_ax25_decoder_bm_0, 'pdu'), (self.satnogs_frame_file_sink_0_1_0, 'frame')) - self.msg_connect((self.satnogs_ax25_decoder_bm_0, 'pdu'), (self.satnogs_udp_msg_sink_0_0, 'in')) - self.msg_connect((self.satnogs_ax25_decoder_bm_0_0, 'pdu'), (self.satnogs_frame_file_sink_0_1_0, 'frame')) - self.msg_connect((self.satnogs_ax25_decoder_bm_0_0, 'pdu'), (self.satnogs_udp_msg_sink_0_0, 'in')) + self.msg_connect((self.satnogs_frame_decoder_0_0, 'out'), (self.satnogs_frame_file_sink_0_1_0, 'frame')) + self.msg_connect((self.satnogs_frame_decoder_0_0, 'out'), (self.satnogs_udp_msg_sink_0_0, 'in')) + self.msg_connect((self.satnogs_frame_decoder_0_0_0, 'out'), (self.satnogs_frame_file_sink_0_1_0, 'frame')) + self.msg_connect((self.satnogs_frame_decoder_0_0_0, 'out'), (self.satnogs_udp_msg_sink_0_0, 'in')) self.msg_connect((self.satnogs_tcp_rigctl_msg_source_0, 'freq'), (self.satnogs_coarse_doppler_correction_cc_0, 'freq')) self.connect((self.analog_quadrature_demod_cf_0, 0), (self.dc_blocker_xx_0_0, 0)) self.connect((self.analog_quadrature_demod_cf_0_0, 0), (self.band_pass_filter_0, 0)) @@ -144,8 +146,8 @@ class satnogs_afsk1200_ax25(gr.top_block): self.connect((self.blocks_vco_c_0, 0), (self.blocks_multiply_xx_0_0, 1)) self.connect((self.dc_blocker_xx_0, 0), (self.blocks_float_to_complex_0, 0)) self.connect((self.dc_blocker_xx_0_0, 0), (self.low_pass_filter_2_0, 0)) - self.connect((self.digital_binary_slicer_fb_0, 0), (self.satnogs_ax25_decoder_bm_0, 0)) - self.connect((self.digital_binary_slicer_fb_0, 0), (self.satnogs_ax25_decoder_bm_0_0, 0)) + self.connect((self.digital_binary_slicer_fb_0, 0), (self.satnogs_frame_decoder_0_0, 0)) + self.connect((self.digital_binary_slicer_fb_0, 0), (self.satnogs_frame_decoder_0_0_0, 0)) self.connect((self.digital_clock_recovery_mm_xx_0, 0), (self.digital_binary_slicer_fb_0, 0)) self.connect((self.low_pass_filter_0, 0), (self.analog_quadrature_demod_cf_0_0, 0)) self.connect((self.low_pass_filter_1, 0), (self.analog_quadrature_demod_cf_0, 0)) @@ -313,6 +315,18 @@ class satnogs_afsk1200_ax25(gr.top_block): def set_waterfall_file_path(self, waterfall_file_path): self.waterfall_file_path = waterfall_file_path + def get_variable_ax25_decoder_0_0(self): + return self.variable_ax25_decoder_0_0 + + def set_variable_ax25_decoder_0_0(self, variable_ax25_decoder_0_0): + self.variable_ax25_decoder_0_0 = variable_ax25_decoder_0_0 + + def get_variable_ax25_decoder_0(self): + return self.variable_ax25_decoder_0 + + def set_variable_ax25_decoder_0(self, variable_ax25_decoder_0): + self.variable_ax25_decoder_0 = variable_ax25_decoder_0 + def get_max_modulation_freq(self): return self.max_modulation_freq @@ -369,7 +383,7 @@ def argument_parser(): "", "--dev-args", dest="dev_args", type="string", default=satnogs.not_set_dev_args, help="Set dev_args [default=%default]") parser.add_option( - "", "--doppler-correction-per-sec", dest="doppler_correction_per_sec", type="intx", default=1000, + "", "--doppler-correction-per-sec", dest="doppler_correction_per_sec", type="intx", default=20, help="Set doppler_correction_per_sec [default=%default]") parser.add_option( "", "--enable-iq-dump", dest="enable_iq_dump", type="intx", default=0, diff --git a/apps/flowgraphs/satnogs_apt_demod.py b/apps/flowgraphs/satnogs_apt_demod.py deleted file mode 100755 index ed5b44e..0000000 --- a/apps/flowgraphs/satnogs_apt_demod.py +++ /dev/null @@ -1,326 +0,0 @@ -#!/usr/bin/env python2 -# -*- coding: utf-8 -*- -################################################## -# GNU Radio Python Flow Graph -# Title: APT Generic Demodulation -# Author: Manolis Surligas (surligas@gmail.com) -# Description: A generic APT demodulation block -# Generated: Sun Nov 19 11:34:53 2017 -################################################## - -from gnuradio import analog -from gnuradio import eng_notation -from gnuradio import filter -from gnuradio import gr -from gnuradio.eng_option import eng_option -from gnuradio.filter import firdes -from optparse import OptionParser -import math -import osmosdr -import satnogs -import time - - -class satnogs_apt_demod(gr.top_block): - - def __init__(self, antenna=satnogs.not_set_antenna, bb_gain=satnogs.not_set_rx_bb_gain, decoded_data_file_path='/tmp/.satnogs/data/data', dev_args=satnogs.not_set_dev_args, doppler_correction_per_sec=20, enable_iq_dump=0, file_path='test.ogg', if_gain=satnogs.not_set_rx_if_gain, iq_file_path='/tmp/iq.dat', lo_offset=100e3, ppm=0, rf_gain=satnogs.not_set_rx_rf_gain, rigctl_port=4532, rx_freq=100e6, rx_sdr_device='usrpb200', waterfall_file_path='/tmp/waterfall.dat'): - gr.top_block.__init__(self, "APT Generic Demodulation") - - ################################################## - # Parameters - ################################################## - self.antenna = antenna - self.bb_gain = bb_gain - self.decoded_data_file_path = decoded_data_file_path - self.dev_args = dev_args - self.doppler_correction_per_sec = doppler_correction_per_sec - self.enable_iq_dump = enable_iq_dump - self.file_path = file_path - self.if_gain = if_gain - self.iq_file_path = iq_file_path - self.lo_offset = lo_offset - self.ppm = ppm - self.rf_gain = rf_gain - self.rigctl_port = rigctl_port - self.rx_freq = rx_freq - self.rx_sdr_device = rx_sdr_device - self.waterfall_file_path = waterfall_file_path - - ################################################## - # Variables - ################################################## - self.samp_rate_rx = samp_rate_rx = satnogs.hw_rx_settings[rx_sdr_device]['samp_rate'] - self.xlate_filter_taps = xlate_filter_taps = firdes.low_pass(1, samp_rate_rx, 125000, 25000, firdes.WIN_HAMMING, 6.76) - - self.taps = taps = firdes.low_pass(12.0, samp_rate_rx, 100e3, 60000, firdes.WIN_HAMMING, 6.76) - - self.filter_rate = filter_rate = 250000 - self.deviation = deviation = 17000 - self.audio_samp_rate = audio_samp_rate = 48000 - - ################################################## - # Blocks - ################################################## - self.satnogs_waterfall_sink_0 = satnogs.waterfall_sink(audio_samp_rate*2, 0.0, 10, 1024, waterfall_file_path, 1) - self.satnogs_tcp_rigctl_msg_source_0 = satnogs.tcp_rigctl_msg_source("127.0.0.1", rigctl_port, False, 1000/doppler_correction_per_sec, 1500) - self.satnogs_ogg_encoder_0 = satnogs.ogg_encoder(file_path, audio_samp_rate, 1.0) - self.satnogs_iq_sink_0 = satnogs.iq_sink(32767, iq_file_path, False, enable_iq_dump) - self.satnogs_coarse_doppler_correction_cc_0 = satnogs.coarse_doppler_correction_cc(rx_freq, samp_rate_rx) - self.rational_resampler_xxx_0 = filter.rational_resampler_fff( - interpolation=1, - decimation=2, - taps=None, - fractional_bw=None, - ) - self.osmosdr_source_0 = osmosdr.source( args="numchan=" + str(1) + " " + satnogs.handle_rx_dev_args(rx_sdr_device, dev_args) ) - self.osmosdr_source_0.set_sample_rate(samp_rate_rx) - self.osmosdr_source_0.set_center_freq(rx_freq - lo_offset, 0) - self.osmosdr_source_0.set_freq_corr(ppm, 0) - self.osmosdr_source_0.set_dc_offset_mode(2, 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.handle_rx_rf_gain(rx_sdr_device, rf_gain), 0) - self.osmosdr_source_0.set_if_gain(satnogs.handle_rx_if_gain(rx_sdr_device, if_gain), 0) - self.osmosdr_source_0.set_bb_gain(satnogs.handle_rx_bb_gain(rx_sdr_device, bb_gain), 0) - self.osmosdr_source_0.set_antenna(satnogs.handle_rx_antenna(rx_sdr_device, antenna), 0) - self.osmosdr_source_0.set_bandwidth(samp_rate_rx, 0) - - self.freq_xlating_fir_filter_xxx_0 = filter.freq_xlating_fir_filter_ccc(int(samp_rate_rx/filter_rate), (xlate_filter_taps), lo_offset, samp_rate_rx) - self.blks2_rational_resampler_xxx_1 = filter.rational_resampler_ccc( - interpolation=48, - decimation=125, - taps=None, - fractional_bw=None, - ) - self.analog_quadrature_demod_cf_0 = analog.quadrature_demod_cf((2*math.pi*deviation)/96000) - - ################################################## - # Connections - ################################################## - self.msg_connect((self.satnogs_tcp_rigctl_msg_source_0, 'freq'), (self.satnogs_coarse_doppler_correction_cc_0, 'freq')) - self.connect((self.analog_quadrature_demod_cf_0, 0), (self.rational_resampler_xxx_0, 0)) - self.connect((self.blks2_rational_resampler_xxx_1, 0), (self.analog_quadrature_demod_cf_0, 0)) - self.connect((self.blks2_rational_resampler_xxx_1, 0), (self.satnogs_iq_sink_0, 0)) - self.connect((self.blks2_rational_resampler_xxx_1, 0), (self.satnogs_waterfall_sink_0, 0)) - self.connect((self.freq_xlating_fir_filter_xxx_0, 0), (self.blks2_rational_resampler_xxx_1, 0)) - self.connect((self.osmosdr_source_0, 0), (self.satnogs_coarse_doppler_correction_cc_0, 0)) - self.connect((self.rational_resampler_xxx_0, 0), (self.satnogs_ogg_encoder_0, 0)) - self.connect((self.satnogs_coarse_doppler_correction_cc_0, 0), (self.freq_xlating_fir_filter_xxx_0, 0)) - - def get_antenna(self): - return self.antenna - - def set_antenna(self, antenna): - self.antenna = antenna - self.osmosdr_source_0.set_antenna(satnogs.handle_rx_antenna(self.rx_sdr_device, self.antenna), 0) - - def get_bb_gain(self): - return self.bb_gain - - def set_bb_gain(self, bb_gain): - self.bb_gain = bb_gain - self.osmosdr_source_0.set_bb_gain(satnogs.handle_rx_bb_gain(self.rx_sdr_device, self.bb_gain), 0) - - def get_decoded_data_file_path(self): - return self.decoded_data_file_path - - def set_decoded_data_file_path(self, decoded_data_file_path): - self.decoded_data_file_path = decoded_data_file_path - - def get_dev_args(self): - return self.dev_args - - def set_dev_args(self, dev_args): - self.dev_args = dev_args - - def get_doppler_correction_per_sec(self): - return self.doppler_correction_per_sec - - def set_doppler_correction_per_sec(self, doppler_correction_per_sec): - self.doppler_correction_per_sec = doppler_correction_per_sec - - def get_enable_iq_dump(self): - return self.enable_iq_dump - - def set_enable_iq_dump(self, enable_iq_dump): - self.enable_iq_dump = enable_iq_dump - - def get_file_path(self): - return self.file_path - - def set_file_path(self, file_path): - self.file_path = file_path - - def get_if_gain(self): - return self.if_gain - - def set_if_gain(self, if_gain): - self.if_gain = if_gain - self.osmosdr_source_0.set_if_gain(satnogs.handle_rx_if_gain(self.rx_sdr_device, self.if_gain), 0) - - def get_iq_file_path(self): - return self.iq_file_path - - def set_iq_file_path(self, iq_file_path): - self.iq_file_path = iq_file_path - - 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_freq - self.lo_offset, 0) - self.freq_xlating_fir_filter_xxx_0.set_center_freq(self.lo_offset) - - def get_ppm(self): - return self.ppm - - def set_ppm(self, ppm): - self.ppm = ppm - self.osmosdr_source_0.set_freq_corr(self.ppm, 0) - - def get_rf_gain(self): - return self.rf_gain - - def set_rf_gain(self, rf_gain): - self.rf_gain = rf_gain - self.osmosdr_source_0.set_gain(satnogs.handle_rx_rf_gain(self.rx_sdr_device, self.rf_gain), 0) - - def get_rigctl_port(self): - return self.rigctl_port - - def set_rigctl_port(self, rigctl_port): - self.rigctl_port = rigctl_port - - def get_rx_freq(self): - return self.rx_freq - - def set_rx_freq(self, rx_freq): - self.rx_freq = rx_freq - self.satnogs_coarse_doppler_correction_cc_0.set_new_freq_locked(self.rx_freq) - self.osmosdr_source_0.set_center_freq(self.rx_freq - self.lo_offset, 0) - - 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_rx(satnogs.hw_rx_settings[self.rx_sdr_device]['samp_rate']) - self.osmosdr_source_0.set_gain(satnogs.handle_rx_rf_gain(self.rx_sdr_device, self.rf_gain), 0) - self.osmosdr_source_0.set_if_gain(satnogs.handle_rx_if_gain(self.rx_sdr_device, self.if_gain), 0) - self.osmosdr_source_0.set_bb_gain(satnogs.handle_rx_bb_gain(self.rx_sdr_device, self.bb_gain), 0) - self.osmosdr_source_0.set_antenna(satnogs.handle_rx_antenna(self.rx_sdr_device, self.antenna), 0) - - def get_waterfall_file_path(self): - return self.waterfall_file_path - - def set_waterfall_file_path(self, waterfall_file_path): - self.waterfall_file_path = waterfall_file_path - - 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_xlate_filter_taps(firdes.low_pass(1, self.samp_rate_rx, 125000, 25000, firdes.WIN_HAMMING, 6.76)) - self.osmosdr_source_0.set_sample_rate(self.samp_rate_rx) - self.osmosdr_source_0.set_bandwidth(self.samp_rate_rx, 0) - - def get_xlate_filter_taps(self): - return self.xlate_filter_taps - - def set_xlate_filter_taps(self, xlate_filter_taps): - self.xlate_filter_taps = xlate_filter_taps - self.freq_xlating_fir_filter_xxx_0.set_taps((self.xlate_filter_taps)) - - def get_taps(self): - return self.taps - - def set_taps(self, taps): - self.taps = taps - - def get_filter_rate(self): - return self.filter_rate - - def set_filter_rate(self, filter_rate): - self.filter_rate = filter_rate - - def get_deviation(self): - return self.deviation - - def set_deviation(self, deviation): - self.deviation = deviation - self.analog_quadrature_demod_cf_0.set_gain((2*math.pi*self.deviation)/96000) - - def get_audio_samp_rate(self): - return self.audio_samp_rate - - def set_audio_samp_rate(self, audio_samp_rate): - self.audio_samp_rate = audio_samp_rate - - -def argument_parser(): - description = 'A generic APT demodulation block' - parser = OptionParser(usage="%prog: [options]", option_class=eng_option, description=description) - parser.add_option( - "", "--antenna", dest="antenna", type="string", default=satnogs.not_set_antenna, - help="Set antenna [default=%default]") - parser.add_option( - "", "--bb-gain", dest="bb_gain", type="eng_float", default=eng_notation.num_to_str(satnogs.not_set_rx_bb_gain), - help="Set bb_gain [default=%default]") - parser.add_option( - "", "--decoded-data-file-path", dest="decoded_data_file_path", type="string", default='/tmp/.satnogs/data/data', - help="Set decoded_data_file_path [default=%default]") - parser.add_option( - "", "--dev-args", dest="dev_args", type="string", default=satnogs.not_set_dev_args, - help="Set dev_args [default=%default]") - parser.add_option( - "", "--doppler-correction-per-sec", dest="doppler_correction_per_sec", type="intx", default=20, - help="Set doppler_correction_per_sec [default=%default]") - parser.add_option( - "", "--enable-iq-dump", dest="enable_iq_dump", type="intx", default=0, - help="Set enable_iq_dump [default=%default]") - parser.add_option( - "", "--file-path", dest="file_path", type="string", default='test.ogg', - help="Set file_path [default=%default]") - parser.add_option( - "", "--if-gain", dest="if_gain", type="eng_float", default=eng_notation.num_to_str(satnogs.not_set_rx_if_gain), - help="Set if_gain [default=%default]") - parser.add_option( - "", "--iq-file-path", dest="iq_file_path", type="string", default='/tmp/iq.dat', - help="Set iq_file_path [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( - "", "--ppm", dest="ppm", type="intx", default=0, - help="Set ppm [default=%default]") - parser.add_option( - "", "--rf-gain", dest="rf_gain", type="eng_float", default=eng_notation.num_to_str(satnogs.not_set_rx_rf_gain), - help="Set rf_gain [default=%default]") - parser.add_option( - "", "--rigctl-port", dest="rigctl_port", type="intx", default=4532, - help="Set rigctl_port [default=%default]") - parser.add_option( - "", "--rx-freq", dest="rx_freq", type="eng_float", default=eng_notation.num_to_str(100e6), - help="Set rx_freq [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( - "", "--waterfall-file-path", dest="waterfall_file_path", type="string", default='/tmp/waterfall.dat', - help="Set waterfall_file_path [default=%default]") - return parser - - -def main(top_block_cls=satnogs_apt_demod, options=None): - if options is None: - options, _ = argument_parser().parse_args() - - tb = top_block_cls(antenna=options.antenna, bb_gain=options.bb_gain, decoded_data_file_path=options.decoded_data_file_path, dev_args=options.dev_args, doppler_correction_per_sec=options.doppler_correction_per_sec, enable_iq_dump=options.enable_iq_dump, file_path=options.file_path, if_gain=options.if_gain, iq_file_path=options.iq_file_path, lo_offset=options.lo_offset, ppm=options.ppm, rf_gain=options.rf_gain, rigctl_port=options.rigctl_port, rx_freq=options.rx_freq, rx_sdr_device=options.rx_sdr_device, waterfall_file_path=options.waterfall_file_path) - tb.start() - tb.wait() - - -if __name__ == '__main__': - main() diff --git a/apps/flowgraphs/satnogs_bpsk_ax25.py b/apps/flowgraphs/satnogs_bpsk_ax25.py index 002b889..12516b6 100755 --- a/apps/flowgraphs/satnogs_bpsk_ax25.py +++ b/apps/flowgraphs/satnogs_bpsk_ax25.py @@ -5,9 +5,10 @@ # Title: satnogs_bpsk_ax25 # Author: Manolis Surligas (surligas@gmail.com), Patrick Dohmen (DL4PD) # Description: BPSK AX.25 decoder -# Generated: Fri Dec 21 16:45:19 2018 +# GNU Radio version: 3.7.13.5 ################################################## + from gnuradio import analog from gnuradio import blocks from gnuradio import digital @@ -60,6 +61,8 @@ class satnogs_bpsk_ax25(gr.top_block): ################################################## self.sps = sps = 4 self.nfilts = nfilts = 32 + self.variable_ax25_decoder_0_0 = variable_ax25_decoder_0_0 = satnogs.ax25_decoder_make('GND', 0, True, False, True, 512) + self.variable_ax25_decoder_0 = variable_ax25_decoder_0 = satnogs.ax25_decoder_make('GND', 0, True, True, True, 512) self.rrc_taps = rrc_taps = firdes.root_raised_cosine(nfilts, nfilts, 1.0/float(sps), excess_bw, 11*sps*nfilts) self.bpsk_constellation = bpsk_constellation = digital.constellation_bpsk().base() @@ -71,13 +74,13 @@ class satnogs_bpsk_ax25(gr.top_block): ################################################## self.satnogs_waterfall_sink_0 = satnogs.waterfall_sink(audio_samp_rate, 0.0, 10, 1024, waterfall_file_path, 1) self.satnogs_udp_msg_sink_0_0 = satnogs.udp_msg_sink(udp_IP, udp_port, 1500) - self.satnogs_tcp_rigctl_msg_source_0 = satnogs.tcp_rigctl_msg_source("127.0.0.1", rigctl_port, False, 1000, 1500) + self.satnogs_tcp_rigctl_msg_source_0 = satnogs.tcp_rigctl_msg_source("127.0.0.1", rigctl_port, False, int(1.0/doppler_correction_per_sec) * 1000 + 1, 1500) self.satnogs_ogg_encoder_0 = satnogs.ogg_encoder(file_path, audio_samp_rate, 1.0) self.satnogs_iq_sink_0 = satnogs.iq_sink(16768, iq_file_path, False, enable_iq_dump) self.satnogs_frame_file_sink_0_1_0 = satnogs.frame_file_sink(decoded_data_file_path, 0) + self.satnogs_frame_decoder_0_0_0 = satnogs.frame_decoder(variable_ax25_decoder_0_0, gr.sizeof_char) + self.satnogs_frame_decoder_0_0 = satnogs.frame_decoder(variable_ax25_decoder_0, gr.sizeof_char) self.satnogs_coarse_doppler_correction_cc_0 = satnogs.coarse_doppler_correction_cc(rx_freq, satnogs.handle_samp_rate_rx(rx_sdr_device, samp_rate_rx)) - self.satnogs_ax25_decoder_bm_0_0 = satnogs.ax25_decoder_bm('GND', 0, True, False, 1024) - self.satnogs_ax25_decoder_bm_0 = satnogs.ax25_decoder_bm('GND', 0, True, True, 1024) self.pfb_arb_resampler_xxx_0_0 = pfb.arb_resampler_ccf( (1.0 * sps*baudrate)/satnogs.handle_samp_rate_rx(rx_sdr_device, samp_rate_rx), taps=None, @@ -123,18 +126,18 @@ class satnogs_bpsk_ax25(gr.top_block): ################################################## # Connections ################################################## - self.msg_connect((self.satnogs_ax25_decoder_bm_0, 'pdu'), (self.satnogs_frame_file_sink_0_1_0, 'frame')) - self.msg_connect((self.satnogs_ax25_decoder_bm_0, 'pdu'), (self.satnogs_udp_msg_sink_0_0, 'in')) - self.msg_connect((self.satnogs_ax25_decoder_bm_0_0, 'pdu'), (self.satnogs_frame_file_sink_0_1_0, 'frame')) - self.msg_connect((self.satnogs_ax25_decoder_bm_0_0, 'pdu'), (self.satnogs_udp_msg_sink_0_0, 'in')) + self.msg_connect((self.satnogs_frame_decoder_0_0, 'out'), (self.satnogs_frame_file_sink_0_1_0, 'frame')) + self.msg_connect((self.satnogs_frame_decoder_0_0, 'out'), (self.satnogs_udp_msg_sink_0_0, 'in')) + self.msg_connect((self.satnogs_frame_decoder_0_0_0, 'out'), (self.satnogs_frame_file_sink_0_1_0, 'frame')) + self.msg_connect((self.satnogs_frame_decoder_0_0_0, 'out'), (self.satnogs_udp_msg_sink_0_0, 'in')) self.msg_connect((self.satnogs_tcp_rigctl_msg_source_0, 'freq'), (self.satnogs_coarse_doppler_correction_cc_0, 'freq')) self.connect((self.analog_agc2_xx_0, 0), (self.pfb_arb_resampler_xxx_0_0, 0)) self.connect((self.analog_agc2_xx_0_0, 0), (self.low_pass_filter_0_0, 0)) self.connect((self.blocks_complex_to_real_0, 0), (self.satnogs_ogg_encoder_0, 0)) self.connect((self.blocks_rotator_cc_0, 0), (self.satnogs_coarse_doppler_correction_cc_0, 0)) self.connect((self.blocks_rotator_cc_0_0, 0), (self.blocks_complex_to_real_0, 0)) - self.connect((self.digital_constellation_receiver_cb_0, 0), (self.satnogs_ax25_decoder_bm_0, 0)) - self.connect((self.digital_constellation_receiver_cb_0, 0), (self.satnogs_ax25_decoder_bm_0_0, 0)) + self.connect((self.digital_constellation_receiver_cb_0, 0), (self.satnogs_frame_decoder_0_0, 0)) + self.connect((self.digital_constellation_receiver_cb_0, 0), (self.satnogs_frame_decoder_0_0_0, 0)) self.connect((self.digital_costas_loop_cc_0_0, 0), (self.digital_pfb_clock_sync_xxx_0, 0)) self.connect((self.digital_pfb_clock_sync_xxx_0, 0), (self.digital_constellation_receiver_cb_0, 0)) self.connect((self.low_pass_filter_0, 0), (self.digital_costas_loop_cc_0_0, 0)) @@ -326,6 +329,18 @@ class satnogs_bpsk_ax25(gr.top_block): self.nfilts = nfilts self.set_rrc_taps(firdes.root_raised_cosine(self.nfilts, self.nfilts, 1.0/float(self.sps), self.excess_bw, 11*self.sps*self.nfilts)) + def get_variable_ax25_decoder_0_0(self): + return self.variable_ax25_decoder_0_0 + + def set_variable_ax25_decoder_0_0(self, variable_ax25_decoder_0_0): + self.variable_ax25_decoder_0_0 = variable_ax25_decoder_0_0 + + def get_variable_ax25_decoder_0(self): + return self.variable_ax25_decoder_0 + + def set_variable_ax25_decoder_0(self, variable_ax25_decoder_0): + self.variable_ax25_decoder_0 = variable_ax25_decoder_0 + def get_rrc_taps(self): return self.rrc_taps diff --git a/apps/flowgraphs/satnogs_bpsk_decoder.py b/apps/flowgraphs/satnogs_bpsk_decoder.py deleted file mode 100755 index 7f99269..0000000 --- a/apps/flowgraphs/satnogs_bpsk_decoder.py +++ /dev/null @@ -1,452 +0,0 @@ -#!/usr/bin/env python2 -# -*- coding: utf-8 -*- -################################################## -# GNU Radio Python Flow Graph -# Title: BPSK Decoder -# Author: Patrick Dohmen, DL4PD -# Description: A BPSK decoder block for gr-satnogs -# Generated: Tue Mar 27 17:05:17 2018 -################################################## - -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 optparse import OptionParser -import osmosdr -import satnogs - - -class satnogs_bpsk_decoder(gr.top_block): - - def __init__(self, antenna=satnogs.not_set_antenna, baudrate=1200, bb_gain=satnogs.not_set_rx_bb_gain, cw_offset=1500, decoded_data_file_path='/tmp/.satnogs/data/data', dev_args=satnogs.not_set_dev_args, doppler_correction_per_sec=20, enable_iq_dump=0, file_path='test.ogg', if_gain=satnogs.not_set_rx_if_gain, iq_file_path='/tmp/iq.dat', lo_offset=100e3, ppm=0, rf_gain=satnogs.not_set_rx_rf_gain, rigctl_port=4532, rx_freq=100e6, rx_sdr_device='rtlsdr', udp_IP='127.0.0.1', udp_port=16887, waterfall_file_path='/tmp/waterfall.dat'): - gr.top_block.__init__(self, "BPSK Decoder") - - ################################################## - # Parameters - ################################################## - self.antenna = antenna - self.baudrate = baudrate - self.bb_gain = bb_gain - self.cw_offset = cw_offset - self.decoded_data_file_path = decoded_data_file_path - self.dev_args = dev_args - self.doppler_correction_per_sec = doppler_correction_per_sec - self.enable_iq_dump = enable_iq_dump - self.file_path = file_path - self.if_gain = if_gain - self.iq_file_path = iq_file_path - self.lo_offset = lo_offset - self.ppm = ppm - self.rf_gain = rf_gain - self.rigctl_port = rigctl_port - self.rx_freq = rx_freq - self.rx_sdr_device = rx_sdr_device - self.udp_IP = udp_IP - self.udp_port = udp_port - self.waterfall_file_path = waterfall_file_path - - ################################################## - # Variables - ################################################## - self.samp_rate_rx = samp_rate_rx = satnogs.hw_rx_settings[rx_sdr_device]['samp_rate'] - self.samp_per_sym = samp_per_sym = 5 - self.nfilts = nfilts = 16 - self.xlate_filter_taps = xlate_filter_taps = firdes.low_pass(1, samp_rate_rx, 125000, 25000, firdes.WIN_HAMMING, 6.76) - - self.taps = taps = firdes.low_pass(12.0, samp_rate_rx, 100e3, 60000, firdes.WIN_HAMMING, 6.76) - - self.rrc_taps = rrc_taps = firdes.root_raised_cosine(nfilts, nfilts, 1.0/float(samp_per_sym), 0.35, 11*samp_per_sym*nfilts) - self.filter_rate = filter_rate = 250000 - self.filt_mode = filt_mode = 0.1 - self.deviation = deviation = 5000 - self.audio_samp_rate = audio_samp_rate = 48000 - self.alpha = alpha = 0.1 - - ################################################## - # Blocks - ################################################## - self.satnogs_waterfall_sink_0 = satnogs.waterfall_sink(max(12000, int(3*(1+alpha)*baudrate)), 0.0, 10, 1024, waterfall_file_path, 1) - self.satnogs_udp_msg_sink_0_0 = satnogs.udp_msg_sink(udp_IP, udp_port, 1500) - self.satnogs_tcp_rigctl_msg_source_0 = satnogs.tcp_rigctl_msg_source("127.0.0.1", rigctl_port, False, 1000/doppler_correction_per_sec, 1500) - self.satnogs_ogg_encoder_0 = satnogs.ogg_encoder(file_path, audio_samp_rate, 1.0) - self.satnogs_iq_sink_0 = satnogs.iq_sink(32767, iq_file_path, False, enable_iq_dump) - self.satnogs_frame_file_sink_0_1_0 = satnogs.frame_file_sink(decoded_data_file_path, 0) - self.satnogs_coarse_doppler_correction_cc_0 = satnogs.coarse_doppler_correction_cc(rx_freq, samp_rate_rx) - self.satnogs_ax25_decoder_bm_0_0 = satnogs.ax25_decoder_bm('GND', 0, True, False, 1024) - self.satnogs_ax25_decoder_bm_0 = satnogs.ax25_decoder_bm('GND', 0, True, True, 1024) - self.osmosdr_source_0 = osmosdr.source( args="numchan=" + str(1) + " " + satnogs.handle_rx_dev_args(rx_sdr_device, dev_args) ) - self.osmosdr_source_0.set_sample_rate(samp_rate_rx) - self.osmosdr_source_0.set_center_freq(rx_freq - lo_offset, 0) - self.osmosdr_source_0.set_freq_corr(ppm, 0) - self.osmosdr_source_0.set_dc_offset_mode(2, 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.handle_rx_rf_gain(rx_sdr_device, rf_gain), 0) - self.osmosdr_source_0.set_if_gain(satnogs.handle_rx_if_gain(rx_sdr_device, if_gain), 0) - self.osmosdr_source_0.set_bb_gain(satnogs.handle_rx_bb_gain(rx_sdr_device, bb_gain), 0) - self.osmosdr_source_0.set_antenna(satnogs.handle_rx_antenna(rx_sdr_device, antenna), 0) - self.osmosdr_source_0.set_bandwidth(samp_rate_rx, 0) - - self.low_pass_filter_0 = filter.fir_filter_ccf(1, firdes.low_pass( - 1, audio_samp_rate, (1+alpha)*baudrate, ((1+alpha)*baudrate)*filt_mode, firdes.WIN_HAMMING, 6.76)) - self.freq_xlating_fir_filter_xxx_0_0 = filter.freq_xlating_fir_filter_ccf(audio_samp_rate/(samp_per_sym*baudrate), (firdes.low_pass(1, audio_samp_rate, (1+alpha)*baudrate, (1+alpha)*baudrate*filt_mode)), cw_offset/1200.0*baudrate, audio_samp_rate) - self.freq_xlating_fir_filter_xxx_0 = filter.freq_xlating_fir_filter_ccc(int(samp_rate_rx/filter_rate), (xlate_filter_taps), lo_offset, samp_rate_rx) - self.digital_pfb_clock_sync_xxx_0 = digital.pfb_clock_sync_ccf(samp_per_sym, 0.063, (rrc_taps), nfilts, nfilts/2, 1.5, 1) - self.digital_costas_loop_cc_0_0_0_0 = digital.costas_loop_cc(0.063, 2, False) - self.digital_binary_slicer_fb_0 = digital.binary_slicer_fb() - self.blocks_multiply_xx_0_0 = blocks.multiply_vcc(1) - self.blocks_multiply_xx_0 = blocks.multiply_vcc(1) - self.blocks_complex_to_real_0_0 = blocks.complex_to_real(1) - self.blocks_complex_to_real_0 = blocks.complex_to_real(1) - self.blks2_rational_resampler_xxx_1_0 = filter.rational_resampler_ccc( - interpolation=max(12000, int(3*(1+alpha)*baudrate)), - decimation=48000, - taps=None, - fractional_bw=None, - ) - self.blks2_rational_resampler_xxx_1 = filter.rational_resampler_ccc( - interpolation=audio_samp_rate, - decimation=int(samp_rate_rx/(samp_rate_rx/filter_rate)), - taps=None, - fractional_bw=None, - ) - self.analog_sig_source_x_0 = analog.sig_source_c(audio_samp_rate, analog.GR_COS_WAVE, cw_offset/1200.0*baudrate, 1, 0) - self.analog_agc2_xx_0_0 = analog.agc2_cc(0.01, 0.001, 0.015, 0.0) - self.analog_agc2_xx_0_0.set_max_gain(65536) - self.analog_agc2_xx_0 = analog.agc2_cc(0.01, 0.001, 0.5, 1.0) - self.analog_agc2_xx_0.set_max_gain(65536) - - ################################################## - # Connections - ################################################## - self.msg_connect((self.satnogs_ax25_decoder_bm_0, 'pdu'), (self.satnogs_frame_file_sink_0_1_0, 'frame')) - self.msg_connect((self.satnogs_ax25_decoder_bm_0, 'pdu'), (self.satnogs_udp_msg_sink_0_0, 'in')) - self.msg_connect((self.satnogs_ax25_decoder_bm_0_0, 'pdu'), (self.satnogs_frame_file_sink_0_1_0, 'frame')) - self.msg_connect((self.satnogs_ax25_decoder_bm_0_0, 'pdu'), (self.satnogs_udp_msg_sink_0_0, 'in')) - self.msg_connect((self.satnogs_tcp_rigctl_msg_source_0, 'freq'), (self.satnogs_coarse_doppler_correction_cc_0, 'freq')) - self.connect((self.analog_agc2_xx_0, 0), (self.digital_pfb_clock_sync_xxx_0, 0)) - self.connect((self.analog_agc2_xx_0_0, 0), (self.blocks_multiply_xx_0, 1)) - self.connect((self.analog_sig_source_x_0, 0), (self.blocks_multiply_xx_0, 0)) - self.connect((self.analog_sig_source_x_0, 0), (self.blocks_multiply_xx_0_0, 0)) - self.connect((self.blks2_rational_resampler_xxx_1, 0), (self.blks2_rational_resampler_xxx_1_0, 0)) - self.connect((self.blks2_rational_resampler_xxx_1, 0), (self.blocks_multiply_xx_0_0, 1)) - self.connect((self.blks2_rational_resampler_xxx_1, 0), (self.low_pass_filter_0, 0)) - self.connect((self.blks2_rational_resampler_xxx_1, 0), (self.satnogs_iq_sink_0, 0)) - self.connect((self.blks2_rational_resampler_xxx_1_0, 0), (self.satnogs_waterfall_sink_0, 0)) - self.connect((self.blocks_complex_to_real_0, 0), (self.satnogs_ogg_encoder_0, 0)) - self.connect((self.blocks_complex_to_real_0_0, 0), (self.digital_binary_slicer_fb_0, 0)) - self.connect((self.blocks_multiply_xx_0, 0), (self.blocks_complex_to_real_0, 0)) - self.connect((self.blocks_multiply_xx_0_0, 0), (self.freq_xlating_fir_filter_xxx_0_0, 0)) - self.connect((self.digital_binary_slicer_fb_0, 0), (self.satnogs_ax25_decoder_bm_0, 0)) - self.connect((self.digital_binary_slicer_fb_0, 0), (self.satnogs_ax25_decoder_bm_0_0, 0)) - self.connect((self.digital_costas_loop_cc_0_0_0_0, 0), (self.blocks_complex_to_real_0_0, 0)) - self.connect((self.digital_pfb_clock_sync_xxx_0, 0), (self.digital_costas_loop_cc_0_0_0_0, 0)) - self.connect((self.freq_xlating_fir_filter_xxx_0, 0), (self.blks2_rational_resampler_xxx_1, 0)) - self.connect((self.freq_xlating_fir_filter_xxx_0_0, 0), (self.analog_agc2_xx_0, 0)) - self.connect((self.low_pass_filter_0, 0), (self.analog_agc2_xx_0_0, 0)) - self.connect((self.osmosdr_source_0, 0), (self.satnogs_coarse_doppler_correction_cc_0, 0)) - self.connect((self.satnogs_coarse_doppler_correction_cc_0, 0), (self.freq_xlating_fir_filter_xxx_0, 0)) - - def get_antenna(self): - return self.antenna - - def set_antenna(self, antenna): - self.antenna = antenna - self.osmosdr_source_0.set_antenna(satnogs.handle_rx_antenna(self.rx_sdr_device, self.antenna), 0) - - def get_baudrate(self): - return self.baudrate - - def set_baudrate(self, baudrate): - self.baudrate = baudrate - self.low_pass_filter_0.set_taps(firdes.low_pass(1, self.audio_samp_rate, (1+self.alpha)*self.baudrate, ((1+self.alpha)*self.baudrate)*self.filt_mode, firdes.WIN_HAMMING, 6.76)) - self.freq_xlating_fir_filter_xxx_0_0.set_taps((firdes.low_pass(1, self.audio_samp_rate, (1+self.alpha)*self.baudrate, (1+self.alpha)*self.baudrate*self.filt_mode))) - self.freq_xlating_fir_filter_xxx_0_0.set_center_freq(self.cw_offset/1200.0*self.baudrate) - self.analog_sig_source_x_0.set_frequency(self.cw_offset/1200.0*self.baudrate) - - def get_bb_gain(self): - return self.bb_gain - - def set_bb_gain(self, bb_gain): - self.bb_gain = bb_gain - self.osmosdr_source_0.set_bb_gain(satnogs.handle_rx_bb_gain(self.rx_sdr_device, self.bb_gain), 0) - - def get_cw_offset(self): - return self.cw_offset - - def set_cw_offset(self, cw_offset): - self.cw_offset = cw_offset - self.freq_xlating_fir_filter_xxx_0_0.set_center_freq(self.cw_offset/1200.0*self.baudrate) - self.analog_sig_source_x_0.set_frequency(self.cw_offset/1200.0*self.baudrate) - - def get_decoded_data_file_path(self): - return self.decoded_data_file_path - - def set_decoded_data_file_path(self, decoded_data_file_path): - self.decoded_data_file_path = decoded_data_file_path - - def get_dev_args(self): - return self.dev_args - - def set_dev_args(self, dev_args): - self.dev_args = dev_args - - def get_doppler_correction_per_sec(self): - return self.doppler_correction_per_sec - - def set_doppler_correction_per_sec(self, doppler_correction_per_sec): - self.doppler_correction_per_sec = doppler_correction_per_sec - - def get_enable_iq_dump(self): - return self.enable_iq_dump - - def set_enable_iq_dump(self, enable_iq_dump): - self.enable_iq_dump = enable_iq_dump - - def get_file_path(self): - return self.file_path - - def set_file_path(self, file_path): - self.file_path = file_path - - def get_if_gain(self): - return self.if_gain - - def set_if_gain(self, if_gain): - self.if_gain = if_gain - self.osmosdr_source_0.set_if_gain(satnogs.handle_rx_if_gain(self.rx_sdr_device, self.if_gain), 0) - - def get_iq_file_path(self): - return self.iq_file_path - - def set_iq_file_path(self, iq_file_path): - self.iq_file_path = iq_file_path - - 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_freq - self.lo_offset, 0) - self.freq_xlating_fir_filter_xxx_0.set_center_freq(self.lo_offset) - - def get_ppm(self): - return self.ppm - - def set_ppm(self, ppm): - self.ppm = ppm - self.osmosdr_source_0.set_freq_corr(self.ppm, 0) - - def get_rf_gain(self): - return self.rf_gain - - def set_rf_gain(self, rf_gain): - self.rf_gain = rf_gain - self.osmosdr_source_0.set_gain(satnogs.handle_rx_rf_gain(self.rx_sdr_device, self.rf_gain), 0) - - def get_rigctl_port(self): - return self.rigctl_port - - def set_rigctl_port(self, rigctl_port): - self.rigctl_port = rigctl_port - - def get_rx_freq(self): - return self.rx_freq - - def set_rx_freq(self, rx_freq): - self.rx_freq = rx_freq - self.satnogs_coarse_doppler_correction_cc_0.set_new_freq_locked(self.rx_freq) - self.osmosdr_source_0.set_center_freq(self.rx_freq - self.lo_offset, 0) - - 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_rx(satnogs.hw_rx_settings[self.rx_sdr_device]['samp_rate']) - self.osmosdr_source_0.set_gain(satnogs.handle_rx_rf_gain(self.rx_sdr_device, self.rf_gain), 0) - self.osmosdr_source_0.set_if_gain(satnogs.handle_rx_if_gain(self.rx_sdr_device, self.if_gain), 0) - self.osmosdr_source_0.set_bb_gain(satnogs.handle_rx_bb_gain(self.rx_sdr_device, self.bb_gain), 0) - self.osmosdr_source_0.set_antenna(satnogs.handle_rx_antenna(self.rx_sdr_device, self.antenna), 0) - - def get_udp_IP(self): - return self.udp_IP - - def set_udp_IP(self, udp_IP): - self.udp_IP = udp_IP - - def get_udp_port(self): - return self.udp_port - - def set_udp_port(self, udp_port): - self.udp_port = udp_port - - def get_waterfall_file_path(self): - return self.waterfall_file_path - - def set_waterfall_file_path(self, waterfall_file_path): - self.waterfall_file_path = waterfall_file_path - - 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_xlate_filter_taps(firdes.low_pass(1, self.samp_rate_rx, 125000, 25000, firdes.WIN_HAMMING, 6.76)) - self.osmosdr_source_0.set_sample_rate(self.samp_rate_rx) - self.osmosdr_source_0.set_bandwidth(self.samp_rate_rx, 0) - - def get_samp_per_sym(self): - return self.samp_per_sym - - def set_samp_per_sym(self, samp_per_sym): - self.samp_per_sym = samp_per_sym - self.set_rrc_taps(firdes.root_raised_cosine(self.nfilts, self.nfilts, 1.0/float(self.samp_per_sym), 0.35, 11*self.samp_per_sym*self.nfilts)) - - def get_nfilts(self): - return self.nfilts - - def set_nfilts(self, nfilts): - self.nfilts = nfilts - self.set_rrc_taps(firdes.root_raised_cosine(self.nfilts, self.nfilts, 1.0/float(self.samp_per_sym), 0.35, 11*self.samp_per_sym*self.nfilts)) - - def get_xlate_filter_taps(self): - return self.xlate_filter_taps - - def set_xlate_filter_taps(self, xlate_filter_taps): - self.xlate_filter_taps = xlate_filter_taps - self.freq_xlating_fir_filter_xxx_0.set_taps((self.xlate_filter_taps)) - - def get_taps(self): - return self.taps - - def set_taps(self, taps): - self.taps = taps - - def get_rrc_taps(self): - return self.rrc_taps - - def set_rrc_taps(self, rrc_taps): - self.rrc_taps = rrc_taps - self.digital_pfb_clock_sync_xxx_0.update_taps((self.rrc_taps)) - - def get_filter_rate(self): - return self.filter_rate - - def set_filter_rate(self, filter_rate): - self.filter_rate = filter_rate - - def get_filt_mode(self): - return self.filt_mode - - def set_filt_mode(self, filt_mode): - self.filt_mode = filt_mode - self.low_pass_filter_0.set_taps(firdes.low_pass(1, self.audio_samp_rate, (1+self.alpha)*self.baudrate, ((1+self.alpha)*self.baudrate)*self.filt_mode, firdes.WIN_HAMMING, 6.76)) - self.freq_xlating_fir_filter_xxx_0_0.set_taps((firdes.low_pass(1, self.audio_samp_rate, (1+self.alpha)*self.baudrate, (1+self.alpha)*self.baudrate*self.filt_mode))) - - def get_deviation(self): - return self.deviation - - def set_deviation(self, deviation): - self.deviation = deviation - - def get_audio_samp_rate(self): - return self.audio_samp_rate - - def set_audio_samp_rate(self, audio_samp_rate): - self.audio_samp_rate = audio_samp_rate - self.low_pass_filter_0.set_taps(firdes.low_pass(1, self.audio_samp_rate, (1+self.alpha)*self.baudrate, ((1+self.alpha)*self.baudrate)*self.filt_mode, firdes.WIN_HAMMING, 6.76)) - self.freq_xlating_fir_filter_xxx_0_0.set_taps((firdes.low_pass(1, self.audio_samp_rate, (1+self.alpha)*self.baudrate, (1+self.alpha)*self.baudrate*self.filt_mode))) - self.analog_sig_source_x_0.set_sampling_freq(self.audio_samp_rate) - - def get_alpha(self): - return self.alpha - - def set_alpha(self, alpha): - self.alpha = alpha - self.low_pass_filter_0.set_taps(firdes.low_pass(1, self.audio_samp_rate, (1+self.alpha)*self.baudrate, ((1+self.alpha)*self.baudrate)*self.filt_mode, firdes.WIN_HAMMING, 6.76)) - self.freq_xlating_fir_filter_xxx_0_0.set_taps((firdes.low_pass(1, self.audio_samp_rate, (1+self.alpha)*self.baudrate, (1+self.alpha)*self.baudrate*self.filt_mode))) - - -def argument_parser(): - description = 'A BPSK decoder block for gr-satnogs' - parser = OptionParser(usage="%prog: [options]", option_class=eng_option, description=description) - parser.add_option( - "", "--antenna", dest="antenna", type="string", default=satnogs.not_set_antenna, - help="Set antenna [default=%default]") - parser.add_option( - "", "--baudrate", dest="baudrate", type="intx", default=1200, - help="Set baudrate [default=%default]") - parser.add_option( - "", "--bb-gain", dest="bb_gain", type="eng_float", default=eng_notation.num_to_str(satnogs.not_set_rx_bb_gain), - help="Set bb_gain [default=%default]") - parser.add_option( - "", "--cw-offset", dest="cw_offset", type="eng_float", default=eng_notation.num_to_str(1500), - help="Set cw_offset [default=%default]") - parser.add_option( - "", "--decoded-data-file-path", dest="decoded_data_file_path", type="string", default='/tmp/.satnogs/data/data', - help="Set decoded_data_file_path [default=%default]") - parser.add_option( - "", "--dev-args", dest="dev_args", type="string", default=satnogs.not_set_dev_args, - help="Set dev_args [default=%default]") - parser.add_option( - "", "--doppler-correction-per-sec", dest="doppler_correction_per_sec", type="intx", default=20, - help="Set doppler_correction_per_sec [default=%default]") - parser.add_option( - "", "--enable-iq-dump", dest="enable_iq_dump", type="intx", default=0, - help="Set enable_iq_dump [default=%default]") - parser.add_option( - "", "--file-path", dest="file_path", type="string", default='test.ogg', - help="Set file_path [default=%default]") - parser.add_option( - "", "--if-gain", dest="if_gain", type="eng_float", default=eng_notation.num_to_str(satnogs.not_set_rx_if_gain), - help="Set if_gain [default=%default]") - parser.add_option( - "", "--iq-file-path", dest="iq_file_path", type="string", default='/tmp/iq.dat', - help="Set iq_file_path [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( - "", "--ppm", dest="ppm", type="intx", default=0, - help="Set ppm [default=%default]") - parser.add_option( - "", "--rf-gain", dest="rf_gain", type="eng_float", default=eng_notation.num_to_str(satnogs.not_set_rx_rf_gain), - help="Set rf_gain [default=%default]") - parser.add_option( - "", "--rigctl-port", dest="rigctl_port", type="intx", default=4532, - help="Set rigctl_port [default=%default]") - parser.add_option( - "", "--rx-freq", dest="rx_freq", type="eng_float", default=eng_notation.num_to_str(100e6), - help="Set rx_freq [default=%default]") - parser.add_option( - "", "--rx-sdr-device", dest="rx_sdr_device", type="string", default='rtlsdr', - help="Set rx_sdr_device [default=%default]") - parser.add_option( - "", "--udp-IP", dest="udp_IP", type="string", default='127.0.0.1', - help="Set udp_IP [default=%default]") - parser.add_option( - "", "--udp-port", dest="udp_port", type="intx", default=16887, - help="Set udp_port [default=%default]") - parser.add_option( - "", "--waterfall-file-path", dest="waterfall_file_path", type="string", default='/tmp/waterfall.dat', - help="Set waterfall_file_path [default=%default]") - return parser - - -def main(top_block_cls=satnogs_bpsk_decoder, options=None): - if options is None: - options, _ = argument_parser().parse_args() - - tb = top_block_cls(antenna=options.antenna, baudrate=options.baudrate, bb_gain=options.bb_gain, cw_offset=options.cw_offset, decoded_data_file_path=options.decoded_data_file_path, dev_args=options.dev_args, doppler_correction_per_sec=options.doppler_correction_per_sec, enable_iq_dump=options.enable_iq_dump, file_path=options.file_path, if_gain=options.if_gain, iq_file_path=options.iq_file_path, lo_offset=options.lo_offset, ppm=options.ppm, rf_gain=options.rf_gain, rigctl_port=options.rigctl_port, rx_freq=options.rx_freq, rx_sdr_device=options.rx_sdr_device, udp_IP=options.udp_IP, udp_port=options.udp_port, waterfall_file_path=options.waterfall_file_path) - tb.start() - tb.wait() - - -if __name__ == '__main__': - main() diff --git a/apps/flowgraphs/satnogs_bpsk_demod.py b/apps/flowgraphs/satnogs_bpsk_demod.py deleted file mode 100755 index b13a05f..0000000 --- a/apps/flowgraphs/satnogs_bpsk_demod.py +++ /dev/null @@ -1,341 +0,0 @@ -#!/usr/bin/env python2 -# -*- coding: utf-8 -*- -################################################## -# GNU Radio Python Flow Graph -# Title: BPSK Generic Demodulation -# Author: surligas, cshields, csete -# Description: A generic BPSK demodulation block -# Generated: Sun Nov 19 11:35:26 2017 -################################################## - -from gnuradio import analog -from gnuradio import blocks -from gnuradio import eng_notation -from gnuradio import filter -from gnuradio import gr -from gnuradio.eng_option import eng_option -from gnuradio.filter import firdes -from optparse import OptionParser -import osmosdr -import satnogs -import time - - -class satnogs_bpsk_demod(gr.top_block): - - def __init__(self, antenna=satnogs.not_set_antenna, bb_gain=satnogs.not_set_rx_bb_gain, cw_offset=1500, decoded_data_file_path='/tmp/.satnogs/data/data', dev_args=satnogs.not_set_dev_args, doppler_correction_per_sec=20, enable_iq_dump=0, file_path='test.ogg', if_gain=satnogs.not_set_rx_if_gain, iq_file_path='/tmp/iq.dat', lo_offset=100e3, ppm=0, rf_gain=satnogs.not_set_rx_rf_gain, rigctl_port=4532, rx_freq=100e6, rx_sdr_device='usrpb200', waterfall_file_path='/tmp/waterfall.dat'): - gr.top_block.__init__(self, "BPSK Generic Demodulation") - - ################################################## - # Parameters - ################################################## - self.antenna = antenna - self.bb_gain = bb_gain - self.cw_offset = cw_offset - self.decoded_data_file_path = decoded_data_file_path - self.dev_args = dev_args - self.doppler_correction_per_sec = doppler_correction_per_sec - self.enable_iq_dump = enable_iq_dump - self.file_path = file_path - self.if_gain = if_gain - self.iq_file_path = iq_file_path - self.lo_offset = lo_offset - self.ppm = ppm - self.rf_gain = rf_gain - self.rigctl_port = rigctl_port - self.rx_freq = rx_freq - self.rx_sdr_device = rx_sdr_device - self.waterfall_file_path = waterfall_file_path - - ################################################## - # Variables - ################################################## - self.samp_rate_rx = samp_rate_rx = satnogs.hw_rx_settings[rx_sdr_device]['samp_rate'] - self.xlate_filter_taps = xlate_filter_taps = firdes.low_pass(1, samp_rate_rx, 125000, 25000, firdes.WIN_HAMMING, 6.76) - - self.taps = taps = firdes.low_pass(12.0, samp_rate_rx, 100e3, 60000, firdes.WIN_HAMMING, 6.76) - - self.filter_rate = filter_rate = 250000 - self.deviation = deviation = 5000 - self.audio_samp_rate = audio_samp_rate = 48000 - - ################################################## - # Blocks - ################################################## - self.satnogs_waterfall_sink_0 = satnogs.waterfall_sink(audio_samp_rate, 0.0, 10, 1024, waterfall_file_path, 1) - self.satnogs_tcp_rigctl_msg_source_0 = satnogs.tcp_rigctl_msg_source("127.0.0.1", rigctl_port, False, 1000/doppler_correction_per_sec, 1500) - self.satnogs_ogg_encoder_0 = satnogs.ogg_encoder(file_path, audio_samp_rate, 1.0) - self.satnogs_iq_sink_0 = satnogs.iq_sink(32767, iq_file_path, False, enable_iq_dump) - self.satnogs_coarse_doppler_correction_cc_0 = satnogs.coarse_doppler_correction_cc(rx_freq, samp_rate_rx) - self.osmosdr_source_0 = osmosdr.source( args="numchan=" + str(1) + " " + satnogs.handle_rx_dev_args(rx_sdr_device, dev_args) ) - self.osmosdr_source_0.set_sample_rate(samp_rate_rx) - self.osmosdr_source_0.set_center_freq(rx_freq - lo_offset, 0) - self.osmosdr_source_0.set_freq_corr(ppm, 0) - self.osmosdr_source_0.set_dc_offset_mode(2, 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.handle_rx_rf_gain(rx_sdr_device, rf_gain), 0) - self.osmosdr_source_0.set_if_gain(satnogs.handle_rx_if_gain(rx_sdr_device, if_gain), 0) - self.osmosdr_source_0.set_bb_gain(satnogs.handle_rx_bb_gain(rx_sdr_device, bb_gain), 0) - self.osmosdr_source_0.set_antenna(satnogs.handle_rx_antenna(rx_sdr_device, antenna), 0) - self.osmosdr_source_0.set_bandwidth(samp_rate_rx, 0) - - self.low_pass_filter_0 = filter.fir_filter_ccf(1, firdes.low_pass( - 1, audio_samp_rate, 2000, 1000, firdes.WIN_HAMMING, 6.76)) - self.freq_xlating_fir_filter_xxx_0 = filter.freq_xlating_fir_filter_ccc(int(samp_rate_rx/filter_rate), (xlate_filter_taps), lo_offset, samp_rate_rx) - self.blocks_multiply_xx_0 = blocks.multiply_vcc(1) - self.blocks_complex_to_real_0 = blocks.complex_to_real(1) - self.blks2_rational_resampler_xxx_1 = filter.rational_resampler_ccc( - interpolation=24, - decimation=125, - taps=None, - fractional_bw=None, - ) - self.analog_sig_source_x_0 = analog.sig_source_c(audio_samp_rate, analog.GR_COS_WAVE, cw_offset, 1, 0) - self.analog_agc2_xx_0_0 = analog.agc2_cc(0.01, 0.001, 0.015, 0.0) - self.analog_agc2_xx_0_0.set_max_gain(65536) - - ################################################## - # Connections - ################################################## - self.msg_connect((self.satnogs_tcp_rigctl_msg_source_0, 'freq'), (self.satnogs_coarse_doppler_correction_cc_0, 'freq')) - self.connect((self.analog_agc2_xx_0_0, 0), (self.blocks_multiply_xx_0, 1)) - self.connect((self.analog_sig_source_x_0, 0), (self.blocks_multiply_xx_0, 0)) - self.connect((self.blks2_rational_resampler_xxx_1, 0), (self.low_pass_filter_0, 0)) - self.connect((self.blks2_rational_resampler_xxx_1, 0), (self.satnogs_iq_sink_0, 0)) - self.connect((self.blks2_rational_resampler_xxx_1, 0), (self.satnogs_waterfall_sink_0, 0)) - self.connect((self.blocks_complex_to_real_0, 0), (self.satnogs_ogg_encoder_0, 0)) - self.connect((self.blocks_multiply_xx_0, 0), (self.blocks_complex_to_real_0, 0)) - self.connect((self.freq_xlating_fir_filter_xxx_0, 0), (self.blks2_rational_resampler_xxx_1, 0)) - self.connect((self.low_pass_filter_0, 0), (self.analog_agc2_xx_0_0, 0)) - self.connect((self.osmosdr_source_0, 0), (self.satnogs_coarse_doppler_correction_cc_0, 0)) - self.connect((self.satnogs_coarse_doppler_correction_cc_0, 0), (self.freq_xlating_fir_filter_xxx_0, 0)) - - def get_antenna(self): - return self.antenna - - def set_antenna(self, antenna): - self.antenna = antenna - self.osmosdr_source_0.set_antenna(satnogs.handle_rx_antenna(self.rx_sdr_device, self.antenna), 0) - - def get_bb_gain(self): - return self.bb_gain - - def set_bb_gain(self, bb_gain): - self.bb_gain = bb_gain - self.osmosdr_source_0.set_bb_gain(satnogs.handle_rx_bb_gain(self.rx_sdr_device, self.bb_gain), 0) - - def get_cw_offset(self): - return self.cw_offset - - def set_cw_offset(self, cw_offset): - self.cw_offset = cw_offset - self.analog_sig_source_x_0.set_frequency(self.cw_offset) - - def get_decoded_data_file_path(self): - return self.decoded_data_file_path - - def set_decoded_data_file_path(self, decoded_data_file_path): - self.decoded_data_file_path = decoded_data_file_path - - def get_dev_args(self): - return self.dev_args - - def set_dev_args(self, dev_args): - self.dev_args = dev_args - - def get_doppler_correction_per_sec(self): - return self.doppler_correction_per_sec - - def set_doppler_correction_per_sec(self, doppler_correction_per_sec): - self.doppler_correction_per_sec = doppler_correction_per_sec - - def get_enable_iq_dump(self): - return self.enable_iq_dump - - def set_enable_iq_dump(self, enable_iq_dump): - self.enable_iq_dump = enable_iq_dump - - def get_file_path(self): - return self.file_path - - def set_file_path(self, file_path): - self.file_path = file_path - - def get_if_gain(self): - return self.if_gain - - def set_if_gain(self, if_gain): - self.if_gain = if_gain - self.osmosdr_source_0.set_if_gain(satnogs.handle_rx_if_gain(self.rx_sdr_device, self.if_gain), 0) - - def get_iq_file_path(self): - return self.iq_file_path - - def set_iq_file_path(self, iq_file_path): - self.iq_file_path = iq_file_path - - 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_freq - self.lo_offset, 0) - self.freq_xlating_fir_filter_xxx_0.set_center_freq(self.lo_offset) - - def get_ppm(self): - return self.ppm - - def set_ppm(self, ppm): - self.ppm = ppm - self.osmosdr_source_0.set_freq_corr(self.ppm, 0) - - def get_rf_gain(self): - return self.rf_gain - - def set_rf_gain(self, rf_gain): - self.rf_gain = rf_gain - self.osmosdr_source_0.set_gain(satnogs.handle_rx_rf_gain(self.rx_sdr_device, self.rf_gain), 0) - - def get_rigctl_port(self): - return self.rigctl_port - - def set_rigctl_port(self, rigctl_port): - self.rigctl_port = rigctl_port - - def get_rx_freq(self): - return self.rx_freq - - def set_rx_freq(self, rx_freq): - self.rx_freq = rx_freq - self.satnogs_coarse_doppler_correction_cc_0.set_new_freq_locked(self.rx_freq) - self.osmosdr_source_0.set_center_freq(self.rx_freq - self.lo_offset, 0) - - 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_rx(satnogs.hw_rx_settings[self.rx_sdr_device]['samp_rate']) - self.osmosdr_source_0.set_gain(satnogs.handle_rx_rf_gain(self.rx_sdr_device, self.rf_gain), 0) - self.osmosdr_source_0.set_if_gain(satnogs.handle_rx_if_gain(self.rx_sdr_device, self.if_gain), 0) - self.osmosdr_source_0.set_bb_gain(satnogs.handle_rx_bb_gain(self.rx_sdr_device, self.bb_gain), 0) - self.osmosdr_source_0.set_antenna(satnogs.handle_rx_antenna(self.rx_sdr_device, self.antenna), 0) - - def get_waterfall_file_path(self): - return self.waterfall_file_path - - def set_waterfall_file_path(self, waterfall_file_path): - self.waterfall_file_path = waterfall_file_path - - 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_xlate_filter_taps(firdes.low_pass(1, self.samp_rate_rx, 125000, 25000, firdes.WIN_HAMMING, 6.76)) - self.osmosdr_source_0.set_sample_rate(self.samp_rate_rx) - self.osmosdr_source_0.set_bandwidth(self.samp_rate_rx, 0) - - def get_xlate_filter_taps(self): - return self.xlate_filter_taps - - def set_xlate_filter_taps(self, xlate_filter_taps): - self.xlate_filter_taps = xlate_filter_taps - self.freq_xlating_fir_filter_xxx_0.set_taps((self.xlate_filter_taps)) - - def get_taps(self): - return self.taps - - def set_taps(self, taps): - self.taps = taps - - def get_filter_rate(self): - return self.filter_rate - - def set_filter_rate(self, filter_rate): - self.filter_rate = filter_rate - - def get_deviation(self): - return self.deviation - - def set_deviation(self, deviation): - self.deviation = deviation - - def get_audio_samp_rate(self): - return self.audio_samp_rate - - def set_audio_samp_rate(self, audio_samp_rate): - self.audio_samp_rate = audio_samp_rate - self.low_pass_filter_0.set_taps(firdes.low_pass(1, self.audio_samp_rate, 2000, 1000, firdes.WIN_HAMMING, 6.76)) - self.analog_sig_source_x_0.set_sampling_freq(self.audio_samp_rate) - - -def argument_parser(): - description = 'A generic BPSK demodulation block' - parser = OptionParser(usage="%prog: [options]", option_class=eng_option, description=description) - parser.add_option( - "", "--antenna", dest="antenna", type="string", default=satnogs.not_set_antenna, - help="Set antenna [default=%default]") - parser.add_option( - "", "--bb-gain", dest="bb_gain", type="eng_float", default=eng_notation.num_to_str(satnogs.not_set_rx_bb_gain), - help="Set bb_gain [default=%default]") - parser.add_option( - "", "--cw-offset", dest="cw_offset", type="eng_float", default=eng_notation.num_to_str(1500), - help="Set cw_offset [default=%default]") - parser.add_option( - "", "--decoded-data-file-path", dest="decoded_data_file_path", type="string", default='/tmp/.satnogs/data/data', - help="Set decoded_data_file_path [default=%default]") - parser.add_option( - "", "--dev-args", dest="dev_args", type="string", default=satnogs.not_set_dev_args, - help="Set dev_args [default=%default]") - parser.add_option( - "", "--doppler-correction-per-sec", dest="doppler_correction_per_sec", type="intx", default=20, - help="Set doppler_correction_per_sec [default=%default]") - parser.add_option( - "", "--enable-iq-dump", dest="enable_iq_dump", type="intx", default=0, - help="Set enable_iq_dump [default=%default]") - parser.add_option( - "", "--file-path", dest="file_path", type="string", default='test.ogg', - help="Set file_path [default=%default]") - parser.add_option( - "", "--if-gain", dest="if_gain", type="eng_float", default=eng_notation.num_to_str(satnogs.not_set_rx_if_gain), - help="Set if_gain [default=%default]") - parser.add_option( - "", "--iq-file-path", dest="iq_file_path", type="string", default='/tmp/iq.dat', - help="Set iq_file_path [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( - "", "--ppm", dest="ppm", type="intx", default=0, - help="Set ppm [default=%default]") - parser.add_option( - "", "--rf-gain", dest="rf_gain", type="eng_float", default=eng_notation.num_to_str(satnogs.not_set_rx_rf_gain), - help="Set rf_gain [default=%default]") - parser.add_option( - "", "--rigctl-port", dest="rigctl_port", type="intx", default=4532, - help="Set rigctl_port [default=%default]") - parser.add_option( - "", "--rx-freq", dest="rx_freq", type="eng_float", default=eng_notation.num_to_str(100e6), - help="Set rx_freq [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( - "", "--waterfall-file-path", dest="waterfall_file_path", type="string", default='/tmp/waterfall.dat', - help="Set waterfall_file_path [default=%default]") - return parser - - -def main(top_block_cls=satnogs_bpsk_demod, options=None): - if options is None: - options, _ = argument_parser().parse_args() - - tb = top_block_cls(antenna=options.antenna, bb_gain=options.bb_gain, cw_offset=options.cw_offset, decoded_data_file_path=options.decoded_data_file_path, dev_args=options.dev_args, doppler_correction_per_sec=options.doppler_correction_per_sec, enable_iq_dump=options.enable_iq_dump, file_path=options.file_path, if_gain=options.if_gain, iq_file_path=options.iq_file_path, lo_offset=options.lo_offset, ppm=options.ppm, rf_gain=options.rf_gain, rigctl_port=options.rigctl_port, rx_freq=options.rx_freq, rx_sdr_device=options.rx_sdr_device, waterfall_file_path=options.waterfall_file_path) - tb.start() - tb.wait() - - -if __name__ == '__main__': - main() diff --git a/apps/flowgraphs/satnogs_cw_decoder.py b/apps/flowgraphs/satnogs_cw_decoder.py index 4c3af5b..f960743 100755 --- a/apps/flowgraphs/satnogs_cw_decoder.py +++ b/apps/flowgraphs/satnogs_cw_decoder.py @@ -5,9 +5,10 @@ # Title: CW Decoder # Author: Manolis Surligas (surligas@gmail.com) # Description: A CW (Morse) Decoder -# Generated: Sun Jan 6 13:47:58 2019 +# GNU Radio version: 3.7.13.5 ################################################## + from gnuradio import analog from gnuradio import blocks from gnuradio import eng_notation @@ -25,7 +26,7 @@ import time class satnogs_cw_decoder(gr.top_block): - def __init__(self, antenna=satnogs.not_set_antenna, bb_gain=satnogs.not_set_rx_bb_gain, bfo_freq=1e3, decoded_data_file_path='/tmp/.satnogs/data/data', dev_args=satnogs.not_set_dev_args, doppler_correction_per_sec=1000, enable_iq_dump=0, file_path='test.txt', if_gain=satnogs.not_set_rx_if_gain, iq_file_path='/tmp/iq.dat', lo_offset=100e3, ppm=0, rf_gain=satnogs.not_set_rx_rf_gain, rigctl_port=4532, rx_freq=100e6, rx_sdr_device='usrpb200', samp_rate_rx=satnogs.not_set_samp_rate_rx, udp_IP='127.0.0.1', udp_port=16887, waterfall_file_path='/tmp/waterfall.dat', wpm=20): + def __init__(self, antenna=satnogs.not_set_antenna, bb_gain=satnogs.not_set_rx_bb_gain, bfo_freq=1e3, decoded_data_file_path='/tmp/.satnogs/data/data', dev_args=satnogs.not_set_dev_args, doppler_correction_per_sec=20, enable_iq_dump=0, file_path='test.txt', if_gain=satnogs.not_set_rx_if_gain, iq_file_path='/tmp/iq.dat', lo_offset=100e3, ppm=0, rf_gain=satnogs.not_set_rx_rf_gain, rigctl_port=4532, rx_freq=100e6, rx_sdr_device='usrpb200', samp_rate_rx=satnogs.not_set_samp_rate_rx, udp_IP='127.0.0.1', udp_port=16887, waterfall_file_path='/tmp/waterfall.dat', wpm=20): gr.top_block.__init__(self, "CW Decoder") ################################################## @@ -65,7 +66,7 @@ class satnogs_cw_decoder(gr.top_block): ################################################## self.satnogs_waterfall_sink_0 = satnogs.waterfall_sink(audio_samp_rate, 0.0, 10, 1024, waterfall_file_path, 1) self.satnogs_udp_msg_sink_0_0 = satnogs.udp_msg_sink(udp_IP, udp_port, 1500) - self.satnogs_tcp_rigctl_msg_source_0 = satnogs.tcp_rigctl_msg_source("127.0.0.1", rigctl_port, False, 1000, 1500) + self.satnogs_tcp_rigctl_msg_source_0 = satnogs.tcp_rigctl_msg_source("127.0.0.1", rigctl_port, False, int(1000.0/doppler_correction_per_sec) + 1, 1500) self.satnogs_ogg_encoder_0 = satnogs.ogg_encoder(file_path, audio_samp_rate, 1.0) self.satnogs_morse_decoder_0 = satnogs.morse_decoder(ord('#'), 3) self.satnogs_iq_sink_0 = satnogs.iq_sink(16768, iq_file_path, False, enable_iq_dump) @@ -340,7 +341,7 @@ def argument_parser(): "", "--dev-args", dest="dev_args", type="string", default=satnogs.not_set_dev_args, help="Set dev_args [default=%default]") parser.add_option( - "", "--doppler-correction-per-sec", dest="doppler_correction_per_sec", type="intx", default=1000, + "", "--doppler-correction-per-sec", dest="doppler_correction_per_sec", type="intx", default=20, help="Set doppler_correction_per_sec [default=%default]") parser.add_option( "", "--enable-iq-dump", dest="enable_iq_dump", type="intx", default=0, diff --git a/apps/flowgraphs/satnogs_example_flowgraph.py b/apps/flowgraphs/satnogs_example_flowgraph.py index 13887d4..840c618 100755 --- a/apps/flowgraphs/satnogs_example_flowgraph.py +++ b/apps/flowgraphs/satnogs_example_flowgraph.py @@ -5,9 +5,10 @@ # Title: An example flowgraph # Author: Manolis Surligas (surligas@gmail.com) # Description: An example flowgraph that can be used as a base for decoding flowgraphs -# Generated: Fri Apr 27 11:31:43 2018 +# GNU Radio version: 3.7.13.5 ################################################## + from gnuradio import analog from gnuradio import eng_notation from gnuradio import filter @@ -63,7 +64,7 @@ class satnogs_example_flowgraph(gr.top_block): # Blocks ################################################## self.satnogs_waterfall_sink_0_0 = satnogs.waterfall_sink(audio_samp_rate, 0.0, 10, 1024, waterfall_file_path, 1) - self.satnogs_tcp_rigctl_msg_source_0 = satnogs.tcp_rigctl_msg_source("127.0.0.1", rigctl_port, False, 1000/doppler_correction_per_sec, 1500) + self.satnogs_tcp_rigctl_msg_source_0_0 = satnogs.tcp_rigctl_msg_source("127.0.0.1", rigctl_port, False, int(1000.0/doppler_correction_per_sec) + 1, 1500) self.satnogs_ogg_encoder_0 = satnogs.ogg_encoder(file_path, audio_samp_rate, 1.0) self.satnogs_iq_sink_0_0 = satnogs.iq_sink(16768, iq_file_path, False, enable_iq_dump) self.satnogs_coarse_doppler_correction_cc_0 = satnogs.coarse_doppler_correction_cc(rx_freq, samp_rate_rx) @@ -94,7 +95,7 @@ class satnogs_example_flowgraph(gr.top_block): ################################################## # Connections ################################################## - self.msg_connect((self.satnogs_tcp_rigctl_msg_source_0, 'freq'), (self.satnogs_coarse_doppler_correction_cc_0, 'freq')) + self.msg_connect((self.satnogs_tcp_rigctl_msg_source_0_0, 'freq'), (self.satnogs_coarse_doppler_correction_cc_0, 'freq')) self.connect((self.analog_quadrature_demod_cf_0, 0), (self.satnogs_ogg_encoder_0, 0)) self.connect((self.blks2_rational_resampler_xxx_1_0, 0), (self.analog_quadrature_demod_cf_0, 0)) self.connect((self.blks2_rational_resampler_xxx_1_0, 0), (self.satnogs_iq_sink_0_0, 0)) diff --git a/apps/flowgraphs/satnogs_fm_demod.py b/apps/flowgraphs/satnogs_fm_demod.py index 7c1ed8f..67768bd 100755 --- a/apps/flowgraphs/satnogs_fm_demod.py +++ b/apps/flowgraphs/satnogs_fm_demod.py @@ -5,9 +5,10 @@ # Title: FM Generic Demodulation # Author: Manolis Surligas (surligas@gmail.com) # Description: A generic FM demodulation block -# Generated: Sun Nov 19 11:35:00 2017 +# GNU Radio version: 3.7.13.5 ################################################## + from gnuradio import analog from gnuradio import eng_notation from gnuradio import filter @@ -63,7 +64,7 @@ class satnogs_fm_demod(gr.top_block): # Blocks ################################################## self.satnogs_waterfall_sink_0 = satnogs.waterfall_sink(audio_samp_rate, 0.0, 10, 1024, waterfall_file_path, 1) - self.satnogs_tcp_rigctl_msg_source_0 = satnogs.tcp_rigctl_msg_source("127.0.0.1", rigctl_port, False, 1000/doppler_correction_per_sec, 1500) + self.satnogs_tcp_rigctl_msg_source_0 = satnogs.tcp_rigctl_msg_source("127.0.0.1", rigctl_port, False, int(1000.0/doppler_correction_per_sec) + 1, 1500) self.satnogs_ogg_encoder_0 = satnogs.ogg_encoder(file_path, audio_samp_rate, 1.0) self.satnogs_iq_sink_0 = satnogs.iq_sink(32767, iq_file_path, False, enable_iq_dump) self.satnogs_coarse_doppler_correction_cc_0 = satnogs.coarse_doppler_correction_cc(rx_freq, samp_rate_rx) @@ -91,6 +92,8 @@ class satnogs_fm_demod(gr.top_block): ) self.analog_quadrature_demod_cf_0 = analog.quadrature_demod_cf((2*math.pi*deviation)/audio_samp_rate) + + ################################################## # Connections ################################################## diff --git a/apps/flowgraphs/satnogs_fsk9600_ax25.py b/apps/flowgraphs/satnogs_fsk9600_ax25.py deleted file mode 100755 index 0451c00..0000000 --- a/apps/flowgraphs/satnogs_fsk9600_ax25.py +++ /dev/null @@ -1,378 +0,0 @@ -#!/usr/bin/env python2 -# -*- coding: utf-8 -*- -################################################## -# GNU Radio Python Flow Graph -# Title: FSK9600 AX.25 decoder -# Author: Manolis Surligas (surligas@gmail.com) -# Description: FSK9600 AX.25 decoder -# Generated: Sat Nov 24 21:42:51 2018 -################################################## - -from gnuradio import analog -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 optparse import OptionParser -import math -import osmosdr -import satnogs -import time - - -class satnogs_fsk9600_ax25(gr.top_block): - - def __init__(self, antenna=satnogs.not_set_antenna, bb_gain=satnogs.not_set_rx_bb_gain, decoded_data_file_path='/tmp/.satnogs/data/data', dev_args=satnogs.not_set_dev_args, doppler_correction_per_sec=1000, enable_iq_dump=0, file_path='test.wav', if_gain=satnogs.not_set_rx_if_gain, iq_file_path='/tmp/iq.dat', lo_offset=100e3, ppm=0, rf_gain=satnogs.not_set_rx_rf_gain, rigctl_port=4532, rx_freq=100e6, rx_sdr_device='usrpb200', udp_IP='127.0.0.1', udp_port=16887, waterfall_file_path='/tmp/waterfall.dat'): - gr.top_block.__init__(self, "FSK9600 AX.25 decoder ") - - ################################################## - # Parameters - ################################################## - self.antenna = antenna - self.bb_gain = bb_gain - self.decoded_data_file_path = decoded_data_file_path - self.dev_args = dev_args - self.doppler_correction_per_sec = doppler_correction_per_sec - self.enable_iq_dump = enable_iq_dump - self.file_path = file_path - self.if_gain = if_gain - self.iq_file_path = iq_file_path - self.lo_offset = lo_offset - self.ppm = ppm - self.rf_gain = rf_gain - self.rigctl_port = rigctl_port - self.rx_freq = rx_freq - self.rx_sdr_device = rx_sdr_device - self.udp_IP = udp_IP - self.udp_port = udp_port - self.waterfall_file_path = waterfall_file_path - - ################################################## - # Variables - ################################################## - self.samp_rate_rx = samp_rate_rx = satnogs.hw_rx_settings[rx_sdr_device]['samp_rate'] - self.deviation = deviation = 5000 - self.baud_rate = baud_rate = 9600 - self.xlate_filter_taps = xlate_filter_taps = firdes.low_pass(1, samp_rate_rx, 125000, 25000, firdes.WIN_HAMMING, 6.76) - - self.taps = taps = firdes.low_pass(12.0, samp_rate_rx, 100e3, 60000, firdes.WIN_HAMMING, 6.76) - - self.modulation_index = modulation_index = deviation / (baud_rate / 2.0) - self.filter_rate = filter_rate = 250000 - self.audio_samp_rate = audio_samp_rate = 48000 - - ################################################## - # Blocks - ################################################## - self.satnogs_waterfall_sink_0 = satnogs.waterfall_sink(audio_samp_rate, 0.0, 10, 1024, waterfall_file_path, 1) - self.satnogs_udp_msg_sink_0_0 = satnogs.udp_msg_sink(udp_IP, udp_port, 1500) - self.satnogs_tcp_rigctl_msg_source_0 = satnogs.tcp_rigctl_msg_source("127.0.0.1", rigctl_port, False, 1000, 1500) - self.satnogs_quad_demod_filter_ff_0 = satnogs.quad_demod_filter_ff(((audio_samp_rate) / baud_rate)/(math.pi*modulation_index)) - self.satnogs_ogg_encoder_0 = satnogs.ogg_encoder(file_path, audio_samp_rate, 1.0) - self.satnogs_iq_sink_0 = satnogs.iq_sink(16768, '/tmp/iq.bin', False, enable_iq_dump) - self.satnogs_frame_file_sink_0_1_0 = satnogs.frame_file_sink(decoded_data_file_path, 0) - self.satnogs_coarse_doppler_correction_cc_0 = satnogs.coarse_doppler_correction_cc(rx_freq, samp_rate_rx) - self.satnogs_ax25_decoder_bm_0 = satnogs.ax25_decoder_bm('GND', 0, True, False, 1024) - self.osmosdr_source_0 = osmosdr.source( args="numchan=" + str(1) + " " + satnogs.handle_rx_dev_args(rx_sdr_device, dev_args) ) - self.osmosdr_source_0.set_sample_rate(samp_rate_rx) - self.osmosdr_source_0.set_center_freq(rx_freq - lo_offset, 0) - self.osmosdr_source_0.set_freq_corr(ppm, 0) - self.osmosdr_source_0.set_dc_offset_mode(2, 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.handle_rx_rf_gain(rx_sdr_device, rf_gain), 0) - self.osmosdr_source_0.set_if_gain(satnogs.handle_rx_if_gain(rx_sdr_device, if_gain), 0) - self.osmosdr_source_0.set_bb_gain(satnogs.handle_rx_bb_gain(rx_sdr_device, bb_gain), 0) - self.osmosdr_source_0.set_antenna(satnogs.handle_rx_antenna(rx_sdr_device, antenna), 0) - self.osmosdr_source_0.set_bandwidth(samp_rate_rx, 0) - - self.low_pass_filter_0 = filter.fir_filter_fff(1, firdes.low_pass( - 1, audio_samp_rate, 7850, audio_samp_rate * 0.15, firdes.WIN_HAMMING, 6.76)) - self.freq_xlating_fir_filter_xxx_0 = filter.freq_xlating_fir_filter_ccc(int(samp_rate_rx/filter_rate), (xlate_filter_taps), lo_offset, samp_rate_rx) - self.digital_costas_loop_cc_0 = digital.costas_loop_cc(2.0 * math.pi / 100.0, 2, False) - self.digital_clock_recovery_mm_xx_0 = digital.clock_recovery_mm_ff(48e3/9600, 0.25*0.175*0.175, 0.5, 0.175, 0.005) - self.digital_binary_slicer_fb_0 = digital.binary_slicer_fb() - self.dc_blocker_xx_0 = filter.dc_blocker_ff(1024, True) - self.blks2_rational_resampler_xxx_1 = filter.rational_resampler_ccc( - interpolation=48000, - decimation=int(samp_rate_rx / (int(samp_rate_rx/filter_rate))), - taps=None, - fractional_bw=None, - ) - self.analog_quadrature_demod_cf_0_0 = analog.quadrature_demod_cf(((audio_samp_rate) / baud_rate)/(math.pi*modulation_index)) - - ################################################## - # Connections - ################################################## - self.msg_connect((self.satnogs_ax25_decoder_bm_0, 'pdu'), (self.satnogs_frame_file_sink_0_1_0, 'frame')) - self.msg_connect((self.satnogs_ax25_decoder_bm_0, 'pdu'), (self.satnogs_udp_msg_sink_0_0, 'in')) - self.msg_connect((self.satnogs_tcp_rigctl_msg_source_0, 'freq'), (self.satnogs_coarse_doppler_correction_cc_0, 'freq')) - self.connect((self.analog_quadrature_demod_cf_0_0, 0), (self.dc_blocker_xx_0, 0)) - self.connect((self.blks2_rational_resampler_xxx_1, 0), (self.analog_quadrature_demod_cf_0_0, 0)) - self.connect((self.blks2_rational_resampler_xxx_1, 0), (self.satnogs_iq_sink_0, 0)) - self.connect((self.blks2_rational_resampler_xxx_1, 0), (self.satnogs_waterfall_sink_0, 0)) - self.connect((self.dc_blocker_xx_0, 0), (self.low_pass_filter_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.satnogs_quad_demod_filter_ff_0, 0)) - self.connect((self.digital_costas_loop_cc_0, 0), (self.blks2_rational_resampler_xxx_1, 0)) - self.connect((self.freq_xlating_fir_filter_xxx_0, 0), (self.digital_costas_loop_cc_0, 0)) - self.connect((self.low_pass_filter_0, 0), (self.digital_clock_recovery_mm_xx_0, 0)) - self.connect((self.low_pass_filter_0, 0), (self.satnogs_ogg_encoder_0, 0)) - self.connect((self.osmosdr_source_0, 0), (self.satnogs_coarse_doppler_correction_cc_0, 0)) - self.connect((self.satnogs_coarse_doppler_correction_cc_0, 0), (self.freq_xlating_fir_filter_xxx_0, 0)) - self.connect((self.satnogs_quad_demod_filter_ff_0, 0), (self.digital_binary_slicer_fb_0, 0)) - - def get_antenna(self): - return self.antenna - - def set_antenna(self, antenna): - self.antenna = antenna - self.osmosdr_source_0.set_antenna(satnogs.handle_rx_antenna(self.rx_sdr_device, self.antenna), 0) - - def get_bb_gain(self): - return self.bb_gain - - def set_bb_gain(self, bb_gain): - self.bb_gain = bb_gain - self.osmosdr_source_0.set_bb_gain(satnogs.handle_rx_bb_gain(self.rx_sdr_device, self.bb_gain), 0) - - def get_decoded_data_file_path(self): - return self.decoded_data_file_path - - def set_decoded_data_file_path(self, decoded_data_file_path): - self.decoded_data_file_path = decoded_data_file_path - - def get_dev_args(self): - return self.dev_args - - def set_dev_args(self, dev_args): - self.dev_args = dev_args - - def get_doppler_correction_per_sec(self): - return self.doppler_correction_per_sec - - def set_doppler_correction_per_sec(self, doppler_correction_per_sec): - self.doppler_correction_per_sec = doppler_correction_per_sec - - def get_enable_iq_dump(self): - return self.enable_iq_dump - - def set_enable_iq_dump(self, enable_iq_dump): - self.enable_iq_dump = enable_iq_dump - - def get_file_path(self): - return self.file_path - - def set_file_path(self, file_path): - self.file_path = file_path - - def get_if_gain(self): - return self.if_gain - - def set_if_gain(self, if_gain): - self.if_gain = if_gain - self.osmosdr_source_0.set_if_gain(satnogs.handle_rx_if_gain(self.rx_sdr_device, self.if_gain), 0) - - def get_iq_file_path(self): - return self.iq_file_path - - def set_iq_file_path(self, iq_file_path): - self.iq_file_path = iq_file_path - - 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_freq - self.lo_offset, 0) - self.freq_xlating_fir_filter_xxx_0.set_center_freq(self.lo_offset) - - def get_ppm(self): - return self.ppm - - def set_ppm(self, ppm): - self.ppm = ppm - self.osmosdr_source_0.set_freq_corr(self.ppm, 0) - - def get_rf_gain(self): - return self.rf_gain - - def set_rf_gain(self, rf_gain): - self.rf_gain = rf_gain - self.osmosdr_source_0.set_gain(satnogs.handle_rx_rf_gain(self.rx_sdr_device, self.rf_gain), 0) - - def get_rigctl_port(self): - return self.rigctl_port - - def set_rigctl_port(self, rigctl_port): - self.rigctl_port = rigctl_port - - def get_rx_freq(self): - return self.rx_freq - - def set_rx_freq(self, rx_freq): - self.rx_freq = rx_freq - self.satnogs_coarse_doppler_correction_cc_0.set_new_freq_locked(self.rx_freq) - self.osmosdr_source_0.set_center_freq(self.rx_freq - self.lo_offset, 0) - - 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_rx(satnogs.hw_rx_settings[self.rx_sdr_device]['samp_rate']) - self.osmosdr_source_0.set_gain(satnogs.handle_rx_rf_gain(self.rx_sdr_device, self.rf_gain), 0) - self.osmosdr_source_0.set_if_gain(satnogs.handle_rx_if_gain(self.rx_sdr_device, self.if_gain), 0) - self.osmosdr_source_0.set_bb_gain(satnogs.handle_rx_bb_gain(self.rx_sdr_device, self.bb_gain), 0) - self.osmosdr_source_0.set_antenna(satnogs.handle_rx_antenna(self.rx_sdr_device, self.antenna), 0) - - def get_udp_IP(self): - return self.udp_IP - - def set_udp_IP(self, udp_IP): - self.udp_IP = udp_IP - - def get_udp_port(self): - return self.udp_port - - def set_udp_port(self, udp_port): - self.udp_port = udp_port - - def get_waterfall_file_path(self): - return self.waterfall_file_path - - def set_waterfall_file_path(self, waterfall_file_path): - self.waterfall_file_path = waterfall_file_path - - 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_xlate_filter_taps(firdes.low_pass(1, self.samp_rate_rx, 125000, 25000, firdes.WIN_HAMMING, 6.76)) - self.osmosdr_source_0.set_sample_rate(self.samp_rate_rx) - self.osmosdr_source_0.set_bandwidth(self.samp_rate_rx, 0) - - 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)) - - 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)) - self.analog_quadrature_demod_cf_0_0.set_gain(((self.audio_samp_rate) / self.baud_rate)/(math.pi*self.modulation_index)) - - def get_xlate_filter_taps(self): - return self.xlate_filter_taps - - def set_xlate_filter_taps(self, xlate_filter_taps): - self.xlate_filter_taps = xlate_filter_taps - self.freq_xlating_fir_filter_xxx_0.set_taps((self.xlate_filter_taps)) - - def get_taps(self): - return self.taps - - def set_taps(self, taps): - self.taps = taps - - def get_modulation_index(self): - return self.modulation_index - - def set_modulation_index(self, modulation_index): - self.modulation_index = modulation_index - self.analog_quadrature_demod_cf_0_0.set_gain(((self.audio_samp_rate) / self.baud_rate)/(math.pi*self.modulation_index)) - - def get_filter_rate(self): - return self.filter_rate - - def set_filter_rate(self, filter_rate): - self.filter_rate = filter_rate - - def get_audio_samp_rate(self): - return self.audio_samp_rate - - def set_audio_samp_rate(self, audio_samp_rate): - self.audio_samp_rate = audio_samp_rate - self.low_pass_filter_0.set_taps(firdes.low_pass(1, self.audio_samp_rate, 7850, self.audio_samp_rate * 0.15, firdes.WIN_HAMMING, 6.76)) - self.analog_quadrature_demod_cf_0_0.set_gain(((self.audio_samp_rate) / self.baud_rate)/(math.pi*self.modulation_index)) - - -def argument_parser(): - description = 'FSK9600 AX.25 decoder' - parser = OptionParser(usage="%prog: [options]", option_class=eng_option, description=description) - parser.add_option( - "", "--antenna", dest="antenna", type="string", default=satnogs.not_set_antenna, - help="Set antenna [default=%default]") - parser.add_option( - "", "--bb-gain", dest="bb_gain", type="eng_float", default=eng_notation.num_to_str(satnogs.not_set_rx_bb_gain), - help="Set bb_gain [default=%default]") - parser.add_option( - "", "--decoded-data-file-path", dest="decoded_data_file_path", type="string", default='/tmp/.satnogs/data/data', - help="Set decoded_data_file_path [default=%default]") - parser.add_option( - "", "--dev-args", dest="dev_args", type="string", default=satnogs.not_set_dev_args, - help="Set dev_args [default=%default]") - parser.add_option( - "", "--doppler-correction-per-sec", dest="doppler_correction_per_sec", type="intx", default=1000, - help="Set doppler_correction_per_sec [default=%default]") - parser.add_option( - "", "--enable-iq-dump", dest="enable_iq_dump", type="intx", default=0, - help="Set enable_iq_dump [default=%default]") - parser.add_option( - "", "--file-path", dest="file_path", type="string", default='test.wav', - help="Set file_path [default=%default]") - parser.add_option( - "", "--if-gain", dest="if_gain", type="eng_float", default=eng_notation.num_to_str(satnogs.not_set_rx_if_gain), - help="Set if_gain [default=%default]") - parser.add_option( - "", "--iq-file-path", dest="iq_file_path", type="string", default='/tmp/iq.dat', - help="Set iq_file_path [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( - "", "--ppm", dest="ppm", type="intx", default=0, - help="Set ppm [default=%default]") - parser.add_option( - "", "--rf-gain", dest="rf_gain", type="eng_float", default=eng_notation.num_to_str(satnogs.not_set_rx_rf_gain), - help="Set rf_gain [default=%default]") - parser.add_option( - "", "--rigctl-port", dest="rigctl_port", type="intx", default=4532, - help="Set rigctl_port [default=%default]") - parser.add_option( - "", "--rx-freq", dest="rx_freq", type="eng_float", default=eng_notation.num_to_str(100e6), - help="Set rx_freq [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( - "", "--udp-IP", dest="udp_IP", type="string", default='127.0.0.1', - help="Set udp_IP [default=%default]") - parser.add_option( - "", "--udp-port", dest="udp_port", type="intx", default=16887, - help="Set udp_port [default=%default]") - parser.add_option( - "", "--waterfall-file-path", dest="waterfall_file_path", type="string", default='/tmp/waterfall.dat', - help="Set waterfall_file_path [default=%default]") - return parser - - -def main(top_block_cls=satnogs_fsk9600_ax25, options=None): - if options is None: - options, _ = argument_parser().parse_args() - - tb = top_block_cls(antenna=options.antenna, bb_gain=options.bb_gain, decoded_data_file_path=options.decoded_data_file_path, dev_args=options.dev_args, doppler_correction_per_sec=options.doppler_correction_per_sec, enable_iq_dump=options.enable_iq_dump, file_path=options.file_path, if_gain=options.if_gain, iq_file_path=options.iq_file_path, lo_offset=options.lo_offset, ppm=options.ppm, rf_gain=options.rf_gain, rigctl_port=options.rigctl_port, rx_freq=options.rx_freq, rx_sdr_device=options.rx_sdr_device, udp_IP=options.udp_IP, udp_port=options.udp_port, waterfall_file_path=options.waterfall_file_path) - tb.start() - tb.wait() - - -if __name__ == '__main__': - main() diff --git a/apps/flowgraphs/satnogs_fsk9600_g3ruh_ax25.py b/apps/flowgraphs/satnogs_fsk9600_g3ruh_ax25.py deleted file mode 100755 index c90d9b6..0000000 --- a/apps/flowgraphs/satnogs_fsk9600_g3ruh_ax25.py +++ /dev/null @@ -1,378 +0,0 @@ -#!/usr/bin/env python2 -# -*- coding: utf-8 -*- -################################################## -# GNU Radio Python Flow Graph -# Title: FSK9600 AX.25 decoder with G3RUH support -# Author: Manolis Surligas (surligas@gmail.com) -# Description: FSK9600 AX.25 decoder with G3RUH support -# Generated: Sat Nov 24 21:42:53 2018 -################################################## - -from gnuradio import analog -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 optparse import OptionParser -import math -import osmosdr -import satnogs -import time - - -class satnogs_fsk9600_g3ruh_ax25(gr.top_block): - - def __init__(self, antenna=satnogs.not_set_antenna, bb_gain=satnogs.not_set_rx_bb_gain, decoded_data_file_path='/tmp/.satnogs/data/data', dev_args=satnogs.not_set_dev_args, doppler_correction_per_sec=1000, enable_iq_dump=0, file_path='test.wav', if_gain=satnogs.not_set_rx_if_gain, iq_file_path='/tmp/iq.dat', lo_offset=100e3, ppm=0, rf_gain=satnogs.not_set_rx_rf_gain, rigctl_port=4532, rx_freq=100e6, rx_sdr_device='usrpb200', udp_IP='127.0.0.1', udp_port=16887, waterfall_file_path='/tmp/waterfall.dat'): - gr.top_block.__init__(self, "FSK9600 AX.25 decoder with G3RUH support") - - ################################################## - # Parameters - ################################################## - self.antenna = antenna - self.bb_gain = bb_gain - self.decoded_data_file_path = decoded_data_file_path - self.dev_args = dev_args - self.doppler_correction_per_sec = doppler_correction_per_sec - self.enable_iq_dump = enable_iq_dump - self.file_path = file_path - self.if_gain = if_gain - self.iq_file_path = iq_file_path - self.lo_offset = lo_offset - self.ppm = ppm - self.rf_gain = rf_gain - self.rigctl_port = rigctl_port - self.rx_freq = rx_freq - self.rx_sdr_device = rx_sdr_device - self.udp_IP = udp_IP - self.udp_port = udp_port - self.waterfall_file_path = waterfall_file_path - - ################################################## - # Variables - ################################################## - self.samp_rate_rx = samp_rate_rx = satnogs.hw_rx_settings[rx_sdr_device]['samp_rate'] - self.deviation = deviation = 5000 - self.baud_rate = baud_rate = 9600 - self.xlate_filter_taps = xlate_filter_taps = firdes.low_pass(1, samp_rate_rx, 125000, 25000, firdes.WIN_HAMMING, 6.76) - - self.taps = taps = firdes.low_pass(12.0, samp_rate_rx, 100e3, 60000, firdes.WIN_HAMMING, 6.76) - - self.modulation_index = modulation_index = deviation / (baud_rate / 2.0) - self.filter_rate = filter_rate = 250000 - self.audio_samp_rate = audio_samp_rate = 48000 - - ################################################## - # Blocks - ################################################## - self.satnogs_waterfall_sink_0 = satnogs.waterfall_sink(audio_samp_rate, 0.0, 10, 1024, waterfall_file_path, 1) - self.satnogs_udp_msg_sink_0_0 = satnogs.udp_msg_sink(udp_IP, udp_port, 1500) - self.satnogs_tcp_rigctl_msg_source_0 = satnogs.tcp_rigctl_msg_source("127.0.0.1", rigctl_port, False, 1000, 1500) - self.satnogs_quad_demod_filter_ff_0 = satnogs.quad_demod_filter_ff(((audio_samp_rate) / baud_rate)/(math.pi*modulation_index)) - self.satnogs_ogg_encoder_0 = satnogs.ogg_encoder(file_path, audio_samp_rate, 1.0) - self.satnogs_iq_sink_0 = satnogs.iq_sink(16768, iq_file_path, False, enable_iq_dump) - self.satnogs_frame_file_sink_0_1_0 = satnogs.frame_file_sink(decoded_data_file_path, 0) - self.satnogs_coarse_doppler_correction_cc_0 = satnogs.coarse_doppler_correction_cc(rx_freq, samp_rate_rx) - self.satnogs_ax25_decoder_bm_0 = satnogs.ax25_decoder_bm('GND', 0, True, True, 1024) - self.osmosdr_source_0 = osmosdr.source( args="numchan=" + str(1) + " " + satnogs.handle_rx_dev_args(rx_sdr_device, dev_args) ) - self.osmosdr_source_0.set_sample_rate(samp_rate_rx) - self.osmosdr_source_0.set_center_freq(rx_freq - lo_offset, 0) - self.osmosdr_source_0.set_freq_corr(ppm, 0) - self.osmosdr_source_0.set_dc_offset_mode(2, 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.handle_rx_rf_gain(rx_sdr_device, rf_gain), 0) - self.osmosdr_source_0.set_if_gain(satnogs.handle_rx_if_gain(rx_sdr_device, if_gain), 0) - self.osmosdr_source_0.set_bb_gain(satnogs.handle_rx_bb_gain(rx_sdr_device, bb_gain), 0) - self.osmosdr_source_0.set_antenna(satnogs.handle_rx_antenna(rx_sdr_device, antenna), 0) - self.osmosdr_source_0.set_bandwidth(samp_rate_rx, 0) - - self.low_pass_filter_0 = filter.fir_filter_fff(1, firdes.low_pass( - 1, audio_samp_rate, 7850, audio_samp_rate * 0.15, firdes.WIN_HAMMING, 6.76)) - self.freq_xlating_fir_filter_xxx_0 = filter.freq_xlating_fir_filter_ccc(int(samp_rate_rx/filter_rate), (xlate_filter_taps), lo_offset, samp_rate_rx) - self.digital_costas_loop_cc_0 = digital.costas_loop_cc(2.0 * math.pi / 100.0, 2, False) - self.digital_clock_recovery_mm_xx_0 = digital.clock_recovery_mm_ff(48e3/9600, 0.25*0.175*0.175, 0.5, 0.175, 0.005) - self.digital_binary_slicer_fb_0 = digital.binary_slicer_fb() - self.dc_blocker_xx_0 = filter.dc_blocker_ff(1024, True) - self.blks2_rational_resampler_xxx_1 = filter.rational_resampler_ccc( - interpolation=48000, - decimation=int(samp_rate_rx / (int(samp_rate_rx/filter_rate))), - taps=None, - fractional_bw=None, - ) - self.analog_quadrature_demod_cf_0_0 = analog.quadrature_demod_cf(((audio_samp_rate) / baud_rate)/(math.pi*modulation_index)) - - ################################################## - # Connections - ################################################## - self.msg_connect((self.satnogs_ax25_decoder_bm_0, 'pdu'), (self.satnogs_frame_file_sink_0_1_0, 'frame')) - self.msg_connect((self.satnogs_ax25_decoder_bm_0, 'pdu'), (self.satnogs_udp_msg_sink_0_0, 'in')) - self.msg_connect((self.satnogs_tcp_rigctl_msg_source_0, 'freq'), (self.satnogs_coarse_doppler_correction_cc_0, 'freq')) - self.connect((self.analog_quadrature_demod_cf_0_0, 0), (self.dc_blocker_xx_0, 0)) - self.connect((self.blks2_rational_resampler_xxx_1, 0), (self.analog_quadrature_demod_cf_0_0, 0)) - self.connect((self.blks2_rational_resampler_xxx_1, 0), (self.satnogs_iq_sink_0, 0)) - self.connect((self.blks2_rational_resampler_xxx_1, 0), (self.satnogs_waterfall_sink_0, 0)) - self.connect((self.dc_blocker_xx_0, 0), (self.low_pass_filter_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.satnogs_quad_demod_filter_ff_0, 0)) - self.connect((self.digital_costas_loop_cc_0, 0), (self.blks2_rational_resampler_xxx_1, 0)) - self.connect((self.freq_xlating_fir_filter_xxx_0, 0), (self.digital_costas_loop_cc_0, 0)) - self.connect((self.low_pass_filter_0, 0), (self.digital_clock_recovery_mm_xx_0, 0)) - self.connect((self.low_pass_filter_0, 0), (self.satnogs_ogg_encoder_0, 0)) - self.connect((self.osmosdr_source_0, 0), (self.satnogs_coarse_doppler_correction_cc_0, 0)) - self.connect((self.satnogs_coarse_doppler_correction_cc_0, 0), (self.freq_xlating_fir_filter_xxx_0, 0)) - self.connect((self.satnogs_quad_demod_filter_ff_0, 0), (self.digital_binary_slicer_fb_0, 0)) - - def get_antenna(self): - return self.antenna - - def set_antenna(self, antenna): - self.antenna = antenna - self.osmosdr_source_0.set_antenna(satnogs.handle_rx_antenna(self.rx_sdr_device, self.antenna), 0) - - def get_bb_gain(self): - return self.bb_gain - - def set_bb_gain(self, bb_gain): - self.bb_gain = bb_gain - self.osmosdr_source_0.set_bb_gain(satnogs.handle_rx_bb_gain(self.rx_sdr_device, self.bb_gain), 0) - - def get_decoded_data_file_path(self): - return self.decoded_data_file_path - - def set_decoded_data_file_path(self, decoded_data_file_path): - self.decoded_data_file_path = decoded_data_file_path - - def get_dev_args(self): - return self.dev_args - - def set_dev_args(self, dev_args): - self.dev_args = dev_args - - def get_doppler_correction_per_sec(self): - return self.doppler_correction_per_sec - - def set_doppler_correction_per_sec(self, doppler_correction_per_sec): - self.doppler_correction_per_sec = doppler_correction_per_sec - - def get_enable_iq_dump(self): - return self.enable_iq_dump - - def set_enable_iq_dump(self, enable_iq_dump): - self.enable_iq_dump = enable_iq_dump - - def get_file_path(self): - return self.file_path - - def set_file_path(self, file_path): - self.file_path = file_path - - def get_if_gain(self): - return self.if_gain - - def set_if_gain(self, if_gain): - self.if_gain = if_gain - self.osmosdr_source_0.set_if_gain(satnogs.handle_rx_if_gain(self.rx_sdr_device, self.if_gain), 0) - - def get_iq_file_path(self): - return self.iq_file_path - - def set_iq_file_path(self, iq_file_path): - self.iq_file_path = iq_file_path - - 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_freq - self.lo_offset, 0) - self.freq_xlating_fir_filter_xxx_0.set_center_freq(self.lo_offset) - - def get_ppm(self): - return self.ppm - - def set_ppm(self, ppm): - self.ppm = ppm - self.osmosdr_source_0.set_freq_corr(self.ppm, 0) - - def get_rf_gain(self): - return self.rf_gain - - def set_rf_gain(self, rf_gain): - self.rf_gain = rf_gain - self.osmosdr_source_0.set_gain(satnogs.handle_rx_rf_gain(self.rx_sdr_device, self.rf_gain), 0) - - def get_rigctl_port(self): - return self.rigctl_port - - def set_rigctl_port(self, rigctl_port): - self.rigctl_port = rigctl_port - - def get_rx_freq(self): - return self.rx_freq - - def set_rx_freq(self, rx_freq): - self.rx_freq = rx_freq - self.satnogs_coarse_doppler_correction_cc_0.set_new_freq_locked(self.rx_freq) - self.osmosdr_source_0.set_center_freq(self.rx_freq - self.lo_offset, 0) - - 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_rx(satnogs.hw_rx_settings[self.rx_sdr_device]['samp_rate']) - self.osmosdr_source_0.set_gain(satnogs.handle_rx_rf_gain(self.rx_sdr_device, self.rf_gain), 0) - self.osmosdr_source_0.set_if_gain(satnogs.handle_rx_if_gain(self.rx_sdr_device, self.if_gain), 0) - self.osmosdr_source_0.set_bb_gain(satnogs.handle_rx_bb_gain(self.rx_sdr_device, self.bb_gain), 0) - self.osmosdr_source_0.set_antenna(satnogs.handle_rx_antenna(self.rx_sdr_device, self.antenna), 0) - - def get_udp_IP(self): - return self.udp_IP - - def set_udp_IP(self, udp_IP): - self.udp_IP = udp_IP - - def get_udp_port(self): - return self.udp_port - - def set_udp_port(self, udp_port): - self.udp_port = udp_port - - def get_waterfall_file_path(self): - return self.waterfall_file_path - - def set_waterfall_file_path(self, waterfall_file_path): - self.waterfall_file_path = waterfall_file_path - - 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_xlate_filter_taps(firdes.low_pass(1, self.samp_rate_rx, 125000, 25000, firdes.WIN_HAMMING, 6.76)) - self.osmosdr_source_0.set_sample_rate(self.samp_rate_rx) - self.osmosdr_source_0.set_bandwidth(self.samp_rate_rx, 0) - - 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)) - - 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)) - self.analog_quadrature_demod_cf_0_0.set_gain(((self.audio_samp_rate) / self.baud_rate)/(math.pi*self.modulation_index)) - - def get_xlate_filter_taps(self): - return self.xlate_filter_taps - - def set_xlate_filter_taps(self, xlate_filter_taps): - self.xlate_filter_taps = xlate_filter_taps - self.freq_xlating_fir_filter_xxx_0.set_taps((self.xlate_filter_taps)) - - def get_taps(self): - return self.taps - - def set_taps(self, taps): - self.taps = taps - - def get_modulation_index(self): - return self.modulation_index - - def set_modulation_index(self, modulation_index): - self.modulation_index = modulation_index - self.analog_quadrature_demod_cf_0_0.set_gain(((self.audio_samp_rate) / self.baud_rate)/(math.pi*self.modulation_index)) - - def get_filter_rate(self): - return self.filter_rate - - def set_filter_rate(self, filter_rate): - self.filter_rate = filter_rate - - def get_audio_samp_rate(self): - return self.audio_samp_rate - - def set_audio_samp_rate(self, audio_samp_rate): - self.audio_samp_rate = audio_samp_rate - self.low_pass_filter_0.set_taps(firdes.low_pass(1, self.audio_samp_rate, 7850, self.audio_samp_rate * 0.15, firdes.WIN_HAMMING, 6.76)) - self.analog_quadrature_demod_cf_0_0.set_gain(((self.audio_samp_rate) / self.baud_rate)/(math.pi*self.modulation_index)) - - -def argument_parser(): - description = 'FSK9600 AX.25 decoder with G3RUH support' - parser = OptionParser(usage="%prog: [options]", option_class=eng_option, description=description) - parser.add_option( - "", "--antenna", dest="antenna", type="string", default=satnogs.not_set_antenna, - help="Set antenna [default=%default]") - parser.add_option( - "", "--bb-gain", dest="bb_gain", type="eng_float", default=eng_notation.num_to_str(satnogs.not_set_rx_bb_gain), - help="Set bb_gain [default=%default]") - parser.add_option( - "", "--decoded-data-file-path", dest="decoded_data_file_path", type="string", default='/tmp/.satnogs/data/data', - help="Set decoded_data_file_path [default=%default]") - parser.add_option( - "", "--dev-args", dest="dev_args", type="string", default=satnogs.not_set_dev_args, - help="Set dev_args [default=%default]") - parser.add_option( - "", "--doppler-correction-per-sec", dest="doppler_correction_per_sec", type="intx", default=1000, - help="Set doppler_correction_per_sec [default=%default]") - parser.add_option( - "", "--enable-iq-dump", dest="enable_iq_dump", type="intx", default=0, - help="Set enable_iq_dump [default=%default]") - parser.add_option( - "", "--file-path", dest="file_path", type="string", default='test.wav', - help="Set file_path [default=%default]") - parser.add_option( - "", "--if-gain", dest="if_gain", type="eng_float", default=eng_notation.num_to_str(satnogs.not_set_rx_if_gain), - help="Set if_gain [default=%default]") - parser.add_option( - "", "--iq-file-path", dest="iq_file_path", type="string", default='/tmp/iq.dat', - help="Set iq_file_path [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( - "", "--ppm", dest="ppm", type="intx", default=0, - help="Set ppm [default=%default]") - parser.add_option( - "", "--rf-gain", dest="rf_gain", type="eng_float", default=eng_notation.num_to_str(satnogs.not_set_rx_rf_gain), - help="Set rf_gain [default=%default]") - parser.add_option( - "", "--rigctl-port", dest="rigctl_port", type="intx", default=4532, - help="Set rigctl_port [default=%default]") - parser.add_option( - "", "--rx-freq", dest="rx_freq", type="eng_float", default=eng_notation.num_to_str(100e6), - help="Set rx_freq [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( - "", "--udp-IP", dest="udp_IP", type="string", default='127.0.0.1', - help="Set udp_IP [default=%default]") - parser.add_option( - "", "--udp-port", dest="udp_port", type="intx", default=16887, - help="Set udp_port [default=%default]") - parser.add_option( - "", "--waterfall-file-path", dest="waterfall_file_path", type="string", default='/tmp/waterfall.dat', - help="Set waterfall_file_path [default=%default]") - return parser - - -def main(top_block_cls=satnogs_fsk9600_g3ruh_ax25, options=None): - if options is None: - options, _ = argument_parser().parse_args() - - tb = top_block_cls(antenna=options.antenna, bb_gain=options.bb_gain, decoded_data_file_path=options.decoded_data_file_path, dev_args=options.dev_args, doppler_correction_per_sec=options.doppler_correction_per_sec, enable_iq_dump=options.enable_iq_dump, file_path=options.file_path, if_gain=options.if_gain, iq_file_path=options.iq_file_path, lo_offset=options.lo_offset, ppm=options.ppm, rf_gain=options.rf_gain, rigctl_port=options.rigctl_port, rx_freq=options.rx_freq, rx_sdr_device=options.rx_sdr_device, udp_IP=options.udp_IP, udp_port=options.udp_port, waterfall_file_path=options.waterfall_file_path) - tb.start() - tb.wait() - - -if __name__ == '__main__': - main() diff --git a/apps/flowgraphs/satnogs_fsk_ax25.py b/apps/flowgraphs/satnogs_fsk_ax25.py index 576ee1a..5f2bc0d 100755 --- a/apps/flowgraphs/satnogs_fsk_ax25.py +++ b/apps/flowgraphs/satnogs_fsk_ax25.py @@ -27,7 +27,7 @@ import time class satnogs_fsk_ax25(gr.top_block): - def __init__(self, antenna=satnogs.not_set_antenna, baudrate=9600.0, bb_gain=satnogs.not_set_rx_bb_gain, decoded_data_file_path='/tmp/.satnogs/data/data', dev_args=satnogs.not_set_dev_args, doppler_correction_per_sec=1000, enable_iq_dump=0, file_path='test.wav', if_gain=satnogs.not_set_rx_if_gain, iq_file_path='/tmp/iq.dat', lo_offset=100e3, ppm=0, rf_gain=satnogs.not_set_rx_rf_gain, rigctl_port=4532, rx_freq=100e6, rx_sdr_device='usrpb200', samp_rate_rx=satnogs.not_set_samp_rate_rx, udp_IP='127.0.0.1', udp_port=16887, waterfall_file_path='/tmp/waterfall.dat'): + def __init__(self, antenna=satnogs.not_set_antenna, baudrate=9600.0, bb_gain=satnogs.not_set_rx_bb_gain, decoded_data_file_path='/tmp/.satnogs/data/data', dev_args=satnogs.not_set_dev_args, doppler_correction_per_sec=20, enable_iq_dump=0, file_path='test.wav', if_gain=satnogs.not_set_rx_if_gain, iq_file_path='/tmp/iq.dat', lo_offset=100e3, ppm=0, rf_gain=satnogs.not_set_rx_rf_gain, rigctl_port=4532, rx_freq=100e6, rx_sdr_device='usrpb200', samp_rate_rx=satnogs.not_set_samp_rate_rx, udp_IP='127.0.0.1', udp_port=16887, waterfall_file_path='/tmp/waterfall.dat'): gr.top_block.__init__(self, "satnogs_fsk_ax25") ################################################## @@ -57,6 +57,8 @@ class satnogs_fsk_ax25(gr.top_block): ################################################## # Variables ################################################## + self.variable_ax25_decoder_0_0 = variable_ax25_decoder_0_0 = satnogs.ax25_decoder_make('GND', 0, True, False, True, 512) + self.variable_ax25_decoder_0 = variable_ax25_decoder_0 = satnogs.ax25_decoder_make('GND', 0, True, True, True, 512) self.audio_samp_rate = audio_samp_rate = 48000 ################################################## @@ -64,13 +66,13 @@ class satnogs_fsk_ax25(gr.top_block): ################################################## self.satnogs_waterfall_sink_0 = satnogs.waterfall_sink(audio_samp_rate, 0.0, 10, 1024, waterfall_file_path, 1) self.satnogs_udp_msg_sink_0_0 = satnogs.udp_msg_sink(udp_IP, udp_port, 1500) - self.satnogs_tcp_rigctl_msg_source_0 = satnogs.tcp_rigctl_msg_source("127.0.0.1", rigctl_port, False, 1000, 1500) + self.satnogs_tcp_rigctl_msg_source_0 = satnogs.tcp_rigctl_msg_source("127.0.0.1", rigctl_port, False, int(1000.0/doppler_correction_per_sec) + 1, 1500) self.satnogs_ogg_encoder_0 = satnogs.ogg_encoder(file_path, audio_samp_rate, 1.0) self.satnogs_iq_sink_0 = satnogs.iq_sink(16768, iq_file_path, False, enable_iq_dump) self.satnogs_frame_file_sink_0_1_0 = satnogs.frame_file_sink(decoded_data_file_path, 0) + self.satnogs_frame_decoder_0_0_0 = satnogs.frame_decoder(variable_ax25_decoder_0_0, gr.sizeof_char) + self.satnogs_frame_decoder_0_0 = satnogs.frame_decoder(variable_ax25_decoder_0, gr.sizeof_char) self.satnogs_coarse_doppler_correction_cc_0 = satnogs.coarse_doppler_correction_cc(rx_freq, satnogs.handle_samp_rate_rx(rx_sdr_device, samp_rate_rx)) - self.satnogs_ax25_decoder_bm_0_0 = satnogs.ax25_decoder_bm('GND', 0, True, False, 1024) - self.satnogs_ax25_decoder_bm_0 = satnogs.ax25_decoder_bm('GND', 0, True, True, 1024) self.pfb_arb_resampler_xxx_0_0_0 = pfb.arb_resampler_ccf( (2.0*baudrate)/audio_samp_rate, taps=None, @@ -107,7 +109,7 @@ class satnogs_fsk_ax25(gr.top_block): self.blocks_vco_c_0 = blocks.vco_c(audio_samp_rate, -audio_samp_rate, 1.0) self.blocks_rotator_cc_0 = blocks.rotator_cc(-2.0 * math.pi * (lo_offset / satnogs.handle_samp_rate_rx(rx_sdr_device, samp_rate_rx))) self.blocks_multiply_xx_0 = blocks.multiply_vcc(1) - self.blocks_moving_average_xx_0 = blocks.moving_average_ff(1024, 1.0/1024.0, 4096) + self.blocks_moving_average_xx_0 = blocks.moving_average_ff(1024, 1.0/1024.0, 4096, 1) self.blocks_delay_0 = blocks.delay(gr.sizeof_gr_complex*1, 1024/2) self.analog_quadrature_demod_cf_0_0_0_0 = analog.quadrature_demod_cf(1.0) self.analog_quadrature_demod_cf_0_0_0 = analog.quadrature_demod_cf(0.9) @@ -118,10 +120,10 @@ class satnogs_fsk_ax25(gr.top_block): ################################################## # Connections ################################################## - self.msg_connect((self.satnogs_ax25_decoder_bm_0, 'pdu'), (self.satnogs_frame_file_sink_0_1_0, 'frame')) - self.msg_connect((self.satnogs_ax25_decoder_bm_0, 'pdu'), (self.satnogs_udp_msg_sink_0_0, 'in')) - self.msg_connect((self.satnogs_ax25_decoder_bm_0_0, 'pdu'), (self.satnogs_frame_file_sink_0_1_0, 'frame')) - self.msg_connect((self.satnogs_ax25_decoder_bm_0_0, 'pdu'), (self.satnogs_udp_msg_sink_0_0, 'in')) + self.msg_connect((self.satnogs_frame_decoder_0_0, 'out'), (self.satnogs_frame_file_sink_0_1_0, 'frame')) + self.msg_connect((self.satnogs_frame_decoder_0_0, 'out'), (self.satnogs_udp_msg_sink_0_0, 'in')) + self.msg_connect((self.satnogs_frame_decoder_0_0_0, 'out'), (self.satnogs_frame_file_sink_0_1_0, 'frame')) + self.msg_connect((self.satnogs_frame_decoder_0_0_0, 'out'), (self.satnogs_udp_msg_sink_0_0, 'in')) self.msg_connect((self.satnogs_tcp_rigctl_msg_source_0, 'freq'), (self.satnogs_coarse_doppler_correction_cc_0, 'freq')) self.connect((self.analog_quadrature_demod_cf_0_0, 0), (self.low_pass_filter_1, 0)) self.connect((self.analog_quadrature_demod_cf_0_0_0, 0), (self.dc_blocker_xx_0_0, 0)) @@ -133,8 +135,8 @@ class satnogs_fsk_ax25(gr.top_block): self.connect((self.blocks_vco_c_0, 0), (self.blocks_multiply_xx_0, 1)) self.connect((self.dc_blocker_xx_0, 0), (self.digital_clock_recovery_mm_xx_0, 0)) self.connect((self.dc_blocker_xx_0_0, 0), (self.satnogs_ogg_encoder_0, 0)) - self.connect((self.digital_binary_slicer_fb_0, 0), (self.satnogs_ax25_decoder_bm_0, 0)) - self.connect((self.digital_binary_slicer_fb_0, 0), (self.satnogs_ax25_decoder_bm_0_0, 0)) + self.connect((self.digital_binary_slicer_fb_0, 0), (self.satnogs_frame_decoder_0_0, 0)) + self.connect((self.digital_binary_slicer_fb_0, 0), (self.satnogs_frame_decoder_0_0_0, 0)) self.connect((self.digital_clock_recovery_mm_xx_0, 0), (self.digital_binary_slicer_fb_0, 0)) self.connect((self.low_pass_filter_0, 0), (self.pfb_arb_resampler_xxx_0_0_0, 0)) self.connect((self.low_pass_filter_1, 0), (self.dc_blocker_xx_0, 0)) @@ -291,6 +293,18 @@ class satnogs_fsk_ax25(gr.top_block): def set_waterfall_file_path(self, waterfall_file_path): self.waterfall_file_path = waterfall_file_path + def get_variable_ax25_decoder_0_0(self): + return self.variable_ax25_decoder_0_0 + + def set_variable_ax25_decoder_0_0(self, variable_ax25_decoder_0_0): + self.variable_ax25_decoder_0_0 = variable_ax25_decoder_0_0 + + def get_variable_ax25_decoder_0(self): + return self.variable_ax25_decoder_0 + + def set_variable_ax25_decoder_0(self, variable_ax25_decoder_0): + self.variable_ax25_decoder_0 = variable_ax25_decoder_0 + def get_audio_samp_rate(self): return self.audio_samp_rate @@ -320,7 +334,7 @@ def argument_parser(): "", "--dev-args", dest="dev_args", type="string", default=satnogs.not_set_dev_args, help="Set dev_args [default=%default]") parser.add_option( - "", "--doppler-correction-per-sec", dest="doppler_correction_per_sec", type="intx", default=1000, + "", "--doppler-correction-per-sec", dest="doppler_correction_per_sec", type="intx", default=20, help="Set doppler_correction_per_sec [default=%default]") parser.add_option( "", "--enable-iq-dump", dest="enable_iq_dump", type="intx", default=0, diff --git a/apps/flowgraphs/satnogs_generic_iq_receiver.py b/apps/flowgraphs/satnogs_generic_iq_receiver.py deleted file mode 100755 index 7d296ef..0000000 --- a/apps/flowgraphs/satnogs_generic_iq_receiver.py +++ /dev/null @@ -1,268 +0,0 @@ -#!/usr/bin/env python2 -# -*- coding: utf-8 -*- -################################################## -# GNU Radio Python Flow Graph -# Title: Generic IQ samples receiver -# Author: Manolis Surligas (surligas@gmail.com) -# Description: A generic FM demodulation block -# Generated: Sun Nov 19 11:38:07 2017 -################################################## - -from gnuradio import blocks -from gnuradio import eng_notation -from gnuradio import filter -from gnuradio import gr -from gnuradio.eng_option import eng_option -from gnuradio.filter import firdes -from optparse import OptionParser -import osmosdr -import satnogs -import time - - -class satnogs_generic_iq_receiver(gr.top_block): - - def __init__(self, antenna=satnogs.not_set_antenna, bb_gain=satnogs.not_set_rx_bb_gain, dev_args=satnogs.not_set_dev_args, doppler_correction_per_sec=20, file_path='test.wav', if_gain=satnogs.not_set_rx_if_gain, lo_offset=100e3, ppm=0, rf_gain=satnogs.not_set_rx_rf_gain, rigctl_port=4532, rx_freq=100e6, rx_sdr_device='usrpb200'): - gr.top_block.__init__(self, "Generic IQ samples receiver") - - ################################################## - # Parameters - ################################################## - self.antenna = antenna - self.bb_gain = bb_gain - self.dev_args = dev_args - self.doppler_correction_per_sec = doppler_correction_per_sec - self.file_path = file_path - self.if_gain = if_gain - self.lo_offset = lo_offset - self.ppm = ppm - self.rf_gain = rf_gain - self.rigctl_port = rigctl_port - self.rx_freq = rx_freq - self.rx_sdr_device = rx_sdr_device - - ################################################## - # Variables - ################################################## - self.samp_rate_rx = samp_rate_rx = satnogs.hw_rx_settings[rx_sdr_device]['samp_rate'] - self.decimation_rx = decimation_rx = satnogs.fm_demod_settings[rx_sdr_device]['decimation_rx'] - - self.taps = taps = firdes.low_pass(12.0, samp_rate_rx, 100e3, 60000, firdes.WIN_HAMMING, 6.76) - - self.quadrature_rate = quadrature_rate = samp_rate_rx / decimation_rx - self.audio_samp_rate = audio_samp_rate = 44100 - self.audio_decimation = audio_decimation = 2 - - ################################################## - # Blocks - ################################################## - self.satnogs_tcp_rigctl_msg_source_0 = satnogs.tcp_rigctl_msg_source("127.0.0.1", rigctl_port, False, 1000/doppler_correction_per_sec, 1500) - self.satnogs_coarse_doppler_correction_cc_0 = satnogs.coarse_doppler_correction_cc(rx_freq, samp_rate_rx) - self.osmosdr_source_0 = osmosdr.source( args="numchan=" + str(1) + " " + satnogs.handle_rx_dev_args(rx_sdr_device, dev_args) ) - self.osmosdr_source_0.set_sample_rate(samp_rate_rx) - self.osmosdr_source_0.set_center_freq(rx_freq - lo_offset, 0) - self.osmosdr_source_0.set_freq_corr(ppm, 0) - self.osmosdr_source_0.set_dc_offset_mode(2, 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.handle_rx_rf_gain(rx_sdr_device, rf_gain), 0) - self.osmosdr_source_0.set_if_gain(satnogs.handle_rx_if_gain(rx_sdr_device, if_gain), 0) - self.osmosdr_source_0.set_bb_gain(satnogs.handle_rx_bb_gain(rx_sdr_device, bb_gain), 0) - self.osmosdr_source_0.set_antenna(satnogs.handle_rx_antenna(rx_sdr_device, antenna), 0) - self.osmosdr_source_0.set_bandwidth(samp_rate_rx, 0) - - self.freq_xlating_fir_filter_xxx_0 = filter.freq_xlating_fir_filter_ccc(decimation_rx, (taps), lo_offset, samp_rate_rx) - self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_gr_complex*1, file_path, False) - self.blocks_file_sink_0.set_unbuffered(True) - - ################################################## - # Connections - ################################################## - self.msg_connect((self.satnogs_tcp_rigctl_msg_source_0, 'freq'), (self.satnogs_coarse_doppler_correction_cc_0, 'freq')) - self.connect((self.freq_xlating_fir_filter_xxx_0, 0), (self.blocks_file_sink_0, 0)) - self.connect((self.osmosdr_source_0, 0), (self.satnogs_coarse_doppler_correction_cc_0, 0)) - self.connect((self.satnogs_coarse_doppler_correction_cc_0, 0), (self.freq_xlating_fir_filter_xxx_0, 0)) - - def get_antenna(self): - return self.antenna - - def set_antenna(self, antenna): - self.antenna = antenna - self.osmosdr_source_0.set_antenna(satnogs.handle_rx_antenna(self.rx_sdr_device, self.antenna), 0) - - def get_bb_gain(self): - return self.bb_gain - - def set_bb_gain(self, bb_gain): - self.bb_gain = bb_gain - self.osmosdr_source_0.set_bb_gain(satnogs.handle_rx_bb_gain(self.rx_sdr_device, self.bb_gain), 0) - - def get_dev_args(self): - return self.dev_args - - def set_dev_args(self, dev_args): - self.dev_args = dev_args - - def get_doppler_correction_per_sec(self): - return self.doppler_correction_per_sec - - def set_doppler_correction_per_sec(self, doppler_correction_per_sec): - self.doppler_correction_per_sec = doppler_correction_per_sec - - def get_file_path(self): - return self.file_path - - def set_file_path(self, file_path): - self.file_path = file_path - self.blocks_file_sink_0.open(self.file_path) - - def get_if_gain(self): - return self.if_gain - - def set_if_gain(self, if_gain): - self.if_gain = if_gain - self.osmosdr_source_0.set_if_gain(satnogs.handle_rx_if_gain(self.rx_sdr_device, self.if_gain), 0) - - 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_freq - self.lo_offset, 0) - self.freq_xlating_fir_filter_xxx_0.set_center_freq(self.lo_offset) - - def get_ppm(self): - return self.ppm - - def set_ppm(self, ppm): - self.ppm = ppm - self.osmosdr_source_0.set_freq_corr(self.ppm, 0) - - def get_rf_gain(self): - return self.rf_gain - - def set_rf_gain(self, rf_gain): - self.rf_gain = rf_gain - self.osmosdr_source_0.set_gain(satnogs.handle_rx_rf_gain(self.rx_sdr_device, self.rf_gain), 0) - - def get_rigctl_port(self): - return self.rigctl_port - - def set_rigctl_port(self, rigctl_port): - self.rigctl_port = rigctl_port - - def get_rx_freq(self): - return self.rx_freq - - def set_rx_freq(self, rx_freq): - self.rx_freq = rx_freq - self.satnogs_coarse_doppler_correction_cc_0.set_new_freq_locked(self.rx_freq) - self.osmosdr_source_0.set_center_freq(self.rx_freq - self.lo_offset, 0) - - 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_rx(satnogs.hw_rx_settings[self.rx_sdr_device]['samp_rate']) - self.set_decimation_rx(satnogs.fm_demod_settings[self.rx_sdr_device]['decimation_rx']) - self.osmosdr_source_0.set_gain(satnogs.handle_rx_rf_gain(self.rx_sdr_device, self.rf_gain), 0) - self.osmosdr_source_0.set_if_gain(satnogs.handle_rx_if_gain(self.rx_sdr_device, self.if_gain), 0) - self.osmosdr_source_0.set_bb_gain(satnogs.handle_rx_bb_gain(self.rx_sdr_device, self.bb_gain), 0) - self.osmosdr_source_0.set_antenna(satnogs.handle_rx_antenna(self.rx_sdr_device, self.antenna), 0) - - 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_quadrature_rate(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_decimation_rx(self): - return self.decimation_rx - - def set_decimation_rx(self, decimation_rx): - self.decimation_rx = decimation_rx - self.set_quadrature_rate(self.samp_rate_rx / self.decimation_rx) - - 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_quadrature_rate(self): - return self.quadrature_rate - - def set_quadrature_rate(self, quadrature_rate): - self.quadrature_rate = quadrature_rate - - def get_audio_samp_rate(self): - return self.audio_samp_rate - - def set_audio_samp_rate(self, audio_samp_rate): - self.audio_samp_rate = audio_samp_rate - - def get_audio_decimation(self): - return self.audio_decimation - - def set_audio_decimation(self, audio_decimation): - self.audio_decimation = audio_decimation - - -def argument_parser(): - description = 'A generic FM demodulation block' - parser = OptionParser(usage="%prog: [options]", option_class=eng_option, description=description) - parser.add_option( - "", "--antenna", dest="antenna", type="string", default=satnogs.not_set_antenna, - help="Set antenna [default=%default]") - parser.add_option( - "", "--bb-gain", dest="bb_gain", type="eng_float", default=eng_notation.num_to_str(satnogs.not_set_rx_bb_gain), - help="Set bb_gain [default=%default]") - parser.add_option( - "", "--dev-args", dest="dev_args", type="string", default=satnogs.not_set_dev_args, - help="Set dev_args [default=%default]") - parser.add_option( - "", "--doppler-correction-per-sec", dest="doppler_correction_per_sec", type="intx", default=20, - help="Set doppler_correction_per_sec [default=%default]") - parser.add_option( - "", "--file-path", dest="file_path", type="string", default='test.wav', - help="Set file_path [default=%default]") - parser.add_option( - "", "--if-gain", dest="if_gain", type="eng_float", default=eng_notation.num_to_str(satnogs.not_set_rx_if_gain), - help="Set if_gain [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( - "", "--ppm", dest="ppm", type="intx", default=0, - help="Set ppm [default=%default]") - parser.add_option( - "", "--rf-gain", dest="rf_gain", type="eng_float", default=eng_notation.num_to_str(satnogs.not_set_rx_rf_gain), - help="Set rf_gain [default=%default]") - parser.add_option( - "", "--rigctl-port", dest="rigctl_port", type="intx", default=4532, - help="Set rigctl_port [default=%default]") - parser.add_option( - "", "--rx-freq", dest="rx_freq", type="eng_float", default=eng_notation.num_to_str(100e6), - help="Set rx_freq [default=%default]") - parser.add_option( - "", "--rx-sdr-device", dest="rx_sdr_device", type="string", default='usrpb200', - help="Set rx_sdr_device [default=%default]") - return parser - - -def main(top_block_cls=satnogs_generic_iq_receiver, options=None): - if options is None: - options, _ = argument_parser().parse_args() - - tb = top_block_cls(antenna=options.antenna, bb_gain=options.bb_gain, dev_args=options.dev_args, doppler_correction_per_sec=options.doppler_correction_per_sec, file_path=options.file_path, if_gain=options.if_gain, lo_offset=options.lo_offset, ppm=options.ppm, rf_gain=options.rf_gain, rigctl_port=options.rigctl_port, rx_freq=options.rx_freq, rx_sdr_device=options.rx_sdr_device) - tb.start() - tb.wait() - - -if __name__ == '__main__': - main() diff --git a/apps/flowgraphs/satnogs_msk_ax25.py b/apps/flowgraphs/satnogs_msk_ax25.py index 7e1f4f7..41042e1 100755 --- a/apps/flowgraphs/satnogs_msk_ax25.py +++ b/apps/flowgraphs/satnogs_msk_ax25.py @@ -27,7 +27,7 @@ import time class satnogs_msk_ax25(gr.top_block): - def __init__(self, antenna=satnogs.not_set_antenna, baudrate=9600.0, bb_gain=satnogs.not_set_rx_bb_gain, decoded_data_file_path='/tmp/.satnogs/data/data', dev_args=satnogs.not_set_dev_args, doppler_correction_per_sec=1000, enable_iq_dump=0, file_path='test.wav', if_gain=satnogs.not_set_rx_if_gain, iq_file_path='/tmp/iq.dat', lo_offset=100e3, ppm=0, rf_gain=satnogs.not_set_rx_rf_gain, rigctl_port=4532, rx_freq=100e6, rx_sdr_device='usrpb200', samp_rate_rx=satnogs.not_set_samp_rate_rx, udp_IP='127.0.0.1', udp_port=16887, waterfall_file_path='/tmp/waterfall.dat'): + def __init__(self, antenna=satnogs.not_set_antenna, baudrate=9600.0, bb_gain=satnogs.not_set_rx_bb_gain, decoded_data_file_path='/tmp/.satnogs/data/data', dev_args=satnogs.not_set_dev_args, doppler_correction_per_sec=20, enable_iq_dump=0, file_path='test.wav', if_gain=satnogs.not_set_rx_if_gain, iq_file_path='/tmp/iq.dat', lo_offset=100e3, ppm=0, rf_gain=satnogs.not_set_rx_rf_gain, rigctl_port=4532, rx_freq=100e6, rx_sdr_device='usrpb200', samp_rate_rx=satnogs.not_set_samp_rate_rx, udp_IP='127.0.0.1', udp_port=16887, waterfall_file_path='/tmp/waterfall.dat'): gr.top_block.__init__(self, "satnogs_msk_ax25") ################################################## @@ -57,6 +57,8 @@ class satnogs_msk_ax25(gr.top_block): ################################################## # Variables ################################################## + self.variable_ax25_decoder_0_0 = variable_ax25_decoder_0_0 = satnogs.ax25_decoder_make('GND', 0, True, False, True, 512) + self.variable_ax25_decoder_0 = variable_ax25_decoder_0 = satnogs.ax25_decoder_make('GND', 0, True, True, True, 512) self.audio_samp_rate = audio_samp_rate = 48000 ################################################## @@ -64,13 +66,13 @@ class satnogs_msk_ax25(gr.top_block): ################################################## self.satnogs_waterfall_sink_0 = satnogs.waterfall_sink(audio_samp_rate, 0.0, 10, 1024, waterfall_file_path, 1) self.satnogs_udp_msg_sink_0_0 = satnogs.udp_msg_sink(udp_IP, udp_port, 1500) - self.satnogs_tcp_rigctl_msg_source_0 = satnogs.tcp_rigctl_msg_source("127.0.0.1", rigctl_port, False, 1000, 1500) + self.satnogs_tcp_rigctl_msg_source_0 = satnogs.tcp_rigctl_msg_source("127.0.0.1", rigctl_port, False, int(1.0/doppler_correction_per_sec) * 1000 + 1, 1500) self.satnogs_ogg_encoder_0 = satnogs.ogg_encoder(file_path, audio_samp_rate, 1.0) self.satnogs_iq_sink_0 = satnogs.iq_sink(16768, iq_file_path, False, enable_iq_dump) self.satnogs_frame_file_sink_0_1_0 = satnogs.frame_file_sink(decoded_data_file_path, 0) + self.satnogs_frame_decoder_0_0_0 = satnogs.frame_decoder(variable_ax25_decoder_0_0, gr.sizeof_char) + self.satnogs_frame_decoder_0_0 = satnogs.frame_decoder(variable_ax25_decoder_0, gr.sizeof_char) self.satnogs_coarse_doppler_correction_cc_0 = satnogs.coarse_doppler_correction_cc(rx_freq, satnogs.handle_samp_rate_rx(rx_sdr_device, samp_rate_rx)) - self.satnogs_ax25_decoder_bm_0_0 = satnogs.ax25_decoder_bm('GND', 0, True, False, 1024) - self.satnogs_ax25_decoder_bm_0 = satnogs.ax25_decoder_bm('GND', 0, True, True, 1024) self.pfb_arb_resampler_xxx_0_0_0 = pfb.arb_resampler_ccf( (2.0*baudrate)/audio_samp_rate, taps=None, @@ -107,7 +109,7 @@ class satnogs_msk_ax25(gr.top_block): self.blocks_vco_c_0 = blocks.vco_c(audio_samp_rate, -audio_samp_rate, 1.0) self.blocks_rotator_cc_0 = blocks.rotator_cc(-2.0 * math.pi * (lo_offset / satnogs.handle_samp_rate_rx(rx_sdr_device, samp_rate_rx))) self.blocks_multiply_xx_0 = blocks.multiply_vcc(1) - self.blocks_moving_average_xx_0 = blocks.moving_average_ff(1024, 1.0/1024.0, 4096) + self.blocks_moving_average_xx_0 = blocks.moving_average_ff(1024, 1.0/1024.0, 4096, 1) self.blocks_delay_0 = blocks.delay(gr.sizeof_gr_complex*1, 1024/2) self.analog_quadrature_demod_cf_0_0_0_0 = analog.quadrature_demod_cf(1.0) self.analog_quadrature_demod_cf_0_0_0 = analog.quadrature_demod_cf(0.9) @@ -118,10 +120,10 @@ class satnogs_msk_ax25(gr.top_block): ################################################## # Connections ################################################## - self.msg_connect((self.satnogs_ax25_decoder_bm_0, 'pdu'), (self.satnogs_frame_file_sink_0_1_0, 'frame')) - self.msg_connect((self.satnogs_ax25_decoder_bm_0, 'pdu'), (self.satnogs_udp_msg_sink_0_0, 'in')) - self.msg_connect((self.satnogs_ax25_decoder_bm_0_0, 'pdu'), (self.satnogs_frame_file_sink_0_1_0, 'frame')) - self.msg_connect((self.satnogs_ax25_decoder_bm_0_0, 'pdu'), (self.satnogs_udp_msg_sink_0_0, 'in')) + self.msg_connect((self.satnogs_frame_decoder_0_0, 'out'), (self.satnogs_frame_file_sink_0_1_0, 'frame')) + self.msg_connect((self.satnogs_frame_decoder_0_0, 'out'), (self.satnogs_udp_msg_sink_0_0, 'in')) + self.msg_connect((self.satnogs_frame_decoder_0_0_0, 'out'), (self.satnogs_frame_file_sink_0_1_0, 'frame')) + self.msg_connect((self.satnogs_frame_decoder_0_0_0, 'out'), (self.satnogs_udp_msg_sink_0_0, 'in')) self.msg_connect((self.satnogs_tcp_rigctl_msg_source_0, 'freq'), (self.satnogs_coarse_doppler_correction_cc_0, 'freq')) self.connect((self.analog_quadrature_demod_cf_0_0, 0), (self.low_pass_filter_1, 0)) self.connect((self.analog_quadrature_demod_cf_0_0_0, 0), (self.dc_blocker_xx_0_0, 0)) @@ -133,8 +135,8 @@ class satnogs_msk_ax25(gr.top_block): self.connect((self.blocks_vco_c_0, 0), (self.blocks_multiply_xx_0, 1)) self.connect((self.dc_blocker_xx_0, 0), (self.digital_clock_recovery_mm_xx_0, 0)) self.connect((self.dc_blocker_xx_0_0, 0), (self.satnogs_ogg_encoder_0, 0)) - self.connect((self.digital_binary_slicer_fb_0, 0), (self.satnogs_ax25_decoder_bm_0, 0)) - self.connect((self.digital_binary_slicer_fb_0, 0), (self.satnogs_ax25_decoder_bm_0_0, 0)) + self.connect((self.digital_binary_slicer_fb_0, 0), (self.satnogs_frame_decoder_0_0, 0)) + self.connect((self.digital_binary_slicer_fb_0, 0), (self.satnogs_frame_decoder_0_0_0, 0)) self.connect((self.digital_clock_recovery_mm_xx_0, 0), (self.digital_binary_slicer_fb_0, 0)) self.connect((self.low_pass_filter_0, 0), (self.pfb_arb_resampler_xxx_0_0_0, 0)) self.connect((self.low_pass_filter_1, 0), (self.dc_blocker_xx_0, 0)) @@ -291,6 +293,18 @@ class satnogs_msk_ax25(gr.top_block): def set_waterfall_file_path(self, waterfall_file_path): self.waterfall_file_path = waterfall_file_path + def get_variable_ax25_decoder_0_0(self): + return self.variable_ax25_decoder_0_0 + + def set_variable_ax25_decoder_0_0(self, variable_ax25_decoder_0_0): + self.variable_ax25_decoder_0_0 = variable_ax25_decoder_0_0 + + def get_variable_ax25_decoder_0(self): + return self.variable_ax25_decoder_0 + + def set_variable_ax25_decoder_0(self, variable_ax25_decoder_0): + self.variable_ax25_decoder_0 = variable_ax25_decoder_0 + def get_audio_samp_rate(self): return self.audio_samp_rate @@ -320,7 +334,7 @@ def argument_parser(): "", "--dev-args", dest="dev_args", type="string", default=satnogs.not_set_dev_args, help="Set dev_args [default=%default]") parser.add_option( - "", "--doppler-correction-per-sec", dest="doppler_correction_per_sec", type="intx", default=1000, + "", "--doppler-correction-per-sec", dest="doppler_correction_per_sec", type="intx", default=20, help="Set doppler_correction_per_sec [default=%default]") parser.add_option( "", "--enable-iq-dump", dest="enable_iq_dump", type="intx", default=0, diff --git a/apps/scripts/CMakeLists.txt b/apps/scripts/CMakeLists.txt deleted file mode 100644 index 4355ed3..0000000 --- a/apps/scripts/CMakeLists.txt +++ /dev/null @@ -1,4 +0,0 @@ -INSTALL(FILES - satnogs_waterfall.gp - DESTINATION share/satnogs/scripts -) \ No newline at end of file diff --git a/apps/scripts/satnogs_waterfall.gp b/apps/scripts/satnogs_waterfall.gp deleted file mode 100755 index 69907ca..0000000 --- a/apps/scripts/satnogs_waterfall.gp +++ /dev/null @@ -1,94 +0,0 @@ -#!/usr/bin/gnuplot -# -# gr-satnogs: SatNOGS GNU Radio Out-Of-Tree Module -# -# Copyright (C) 2017, 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 - -# satnogs-waterfall.gp -# Plot a waterfall diagramm from the output of the satnogs_waterfall_sink block. -# -# Usage: -# gnuplot -e "inputfile='waterfall_sink.data'" -e "outfile='waterfall.png'" /usr/local/share/satnogs/scripts/satnogs_waterfall.gp - -reset -if (!exists("height")) height=800 -if (!exists("width")) width=800 -if (!exists("outfile")) outfile='/tmp/waterfall.png' - -################################################################################ -# Get FFT size and maximum number of records so we can plot the waterfall -# even in case the file was not properly closed and contains data that are -# not an integer multiple of the FFT size -################################################################################ - -# Set terminal to unkown so no ploting is performed. -set terminal unknown - -# Read the first float to get the FFT size -# The file contains a float specifying the FFT size the x-axis scale -# and then each each pixel line -# starts with the time in seconds from the beginning of the capture. -# Then, read until the last float of a fully filled pixel line to get the number -# of floats that should be in the file. -# For strange reasons the STATS_records returns inconcistent size (always the half) -plot inputfile binary format='%float32' index 0 every ::0:0:0:0 using (fft_size = $1), \ - "" binary format='%float32' every fft_size + 1::fft_size using (float_num = $0 + 1) -cmd = sprintf("truncate -s %u %s", float_num * 4, inputfile) - -# Truncate properly the file -system(cmd) - -set view map -set terminal pngcairo size width,height enhanced font 'Verdana,14' -set output outfile - -unset key -set style line 11 lc rgb '#808080' lt 1 -set border 3 front ls 11 -set style line 12 lc rgb '#888888' lt 0 lw 1 -set grid front ls 12 -set tics nomirror out scale 0.75 - -set xlabel 'Frequency (kHz)' -set ylabel 'Time' -set cbtics scale 0 - -# Spectravue palette and scale -set cbtics (-110, -105, -100, -95, -90, -85, -80, -75, -70, -65, -60, -55, -50, -55, -40) - -# palette -set palette defined (0 '#000000', \ - 1 '#0000e7', \ - 2 '#0094ff', \ - 3 '#00ffb8', \ - 4 '#2eff00', \ - 5 '#ffff00', \ - 6 '#ff8800', \ - 7 '#ff0000', \ - 8 '#ff007c') -set ylabel 'Time (seconds)' -set cbrange [-100:-50] -set cblabel 'Power (dB)' - - -# Get automatically the axis ranges from the file -stats inputfile using 1 binary nooutput -set xrange [STATS_min*1e-3:STATS_max*1e-3 + 1] -stats inputfile using 2 binary nooutput -set yrange [0:STATS_max + 1] - -# Plot and scale the frequency axis to kHz for readability -plot inputfile every 2 using ($1*1e-3):2:3 binary matrix with image diff --git a/lib/frame_file_sink_impl.cc b/lib/frame_file_sink_impl.cc index 400a215..2049b6d 100644 --- a/lib/frame_file_sink_impl.cc +++ b/lib/frame_file_sink_impl.cc @@ -25,6 +25,9 @@ #include #include "frame_file_sink_impl.h" +#include +#include + namespace gr { namespace satnogs { @@ -95,14 +98,30 @@ frame_file_sink_impl::msg_handler_frame(pmt::pmt_t msg) d_counter = 0; } - uint8_t *su; + const char *su; + size_t len; + std::string s; + + /* Check if the message contains the legacy or the new format */ + if (pmt::is_dict(msg)) { + pmt::pmt_t pdu = pmt::dict_ref(msg, pmt::mp(metadata::value(metadata::PDU)), + pmt::PMT_NIL); + s = base64_decode(std::string((const char *) pmt::blob_data(pdu), + pmt::blob_length(pdu))); + su = s.c_str(); + len = s.size(); + } + else { + su = (const char *) pmt::blob_data(msg), pmt::blob_length(msg); + s = std::string((const char *) pmt::blob_data(msg), pmt::blob_length(msg)); + len = pmt::blob_length(msg); + } switch (d_output_type) { case 0: { /* Binary form */ std::ofstream fd(filename.c_str()); - fd.write((const char *) pmt::blob_data(msg), - pmt::blob_length(msg)); + fd.write(su, len); fd.close(); break; } @@ -110,7 +129,6 @@ frame_file_sink_impl::msg_handler_frame(pmt::pmt_t msg) /* aHex annotated, dd .txt to filename */ filename.append(".txt"); std::ofstream fd(filename.c_str()); - su = (uint8_t *) pmt::blob_data(msg); for (size_t i = 0; i < pmt::blob_length(msg); i++) { fd << "0x" << std::hex << std::setw(2) << std::setfill('0') << (uint32_t) su[i] << " "; @@ -122,7 +140,6 @@ frame_file_sink_impl::msg_handler_frame(pmt::pmt_t msg) /* Binary annotated, add .txt to filename */ filename.append(".txt"); std::ofstream fd(filename.c_str()); - su = (uint8_t *) pmt::blob_data(msg); for (size_t i = 0; i < pmt::blob_length(msg); i++) { fd << "0b" << std::bitset<8> (su[i]) << " "; } diff --git a/lib/multi_format_msg_sink_impl.cc b/lib/multi_format_msg_sink_impl.cc index 67c9276..37007ee 100644 --- a/lib/multi_format_msg_sink_impl.cc +++ b/lib/multi_format_msg_sink_impl.cc @@ -47,7 +47,7 @@ multi_format_msg_sink::make(size_t format, void multi_format_msg_sink_impl::msg_handler_file(pmt::pmt_t msg) { - const uint8_t *su; + const char *su; size_t len; std::string s; char buf[256]; @@ -56,14 +56,13 @@ multi_format_msg_sink_impl::msg_handler_file(pmt::pmt_t msg) if (pmt::is_dict(msg)) { pmt::pmt_t pdu = pmt::dict_ref(msg, pmt::mp(metadata::value(metadata::PDU)), pmt::PMT_NIL); - std::string d = base64_decode(std::string((const char *) pmt::blob_data(pdu), + s = base64_decode(std::string((const char *) pmt::blob_data(pdu), pmt::blob_length(pdu))); - su = (const uint8_t *) pmt::blob_data(pdu), pmt::blob_length(pdu); - s = std::string((const char *) pmt::blob_data(pdu), pmt::blob_length(pdu)); - len = pmt::blob_length(pdu); + su = s.c_str(); + len = s.size(); } else { - su = (const uint8_t *) pmt::blob_data(msg), pmt::blob_length(msg); + su = (const char *) pmt::blob_data(msg), pmt::blob_length(msg); s = std::string((const char *) pmt::blob_data(msg), pmt::blob_length(msg)); len = pmt::blob_length(msg); } @@ -100,23 +99,23 @@ multi_format_msg_sink_impl::msg_handler_file(pmt::pmt_t msg) void multi_format_msg_sink_impl::msg_handler_stdout(pmt::pmt_t msg) { - const uint8_t *su; + const char *su; size_t len; std::string s; char buf[256]; + /* Check if the message contains the legacy or the new format */ /* Check if the message contains the legacy or the new format */ if (pmt::is_dict(msg)) { pmt::pmt_t pdu = pmt::dict_ref(msg, pmt::mp(metadata::value(metadata::PDU)), pmt::PMT_NIL); - std::string d = base64_decode(std::string((const char *) pmt::blob_data(pdu), + s = base64_decode(std::string((const char *) pmt::blob_data(pdu), pmt::blob_length(pdu))); - su = (const uint8_t *) pmt::blob_data(pdu), pmt::blob_length(pdu); - s = std::string((const char *) pmt::blob_data(pdu), pmt::blob_length(pdu)); - len = pmt::blob_length(pdu); + su = s.c_str(); + len = s.size(); } else { - su = (const uint8_t *) pmt::blob_data(msg), pmt::blob_length(msg); + su = (const char *) pmt::blob_data(msg), pmt::blob_length(msg); s = std::string((const char *) pmt::blob_data(msg), pmt::blob_length(msg)); len = pmt::blob_length(msg); }