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
This commit is contained in:
parent
2cc9184fbc
commit
860395a997
|
@ -20,18 +20,11 @@
|
||||||
include(GrPython)
|
include(GrPython)
|
||||||
|
|
||||||
add_subdirectory(flowgraphs/satellites)
|
add_subdirectory(flowgraphs/satellites)
|
||||||
add_subdirectory(scripts)
|
|
||||||
|
|
||||||
GR_PYTHON_INSTALL(
|
GR_PYTHON_INSTALL(
|
||||||
PROGRAMS
|
PROGRAMS
|
||||||
flowgraphs/satnogs_fm_demod.py
|
flowgraphs/satnogs_fm_demod.py
|
||||||
flowgraphs/satnogs_generic_iq_receiver.py
|
|
||||||
flowgraphs/satnogs_bpsk_demod.py
|
|
||||||
flowgraphs/satnogs_cw_decoder.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_afsk1200_ax25.py
|
||||||
flowgraphs/satnogs_example_flowgraph.py
|
flowgraphs/satnogs_example_flowgraph.py
|
||||||
flowgraphs/satnogs_fsk_ax25.py
|
flowgraphs/satnogs_fsk_ax25.py
|
||||||
|
|
|
@ -197,6 +197,108 @@
|
||||||
<value>3000</value>
|
<value>3000</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
|
<block>
|
||||||
|
<key>variable_ax25_decoder</key>
|
||||||
|
<param>
|
||||||
|
<key>comment</key>
|
||||||
|
<value></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_enabled</key>
|
||||||
|
<value>True</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>descrambling</key>
|
||||||
|
<value>True</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_coordinate</key>
|
||||||
|
<value>(1619, 953)</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_rotation</key>
|
||||||
|
<value>0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>id</key>
|
||||||
|
<value>variable_ax25_decoder_0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>value</key>
|
||||||
|
<value>'ok'</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>frame_len</key>
|
||||||
|
<value>512</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>crc_check</key>
|
||||||
|
<value>True</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>promisc</key>
|
||||||
|
<value>True</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>addr</key>
|
||||||
|
<value>'GND'</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>ssid</key>
|
||||||
|
<value>0</value>
|
||||||
|
</param>
|
||||||
|
</block>
|
||||||
|
<block>
|
||||||
|
<key>variable_ax25_decoder</key>
|
||||||
|
<param>
|
||||||
|
<key>comment</key>
|
||||||
|
<value></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_enabled</key>
|
||||||
|
<value>True</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>descrambling</key>
|
||||||
|
<value>False</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_coordinate</key>
|
||||||
|
<value>(1779, 953)</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_rotation</key>
|
||||||
|
<value>0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>id</key>
|
||||||
|
<value>variable_ax25_decoder_0_0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>value</key>
|
||||||
|
<value>'ok'</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>frame_len</key>
|
||||||
|
<value>512</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>crc_check</key>
|
||||||
|
<value>True</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>promisc</key>
|
||||||
|
<value>True</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>addr</key>
|
||||||
|
<value>'GND'</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>ssid</key>
|
||||||
|
<value>0</value>
|
||||||
|
</param>
|
||||||
|
</block>
|
||||||
<block>
|
<block>
|
||||||
<key>analog_quadrature_demod_cf</key>
|
<key>analog_quadrature_demod_cf</key>
|
||||||
<param>
|
<param>
|
||||||
|
@ -1304,7 +1406,7 @@
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>value</key>
|
<key>value</key>
|
||||||
<value>1000</value>
|
<value>20</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
<block>
|
<block>
|
||||||
|
@ -3570,124 +3672,6 @@ max_modulation_freq = 3000</value>
|
||||||
<value>satnogs.not_set_samp_rate_rx</value>
|
<value>satnogs.not_set_samp_rate_rx</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
<block>
|
|
||||||
<key>satnogs_ax25_decoder_bm</key>
|
|
||||||
<param>
|
|
||||||
<key>alias</key>
|
|
||||||
<value></value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>comment</key>
|
|
||||||
<value></value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>affinity</key>
|
|
||||||
<value></value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>_enabled</key>
|
|
||||||
<value>True</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>descrambling</key>
|
|
||||||
<value>False</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>_coordinate</key>
|
|
||||||
<value>(1563, 662)</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>_rotation</key>
|
|
||||||
<value>180</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>id</key>
|
|
||||||
<value>satnogs_ax25_decoder_bm_0</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>maxoutbuf</key>
|
|
||||||
<value>0</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>max_frame_len</key>
|
|
||||||
<value>1024</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>minoutbuf</key>
|
|
||||||
<value>0</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>promisc</key>
|
|
||||||
<value>True</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>addr</key>
|
|
||||||
<value>'GND'</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>ssid</key>
|
|
||||||
<value>0</value>
|
|
||||||
</param>
|
|
||||||
</block>
|
|
||||||
<block>
|
|
||||||
<key>satnogs_ax25_decoder_bm</key>
|
|
||||||
<param>
|
|
||||||
<key>alias</key>
|
|
||||||
<value></value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>comment</key>
|
|
||||||
<value></value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>affinity</key>
|
|
||||||
<value></value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>_enabled</key>
|
|
||||||
<value>True</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>descrambling</key>
|
|
||||||
<value>True</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>_coordinate</key>
|
|
||||||
<value>(1563, 785)</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>_rotation</key>
|
|
||||||
<value>180</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>id</key>
|
|
||||||
<value>satnogs_ax25_decoder_bm_0_0</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>maxoutbuf</key>
|
|
||||||
<value>0</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>max_frame_len</key>
|
|
||||||
<value>1024</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>minoutbuf</key>
|
|
||||||
<value>0</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>promisc</key>
|
|
||||||
<value>True</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>addr</key>
|
|
||||||
<value>'GND'</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>ssid</key>
|
|
||||||
<value>0</value>
|
|
||||||
</param>
|
|
||||||
</block>
|
|
||||||
<block>
|
<block>
|
||||||
<key>satnogs_coarse_doppler_correction_cc</key>
|
<key>satnogs_coarse_doppler_correction_cc</key>
|
||||||
<param>
|
<param>
|
||||||
|
@ -3735,6 +3719,100 @@ max_modulation_freq = 3000</value>
|
||||||
<value>rx_freq</value>
|
<value>rx_freq</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
|
<block>
|
||||||
|
<key>satnogs_frame_decoder</key>
|
||||||
|
<param>
|
||||||
|
<key>alias</key>
|
||||||
|
<value></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>comment</key>
|
||||||
|
<value></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>affinity</key>
|
||||||
|
<value></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>decoder_object</key>
|
||||||
|
<value>variable_ax25_decoder_0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_enabled</key>
|
||||||
|
<value>True</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_coordinate</key>
|
||||||
|
<value>(1627, 789)</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_rotation</key>
|
||||||
|
<value>180</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>id</key>
|
||||||
|
<value>satnogs_frame_decoder_0_0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>itype</key>
|
||||||
|
<value>byte</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>maxoutbuf</key>
|
||||||
|
<value>0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>minoutbuf</key>
|
||||||
|
<value>0</value>
|
||||||
|
</param>
|
||||||
|
</block>
|
||||||
|
<block>
|
||||||
|
<key>satnogs_frame_decoder</key>
|
||||||
|
<param>
|
||||||
|
<key>alias</key>
|
||||||
|
<value></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>comment</key>
|
||||||
|
<value></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>affinity</key>
|
||||||
|
<value></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>decoder_object</key>
|
||||||
|
<value>variable_ax25_decoder_0_0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_enabled</key>
|
||||||
|
<value>1</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_coordinate</key>
|
||||||
|
<value>(1627, 718)</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_rotation</key>
|
||||||
|
<value>180</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>id</key>
|
||||||
|
<value>satnogs_frame_decoder_0_0_0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>itype</key>
|
||||||
|
<value>byte</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>maxoutbuf</key>
|
||||||
|
<value>0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>minoutbuf</key>
|
||||||
|
<value>0</value>
|
||||||
|
</param>
|
||||||
|
</block>
|
||||||
<block>
|
<block>
|
||||||
<key>satnogs_frame_file_sink</key>
|
<key>satnogs_frame_file_sink</key>
|
||||||
<param>
|
<param>
|
||||||
|
@ -3884,7 +3962,7 @@ max_modulation_freq = 3000</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(8, 164)</value>
|
<value>(7, 171)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -3920,7 +3998,7 @@ max_modulation_freq = 3000</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>interval</key>
|
<key>interval</key>
|
||||||
<value>1000</value>
|
<value>int(1000.0/doppler_correction_per_sec) + 1</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
<block>
|
<block>
|
||||||
|
@ -4301,13 +4379,13 @@ max_modulation_freq = 3000</value>
|
||||||
</connection>
|
</connection>
|
||||||
<connection>
|
<connection>
|
||||||
<source_block_id>digital_binary_slicer_fb_0</source_block_id>
|
<source_block_id>digital_binary_slicer_fb_0</source_block_id>
|
||||||
<sink_block_id>satnogs_ax25_decoder_bm_0</sink_block_id>
|
<sink_block_id>satnogs_frame_decoder_0_0</sink_block_id>
|
||||||
<source_key>0</source_key>
|
<source_key>0</source_key>
|
||||||
<sink_key>0</sink_key>
|
<sink_key>0</sink_key>
|
||||||
</connection>
|
</connection>
|
||||||
<connection>
|
<connection>
|
||||||
<source_block_id>digital_binary_slicer_fb_0</source_block_id>
|
<source_block_id>digital_binary_slicer_fb_0</source_block_id>
|
||||||
<sink_block_id>satnogs_ax25_decoder_bm_0_0</sink_block_id>
|
<sink_block_id>satnogs_frame_decoder_0_0_0</sink_block_id>
|
||||||
<source_key>0</source_key>
|
<source_key>0</source_key>
|
||||||
<sink_key>0</sink_key>
|
<sink_key>0</sink_key>
|
||||||
</connection>
|
</connection>
|
||||||
|
@ -4365,36 +4443,36 @@ max_modulation_freq = 3000</value>
|
||||||
<source_key>0</source_key>
|
<source_key>0</source_key>
|
||||||
<sink_key>0</sink_key>
|
<sink_key>0</sink_key>
|
||||||
</connection>
|
</connection>
|
||||||
<connection>
|
|
||||||
<source_block_id>satnogs_ax25_decoder_bm_0</source_block_id>
|
|
||||||
<sink_block_id>satnogs_frame_file_sink_0_1_0</sink_block_id>
|
|
||||||
<source_key>pdu</source_key>
|
|
||||||
<sink_key>frame</sink_key>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
|
||||||
<source_block_id>satnogs_ax25_decoder_bm_0</source_block_id>
|
|
||||||
<sink_block_id>satnogs_udp_msg_sink_0_0</sink_block_id>
|
|
||||||
<source_key>pdu</source_key>
|
|
||||||
<sink_key>in</sink_key>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
|
||||||
<source_block_id>satnogs_ax25_decoder_bm_0_0</source_block_id>
|
|
||||||
<sink_block_id>satnogs_frame_file_sink_0_1_0</sink_block_id>
|
|
||||||
<source_key>pdu</source_key>
|
|
||||||
<sink_key>frame</sink_key>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
|
||||||
<source_block_id>satnogs_ax25_decoder_bm_0_0</source_block_id>
|
|
||||||
<sink_block_id>satnogs_udp_msg_sink_0_0</sink_block_id>
|
|
||||||
<source_key>pdu</source_key>
|
|
||||||
<sink_key>in</sink_key>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
<connection>
|
||||||
<source_block_id>satnogs_coarse_doppler_correction_cc_0</source_block_id>
|
<source_block_id>satnogs_coarse_doppler_correction_cc_0</source_block_id>
|
||||||
<sink_block_id>pfb_arb_resampler_xxx_0</sink_block_id>
|
<sink_block_id>pfb_arb_resampler_xxx_0</sink_block_id>
|
||||||
<source_key>0</source_key>
|
<source_key>0</source_key>
|
||||||
<sink_key>0</sink_key>
|
<sink_key>0</sink_key>
|
||||||
</connection>
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<source_block_id>satnogs_frame_decoder_0_0</source_block_id>
|
||||||
|
<sink_block_id>satnogs_frame_file_sink_0_1_0</sink_block_id>
|
||||||
|
<source_key>out</source_key>
|
||||||
|
<sink_key>frame</sink_key>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<source_block_id>satnogs_frame_decoder_0_0</source_block_id>
|
||||||
|
<sink_block_id>satnogs_udp_msg_sink_0_0</sink_block_id>
|
||||||
|
<source_key>out</source_key>
|
||||||
|
<sink_key>in</sink_key>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<source_block_id>satnogs_frame_decoder_0_0_0</source_block_id>
|
||||||
|
<sink_block_id>satnogs_frame_file_sink_0_1_0</sink_block_id>
|
||||||
|
<source_key>out</source_key>
|
||||||
|
<sink_key>frame</sink_key>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<source_block_id>satnogs_frame_decoder_0_0_0</source_block_id>
|
||||||
|
<sink_block_id>satnogs_udp_msg_sink_0_0</sink_block_id>
|
||||||
|
<source_key>out</source_key>
|
||||||
|
<sink_key>in</sink_key>
|
||||||
|
</connection>
|
||||||
<connection>
|
<connection>
|
||||||
<source_block_id>satnogs_tcp_rigctl_msg_source_0</source_block_id>
|
<source_block_id>satnogs_tcp_rigctl_msg_source_0</source_block_id>
|
||||||
<sink_block_id>satnogs_coarse_doppler_correction_cc_0</sink_block_id>
|
<sink_block_id>satnogs_coarse_doppler_correction_cc_0</sink_block_id>
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -248,6 +248,108 @@
|
||||||
<value>4</value>
|
<value>4</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
|
<block>
|
||||||
|
<key>variable_ax25_decoder</key>
|
||||||
|
<param>
|
||||||
|
<key>comment</key>
|
||||||
|
<value></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_enabled</key>
|
||||||
|
<value>True</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>descrambling</key>
|
||||||
|
<value>True</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_coordinate</key>
|
||||||
|
<value>(1276, 690)</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_rotation</key>
|
||||||
|
<value>0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>id</key>
|
||||||
|
<value>variable_ax25_decoder_0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>value</key>
|
||||||
|
<value>'ok'</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>frame_len</key>
|
||||||
|
<value>512</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>crc_check</key>
|
||||||
|
<value>True</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>promisc</key>
|
||||||
|
<value>True</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>addr</key>
|
||||||
|
<value>'GND'</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>ssid</key>
|
||||||
|
<value>0</value>
|
||||||
|
</param>
|
||||||
|
</block>
|
||||||
|
<block>
|
||||||
|
<key>variable_ax25_decoder</key>
|
||||||
|
<param>
|
||||||
|
<key>comment</key>
|
||||||
|
<value></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_enabled</key>
|
||||||
|
<value>True</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>descrambling</key>
|
||||||
|
<value>False</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_coordinate</key>
|
||||||
|
<value>(1436, 690)</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_rotation</key>
|
||||||
|
<value>0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>id</key>
|
||||||
|
<value>variable_ax25_decoder_0_0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>value</key>
|
||||||
|
<value>'ok'</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>frame_len</key>
|
||||||
|
<value>512</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>crc_check</key>
|
||||||
|
<value>True</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>promisc</key>
|
||||||
|
<value>True</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>addr</key>
|
||||||
|
<value>'GND'</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>ssid</key>
|
||||||
|
<value>0</value>
|
||||||
|
</param>
|
||||||
|
</block>
|
||||||
<block>
|
<block>
|
||||||
<key>analog_agc2_xx</key>
|
<key>analog_agc2_xx</key>
|
||||||
<param>
|
<param>
|
||||||
|
@ -3298,124 +3400,6 @@ reception performance.</value>
|
||||||
<value>satnogs.not_set_samp_rate_rx</value>
|
<value>satnogs.not_set_samp_rate_rx</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
<block>
|
|
||||||
<key>satnogs_ax25_decoder_bm</key>
|
|
||||||
<param>
|
|
||||||
<key>alias</key>
|
|
||||||
<value></value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>comment</key>
|
|
||||||
<value></value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>affinity</key>
|
|
||||||
<value></value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>_enabled</key>
|
|
||||||
<value>True</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>descrambling</key>
|
|
||||||
<value>True</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>_coordinate</key>
|
|
||||||
<value>(1182, 491)</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>_rotation</key>
|
|
||||||
<value>180</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>id</key>
|
|
||||||
<value>satnogs_ax25_decoder_bm_0</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>maxoutbuf</key>
|
|
||||||
<value>0</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>max_frame_len</key>
|
|
||||||
<value>1024</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>minoutbuf</key>
|
|
||||||
<value>0</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>promisc</key>
|
|
||||||
<value>True</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>addr</key>
|
|
||||||
<value>'GND'</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>ssid</key>
|
|
||||||
<value>0</value>
|
|
||||||
</param>
|
|
||||||
</block>
|
|
||||||
<block>
|
|
||||||
<key>satnogs_ax25_decoder_bm</key>
|
|
||||||
<param>
|
|
||||||
<key>alias</key>
|
|
||||||
<value></value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>comment</key>
|
|
||||||
<value></value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>affinity</key>
|
|
||||||
<value></value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>_enabled</key>
|
|
||||||
<value>True</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>descrambling</key>
|
|
||||||
<value>False</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>_coordinate</key>
|
|
||||||
<value>(1182, 611)</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>_rotation</key>
|
|
||||||
<value>180</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>id</key>
|
|
||||||
<value>satnogs_ax25_decoder_bm_0_0</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>maxoutbuf</key>
|
|
||||||
<value>0</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>max_frame_len</key>
|
|
||||||
<value>1024</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>minoutbuf</key>
|
|
||||||
<value>0</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>promisc</key>
|
|
||||||
<value>True</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>addr</key>
|
|
||||||
<value>'GND'</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>ssid</key>
|
|
||||||
<value>0</value>
|
|
||||||
</param>
|
|
||||||
</block>
|
|
||||||
<block>
|
<block>
|
||||||
<key>satnogs_coarse_doppler_correction_cc</key>
|
<key>satnogs_coarse_doppler_correction_cc</key>
|
||||||
<param>
|
<param>
|
||||||
|
@ -3463,6 +3447,100 @@ reception performance.</value>
|
||||||
<value>rx_freq</value>
|
<value>rx_freq</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
|
<block>
|
||||||
|
<key>satnogs_frame_decoder</key>
|
||||||
|
<param>
|
||||||
|
<key>alias</key>
|
||||||
|
<value></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>comment</key>
|
||||||
|
<value></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>affinity</key>
|
||||||
|
<value></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>decoder_object</key>
|
||||||
|
<value>variable_ax25_decoder_0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_enabled</key>
|
||||||
|
<value>True</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_coordinate</key>
|
||||||
|
<value>(1332, 598)</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_rotation</key>
|
||||||
|
<value>180</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>id</key>
|
||||||
|
<value>satnogs_frame_decoder_0_0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>itype</key>
|
||||||
|
<value>byte</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>maxoutbuf</key>
|
||||||
|
<value>0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>minoutbuf</key>
|
||||||
|
<value>0</value>
|
||||||
|
</param>
|
||||||
|
</block>
|
||||||
|
<block>
|
||||||
|
<key>satnogs_frame_decoder</key>
|
||||||
|
<param>
|
||||||
|
<key>alias</key>
|
||||||
|
<value></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>comment</key>
|
||||||
|
<value></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>affinity</key>
|
||||||
|
<value></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>decoder_object</key>
|
||||||
|
<value>variable_ax25_decoder_0_0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_enabled</key>
|
||||||
|
<value>1</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_coordinate</key>
|
||||||
|
<value>(1332, 510)</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_rotation</key>
|
||||||
|
<value>180</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>id</key>
|
||||||
|
<value>satnogs_frame_decoder_0_0_0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>itype</key>
|
||||||
|
<value>byte</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>maxoutbuf</key>
|
||||||
|
<value>0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>minoutbuf</key>
|
||||||
|
<value>0</value>
|
||||||
|
</param>
|
||||||
|
</block>
|
||||||
<block>
|
<block>
|
||||||
<key>satnogs_frame_file_sink</key>
|
<key>satnogs_frame_file_sink</key>
|
||||||
<param>
|
<param>
|
||||||
|
@ -3483,7 +3561,7 @@ reception performance.</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(936, 684)</value>
|
<value>(997, 674)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -3612,7 +3690,7 @@ reception performance.</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(216, 148)</value>
|
<value>(215, 147)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -3648,7 +3726,7 @@ reception performance.</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>interval</key>
|
<key>interval</key>
|
||||||
<value>1000</value>
|
<value>int(1.0/doppler_correction_per_sec) * 1000 + 1</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
<block>
|
<block>
|
||||||
|
@ -3671,7 +3749,7 @@ reception performance.</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(936, 596)</value>
|
<value>(997, 578)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -3922,13 +4000,13 @@ reception performance.</value>
|
||||||
</connection>
|
</connection>
|
||||||
<connection>
|
<connection>
|
||||||
<source_block_id>digital_constellation_receiver_cb_0</source_block_id>
|
<source_block_id>digital_constellation_receiver_cb_0</source_block_id>
|
||||||
<sink_block_id>satnogs_ax25_decoder_bm_0</sink_block_id>
|
<sink_block_id>satnogs_frame_decoder_0_0</sink_block_id>
|
||||||
<source_key>0</source_key>
|
<source_key>0</source_key>
|
||||||
<sink_key>0</sink_key>
|
<sink_key>0</sink_key>
|
||||||
</connection>
|
</connection>
|
||||||
<connection>
|
<connection>
|
||||||
<source_block_id>digital_constellation_receiver_cb_0</source_block_id>
|
<source_block_id>digital_constellation_receiver_cb_0</source_block_id>
|
||||||
<sink_block_id>satnogs_ax25_decoder_bm_0_0</sink_block_id>
|
<sink_block_id>satnogs_frame_decoder_0_0_0</sink_block_id>
|
||||||
<source_key>0</source_key>
|
<source_key>0</source_key>
|
||||||
<sink_key>0</sink_key>
|
<sink_key>0</sink_key>
|
||||||
</connection>
|
</connection>
|
||||||
|
@ -3986,30 +4064,6 @@ reception performance.</value>
|
||||||
<source_key>0</source_key>
|
<source_key>0</source_key>
|
||||||
<sink_key>0</sink_key>
|
<sink_key>0</sink_key>
|
||||||
</connection>
|
</connection>
|
||||||
<connection>
|
|
||||||
<source_block_id>satnogs_ax25_decoder_bm_0</source_block_id>
|
|
||||||
<sink_block_id>satnogs_frame_file_sink_0_1_0</sink_block_id>
|
|
||||||
<source_key>pdu</source_key>
|
|
||||||
<sink_key>frame</sink_key>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
|
||||||
<source_block_id>satnogs_ax25_decoder_bm_0</source_block_id>
|
|
||||||
<sink_block_id>satnogs_udp_msg_sink_0_0</sink_block_id>
|
|
||||||
<source_key>pdu</source_key>
|
|
||||||
<sink_key>in</sink_key>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
|
||||||
<source_block_id>satnogs_ax25_decoder_bm_0_0</source_block_id>
|
|
||||||
<sink_block_id>satnogs_frame_file_sink_0_1_0</sink_block_id>
|
|
||||||
<source_key>pdu</source_key>
|
|
||||||
<sink_key>frame</sink_key>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
|
||||||
<source_block_id>satnogs_ax25_decoder_bm_0_0</source_block_id>
|
|
||||||
<sink_block_id>satnogs_udp_msg_sink_0_0</sink_block_id>
|
|
||||||
<source_key>pdu</source_key>
|
|
||||||
<sink_key>in</sink_key>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
<connection>
|
||||||
<source_block_id>satnogs_coarse_doppler_correction_cc_0</source_block_id>
|
<source_block_id>satnogs_coarse_doppler_correction_cc_0</source_block_id>
|
||||||
<sink_block_id>analog_agc2_xx_0</sink_block_id>
|
<sink_block_id>analog_agc2_xx_0</sink_block_id>
|
||||||
|
@ -4022,6 +4076,30 @@ reception performance.</value>
|
||||||
<source_key>0</source_key>
|
<source_key>0</source_key>
|
||||||
<sink_key>0</sink_key>
|
<sink_key>0</sink_key>
|
||||||
</connection>
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<source_block_id>satnogs_frame_decoder_0_0</source_block_id>
|
||||||
|
<sink_block_id>satnogs_frame_file_sink_0_1_0</sink_block_id>
|
||||||
|
<source_key>out</source_key>
|
||||||
|
<sink_key>frame</sink_key>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<source_block_id>satnogs_frame_decoder_0_0</source_block_id>
|
||||||
|
<sink_block_id>satnogs_udp_msg_sink_0_0</sink_block_id>
|
||||||
|
<source_key>out</source_key>
|
||||||
|
<sink_key>in</sink_key>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<source_block_id>satnogs_frame_decoder_0_0_0</source_block_id>
|
||||||
|
<sink_block_id>satnogs_frame_file_sink_0_1_0</sink_block_id>
|
||||||
|
<source_key>out</source_key>
|
||||||
|
<sink_key>frame</sink_key>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<source_block_id>satnogs_frame_decoder_0_0_0</source_block_id>
|
||||||
|
<sink_block_id>satnogs_udp_msg_sink_0_0</sink_block_id>
|
||||||
|
<source_key>out</source_key>
|
||||||
|
<sink_key>in</sink_key>
|
||||||
|
</connection>
|
||||||
<connection>
|
<connection>
|
||||||
<source_block_id>satnogs_tcp_rigctl_msg_source_0</source_block_id>
|
<source_block_id>satnogs_tcp_rigctl_msg_source_0</source_block_id>
|
||||||
<sink_block_id>satnogs_coarse_doppler_correction_cc_0</sink_block_id>
|
<sink_block_id>satnogs_coarse_doppler_correction_cc_0</sink_block_id>
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -969,7 +969,7 @@ tone. This tone is typically 1 kHz.</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>value</key>
|
<key>value</key>
|
||||||
<value>1000</value>
|
<value>20</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
<block>
|
<block>
|
||||||
|
@ -3604,7 +3604,7 @@ we shift the LO a little further</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(8, 140)</value>
|
<value>(7, 155)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -3640,7 +3640,7 @@ we shift the LO a little further</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>interval</key>
|
<key>interval</key>
|
||||||
<value>1000</value>
|
<value>int(1000.0/doppler_correction_per_sec) + 1</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
<block>
|
<block>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version='1.0' encoding='utf-8'?>
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
<?grc format='1' created='3.7.12'?>
|
<?grc format='1' created='3.7.13'?>
|
||||||
<flow_graph>
|
<flow_graph>
|
||||||
<timestamp>Thu May 5 00:22:45 2016</timestamp>
|
<timestamp>Thu May 5 00:22:45 2016</timestamp>
|
||||||
<block>
|
<block>
|
||||||
|
@ -2747,7 +2747,7 @@ doppler correction block.</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(16, 204)</value>
|
<value>(7, 211)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -2755,7 +2755,7 @@ doppler correction block.</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>id</key>
|
<key>id</key>
|
||||||
<value>satnogs_tcp_rigctl_msg_source_0</value>
|
<value>satnogs_tcp_rigctl_msg_source_0_0</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>addr</key>
|
<key>addr</key>
|
||||||
|
@ -2783,7 +2783,7 @@ doppler correction block.</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>interval</key>
|
<key>interval</key>
|
||||||
<value>1000/doppler_correction_per_sec</value>
|
<value>int(1000.0/doppler_correction_per_sec) + 1</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
<block>
|
<block>
|
||||||
|
@ -2931,7 +2931,7 @@ doppler correction block.</value>
|
||||||
<sink_key>0</sink_key>
|
<sink_key>0</sink_key>
|
||||||
</connection>
|
</connection>
|
||||||
<connection>
|
<connection>
|
||||||
<source_block_id>satnogs_tcp_rigctl_msg_source_0</source_block_id>
|
<source_block_id>satnogs_tcp_rigctl_msg_source_0_0</source_block_id>
|
||||||
<sink_block_id>satnogs_coarse_doppler_correction_cc_0</sink_block_id>
|
<sink_block_id>satnogs_coarse_doppler_correction_cc_0</sink_block_id>
|
||||||
<source_key>freq</source_key>
|
<source_key>freq</source_key>
|
||||||
<sink_key>freq</sink_key>
|
<sink_key>freq</sink_key>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version='1.0' encoding='utf-8'?>
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
<?grc format='1' created='3.7.11'?>
|
<?grc format='1' created='3.7.13'?>
|
||||||
<flow_graph>
|
<flow_graph>
|
||||||
<timestamp>Thu May 5 00:22:45 2016</timestamp>
|
<timestamp>Thu May 5 00:22:45 2016</timestamp>
|
||||||
<block>
|
<block>
|
||||||
|
@ -72,6 +72,10 @@
|
||||||
<key>run</key>
|
<key>run</key>
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>sizing_mode</key>
|
||||||
|
<value>fixed</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>thread_safe_setters</key>
|
<key>thread_safe_setters</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
|
@ -80,6 +84,10 @@
|
||||||
<key>title</key>
|
<key>title</key>
|
||||||
<value>FM Generic Demodulation</value>
|
<value>FM Generic Demodulation</value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>placement</key>
|
||||||
|
<value>(0,0)</value>
|
||||||
|
</param>
|
||||||
</block>
|
</block>
|
||||||
<block>
|
<block>
|
||||||
<key>variable</key>
|
<key>variable</key>
|
||||||
|
@ -120,7 +128,7 @@
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(928, 1028)</value>
|
<value>(869, 985)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -174,7 +182,7 @@
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(1040, 1028)</value>
|
<value>(973, 993)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -202,7 +210,7 @@ TX sampling rate</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(1088, 860)</value>
|
<value>(1061, 857)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -368,6 +376,10 @@ TX sampling rate</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>string</value>
|
<value>string</value>
|
||||||
|
@ -411,6 +423,10 @@ TX sampling rate</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>eng_float</value>
|
<value>eng_float</value>
|
||||||
|
@ -513,6 +529,10 @@ TX sampling rate</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>string</value>
|
<value>string</value>
|
||||||
|
@ -556,6 +576,10 @@ TX sampling rate</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>string</value>
|
<value>string</value>
|
||||||
|
@ -599,6 +623,10 @@ TX sampling rate</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>intx</value>
|
<value>intx</value>
|
||||||
|
@ -642,6 +670,10 @@ TX sampling rate</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>intx</value>
|
<value>intx</value>
|
||||||
|
@ -685,6 +717,10 @@ TX sampling rate</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>string</value>
|
<value>string</value>
|
||||||
|
@ -787,6 +823,10 @@ TX sampling rate</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>eng_float</value>
|
<value>eng_float</value>
|
||||||
|
@ -830,6 +870,10 @@ TX sampling rate</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>string</value>
|
<value>string</value>
|
||||||
|
@ -874,6 +918,10 @@ we shift the LO a little further</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>eng_float</value>
|
<value>eng_float</value>
|
||||||
|
@ -2402,6 +2450,10 @@ max_modulation_freq = 3000</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>intx</value>
|
<value>intx</value>
|
||||||
|
@ -2445,6 +2497,10 @@ max_modulation_freq = 3000</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>eng_float</value>
|
<value>eng_float</value>
|
||||||
|
@ -2488,6 +2544,10 @@ max_modulation_freq = 3000</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>intx</value>
|
<value>intx</value>
|
||||||
|
@ -2531,6 +2591,10 @@ max_modulation_freq = 3000</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>eng_float</value>
|
<value>eng_float</value>
|
||||||
|
@ -2574,6 +2638,10 @@ max_modulation_freq = 3000</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>string</value>
|
<value>string</value>
|
||||||
|
@ -2740,7 +2808,7 @@ max_modulation_freq = 3000</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(16, 204)</value>
|
<value>(15, 243)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -2776,7 +2844,7 @@ max_modulation_freq = 3000</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>interval</key>
|
<key>interval</key>
|
||||||
<value>1000/doppler_correction_per_sec</value>
|
<value>int(1000.0/doppler_correction_per_sec) + 1</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
<block>
|
<block>
|
||||||
|
@ -2868,6 +2936,10 @@ max_modulation_freq = 3000</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>string</value>
|
<value>string</value>
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -116,6 +116,108 @@
|
||||||
<value>48000</value>
|
<value>48000</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
|
<block>
|
||||||
|
<key>variable_ax25_decoder</key>
|
||||||
|
<param>
|
||||||
|
<key>comment</key>
|
||||||
|
<value></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_enabled</key>
|
||||||
|
<value>True</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>descrambling</key>
|
||||||
|
<value>True</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_coordinate</key>
|
||||||
|
<value>(1212, 801)</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_rotation</key>
|
||||||
|
<value>0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>id</key>
|
||||||
|
<value>variable_ax25_decoder_0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>value</key>
|
||||||
|
<value>'ok'</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>frame_len</key>
|
||||||
|
<value>512</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>crc_check</key>
|
||||||
|
<value>True</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>promisc</key>
|
||||||
|
<value>True</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>addr</key>
|
||||||
|
<value>'GND'</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>ssid</key>
|
||||||
|
<value>0</value>
|
||||||
|
</param>
|
||||||
|
</block>
|
||||||
|
<block>
|
||||||
|
<key>variable_ax25_decoder</key>
|
||||||
|
<param>
|
||||||
|
<key>comment</key>
|
||||||
|
<value></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_enabled</key>
|
||||||
|
<value>True</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>descrambling</key>
|
||||||
|
<value>False</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_coordinate</key>
|
||||||
|
<value>(1372, 801)</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_rotation</key>
|
||||||
|
<value>0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>id</key>
|
||||||
|
<value>variable_ax25_decoder_0_0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>value</key>
|
||||||
|
<value>'ok'</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>frame_len</key>
|
||||||
|
<value>512</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>crc_check</key>
|
||||||
|
<value>True</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>promisc</key>
|
||||||
|
<value>True</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>addr</key>
|
||||||
|
<value>'GND'</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>ssid</key>
|
||||||
|
<value>0</value>
|
||||||
|
</param>
|
||||||
|
</block>
|
||||||
<block>
|
<block>
|
||||||
<key>analog_quadrature_demod_cf</key>
|
<key>analog_quadrature_demod_cf</key>
|
||||||
<param>
|
<param>
|
||||||
|
@ -861,7 +963,7 @@
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(1512, 592)</value>
|
<value>(1523, 606)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -900,7 +1002,7 @@
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(1768, 556)</value>
|
<value>(1771, 570)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -987,7 +1089,7 @@
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>value</key>
|
<key>value</key>
|
||||||
<value>1000</value>
|
<value>20</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
<block>
|
<block>
|
||||||
|
@ -3222,124 +3324,6 @@ we shift the LO a little further</value>
|
||||||
<value>satnogs.not_set_samp_rate_rx</value>
|
<value>satnogs.not_set_samp_rate_rx</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
<block>
|
|
||||||
<key>satnogs_ax25_decoder_bm</key>
|
|
||||||
<param>
|
|
||||||
<key>alias</key>
|
|
||||||
<value></value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>comment</key>
|
|
||||||
<value></value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>affinity</key>
|
|
||||||
<value></value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>_enabled</key>
|
|
||||||
<value>True</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>descrambling</key>
|
|
||||||
<value>True</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>_coordinate</key>
|
|
||||||
<value>(1240, 492)</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>_rotation</key>
|
|
||||||
<value>180</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>id</key>
|
|
||||||
<value>satnogs_ax25_decoder_bm_0</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>maxoutbuf</key>
|
|
||||||
<value>0</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>max_frame_len</key>
|
|
||||||
<value>1024</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>minoutbuf</key>
|
|
||||||
<value>0</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>promisc</key>
|
|
||||||
<value>True</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>addr</key>
|
|
||||||
<value>'GND'</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>ssid</key>
|
|
||||||
<value>0</value>
|
|
||||||
</param>
|
|
||||||
</block>
|
|
||||||
<block>
|
|
||||||
<key>satnogs_ax25_decoder_bm</key>
|
|
||||||
<param>
|
|
||||||
<key>alias</key>
|
|
||||||
<value></value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>comment</key>
|
|
||||||
<value></value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>affinity</key>
|
|
||||||
<value></value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>_enabled</key>
|
|
||||||
<value>True</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>descrambling</key>
|
|
||||||
<value>False</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>_coordinate</key>
|
|
||||||
<value>(1240, 612)</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>_rotation</key>
|
|
||||||
<value>180</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>id</key>
|
|
||||||
<value>satnogs_ax25_decoder_bm_0_0</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>maxoutbuf</key>
|
|
||||||
<value>0</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>max_frame_len</key>
|
|
||||||
<value>1024</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>minoutbuf</key>
|
|
||||||
<value>0</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>promisc</key>
|
|
||||||
<value>True</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>addr</key>
|
|
||||||
<value>'GND'</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>ssid</key>
|
|
||||||
<value>0</value>
|
|
||||||
</param>
|
|
||||||
</block>
|
|
||||||
<block>
|
<block>
|
||||||
<key>satnogs_coarse_doppler_correction_cc</key>
|
<key>satnogs_coarse_doppler_correction_cc</key>
|
||||||
<param>
|
<param>
|
||||||
|
@ -3387,6 +3371,100 @@ we shift the LO a little further</value>
|
||||||
<value>rx_freq</value>
|
<value>rx_freq</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
|
<block>
|
||||||
|
<key>satnogs_frame_decoder</key>
|
||||||
|
<param>
|
||||||
|
<key>alias</key>
|
||||||
|
<value></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>comment</key>
|
||||||
|
<value></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>affinity</key>
|
||||||
|
<value></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>decoder_object</key>
|
||||||
|
<value>variable_ax25_decoder_0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_enabled</key>
|
||||||
|
<value>True</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_coordinate</key>
|
||||||
|
<value>(1220, 638)</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_rotation</key>
|
||||||
|
<value>180</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>id</key>
|
||||||
|
<value>satnogs_frame_decoder_0_0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>itype</key>
|
||||||
|
<value>byte</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>maxoutbuf</key>
|
||||||
|
<value>0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>minoutbuf</key>
|
||||||
|
<value>0</value>
|
||||||
|
</param>
|
||||||
|
</block>
|
||||||
|
<block>
|
||||||
|
<key>satnogs_frame_decoder</key>
|
||||||
|
<param>
|
||||||
|
<key>alias</key>
|
||||||
|
<value></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>comment</key>
|
||||||
|
<value></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>affinity</key>
|
||||||
|
<value></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>decoder_object</key>
|
||||||
|
<value>variable_ax25_decoder_0_0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_enabled</key>
|
||||||
|
<value>1</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_coordinate</key>
|
||||||
|
<value>(1220, 566)</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_rotation</key>
|
||||||
|
<value>180</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>id</key>
|
||||||
|
<value>satnogs_frame_decoder_0_0_0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>itype</key>
|
||||||
|
<value>byte</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>maxoutbuf</key>
|
||||||
|
<value>0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>minoutbuf</key>
|
||||||
|
<value>0</value>
|
||||||
|
</param>
|
||||||
|
</block>
|
||||||
<block>
|
<block>
|
||||||
<key>satnogs_frame_file_sink</key>
|
<key>satnogs_frame_file_sink</key>
|
||||||
<param>
|
<param>
|
||||||
|
@ -3407,7 +3485,7 @@ we shift the LO a little further</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(936, 684)</value>
|
<value>(885, 730)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -3536,7 +3614,7 @@ we shift the LO a little further</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(216, 148)</value>
|
<value>(215, 147)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -3572,7 +3650,7 @@ we shift the LO a little further</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>interval</key>
|
<key>interval</key>
|
||||||
<value>1000</value>
|
<value>int(1000.0/doppler_correction_per_sec) + 1</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
<block>
|
<block>
|
||||||
|
@ -3595,7 +3673,7 @@ we shift the LO a little further</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(936, 596)</value>
|
<value>(885, 634)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -3876,13 +3954,13 @@ we shift the LO a little further</value>
|
||||||
</connection>
|
</connection>
|
||||||
<connection>
|
<connection>
|
||||||
<source_block_id>digital_binary_slicer_fb_0</source_block_id>
|
<source_block_id>digital_binary_slicer_fb_0</source_block_id>
|
||||||
<sink_block_id>satnogs_ax25_decoder_bm_0</sink_block_id>
|
<sink_block_id>satnogs_frame_decoder_0_0</sink_block_id>
|
||||||
<source_key>0</source_key>
|
<source_key>0</source_key>
|
||||||
<sink_key>0</sink_key>
|
<sink_key>0</sink_key>
|
||||||
</connection>
|
</connection>
|
||||||
<connection>
|
<connection>
|
||||||
<source_block_id>digital_binary_slicer_fb_0</source_block_id>
|
<source_block_id>digital_binary_slicer_fb_0</source_block_id>
|
||||||
<sink_block_id>satnogs_ax25_decoder_bm_0_0</sink_block_id>
|
<sink_block_id>satnogs_frame_decoder_0_0_0</sink_block_id>
|
||||||
<source_key>0</source_key>
|
<source_key>0</source_key>
|
||||||
<sink_key>0</sink_key>
|
<sink_key>0</sink_key>
|
||||||
</connection>
|
</connection>
|
||||||
|
@ -3946,36 +4024,36 @@ we shift the LO a little further</value>
|
||||||
<source_key>0</source_key>
|
<source_key>0</source_key>
|
||||||
<sink_key>0</sink_key>
|
<sink_key>0</sink_key>
|
||||||
</connection>
|
</connection>
|
||||||
<connection>
|
|
||||||
<source_block_id>satnogs_ax25_decoder_bm_0</source_block_id>
|
|
||||||
<sink_block_id>satnogs_frame_file_sink_0_1_0</sink_block_id>
|
|
||||||
<source_key>pdu</source_key>
|
|
||||||
<sink_key>frame</sink_key>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
|
||||||
<source_block_id>satnogs_ax25_decoder_bm_0</source_block_id>
|
|
||||||
<sink_block_id>satnogs_udp_msg_sink_0_0</sink_block_id>
|
|
||||||
<source_key>pdu</source_key>
|
|
||||||
<sink_key>in</sink_key>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
|
||||||
<source_block_id>satnogs_ax25_decoder_bm_0_0</source_block_id>
|
|
||||||
<sink_block_id>satnogs_frame_file_sink_0_1_0</sink_block_id>
|
|
||||||
<source_key>pdu</source_key>
|
|
||||||
<sink_key>frame</sink_key>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
|
||||||
<source_block_id>satnogs_ax25_decoder_bm_0_0</source_block_id>
|
|
||||||
<sink_block_id>satnogs_udp_msg_sink_0_0</sink_block_id>
|
|
||||||
<source_key>pdu</source_key>
|
|
||||||
<sink_key>in</sink_key>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
<connection>
|
||||||
<source_block_id>satnogs_coarse_doppler_correction_cc_0</source_block_id>
|
<source_block_id>satnogs_coarse_doppler_correction_cc_0</source_block_id>
|
||||||
<sink_block_id>pfb_arb_resampler_xxx_0</sink_block_id>
|
<sink_block_id>pfb_arb_resampler_xxx_0</sink_block_id>
|
||||||
<source_key>0</source_key>
|
<source_key>0</source_key>
|
||||||
<sink_key>0</sink_key>
|
<sink_key>0</sink_key>
|
||||||
</connection>
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<source_block_id>satnogs_frame_decoder_0_0</source_block_id>
|
||||||
|
<sink_block_id>satnogs_frame_file_sink_0_1_0</sink_block_id>
|
||||||
|
<source_key>out</source_key>
|
||||||
|
<sink_key>frame</sink_key>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<source_block_id>satnogs_frame_decoder_0_0</source_block_id>
|
||||||
|
<sink_block_id>satnogs_udp_msg_sink_0_0</sink_block_id>
|
||||||
|
<source_key>out</source_key>
|
||||||
|
<sink_key>in</sink_key>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<source_block_id>satnogs_frame_decoder_0_0_0</source_block_id>
|
||||||
|
<sink_block_id>satnogs_frame_file_sink_0_1_0</sink_block_id>
|
||||||
|
<source_key>out</source_key>
|
||||||
|
<sink_key>frame</sink_key>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<source_block_id>satnogs_frame_decoder_0_0_0</source_block_id>
|
||||||
|
<sink_block_id>satnogs_udp_msg_sink_0_0</sink_block_id>
|
||||||
|
<source_key>out</source_key>
|
||||||
|
<sink_key>in</sink_key>
|
||||||
|
</connection>
|
||||||
<connection>
|
<connection>
|
||||||
<source_block_id>satnogs_tcp_rigctl_msg_source_0</source_block_id>
|
<source_block_id>satnogs_tcp_rigctl_msg_source_0</source_block_id>
|
||||||
<sink_block_id>satnogs_coarse_doppler_correction_cc_0</sink_block_id>
|
<sink_block_id>satnogs_coarse_doppler_correction_cc_0</sink_block_id>
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -116,6 +116,108 @@
|
||||||
<value>48000</value>
|
<value>48000</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
|
<block>
|
||||||
|
<key>variable_ax25_decoder</key>
|
||||||
|
<param>
|
||||||
|
<key>comment</key>
|
||||||
|
<value></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_enabled</key>
|
||||||
|
<value>True</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>descrambling</key>
|
||||||
|
<value>True</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_coordinate</key>
|
||||||
|
<value>(1196, 777)</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_rotation</key>
|
||||||
|
<value>0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>id</key>
|
||||||
|
<value>variable_ax25_decoder_0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>value</key>
|
||||||
|
<value>'ok'</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>frame_len</key>
|
||||||
|
<value>512</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>crc_check</key>
|
||||||
|
<value>True</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>promisc</key>
|
||||||
|
<value>True</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>addr</key>
|
||||||
|
<value>'GND'</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>ssid</key>
|
||||||
|
<value>0</value>
|
||||||
|
</param>
|
||||||
|
</block>
|
||||||
|
<block>
|
||||||
|
<key>variable_ax25_decoder</key>
|
||||||
|
<param>
|
||||||
|
<key>comment</key>
|
||||||
|
<value></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_enabled</key>
|
||||||
|
<value>True</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>descrambling</key>
|
||||||
|
<value>False</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_coordinate</key>
|
||||||
|
<value>(1356, 777)</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_rotation</key>
|
||||||
|
<value>0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>id</key>
|
||||||
|
<value>variable_ax25_decoder_0_0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>value</key>
|
||||||
|
<value>'ok'</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>frame_len</key>
|
||||||
|
<value>512</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>crc_check</key>
|
||||||
|
<value>True</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>promisc</key>
|
||||||
|
<value>True</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>addr</key>
|
||||||
|
<value>'GND'</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>ssid</key>
|
||||||
|
<value>0</value>
|
||||||
|
</param>
|
||||||
|
</block>
|
||||||
<block>
|
<block>
|
||||||
<key>analog_quadrature_demod_cf</key>
|
<key>analog_quadrature_demod_cf</key>
|
||||||
<param>
|
<param>
|
||||||
|
@ -987,7 +1089,7 @@
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>value</key>
|
<key>value</key>
|
||||||
<value>1000</value>
|
<value>20</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
<block>
|
<block>
|
||||||
|
@ -1147,7 +1249,7 @@
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(8, 148)</value>
|
<value>(7, 179)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -3222,124 +3324,6 @@ we shift the LO a little further</value>
|
||||||
<value>satnogs.not_set_samp_rate_rx</value>
|
<value>satnogs.not_set_samp_rate_rx</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
<block>
|
|
||||||
<key>satnogs_ax25_decoder_bm</key>
|
|
||||||
<param>
|
|
||||||
<key>alias</key>
|
|
||||||
<value></value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>comment</key>
|
|
||||||
<value></value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>affinity</key>
|
|
||||||
<value></value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>_enabled</key>
|
|
||||||
<value>True</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>descrambling</key>
|
|
||||||
<value>True</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>_coordinate</key>
|
|
||||||
<value>(1240, 492)</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>_rotation</key>
|
|
||||||
<value>180</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>id</key>
|
|
||||||
<value>satnogs_ax25_decoder_bm_0</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>maxoutbuf</key>
|
|
||||||
<value>0</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>max_frame_len</key>
|
|
||||||
<value>1024</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>minoutbuf</key>
|
|
||||||
<value>0</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>promisc</key>
|
|
||||||
<value>True</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>addr</key>
|
|
||||||
<value>'GND'</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>ssid</key>
|
|
||||||
<value>0</value>
|
|
||||||
</param>
|
|
||||||
</block>
|
|
||||||
<block>
|
|
||||||
<key>satnogs_ax25_decoder_bm</key>
|
|
||||||
<param>
|
|
||||||
<key>alias</key>
|
|
||||||
<value></value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>comment</key>
|
|
||||||
<value></value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>affinity</key>
|
|
||||||
<value></value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>_enabled</key>
|
|
||||||
<value>True</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>descrambling</key>
|
|
||||||
<value>False</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>_coordinate</key>
|
|
||||||
<value>(1240, 612)</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>_rotation</key>
|
|
||||||
<value>180</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>id</key>
|
|
||||||
<value>satnogs_ax25_decoder_bm_0_0</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>maxoutbuf</key>
|
|
||||||
<value>0</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>max_frame_len</key>
|
|
||||||
<value>1024</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>minoutbuf</key>
|
|
||||||
<value>0</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>promisc</key>
|
|
||||||
<value>True</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>addr</key>
|
|
||||||
<value>'GND'</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>ssid</key>
|
|
||||||
<value>0</value>
|
|
||||||
</param>
|
|
||||||
</block>
|
|
||||||
<block>
|
<block>
|
||||||
<key>satnogs_coarse_doppler_correction_cc</key>
|
<key>satnogs_coarse_doppler_correction_cc</key>
|
||||||
<param>
|
<param>
|
||||||
|
@ -3387,6 +3371,100 @@ we shift the LO a little further</value>
|
||||||
<value>rx_freq</value>
|
<value>rx_freq</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
|
<block>
|
||||||
|
<key>satnogs_frame_decoder</key>
|
||||||
|
<param>
|
||||||
|
<key>alias</key>
|
||||||
|
<value></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>comment</key>
|
||||||
|
<value></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>affinity</key>
|
||||||
|
<value></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>decoder_object</key>
|
||||||
|
<value>variable_ax25_decoder_0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_enabled</key>
|
||||||
|
<value>True</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_coordinate</key>
|
||||||
|
<value>(1204, 606)</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_rotation</key>
|
||||||
|
<value>180</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>id</key>
|
||||||
|
<value>satnogs_frame_decoder_0_0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>itype</key>
|
||||||
|
<value>byte</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>maxoutbuf</key>
|
||||||
|
<value>0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>minoutbuf</key>
|
||||||
|
<value>0</value>
|
||||||
|
</param>
|
||||||
|
</block>
|
||||||
|
<block>
|
||||||
|
<key>satnogs_frame_decoder</key>
|
||||||
|
<param>
|
||||||
|
<key>alias</key>
|
||||||
|
<value></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>comment</key>
|
||||||
|
<value></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>affinity</key>
|
||||||
|
<value></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>decoder_object</key>
|
||||||
|
<value>variable_ax25_decoder_0_0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_enabled</key>
|
||||||
|
<value>1</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_coordinate</key>
|
||||||
|
<value>(1204, 534)</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_rotation</key>
|
||||||
|
<value>180</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>id</key>
|
||||||
|
<value>satnogs_frame_decoder_0_0_0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>itype</key>
|
||||||
|
<value>byte</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>maxoutbuf</key>
|
||||||
|
<value>0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>minoutbuf</key>
|
||||||
|
<value>0</value>
|
||||||
|
</param>
|
||||||
|
</block>
|
||||||
<block>
|
<block>
|
||||||
<key>satnogs_frame_file_sink</key>
|
<key>satnogs_frame_file_sink</key>
|
||||||
<param>
|
<param>
|
||||||
|
@ -3407,7 +3485,7 @@ we shift the LO a little further</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(936, 684)</value>
|
<value>(869, 706)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -3536,7 +3614,7 @@ we shift the LO a little further</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(216, 148)</value>
|
<value>(215, 147)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -3572,7 +3650,7 @@ we shift the LO a little further</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>interval</key>
|
<key>interval</key>
|
||||||
<value>1000</value>
|
<value>int(1000.0/doppler_correction_per_sec) + 1</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
<block>
|
<block>
|
||||||
|
@ -3595,7 +3673,7 @@ we shift the LO a little further</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(936, 596)</value>
|
<value>(869, 610)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -3876,13 +3954,13 @@ we shift the LO a little further</value>
|
||||||
</connection>
|
</connection>
|
||||||
<connection>
|
<connection>
|
||||||
<source_block_id>digital_binary_slicer_fb_0</source_block_id>
|
<source_block_id>digital_binary_slicer_fb_0</source_block_id>
|
||||||
<sink_block_id>satnogs_ax25_decoder_bm_0</sink_block_id>
|
<sink_block_id>satnogs_frame_decoder_0_0</sink_block_id>
|
||||||
<source_key>0</source_key>
|
<source_key>0</source_key>
|
||||||
<sink_key>0</sink_key>
|
<sink_key>0</sink_key>
|
||||||
</connection>
|
</connection>
|
||||||
<connection>
|
<connection>
|
||||||
<source_block_id>digital_binary_slicer_fb_0</source_block_id>
|
<source_block_id>digital_binary_slicer_fb_0</source_block_id>
|
||||||
<sink_block_id>satnogs_ax25_decoder_bm_0_0</sink_block_id>
|
<sink_block_id>satnogs_frame_decoder_0_0_0</sink_block_id>
|
||||||
<source_key>0</source_key>
|
<source_key>0</source_key>
|
||||||
<sink_key>0</sink_key>
|
<sink_key>0</sink_key>
|
||||||
</connection>
|
</connection>
|
||||||
|
@ -3946,36 +4024,36 @@ we shift the LO a little further</value>
|
||||||
<source_key>0</source_key>
|
<source_key>0</source_key>
|
||||||
<sink_key>0</sink_key>
|
<sink_key>0</sink_key>
|
||||||
</connection>
|
</connection>
|
||||||
<connection>
|
|
||||||
<source_block_id>satnogs_ax25_decoder_bm_0</source_block_id>
|
|
||||||
<sink_block_id>satnogs_frame_file_sink_0_1_0</sink_block_id>
|
|
||||||
<source_key>pdu</source_key>
|
|
||||||
<sink_key>frame</sink_key>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
|
||||||
<source_block_id>satnogs_ax25_decoder_bm_0</source_block_id>
|
|
||||||
<sink_block_id>satnogs_udp_msg_sink_0_0</sink_block_id>
|
|
||||||
<source_key>pdu</source_key>
|
|
||||||
<sink_key>in</sink_key>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
|
||||||
<source_block_id>satnogs_ax25_decoder_bm_0_0</source_block_id>
|
|
||||||
<sink_block_id>satnogs_frame_file_sink_0_1_0</sink_block_id>
|
|
||||||
<source_key>pdu</source_key>
|
|
||||||
<sink_key>frame</sink_key>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
|
||||||
<source_block_id>satnogs_ax25_decoder_bm_0_0</source_block_id>
|
|
||||||
<sink_block_id>satnogs_udp_msg_sink_0_0</sink_block_id>
|
|
||||||
<source_key>pdu</source_key>
|
|
||||||
<sink_key>in</sink_key>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
<connection>
|
||||||
<source_block_id>satnogs_coarse_doppler_correction_cc_0</source_block_id>
|
<source_block_id>satnogs_coarse_doppler_correction_cc_0</source_block_id>
|
||||||
<sink_block_id>pfb_arb_resampler_xxx_0</sink_block_id>
|
<sink_block_id>pfb_arb_resampler_xxx_0</sink_block_id>
|
||||||
<source_key>0</source_key>
|
<source_key>0</source_key>
|
||||||
<sink_key>0</sink_key>
|
<sink_key>0</sink_key>
|
||||||
</connection>
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<source_block_id>satnogs_frame_decoder_0_0</source_block_id>
|
||||||
|
<sink_block_id>satnogs_frame_file_sink_0_1_0</sink_block_id>
|
||||||
|
<source_key>out</source_key>
|
||||||
|
<sink_key>frame</sink_key>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<source_block_id>satnogs_frame_decoder_0_0</source_block_id>
|
||||||
|
<sink_block_id>satnogs_udp_msg_sink_0_0</sink_block_id>
|
||||||
|
<source_key>out</source_key>
|
||||||
|
<sink_key>in</sink_key>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<source_block_id>satnogs_frame_decoder_0_0_0</source_block_id>
|
||||||
|
<sink_block_id>satnogs_frame_file_sink_0_1_0</sink_block_id>
|
||||||
|
<source_key>out</source_key>
|
||||||
|
<sink_key>frame</sink_key>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<source_block_id>satnogs_frame_decoder_0_0_0</source_block_id>
|
||||||
|
<sink_block_id>satnogs_udp_msg_sink_0_0</sink_block_id>
|
||||||
|
<source_key>out</source_key>
|
||||||
|
<sink_key>in</sink_key>
|
||||||
|
</connection>
|
||||||
<connection>
|
<connection>
|
||||||
<source_block_id>satnogs_tcp_rigctl_msg_source_0</source_block_id>
|
<source_block_id>satnogs_tcp_rigctl_msg_source_0</source_block_id>
|
||||||
<sink_block_id>satnogs_coarse_doppler_correction_cc_0</sink_block_id>
|
<sink_block_id>satnogs_coarse_doppler_correction_cc_0</sink_block_id>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version='1.0' encoding='utf-8'?>
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
<?grc format='1' created='3.7.11'?>
|
<?grc format='1' created='3.7.13'?>
|
||||||
<flow_graph>
|
<flow_graph>
|
||||||
<timestamp>Thu May 5 00:22:45 2016</timestamp>
|
<timestamp>Thu May 5 00:22:45 2016</timestamp>
|
||||||
<block>
|
<block>
|
||||||
|
@ -72,6 +72,10 @@
|
||||||
<key>run</key>
|
<key>run</key>
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>sizing_mode</key>
|
||||||
|
<value>fixed</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>thread_safe_setters</key>
|
<key>thread_safe_setters</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
|
@ -80,6 +84,10 @@
|
||||||
<key>title</key>
|
<key>title</key>
|
||||||
<value>AMSAT FOX DUV Decoder</value>
|
<value>AMSAT FOX DUV Decoder</value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>placement</key>
|
||||||
|
<value>(0,0)</value>
|
||||||
|
</param>
|
||||||
</block>
|
</block>
|
||||||
<block>
|
<block>
|
||||||
<key>variable</key>
|
<key>variable</key>
|
||||||
|
@ -162,6 +170,41 @@
|
||||||
<value>3000</value>
|
<value>3000</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
|
<block>
|
||||||
|
<key>variable_amsat_duv_decoder</key>
|
||||||
|
<param>
|
||||||
|
<key>comment</key>
|
||||||
|
<value></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>control_symbol</key>
|
||||||
|
<value>0011111010</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_enabled</key>
|
||||||
|
<value>True</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_coordinate</key>
|
||||||
|
<value>(1212, 730)</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_rotation</key>
|
||||||
|
<value>0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>id</key>
|
||||||
|
<value>variable_amsat_duv_decoder_0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>value</key>
|
||||||
|
<value>'ok'</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>frame_len</key>
|
||||||
|
<value>96</value>
|
||||||
|
</param>
|
||||||
|
</block>
|
||||||
<block>
|
<block>
|
||||||
<key>analog_quadrature_demod_cf</key>
|
<key>analog_quadrature_demod_cf</key>
|
||||||
<param>
|
<param>
|
||||||
|
@ -282,6 +325,10 @@
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>string</value>
|
<value>string</value>
|
||||||
|
@ -325,6 +372,10 @@
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>eng_float</value>
|
<value>eng_float</value>
|
||||||
|
@ -368,6 +419,10 @@
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>eng_float</value>
|
<value>eng_float</value>
|
||||||
|
@ -505,6 +560,10 @@
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>string</value>
|
<value>string</value>
|
||||||
|
@ -548,6 +607,10 @@
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>string</value>
|
<value>string</value>
|
||||||
|
@ -577,11 +640,11 @@
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(1360, 640)</value>
|
<value>(1244, 494)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
<value>180</value>
|
<value>0</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>id</key>
|
<key>id</key>
|
||||||
|
@ -693,6 +756,10 @@
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>intx</value>
|
<value>intx</value>
|
||||||
|
@ -736,6 +803,10 @@
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>intx</value>
|
<value>intx</value>
|
||||||
|
@ -779,6 +850,10 @@
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>string</value>
|
<value>string</value>
|
||||||
|
@ -822,6 +897,10 @@
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>eng_float</value>
|
<value>eng_float</value>
|
||||||
|
@ -865,6 +944,10 @@
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>string</value>
|
<value>string</value>
|
||||||
|
@ -909,6 +992,10 @@ we shift the LO a little further</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>eng_float</value>
|
<value>eng_float</value>
|
||||||
|
@ -2498,7 +2585,7 @@ max_modulation_freq = 3000</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(528, 164)</value>
|
<value>(526, 179)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -2575,6 +2662,10 @@ max_modulation_freq = 3000</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>intx</value>
|
<value>intx</value>
|
||||||
|
@ -2618,6 +2709,10 @@ max_modulation_freq = 3000</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>eng_float</value>
|
<value>eng_float</value>
|
||||||
|
@ -2661,6 +2756,10 @@ max_modulation_freq = 3000</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>intx</value>
|
<value>intx</value>
|
||||||
|
@ -2775,6 +2874,10 @@ max_modulation_freq = 3000</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>eng_float</value>
|
<value>eng_float</value>
|
||||||
|
@ -2818,6 +2921,10 @@ max_modulation_freq = 3000</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>string</value>
|
<value>string</value>
|
||||||
|
@ -2861,6 +2968,10 @@ max_modulation_freq = 3000</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>eng_float</value>
|
<value>eng_float</value>
|
||||||
|
@ -2870,45 +2981,6 @@ max_modulation_freq = 3000</value>
|
||||||
<value>satnogs.not_set_samp_rate_rx</value>
|
<value>satnogs.not_set_samp_rate_rx</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
<block>
|
|
||||||
<key>satnogs_ccsds_rs_decoder_mm</key>
|
|
||||||
<param>
|
|
||||||
<key>alias</key>
|
|
||||||
<value></value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>comment</key>
|
|
||||||
<value></value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>affinity</key>
|
|
||||||
<value></value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>_enabled</key>
|
|
||||||
<value>True</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>_coordinate</key>
|
|
||||||
<value>(888, 640)</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>_rotation</key>
|
|
||||||
<value>180</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>id</key>
|
|
||||||
<value>satnogs_ccsds_rs_decoder_mm_0</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>maxoutbuf</key>
|
|
||||||
<value>0</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>minoutbuf</key>
|
|
||||||
<value>0</value>
|
|
||||||
</param>
|
|
||||||
</block>
|
|
||||||
<block>
|
<block>
|
||||||
<key>satnogs_coarse_doppler_correction_cc</key>
|
<key>satnogs_coarse_doppler_correction_cc</key>
|
||||||
<param>
|
<param>
|
||||||
|
@ -2929,7 +3001,7 @@ max_modulation_freq = 3000</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(296, 184)</value>
|
<value>(295, 191)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -2957,54 +3029,7 @@ max_modulation_freq = 3000</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
<block>
|
<block>
|
||||||
<key>satnogs_decoder_8b10b</key>
|
<key>satnogs_frame_decoder</key>
|
||||||
<param>
|
|
||||||
<key>alias</key>
|
|
||||||
<value></value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>comment</key>
|
|
||||||
<value></value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>control_symbol</key>
|
|
||||||
<value>0011111010</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>affinity</key>
|
|
||||||
<value></value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>_enabled</key>
|
|
||||||
<value>True</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>_coordinate</key>
|
|
||||||
<value>(1136, 628)</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>_rotation</key>
|
|
||||||
<value>180</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>id</key>
|
|
||||||
<value>satnogs_decoder_8b10b_0</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>maxoutbuf</key>
|
|
||||||
<value>0</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>max_frame_len</key>
|
|
||||||
<value>960</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>minoutbuf</key>
|
|
||||||
<value>0</value>
|
|
||||||
</param>
|
|
||||||
</block>
|
|
||||||
<block>
|
|
||||||
<key>satnogs_fox_telem_mm</key>
|
|
||||||
<param>
|
<param>
|
||||||
<key>alias</key>
|
<key>alias</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
|
@ -3017,13 +3042,17 @@ max_modulation_freq = 3000</value>
|
||||||
<key>affinity</key>
|
<key>affinity</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>decoder_object</key>
|
||||||
|
<value>variable_amsat_duv_decoder_0</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_enabled</key>
|
<key>_enabled</key>
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(544, 640)</value>
|
<value>(1212, 662)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -3031,7 +3060,11 @@ max_modulation_freq = 3000</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>id</key>
|
<key>id</key>
|
||||||
<value>satnogs_fox_telem_mm_0</value>
|
<value>satnogs_frame_decoder_0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>itype</key>
|
||||||
|
<value>byte</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>maxoutbuf</key>
|
<key>maxoutbuf</key>
|
||||||
|
@ -3062,7 +3095,7 @@ max_modulation_freq = 3000</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(280, 628)</value>
|
<value>(718, 618)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -3171,53 +3204,6 @@ max_modulation_freq = 3000</value>
|
||||||
<value>audio_samp_rate</value>
|
<value>audio_samp_rate</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
<block>
|
|
||||||
<key>satnogs_quad_demod_filter_ff</key>
|
|
||||||
<param>
|
|
||||||
<key>alias</key>
|
|
||||||
<value></value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>comment</key>
|
|
||||||
<value></value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>affinity</key>
|
|
||||||
<value></value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>_enabled</key>
|
|
||||||
<value>True</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>_coordinate</key>
|
|
||||||
<value>(1200, 484)</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>_rotation</key>
|
|
||||||
<value>0</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>gain</key>
|
|
||||||
<value>1.2</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>id</key>
|
|
||||||
<value>satnogs_quad_demod_filter_ff_0</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>maxoutbuf</key>
|
|
||||||
<value>0</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>minoutbuf</key>
|
|
||||||
<value>0</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>win</key>
|
|
||||||
<value>80</value>
|
|
||||||
</param>
|
|
||||||
</block>
|
|
||||||
<block>
|
<block>
|
||||||
<key>satnogs_tcp_rigctl_msg_source</key>
|
<key>satnogs_tcp_rigctl_msg_source</key>
|
||||||
<param>
|
<param>
|
||||||
|
@ -3238,7 +3224,7 @@ max_modulation_freq = 3000</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(16, 140)</value>
|
<value>(15, 163)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -3274,7 +3260,7 @@ max_modulation_freq = 3000</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>interval</key>
|
<key>interval</key>
|
||||||
<value>1000</value>
|
<value>int(1000.0/doppler_correction_per_sec) + 1</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
<block>
|
<block>
|
||||||
|
@ -3297,7 +3283,7 @@ max_modulation_freq = 3000</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(280, 692)</value>
|
<value>(718, 682)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -3409,6 +3395,10 @@ max_modulation_freq = 3000</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>string</value>
|
<value>string</value>
|
||||||
|
@ -3452,6 +3442,10 @@ max_modulation_freq = 3000</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>intx</value>
|
<value>intx</value>
|
||||||
|
@ -3495,6 +3489,10 @@ max_modulation_freq = 3000</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>string</value>
|
<value>string</value>
|
||||||
|
@ -3530,13 +3528,13 @@ max_modulation_freq = 3000</value>
|
||||||
</connection>
|
</connection>
|
||||||
<connection>
|
<connection>
|
||||||
<source_block_id>digital_binary_slicer_fb_0_0</source_block_id>
|
<source_block_id>digital_binary_slicer_fb_0_0</source_block_id>
|
||||||
<sink_block_id>satnogs_decoder_8b10b_0</sink_block_id>
|
<sink_block_id>satnogs_frame_decoder_0</sink_block_id>
|
||||||
<source_key>0</source_key>
|
<source_key>0</source_key>
|
||||||
<sink_key>0</sink_key>
|
<sink_key>0</sink_key>
|
||||||
</connection>
|
</connection>
|
||||||
<connection>
|
<connection>
|
||||||
<source_block_id>digital_clock_recovery_mm_xx_0_0_0</source_block_id>
|
<source_block_id>digital_clock_recovery_mm_xx_0_0_0</source_block_id>
|
||||||
<sink_block_id>satnogs_quad_demod_filter_ff_0</sink_block_id>
|
<sink_block_id>digital_binary_slicer_fb_0_0</sink_block_id>
|
||||||
<source_key>0</source_key>
|
<source_key>0</source_key>
|
||||||
<sink_key>0</sink_key>
|
<sink_key>0</sink_key>
|
||||||
</connection>
|
</connection>
|
||||||
|
@ -3588,12 +3586,6 @@ max_modulation_freq = 3000</value>
|
||||||
<source_key>0</source_key>
|
<source_key>0</source_key>
|
||||||
<sink_key>0</sink_key>
|
<sink_key>0</sink_key>
|
||||||
</connection>
|
</connection>
|
||||||
<connection>
|
|
||||||
<source_block_id>satnogs_ccsds_rs_decoder_mm_0</source_block_id>
|
|
||||||
<sink_block_id>satnogs_fox_telem_mm_0</sink_block_id>
|
|
||||||
<source_key>pdu</source_key>
|
|
||||||
<sink_key>in</sink_key>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
<connection>
|
||||||
<source_block_id>satnogs_coarse_doppler_correction_cc_0</source_block_id>
|
<source_block_id>satnogs_coarse_doppler_correction_cc_0</source_block_id>
|
||||||
<sink_block_id>pfb_arb_resampler_xxx_0</sink_block_id>
|
<sink_block_id>pfb_arb_resampler_xxx_0</sink_block_id>
|
||||||
|
@ -3601,29 +3593,17 @@ max_modulation_freq = 3000</value>
|
||||||
<sink_key>0</sink_key>
|
<sink_key>0</sink_key>
|
||||||
</connection>
|
</connection>
|
||||||
<connection>
|
<connection>
|
||||||
<source_block_id>satnogs_decoder_8b10b_0</source_block_id>
|
<source_block_id>satnogs_frame_decoder_0</source_block_id>
|
||||||
<sink_block_id>satnogs_ccsds_rs_decoder_mm_0</sink_block_id>
|
|
||||||
<source_key>pdu</source_key>
|
|
||||||
<sink_key>in</sink_key>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
|
||||||
<source_block_id>satnogs_fox_telem_mm_0</source_block_id>
|
|
||||||
<sink_block_id>satnogs_frame_file_sink_0_1_0</sink_block_id>
|
<sink_block_id>satnogs_frame_file_sink_0_1_0</sink_block_id>
|
||||||
<source_key>raw</source_key>
|
<source_key>out</source_key>
|
||||||
<sink_key>frame</sink_key>
|
<sink_key>frame</sink_key>
|
||||||
</connection>
|
</connection>
|
||||||
<connection>
|
<connection>
|
||||||
<source_block_id>satnogs_fox_telem_mm_0</source_block_id>
|
<source_block_id>satnogs_frame_decoder_0</source_block_id>
|
||||||
<sink_block_id>satnogs_udp_msg_sink_0_0</sink_block_id>
|
<sink_block_id>satnogs_udp_msg_sink_0_0</sink_block_id>
|
||||||
<source_key>raw</source_key>
|
<source_key>out</source_key>
|
||||||
<sink_key>in</sink_key>
|
<sink_key>in</sink_key>
|
||||||
</connection>
|
</connection>
|
||||||
<connection>
|
|
||||||
<source_block_id>satnogs_quad_demod_filter_ff_0</source_block_id>
|
|
||||||
<sink_block_id>digital_binary_slicer_fb_0_0</sink_block_id>
|
|
||||||
<source_key>0</source_key>
|
|
||||||
<sink_key>0</sink_key>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
<connection>
|
||||||
<source_block_id>satnogs_tcp_rigctl_msg_source_0</source_block_id>
|
<source_block_id>satnogs_tcp_rigctl_msg_source_0</source_block_id>
|
||||||
<sink_block_id>satnogs_coarse_doppler_correction_cc_0</sink_block_id>
|
<sink_block_id>satnogs_coarse_doppler_correction_cc_0</sink_block_id>
|
||||||
|
|
|
@ -720,7 +720,7 @@
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>value</key>
|
<key>value</key>
|
||||||
<value>1000</value>
|
<value>20</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
<block>
|
<block>
|
||||||
|
@ -3008,7 +3008,7 @@ we shift the LO a little further</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(216, 148)</value>
|
<value>(215, 147)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -3044,7 +3044,7 @@ we shift the LO a little further</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>interval</key>
|
<key>interval</key>
|
||||||
<value>1000</value>
|
<value>int(1000.0/doppler_correction_per_sec) + 1</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
<block>
|
<block>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version='1.0' encoding='utf-8'?>
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
<?grc format='1' created='3.7.11'?>
|
<?grc format='1' created='3.7.13'?>
|
||||||
<flow_graph>
|
<flow_graph>
|
||||||
<timestamp>Mon Apr 10 23:26:02 2017</timestamp>
|
<timestamp>Mon Apr 10 23:26:02 2017</timestamp>
|
||||||
<block>
|
<block>
|
||||||
|
@ -72,6 +72,10 @@
|
||||||
<key>run</key>
|
<key>run</key>
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>sizing_mode</key>
|
||||||
|
<value>fixed</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>thread_safe_setters</key>
|
<key>thread_safe_setters</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
|
@ -80,6 +84,10 @@
|
||||||
<key>title</key>
|
<key>title</key>
|
||||||
<value>NOAA APT Decoder</value>
|
<value>NOAA APT Decoder</value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>placement</key>
|
||||||
|
<value>(0,0)</value>
|
||||||
|
</param>
|
||||||
</block>
|
</block>
|
||||||
<block>
|
<block>
|
||||||
<key>variable</key>
|
<key>variable</key>
|
||||||
|
@ -370,6 +378,10 @@ TX sampling rate</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>string</value>
|
<value>string</value>
|
||||||
|
@ -492,6 +504,10 @@ TX sampling rate</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>eng_float</value>
|
<value>eng_float</value>
|
||||||
|
@ -578,6 +594,10 @@ TX sampling rate</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>string</value>
|
<value>string</value>
|
||||||
|
@ -621,6 +641,10 @@ TX sampling rate</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>string</value>
|
<value>string</value>
|
||||||
|
@ -664,6 +688,10 @@ TX sampling rate</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>intx</value>
|
<value>intx</value>
|
||||||
|
@ -707,6 +735,10 @@ TX sampling rate</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>intx</value>
|
<value>intx</value>
|
||||||
|
@ -809,6 +841,10 @@ TX sampling rate</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>string</value>
|
<value>string</value>
|
||||||
|
@ -907,6 +943,10 @@ TX sampling rate</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>intx</value>
|
<value>intx</value>
|
||||||
|
@ -1060,6 +1100,10 @@ TX sampling rate</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>eng_float</value>
|
<value>eng_float</value>
|
||||||
|
@ -1103,6 +1147,10 @@ TX sampling rate</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>string</value>
|
<value>string</value>
|
||||||
|
@ -1147,6 +1195,10 @@ we shift the LO a little further</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>eng_float</value>
|
<value>eng_float</value>
|
||||||
|
@ -2597,6 +2649,10 @@ we shift the LO a little further</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>intx</value>
|
<value>intx</value>
|
||||||
|
@ -2935,6 +2991,10 @@ we shift the LO a little further</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>eng_float</value>
|
<value>eng_float</value>
|
||||||
|
@ -2978,6 +3038,10 @@ we shift the LO a little further</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>intx</value>
|
<value>intx</value>
|
||||||
|
@ -3021,6 +3085,10 @@ we shift the LO a little further</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>eng_float</value>
|
<value>eng_float</value>
|
||||||
|
@ -3064,6 +3132,10 @@ we shift the LO a little further</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>string</value>
|
<value>string</value>
|
||||||
|
@ -3281,7 +3353,7 @@ we shift the LO a little further</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(8, 132)</value>
|
<value>(7, 131)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -3317,7 +3389,7 @@ we shift the LO a little further</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>interval</key>
|
<key>interval</key>
|
||||||
<value>1000/doppler_correction_per_sec</value>
|
<value>int(1000.0/doppler_correction_per_sec) + 1</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
<block>
|
<block>
|
||||||
|
@ -3409,6 +3481,10 @@ we shift the LO a little further</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>intx</value>
|
<value>intx</value>
|
||||||
|
@ -3452,6 +3528,10 @@ we shift the LO a little further</value>
|
||||||
<key>short_id</key>
|
<key>short_id</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>hide</key>
|
||||||
|
<value>none</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<value>string</value>
|
<value>string</value>
|
||||||
|
|
|
@ -116,6 +116,65 @@
|
||||||
<value>48000</value>
|
<value>48000</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
|
<block>
|
||||||
|
<key>variable_ieee802_15_4_variant_decoder</key>
|
||||||
|
<param>
|
||||||
|
<key>crc</key>
|
||||||
|
<value>satnogs.crc.CRC16_IBM</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>comment</key>
|
||||||
|
<value></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_enabled</key>
|
||||||
|
<value>True</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>preamble</key>
|
||||||
|
<value>[0x55, 0x55, 0x55, 0x55, 0x55]</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_coordinate</key>
|
||||||
|
<value>(1380, 618)</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_rotation</key>
|
||||||
|
<value>0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>id</key>
|
||||||
|
<value>variable_ieee802_15_4_variant_decoder_0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>value</key>
|
||||||
|
<value>'ok'</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>frame_len</key>
|
||||||
|
<value>256</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>preamble_thrsh</key>
|
||||||
|
<value>2</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>sync_thrsh</key>
|
||||||
|
<value>1</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>sync_word</key>
|
||||||
|
<value>[0x35, 0x2E, 0x35, 0x2E]</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>var_len</key>
|
||||||
|
<value>True</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>whitening</key>
|
||||||
|
<value>variable_whitening_0</value>
|
||||||
|
</param>
|
||||||
|
</block>
|
||||||
<block>
|
<block>
|
||||||
<key>variable_whitening</key>
|
<key>variable_whitening</key>
|
||||||
<param>
|
<param>
|
||||||
|
@ -155,6 +214,45 @@
|
||||||
<value>0x1FF</value>
|
<value>0x1FF</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
|
<block>
|
||||||
|
<key>variable_whitening</key>
|
||||||
|
<param>
|
||||||
|
<key>comment</key>
|
||||||
|
<value></value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_enabled</key>
|
||||||
|
<value>True</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_coordinate</key>
|
||||||
|
<value>(1220, 618)</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>_rotation</key>
|
||||||
|
<value>0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>id</key>
|
||||||
|
<value>variable_whitening_0_0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>value</key>
|
||||||
|
<value>'ok'</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>mask</key>
|
||||||
|
<value>0x21</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>order</key>
|
||||||
|
<value>8</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>seed</key>
|
||||||
|
<value>0x1FF</value>
|
||||||
|
</param>
|
||||||
|
</block>
|
||||||
<block>
|
<block>
|
||||||
<key>analog_quadrature_demod_cf</key>
|
<key>analog_quadrature_demod_cf</key>
|
||||||
<param>
|
<param>
|
||||||
|
@ -939,7 +1037,7 @@
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(1672, 532)</value>
|
<value>(1675, 530)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -1026,7 +1124,7 @@
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>value</key>
|
<key>value</key>
|
||||||
<value>1000</value>
|
<value>20</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
<block>
|
<block>
|
||||||
|
@ -3309,15 +3407,11 @@ we shift the LO a little further</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
<block>
|
<block>
|
||||||
<key>satnogs_frame_acquisition</key>
|
<key>satnogs_frame_decoder</key>
|
||||||
<param>
|
<param>
|
||||||
<key>alias</key>
|
<key>alias</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
|
||||||
<key>crc</key>
|
|
||||||
<value>3</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
<param>
|
||||||
<key>comment</key>
|
<key>comment</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
|
@ -3326,25 +3420,17 @@ we shift the LO a little further</value>
|
||||||
<key>affinity</key>
|
<key>affinity</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>decoder_object</key>
|
||||||
|
<value>variable_ieee802_15_4_variant_decoder_0</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_enabled</key>
|
<key>_enabled</key>
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
|
||||||
<key>frame_len</key>
|
|
||||||
<value>256</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>preamble</key>
|
|
||||||
<value>[0xAA, 0xAA, 0xAA, 0xAA]</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>frame_size_field_len</key>
|
|
||||||
<value>1</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(1228, 490)</value>
|
<value>(1228, 534)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -3352,40 +3438,20 @@ we shift the LO a little further</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>id</key>
|
<key>id</key>
|
||||||
<value>satnogs_frame_acquisition_0</value>
|
<value>satnogs_frame_decoder_0_0</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>itype</key>
|
||||||
|
<value>byte</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>maxoutbuf</key>
|
<key>maxoutbuf</key>
|
||||||
<value>0</value>
|
<value>0</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
|
||||||
<key>max_frame_len</key>
|
|
||||||
<value>2048</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
<param>
|
||||||
<key>minoutbuf</key>
|
<key>minoutbuf</key>
|
||||||
<value>0</value>
|
<value>0</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
|
||||||
<key>preamble_thrsh</key>
|
|
||||||
<value>4</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>sync_thrsh</key>
|
|
||||||
<value>3</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>sync_word</key>
|
|
||||||
<value>[0x35, 0x2E, 0x35, 0x2E]</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>variant</key>
|
|
||||||
<value>1</value>
|
|
||||||
</param>
|
|
||||||
<param>
|
|
||||||
<key>whitening</key>
|
|
||||||
<value>variable_whitening_0</value>
|
|
||||||
</param>
|
|
||||||
</block>
|
</block>
|
||||||
<block>
|
<block>
|
||||||
<key>satnogs_frame_file_sink</key>
|
<key>satnogs_frame_file_sink</key>
|
||||||
|
@ -3407,7 +3473,7 @@ we shift the LO a little further</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(936, 684)</value>
|
<value>(933, 586)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -3536,7 +3602,7 @@ we shift the LO a little further</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(112, 148)</value>
|
<value>(111, 163)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -3572,7 +3638,7 @@ we shift the LO a little further</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>interval</key>
|
<key>interval</key>
|
||||||
<value>1000</value>
|
<value>int(1000.0/doppler_correction_per_sec) + 1</value>
|
||||||
</param>
|
</param>
|
||||||
</block>
|
</block>
|
||||||
<block>
|
<block>
|
||||||
|
@ -3595,7 +3661,7 @@ we shift the LO a little further</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_coordinate</key>
|
<key>_coordinate</key>
|
||||||
<value>(936, 596)</value>
|
<value>(933, 506)</value>
|
||||||
</param>
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>_rotation</key>
|
<key>_rotation</key>
|
||||||
|
@ -3876,7 +3942,7 @@ we shift the LO a little further</value>
|
||||||
</connection>
|
</connection>
|
||||||
<connection>
|
<connection>
|
||||||
<source_block_id>digital_binary_slicer_fb_0</source_block_id>
|
<source_block_id>digital_binary_slicer_fb_0</source_block_id>
|
||||||
<sink_block_id>satnogs_frame_acquisition_0</sink_block_id>
|
<sink_block_id>satnogs_frame_decoder_0_0</sink_block_id>
|
||||||
<source_key>0</source_key>
|
<source_key>0</source_key>
|
||||||
<sink_key>0</sink_key>
|
<sink_key>0</sink_key>
|
||||||
</connection>
|
</connection>
|
||||||
|
@ -3947,13 +4013,13 @@ we shift the LO a little further</value>
|
||||||
<sink_key>0</sink_key>
|
<sink_key>0</sink_key>
|
||||||
</connection>
|
</connection>
|
||||||
<connection>
|
<connection>
|
||||||
<source_block_id>satnogs_frame_acquisition_0</source_block_id>
|
<source_block_id>satnogs_frame_decoder_0_0</source_block_id>
|
||||||
<sink_block_id>satnogs_frame_file_sink_0_1_0</sink_block_id>
|
<sink_block_id>satnogs_frame_file_sink_0_1_0</sink_block_id>
|
||||||
<source_key>out</source_key>
|
<source_key>out</source_key>
|
||||||
<sink_key>frame</sink_key>
|
<sink_key>frame</sink_key>
|
||||||
</connection>
|
</connection>
|
||||||
<connection>
|
<connection>
|
||||||
<source_block_id>satnogs_frame_acquisition_0</source_block_id>
|
<source_block_id>satnogs_frame_decoder_0_0</source_block_id>
|
||||||
<sink_block_id>satnogs_udp_msg_sink_0_0</sink_block_id>
|
<sink_block_id>satnogs_udp_msg_sink_0_0</sink_block_id>
|
||||||
<source_key>out</source_key>
|
<source_key>out</source_key>
|
||||||
<sink_key>in</sink_key>
|
<sink_key>in</sink_key>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
# Title: AMSAT FOX DUV Decoder
|
# Title: AMSAT FOX DUV Decoder
|
||||||
# Author: Thanos Giolias (agiolias@csd.uoc.gr), Nikos Karamolegos (karamolegkos.n@gmail.com), Manolis Surligas (surligas@gmail.com)
|
# 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
|
# 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
|
# 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.max_modulation_freq = max_modulation_freq = 3000
|
||||||
self.deviation = deviation = 5000
|
self.deviation = deviation = 5000
|
||||||
self.audio_samp_rate = audio_samp_rate = 48000
|
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_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_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_quad_demod_filter_ff_0 = satnogs.quad_demod_filter_ff(1.2)
|
|
||||||
self.satnogs_ogg_encoder_0 = satnogs.ogg_encoder(file_path, audio_samp_rate, 1.0)
|
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_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_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_frame_decoder_0 = satnogs.frame_decoder(variable_amsat_duv_decoder_0, gr.sizeof_char)
|
||||||
self.satnogs_decoder_8b10b_0 = satnogs.decoder_8b10b('0011111010', 960)
|
|
||||||
|
|
||||||
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_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(
|
self.root_raised_cosine_filter_0 = filter.fir_filter_fff(1, firdes.root_raised_cosine(
|
||||||
1, 1, 2.4, 0.5, 512))
|
1, 1, 2.4, 0.5, 512))
|
||||||
self.pfb_arb_resampler_xxx_0 = pfb.arb_resampler_ccf(
|
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_0 = analog.quadrature_demod_cf(1.2)
|
||||||
self.analog_quadrature_demod_cf_0 = analog.quadrature_demod_cf(1.0)
|
self.analog_quadrature_demod_cf_0 = analog.quadrature_demod_cf(1.0)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
##################################################
|
##################################################
|
||||||
# Connections
|
# Connections
|
||||||
##################################################
|
##################################################
|
||||||
self.msg_connect((self.satnogs_ccsds_rs_decoder_mm_0, 'pdu'), (self.satnogs_fox_telem_mm_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_decoder_8b10b_0, 'pdu'), (self.satnogs_ccsds_rs_decoder_mm_0, 'in'))
|
self.msg_connect((self.satnogs_frame_decoder_0, 'out'), (self.satnogs_udp_msg_sink_0_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_tcp_rigctl_msg_source_0, 'freq'), (self.satnogs_coarse_doppler_correction_cc_0, 'freq'))
|
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), (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.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.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.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_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.satnogs_quad_demod_filter_ff_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))
|
||||||
self.connect((self.low_pass_filter_0, 0), (self.analog_quadrature_demod_cf_0_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))
|
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.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.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_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):
|
def get_antenna(self):
|
||||||
return self.antenna
|
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):
|
def set_waterfall_file_path(self, waterfall_file_path):
|
||||||
self.waterfall_file_path = 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):
|
def get_max_modulation_freq(self):
|
||||||
return self.max_modulation_freq
|
return self.max_modulation_freq
|
||||||
|
|
||||||
|
|
|
@ -5,9 +5,10 @@
|
||||||
# Title: satnogs_meteor_decoder
|
# Title: satnogs_meteor_decoder
|
||||||
# Author: Manolis Surligas (surligas@gmail.com)
|
# Author: Manolis Surligas (surligas@gmail.com)
|
||||||
# Description: METEOR CCSDS Decoder
|
# 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 analog
|
||||||
from gnuradio import blocks
|
from gnuradio import blocks
|
||||||
from gnuradio import digital
|
from gnuradio import digital
|
||||||
|
@ -25,7 +26,7 @@ import time
|
||||||
|
|
||||||
class satnogs_meteor_decoder(gr.top_block):
|
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")
|
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_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_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_sync_0 = satnogs.lrpt_sync(2)
|
||||||
self.satnogs_lrpt_decoder_0 = satnogs.lrpt_decoder()
|
self.satnogs_lrpt_decoder_0 = satnogs.lrpt_decoder()
|
||||||
self.satnogs_iq_sink_0 = satnogs.iq_sink(16768, iq_file_path, False, enable_iq_dump)
|
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,
|
"", "--dev-args", dest="dev_args", type="string", default=satnogs.not_set_dev_args,
|
||||||
help="Set dev_args [default=%default]")
|
help="Set dev_args [default=%default]")
|
||||||
parser.add_option(
|
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]")
|
help="Set doppler_correction_per_sec [default=%default]")
|
||||||
parser.add_option(
|
parser.add_option(
|
||||||
"", "--enable-iq-dump", dest="enable_iq_dump", type="intx", default=0,
|
"", "--enable-iq-dump", dest="enable_iq_dump", type="intx", default=0,
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
# Title: NOAA APT Decoder
|
# Title: NOAA APT Decoder
|
||||||
# Author: Manolis Surligas, George Vardakis
|
# Author: Manolis Surligas, George Vardakis
|
||||||
# Description: A NOAA APT Decoder with automatic image synchronization
|
# 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
|
# 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_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_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_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)
|
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,
|
audio_decimation=audio_decimation,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
##################################################
|
##################################################
|
||||||
# Connections
|
# Connections
|
||||||
##################################################
|
##################################################
|
||||||
|
|
|
@ -27,7 +27,7 @@ import time
|
||||||
|
|
||||||
class satnogs_reaktor_hello_world_fsk9600_decoder(gr.top_block):
|
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")
|
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
|
# Variables
|
||||||
##################################################
|
##################################################
|
||||||
self.variable_whitening_0 = variable_whitening_0 = satnogs.whitening_make(0x21, 0x1FF, 8)
|
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
|
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_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_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_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_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_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.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(
|
self.pfb_arb_resampler_xxx_0_0_0 = pfb.arb_resampler_ccf(
|
||||||
(2.0*baudrate)/audio_samp_rate,
|
(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_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_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_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.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_1 = analog.quadrature_demod_cf(1.2)
|
||||||
self.analog_quadrature_demod_cf_0_0_0_0 = analog.quadrature_demod_cf(1.0)
|
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
|
# 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_decoder_0_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_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.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), (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))
|
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.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), (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.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.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_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))
|
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):
|
def set_variable_whitening_0(self, variable_whitening_0):
|
||||||
self.variable_whitening_0 = 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):
|
def get_audio_samp_rate(self):
|
||||||
return self.audio_samp_rate
|
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,
|
"", "--dev-args", dest="dev_args", type="string", default=satnogs.not_set_dev_args,
|
||||||
help="Set dev_args [default=%default]")
|
help="Set dev_args [default=%default]")
|
||||||
parser.add_option(
|
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]")
|
help="Set doppler_correction_per_sec [default=%default]")
|
||||||
parser.add_option(
|
parser.add_option(
|
||||||
"", "--enable-iq-dump", dest="enable_iq_dump", type="intx", default=0,
|
"", "--enable-iq-dump", dest="enable_iq_dump", type="intx", default=0,
|
||||||
|
|
|
@ -27,7 +27,7 @@ import time
|
||||||
|
|
||||||
class satnogs_afsk1200_ax25(gr.top_block):
|
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 ")
|
gr.top_block.__init__(self, "AFSK1200 AX.25 decoder ")
|
||||||
|
|
||||||
##################################################
|
##################################################
|
||||||
|
@ -59,6 +59,8 @@ class satnogs_afsk1200_ax25(gr.top_block):
|
||||||
##################################################
|
##################################################
|
||||||
# Variables
|
# 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.max_modulation_freq = max_modulation_freq = 3000
|
||||||
self.deviation = deviation = 5000
|
self.deviation = deviation = 5000
|
||||||
self.baud_rate = baud_rate = 1200
|
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_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_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_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_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_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_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(
|
self.pfb_arb_resampler_xxx_0 = pfb.arb_resampler_ccf(
|
||||||
audio_samp_rate/satnogs.handle_samp_rate_rx(rx_sdr_device, samp_rate_rx),
|
audio_samp_rate/satnogs.handle_samp_rate_rx(rx_sdr_device, samp_rate_rx),
|
||||||
taps=None,
|
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_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_0 = blocks.multiply_vcc(1)
|
||||||
self.blocks_multiply_xx_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_float_to_complex_0 = blocks.float_to_complex(1)
|
||||||
self.blocks_delay_0 = blocks.delay(gr.sizeof_gr_complex*1, 1024/2)
|
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(
|
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
|
# 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_frame_decoder_0_0, 'out'), (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_frame_decoder_0_0, 'out'), (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_frame_decoder_0_0_0, 'out'), (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_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.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), (self.dc_blocker_xx_0_0, 0))
|
||||||
self.connect((self.analog_quadrature_demod_cf_0_0, 0), (self.band_pass_filter_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.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), (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.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_frame_decoder_0_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, 0))
|
||||||
self.connect((self.digital_clock_recovery_mm_xx_0, 0), (self.digital_binary_slicer_fb_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_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))
|
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):
|
def set_waterfall_file_path(self, waterfall_file_path):
|
||||||
self.waterfall_file_path = 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):
|
def get_max_modulation_freq(self):
|
||||||
return self.max_modulation_freq
|
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,
|
"", "--dev-args", dest="dev_args", type="string", default=satnogs.not_set_dev_args,
|
||||||
help="Set dev_args [default=%default]")
|
help="Set dev_args [default=%default]")
|
||||||
parser.add_option(
|
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]")
|
help="Set doppler_correction_per_sec [default=%default]")
|
||||||
parser.add_option(
|
parser.add_option(
|
||||||
"", "--enable-iq-dump", dest="enable_iq_dump", type="intx", default=0,
|
"", "--enable-iq-dump", dest="enable_iq_dump", type="intx", default=0,
|
||||||
|
|
|
@ -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()
|
|
|
@ -5,9 +5,10 @@
|
||||||
# Title: satnogs_bpsk_ax25
|
# Title: satnogs_bpsk_ax25
|
||||||
# Author: Manolis Surligas (surligas@gmail.com), Patrick Dohmen (DL4PD)
|
# Author: Manolis Surligas (surligas@gmail.com), Patrick Dohmen (DL4PD)
|
||||||
# Description: BPSK AX.25 decoder
|
# 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 analog
|
||||||
from gnuradio import blocks
|
from gnuradio import blocks
|
||||||
from gnuradio import digital
|
from gnuradio import digital
|
||||||
|
@ -60,6 +61,8 @@ class satnogs_bpsk_ax25(gr.top_block):
|
||||||
##################################################
|
##################################################
|
||||||
self.sps = sps = 4
|
self.sps = sps = 4
|
||||||
self.nfilts = nfilts = 32
|
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.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()
|
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_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_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_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_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_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_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(
|
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),
|
(1.0 * sps*baudrate)/satnogs.handle_samp_rate_rx(rx_sdr_device, samp_rate_rx),
|
||||||
taps=None,
|
taps=None,
|
||||||
|
@ -123,18 +126,18 @@ class satnogs_bpsk_ax25(gr.top_block):
|
||||||
##################################################
|
##################################################
|
||||||
# Connections
|
# 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_frame_decoder_0_0, 'out'), (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_frame_decoder_0_0, 'out'), (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_frame_decoder_0_0_0, 'out'), (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_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.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), (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.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_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), (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.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_frame_decoder_0_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, 0))
|
||||||
self.connect((self.digital_costas_loop_cc_0_0, 0), (self.digital_pfb_clock_sync_xxx_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.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))
|
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.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))
|
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):
|
def get_rrc_taps(self):
|
||||||
return self.rrc_taps
|
return self.rrc_taps
|
||||||
|
|
||||||
|
|
|
@ -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()
|
|
|
@ -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()
|
|
|
@ -5,9 +5,10 @@
|
||||||
# Title: CW Decoder
|
# Title: CW Decoder
|
||||||
# Author: Manolis Surligas (surligas@gmail.com)
|
# Author: Manolis Surligas (surligas@gmail.com)
|
||||||
# Description: A CW (Morse) Decoder
|
# 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 analog
|
||||||
from gnuradio import blocks
|
from gnuradio import blocks
|
||||||
from gnuradio import eng_notation
|
from gnuradio import eng_notation
|
||||||
|
@ -25,7 +26,7 @@ import time
|
||||||
|
|
||||||
class satnogs_cw_decoder(gr.top_block):
|
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")
|
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_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_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_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_morse_decoder_0 = satnogs.morse_decoder(ord('#'), 3)
|
||||||
self.satnogs_iq_sink_0 = satnogs.iq_sink(16768, iq_file_path, False, enable_iq_dump)
|
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,
|
"", "--dev-args", dest="dev_args", type="string", default=satnogs.not_set_dev_args,
|
||||||
help="Set dev_args [default=%default]")
|
help="Set dev_args [default=%default]")
|
||||||
parser.add_option(
|
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]")
|
help="Set doppler_correction_per_sec [default=%default]")
|
||||||
parser.add_option(
|
parser.add_option(
|
||||||
"", "--enable-iq-dump", dest="enable_iq_dump", type="intx", default=0,
|
"", "--enable-iq-dump", dest="enable_iq_dump", type="intx", default=0,
|
||||||
|
|
|
@ -5,9 +5,10 @@
|
||||||
# Title: An example flowgraph
|
# Title: An example flowgraph
|
||||||
# Author: Manolis Surligas (surligas@gmail.com)
|
# Author: Manolis Surligas (surligas@gmail.com)
|
||||||
# Description: An example flowgraph that can be used as a base for decoding flowgraphs
|
# 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 analog
|
||||||
from gnuradio import eng_notation
|
from gnuradio import eng_notation
|
||||||
from gnuradio import filter
|
from gnuradio import filter
|
||||||
|
@ -63,7 +64,7 @@ class satnogs_example_flowgraph(gr.top_block):
|
||||||
# Blocks
|
# Blocks
|
||||||
##################################################
|
##################################################
|
||||||
self.satnogs_waterfall_sink_0_0 = satnogs.waterfall_sink(audio_samp_rate, 0.0, 10, 1024, waterfall_file_path, 1)
|
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_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_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)
|
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
|
# 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.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.analog_quadrature_demod_cf_0, 0))
|
||||||
self.connect((self.blks2_rational_resampler_xxx_1_0, 0), (self.satnogs_iq_sink_0_0, 0))
|
self.connect((self.blks2_rational_resampler_xxx_1_0, 0), (self.satnogs_iq_sink_0_0, 0))
|
||||||
|
|
|
@ -5,9 +5,10 @@
|
||||||
# Title: FM Generic Demodulation
|
# Title: FM Generic Demodulation
|
||||||
# Author: Manolis Surligas (surligas@gmail.com)
|
# Author: Manolis Surligas (surligas@gmail.com)
|
||||||
# Description: A generic FM demodulation block
|
# 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 analog
|
||||||
from gnuradio import eng_notation
|
from gnuradio import eng_notation
|
||||||
from gnuradio import filter
|
from gnuradio import filter
|
||||||
|
@ -63,7 +64,7 @@ class satnogs_fm_demod(gr.top_block):
|
||||||
# Blocks
|
# Blocks
|
||||||
##################################################
|
##################################################
|
||||||
self.satnogs_waterfall_sink_0 = satnogs.waterfall_sink(audio_samp_rate, 0.0, 10, 1024, waterfall_file_path, 1)
|
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_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_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.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)
|
self.analog_quadrature_demod_cf_0 = analog.quadrature_demod_cf((2*math.pi*deviation)/audio_samp_rate)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
##################################################
|
##################################################
|
||||||
# Connections
|
# Connections
|
||||||
##################################################
|
##################################################
|
||||||
|
|
|
@ -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()
|
|
|
@ -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()
|
|
|
@ -27,7 +27,7 @@ import time
|
||||||
|
|
||||||
class satnogs_fsk_ax25(gr.top_block):
|
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")
|
gr.top_block.__init__(self, "satnogs_fsk_ax25")
|
||||||
|
|
||||||
##################################################
|
##################################################
|
||||||
|
@ -57,6 +57,8 @@ class satnogs_fsk_ax25(gr.top_block):
|
||||||
##################################################
|
##################################################
|
||||||
# Variables
|
# 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
|
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_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_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_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_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_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_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(
|
self.pfb_arb_resampler_xxx_0_0_0 = pfb.arb_resampler_ccf(
|
||||||
(2.0*baudrate)/audio_samp_rate,
|
(2.0*baudrate)/audio_samp_rate,
|
||||||
taps=None,
|
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_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_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_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.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_0 = analog.quadrature_demod_cf(1.0)
|
||||||
self.analog_quadrature_demod_cf_0_0_0 = analog.quadrature_demod_cf(0.9)
|
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
|
# 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_frame_decoder_0_0, 'out'), (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_frame_decoder_0_0, 'out'), (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_frame_decoder_0_0_0, 'out'), (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_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.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), (self.low_pass_filter_1, 0))
|
||||||
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), (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.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), (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.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_frame_decoder_0_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, 0))
|
||||||
self.connect((self.digital_clock_recovery_mm_xx_0, 0), (self.digital_binary_slicer_fb_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_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))
|
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):
|
def set_waterfall_file_path(self, waterfall_file_path):
|
||||||
self.waterfall_file_path = 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):
|
def get_audio_samp_rate(self):
|
||||||
return self.audio_samp_rate
|
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,
|
"", "--dev-args", dest="dev_args", type="string", default=satnogs.not_set_dev_args,
|
||||||
help="Set dev_args [default=%default]")
|
help="Set dev_args [default=%default]")
|
||||||
parser.add_option(
|
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]")
|
help="Set doppler_correction_per_sec [default=%default]")
|
||||||
parser.add_option(
|
parser.add_option(
|
||||||
"", "--enable-iq-dump", dest="enable_iq_dump", type="intx", default=0,
|
"", "--enable-iq-dump", dest="enable_iq_dump", type="intx", default=0,
|
||||||
|
|
|
@ -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()
|
|
|
@ -27,7 +27,7 @@ import time
|
||||||
|
|
||||||
class satnogs_msk_ax25(gr.top_block):
|
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")
|
gr.top_block.__init__(self, "satnogs_msk_ax25")
|
||||||
|
|
||||||
##################################################
|
##################################################
|
||||||
|
@ -57,6 +57,8 @@ class satnogs_msk_ax25(gr.top_block):
|
||||||
##################################################
|
##################################################
|
||||||
# Variables
|
# 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
|
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_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_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_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_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_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_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(
|
self.pfb_arb_resampler_xxx_0_0_0 = pfb.arb_resampler_ccf(
|
||||||
(2.0*baudrate)/audio_samp_rate,
|
(2.0*baudrate)/audio_samp_rate,
|
||||||
taps=None,
|
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_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_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_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.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_0 = analog.quadrature_demod_cf(1.0)
|
||||||
self.analog_quadrature_demod_cf_0_0_0 = analog.quadrature_demod_cf(0.9)
|
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
|
# 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_frame_decoder_0_0, 'out'), (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_frame_decoder_0_0, 'out'), (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_frame_decoder_0_0_0, 'out'), (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_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.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), (self.low_pass_filter_1, 0))
|
||||||
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), (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.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), (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.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_frame_decoder_0_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, 0))
|
||||||
self.connect((self.digital_clock_recovery_mm_xx_0, 0), (self.digital_binary_slicer_fb_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_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))
|
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):
|
def set_waterfall_file_path(self, waterfall_file_path):
|
||||||
self.waterfall_file_path = 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):
|
def get_audio_samp_rate(self):
|
||||||
return self.audio_samp_rate
|
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,
|
"", "--dev-args", dest="dev_args", type="string", default=satnogs.not_set_dev_args,
|
||||||
help="Set dev_args [default=%default]")
|
help="Set dev_args [default=%default]")
|
||||||
parser.add_option(
|
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]")
|
help="Set doppler_correction_per_sec [default=%default]")
|
||||||
parser.add_option(
|
parser.add_option(
|
||||||
"", "--enable-iq-dump", dest="enable_iq_dump", type="intx", default=0,
|
"", "--enable-iq-dump", dest="enable_iq_dump", type="intx", default=0,
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
INSTALL(FILES
|
|
||||||
satnogs_waterfall.gp
|
|
||||||
DESTINATION share/satnogs/scripts
|
|
||||||
)
|
|
|
@ -1,94 +0,0 @@
|
||||||
#!/usr/bin/gnuplot
|
|
||||||
#
|
|
||||||
# gr-satnogs: SatNOGS GNU Radio Out-Of-Tree Module
|
|
||||||
#
|
|
||||||
# Copyright (C) 2017, Libre Space Foundation <http://librespacefoundation.org/>
|
|
||||||
#
|
|
||||||
# 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 <http://www.gnu.org/licenses/>
|
|
||||||
|
|
||||||
# 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
|
|
|
@ -25,6 +25,9 @@
|
||||||
#include <gnuradio/io_signature.h>
|
#include <gnuradio/io_signature.h>
|
||||||
#include "frame_file_sink_impl.h"
|
#include "frame_file_sink_impl.h"
|
||||||
|
|
||||||
|
#include <satnogs/base64.h>
|
||||||
|
#include <satnogs/metadata.h>
|
||||||
|
|
||||||
namespace gr {
|
namespace gr {
|
||||||
namespace satnogs {
|
namespace satnogs {
|
||||||
|
|
||||||
|
@ -95,14 +98,30 @@ frame_file_sink_impl::msg_handler_frame(pmt::pmt_t msg)
|
||||||
d_counter = 0;
|
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) {
|
switch (d_output_type) {
|
||||||
case 0: {
|
case 0: {
|
||||||
/* Binary form */
|
/* Binary form */
|
||||||
std::ofstream fd(filename.c_str());
|
std::ofstream fd(filename.c_str());
|
||||||
fd.write((const char *) pmt::blob_data(msg),
|
fd.write(su, len);
|
||||||
pmt::blob_length(msg));
|
|
||||||
fd.close();
|
fd.close();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -110,7 +129,6 @@ frame_file_sink_impl::msg_handler_frame(pmt::pmt_t msg)
|
||||||
/* aHex annotated, dd .txt to filename */
|
/* aHex annotated, dd .txt to filename */
|
||||||
filename.append(".txt");
|
filename.append(".txt");
|
||||||
std::ofstream fd(filename.c_str());
|
std::ofstream fd(filename.c_str());
|
||||||
su = (uint8_t *) pmt::blob_data(msg);
|
|
||||||
for (size_t i = 0; i < pmt::blob_length(msg); i++) {
|
for (size_t i = 0; i < pmt::blob_length(msg); i++) {
|
||||||
fd << "0x" << std::hex << std::setw(2) << std::setfill('0')
|
fd << "0x" << std::hex << std::setw(2) << std::setfill('0')
|
||||||
<< (uint32_t) su[i] << " ";
|
<< (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 */
|
/* Binary annotated, add .txt to filename */
|
||||||
filename.append(".txt");
|
filename.append(".txt");
|
||||||
std::ofstream fd(filename.c_str());
|
std::ofstream fd(filename.c_str());
|
||||||
su = (uint8_t *) pmt::blob_data(msg);
|
|
||||||
for (size_t i = 0; i < pmt::blob_length(msg); i++) {
|
for (size_t i = 0; i < pmt::blob_length(msg); i++) {
|
||||||
fd << "0b" << std::bitset<8> (su[i]) << " ";
|
fd << "0b" << std::bitset<8> (su[i]) << " ";
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,7 +47,7 @@ multi_format_msg_sink::make(size_t format,
|
||||||
void
|
void
|
||||||
multi_format_msg_sink_impl::msg_handler_file(pmt::pmt_t msg)
|
multi_format_msg_sink_impl::msg_handler_file(pmt::pmt_t msg)
|
||||||
{
|
{
|
||||||
const uint8_t *su;
|
const char *su;
|
||||||
size_t len;
|
size_t len;
|
||||||
std::string s;
|
std::string s;
|
||||||
char buf[256];
|
char buf[256];
|
||||||
|
@ -56,14 +56,13 @@ multi_format_msg_sink_impl::msg_handler_file(pmt::pmt_t msg)
|
||||||
if (pmt::is_dict(msg)) {
|
if (pmt::is_dict(msg)) {
|
||||||
pmt::pmt_t pdu = pmt::dict_ref(msg, pmt::mp(metadata::value(metadata::PDU)),
|
pmt::pmt_t pdu = pmt::dict_ref(msg, pmt::mp(metadata::value(metadata::PDU)),
|
||||||
pmt::PMT_NIL);
|
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)));
|
pmt::blob_length(pdu)));
|
||||||
su = (const uint8_t *) pmt::blob_data(pdu), pmt::blob_length(pdu);
|
su = s.c_str();
|
||||||
s = std::string((const char *) pmt::blob_data(pdu), pmt::blob_length(pdu));
|
len = s.size();
|
||||||
len = pmt::blob_length(pdu);
|
|
||||||
}
|
}
|
||||||
else {
|
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));
|
s = std::string((const char *) pmt::blob_data(msg), pmt::blob_length(msg));
|
||||||
len = 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
|
void
|
||||||
multi_format_msg_sink_impl::msg_handler_stdout(pmt::pmt_t msg)
|
multi_format_msg_sink_impl::msg_handler_stdout(pmt::pmt_t msg)
|
||||||
{
|
{
|
||||||
const uint8_t *su;
|
const char *su;
|
||||||
size_t len;
|
size_t len;
|
||||||
std::string s;
|
std::string s;
|
||||||
char buf[256];
|
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 */
|
/* Check if the message contains the legacy or the new format */
|
||||||
if (pmt::is_dict(msg)) {
|
if (pmt::is_dict(msg)) {
|
||||||
pmt::pmt_t pdu = pmt::dict_ref(msg, pmt::mp(metadata::value(metadata::PDU)),
|
pmt::pmt_t pdu = pmt::dict_ref(msg, pmt::mp(metadata::value(metadata::PDU)),
|
||||||
pmt::PMT_NIL);
|
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)));
|
pmt::blob_length(pdu)));
|
||||||
su = (const uint8_t *) pmt::blob_data(pdu), pmt::blob_length(pdu);
|
su = s.c_str();
|
||||||
s = std::string((const char *) pmt::blob_data(pdu), pmt::blob_length(pdu));
|
len = s.size();
|
||||||
len = pmt::blob_length(pdu);
|
|
||||||
}
|
}
|
||||||
else {
|
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));
|
s = std::string((const char *) pmt::blob_data(msg), pmt::blob_length(msg));
|
||||||
len = pmt::blob_length(msg);
|
len = pmt::blob_length(msg);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue