Convert all blocks from XML to YAML

This commit is contained in:
Manolis Surligas 2019-12-03 13:47:45 +02:00
parent cd5dfc69c9
commit 073df24112
73 changed files with 1137 additions and 1702 deletions

View File

@ -1,5 +1,5 @@
variables:
GITLAB_CI_IMAGE_DEBIAN: 'debian:buster'
GITLAB_CI_IMAGE_DEBIAN: 'debian:bullseye'
stages:
- style
- test
@ -7,6 +7,7 @@ stages:
- deploy
style:
image: ${GITLAB_CI_IMAGE_DEBIAN}
stage: style
before_script:
- apt-get update -qq && apt-get install -y -qq astyle git
@ -16,24 +17,26 @@ style:
- if (test $(astyle --dry-run --options=.astylerc --formatted include/satnogs/*.h | wc -l) -eq 0); then (exit 0); else (exit 1); fi
test:
image: ${GITLAB_CI_IMAGE_DEBIAN}
stage: test
before_script:
- apt-get update -qq && apt-get install -y -qq gnuradio-dev libcppunit-dev libjsoncpp-dev libpng++-dev libvorbis-dev cmake swig pkg-config build-essential git
- apt-get update -qq && apt-get install -y -qq gnuradio-dev libboost-program-options-dev libjsoncpp-dev libpng++-dev libvorbis-dev cmake swig pkg-config build-essential git
script:
- mkdir -p build
- cd build
- cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=/usr ..
- make
- make CTEST_OUTPUT_ON_FAILURE=1 test
- make install
- ldconfig
- python -c "import satnogs"
- python3 -c "import satnogs"
- rm -rf *
- cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DINCLUDE_DEBUG_BLOCKS=OFF -DCMAKE_INSTALL_PREFIX=/usr ..
- make
- make CTEST_OUTPUT_ON_FAILURE=1 test
- make install
- ldconfig
- python -c "import satnogs"
- python3 -c "import satnogs"
debian:
stage: build

View File

@ -97,7 +97,8 @@ set(Boost_ADDITIONAL_VERSIONS
"1.60.0" "1.60" "1.61.0" "1.61" "1.62.0" "1.62" "1.63.0" "1.63" "1.64.0" "1.64"
"1.65.0" "1.65" "1.66.0" "1.66" "1.67.0" "1.67" "1.68.0" "1.68" "1.69.0" "1.69"
)
find_package(Boost "1.54" COMPONENTS filesystem system unit_test_framework thread chrono)
find_package(Boost "1.54"
COMPONENTS filesystem system unit_test_framework thread chrono)
if(NOT Boost_FOUND)
message(FATAL_ERROR "Boost required to compile satnogs")

View File

@ -17,47 +17,46 @@
# the Free Software Foundation, Inc., 51 Franklin Street,
# Boston, MA
add_subdirectory(satellites)
list(APPEND debug_blocks
satnogs_morse_debug_source.xml
satnogs_debug_msg_source.xml
satnogs_debug_msg_source_raw.xml
satnogs_cw_encoder.xml
satnogs_cw_encoder.block.yml
satnogs_cw_to_symbol.block.yml
satnogs_debug_msg_source_raw.block.yml
satnogs_debug_msg_source.block.yml
satnogs_morse_debug_source.block.yml
)
list(APPEND enabled_blocks
satnogs_block_tree.xml
satnogs_amsat_duv_decoder.xml
satnogs_ax25_encoder_mb.xml
satnogs_ax25_decoder.xml
satnogs_frame_decoder.xml
satnogs_frame_file_sink.xml
satnogs_iq_sink.xml
satnogs_json_converter.xml
satnogs_lrpt_decoder.xml
satnogs_lrpt_sync.xml
satnogs_morse_decoder.xml
satnogs_multi_format_msg_sink.xml
satnogs_ogg_encoder.xml
satnogs_cw_to_symbol.xml
satnogs_udp_msg_source.xml
satnogs_tcp_rigctl_msg_source.xml
satnogs_doppler_correction_cc.xml
satnogs_udp_msg_sink.xml
satnogs_coarse_doppler_correction_cc.xml
satnogs_waterfall_sink.xml
satnogs_ogg_source.xml
satnogs_noaa_apt_sink.xml
satnogs_whitening.xml
satnogs_whitening_ccsds.xml
satnogs_ieee802_15_4_variant_decoder.xml
satnogs_ax100_decoder.xml
satnogs_amsat_duv_decoder.block.yml
satnogs_ax25_decoder.block.yml
satnogs_ax25_encoder_mb.block.yml
satnogs_ax100_decoder.block.yml
satnogs_coarse_doppler_correction_cc.block.yml
satnogs_doppler_correction_cc.block.yml
satnogs_frame_decoder.block.yml
satnogs_frame_file_sink.block.yml
satnogs_ieee802_15_4_variant_decoder.block.yml
satnogs_iq_sink.block.yml
satnogs_json_converter.block.yml
satnogs_lrpt_decoder.block.yml
satnogs_lrpt_sync.block.yml
satnogs_morse_decoder.block.yml
satnogs_multi_format_msg_sink.block.yml
satnogs_noaa_apt_sink.block.yml
satnogs_ogg_encoder.block.yml
satnogs_ogg_source.block.yml
satnogs_tcp_rigctl_msg_source.block.yml
satnogs_udp_msg_sink.block.yml
satnogs_udp_msg_source.block.yml
satnogs_waterfall_sink.block.yml
satnogs_whitening_ccsds.block.yml
satnogs_whitening.block.yml
satnogs.tree.yml
)
if(${INCLUDE_DEBUG_BLOCKS})
list(APPEND enabled_blocks ${debug_blocks})
endif()
install(FILES
${enabled_blocks}
DESTINATION share/gnuradio/grc/blocks

View File

@ -1,21 +0,0 @@
# Copyright 2011 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
# GNU Radio 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, or (at your option)
# any later version.
#
# GNU Radio 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 GNU Radio; see the file COPYING. If not, write to
# the Free Software Foundation, Inc., 51 Franklin Street,
# Boston, MA 02110-1301, USA.

36
grc/satnogs.tree.yml Normal file
View File

@ -0,0 +1,36 @@
'[SatNOGS]':
- Decoders:
- variable_amsat_duv_decoder
- variable_ax25_decoder
- variable_ax100_decoder
- variable_ieee802_15_4_variant_decoder
- satnogs_morse_decoder
- Satellites:
- NOAA:
- satnogs_noaa_apt_sink
- METEOR:
- satnogs_lrpt_decoder
- satnogs_lrpt_sync
- satnogs_ax25_encoder_mb
- satnogs_coarse_doppler_correction_cc
- satnogs_doppler_correction_cc
- satnogs_frame_decoder
- satnogs_frame_file_sink
- satnogs_iq_sink
- satnogs_json_converter
- satnogs_ogg_encoder
- satnogs_ogg_source
- satnogs_tcp_rigctl_msg_source
- satnogs_udp_msg_sink
- satnogs_udp_msg_source
- satnogs_waterfall_sink
- satnogs_whitening_ccsds
- satnogs_whitening
- Debug:
- satnogs_cw_encoder
- satnogs_cw_to_symbol
- satnogs_debug_msg_source_raw
- satnogs_debug_msg_source
- satnogs_morse_debug_source
- satnogs_multi_format_msg_sink

View File

@ -0,0 +1,22 @@
id: variable_amsat_duv_decoder
label: AMSAT DUV Decoder Definition
flags: [show_id]
parameters:
- id: control_symbol
label: Control symbol
dtype: string
default: '0011111010'
- id: frame_len
label: Maximum Frame Length
dtype: int
default: 96
value: ${satnogs.amsat_duv_decoder_make(control_symbol, frame_len)}
templates:
imports: import satnogs
var_make: self.${id} = ${id} = satnogs.amsat_duv_decoder_make(${control_symbol}, ${frame_len})
file_format: 1

View File

@ -1,31 +0,0 @@
<?xml version="1.0"?>
<block>
<name>AMSAT DUV Decoder Definition</name>
<key>variable_amsat_duv_decoder</key>
<import>import satnogs</import>
<var_make>self.$(id) = $(id) = satnogs.amsat_duv_decoder_make($control_symbol, $frame_len)</var_make>
<var_value>satnogs.amsat_duv_decoder_make($control_symbol, $frame_len)</var_value>
<make></make>
<param>
<name>Ignore Me</name>
<key>value</key>
<value>'ok'</value>
<type>raw</type>
<hide>all</hide>
</param>
<param>
<name>Control symbols</name>
<key>control_symbol</key>
<value>0011111010</value>
<type>string</type>
</param>
<param>
<name>Maximum Frame Length</name>
<key>frame_len</key>
<value>96</value>
<type>int</type>
</param>
</block>

View File

@ -0,0 +1,49 @@
id: variable_ax100_decoder
label: AX.100 Decoder Definition
flags: [show_id]
parameters:
- id: preamble
label: Preamble
dtype: raw
default: [0x55, 0x55, 0x55, 0x55, 0x55]
- id: preamble_thrsh
label: Preamble Threshold
dtype: int
default: 5
- id: sync_word
label: Synchronization Word
dtype: raw
default: [0x31, 0xe5]
- id: sync_thrsh
label: Synchronization Word Threshold
dtype: int
default: 3
- id: crc
label: CRC
dtype: raw
default: 'satnogs.crc.CRC_NONE'
- id: whitening
label: Whitening
dtype: raw
default: 'satnogs.whitening_sptr(None)'
- id: rs
label: Reed Solomon
dtype: bool
default: 'True'
options: ['True', 'False']
option_labels: ['Enable', 'Disable']
value: ${satnogs.ax100_decoder_make(preamble, preamble_thrsh, sync_word, sync_thrsh, crc, whitening, rs)}
templates:
imports: import satnogs
var_make: self.${id} = ${id} = satnogs.ax100_decoder_make(${preamble}, ${preamble_thrsh}, ${sync_word}, ${sync_thrsh}, ${crc}, ${whitening}, ${rs)}
file_format: 1

View File

@ -1,74 +0,0 @@
<?xml version="1.0"?>
<block>
<name>AX.100 Decoder Definition</name>
<key>variable_ax100_decoder</key>
<import>import satnogs</import>
<var_make>self.$(id) = $(id) = satnogs.ax100_decoder_make($preamble, $preamble_thrsh, $sync_word, $sync_thrsh, $crc, $whitening, $rs)</var_make>
<var_value>satnogs.ax100_decoder_make($preamble, $preamble_thrsh, $sync_word, $sync_thrsh, $crc, $whitening, $rs)</var_value>
<make></make>
<param>
<name>Ignore Me</name>
<key>value</key>
<value>'ok'</value>
<type>raw</type>
<hide>all</hide>
</param>
<param>
<name>Frame Preamble</name>
<key>preamble</key>
<value>[0x55, 0x55, 0x55, 0x55, 0x55]</value>
<type>raw</type>
</param>
<param>
<name>Preamble Threshold</name>
<key>preamble_thrsh</key>
<value>5</value>
<type>int</type>
</param>
<param>
<name>Synchronization Word</name>
<key>sync_word</key>
<value>[0x31, 0xe5]</value>
<type>raw</type>
</param>
<param>
<name>Synchronization Word Threshold</name>
<key>sync_thrsh</key>
<value>3</value>
<type>int</type>
</param>
<param>
<name>CRC</name>
<key>crc</key>
<value>None</value>
<type>raw</type>
</param>
<param>
<name>Whitening</name>
<key>whitening</key>
<value>None</value>
<type>raw</type>
</param>
<param>
<name>Reed Solomon</name>
<key>rs</key>
<value>True</value>
<type>enum</type>
<option>
<name>Enable</name>
<key>True</key>
</option>
<option>
<name>Disable</name>
<key>False</key>
</option>
</param>
</block>

View File

@ -0,0 +1,48 @@
id: variable_ax25_decoder
label: AX.25 Decoder Definition
flags: [show_id]
parameters:
- id: addr
label: Receiver Callsign
dtype: string
default: 'GND'
- id: ssid
label: Receiver SSID
dtype: int
default: 0
- id: descrambling
label: G3RUH Descrambling
dtype: bool
default: 'True'
options: ['True', 'False']
option_labels: ['Enable', 'Disable']
- id: promisc
label: Promiscuous mode
dtype: bool
default: 'True'
options: ['True', 'False']
option_labels: ['Enable', 'Disable']
- id: crc_check
label: Perform CRC check
dtype: bool
default: 'True'
options: ['True', 'False']
option_labels: ['Enable', 'Disable']
- id: frame_len
label: Maximum Frame Length
dtype: int
default: 512
value: ${satnogs.ax25_decoder_make(addr, ssid, promisc, descrambling, crc_check, frame_len)}
templates:
imports: import satnogs
var_make: self.${id} = ${id} = satnogs.ax25_decoder_make(${addr}, ${ssid}, ${promisc}, ${descrambling}, ${crc_check}, ${frame_len})
file_format: 1

View File

@ -1,80 +0,0 @@
<?xml version="1.0"?>
<block>
<name>AX.25 Decoder Definition</name>
<key>variable_ax25_decoder</key>
<import>import satnogs</import>
<var_make>self.$(id) = $(id) = satnogs.ax25_decoder_make($addr, $ssid, $promisc, $descrambling, $crc_check, $frame_len)</var_make>
<var_value>satnogs.ax25_decoder_make($addr, $ssid, $promisc, $descrambling, $crc_check, $frame_len)</var_value>
<make></make>
<param>
<name>Ignore Me</name>
<key>value</key>
<value>'ok'</value>
<type>raw</type>
<hide>all</hide>
</param>
<param>
<name>Receiver Callsign</name>
<key>addr</key>
<value>'GND'</value>
<type>string</type>
</param>
<param>
<name>Receiver SSID</name>
<key>ssid</key>
<value>0</value>
<type>int</type>
</param>
<param>
<name>Promiscuous mode</name>
<key>promisc</key>
<type>enum</type>
<option>
<name>No</name>
<key>False</key>
</option>
<option>
<name>Yes</name>
<key>True</key>
</option>
</param>
<param>
<name>G3RUH descrambling</name>
<key>descrambling</key>
<type>enum</type>
<option>
<name>Yes</name>
<key>True</key>
</option>
<option>
<name>No</name>
<key>False</key>
</option>
</param>
<param>
<name>Perform CRC</name>
<key>crc_check</key>
<type>enum</type>
<option>
<name>Yes</name>
<key>True</key>
</option>
<option>
<name>No</name>
<key>False</key>
</option>
</param>
<param>
<name>Maximum Frame Length</name>
<key>frame_len</key>
<value>512</value>
<type>int</type>
</param>
</block>

View File

@ -0,0 +1,50 @@
id: satnogs_ax25_encoder_mb
label: AX25 Encoder
parameters:
- id: dest_addr
label: Destination Callsign
dtype: string
- id: dest_ssid
label: Destination SSID
dtype: int
default: 0
- id: src_addr
label: Source Callsign
dtype: string
- id: src_ssid
label: Source SSID
dtype: int
default: 0
- id: preamble_len
label: Preamble Length
dtype: int
default: 16
- id: postamble_len
label: Postamble Length
dtype: int
default: 16
- id: scramble
label: G3RUH Scrambling
dtype: bool
default: 'True'
options: ['True', 'False']
option_labels: ['Enable', 'Disable']
outputs:
- label: out
domain: stream
dtype: byte
templates:
imports: import satnogs
make: satnogs.ax25_encoder_mb(${dest_addr}, ${dest_ssid}, ${src_addr}, ${src_ssid},
${preamble_len}, ${postamble_len}, ${scramble})
file_format: 1

View File

@ -1,69 +0,0 @@
<?xml version="1.0"?>
<block>
<name>AX.25 Encoder</name>
<key>satnogs_ax25_encoder_mb</key>
<import>import satnogs</import>
<make>satnogs.ax25_encoder_mb($dest_addr, $dest_ssid, $src_addr, $src_ssid, $preamble_len, $postamble_len, $scramble)</make>
<param>
<name>Destination Callsign</name>
<key>dest_addr</key>
<type>string</type>
</param>
<param>
<name>Destination SSID</name>
<key>dest_ssid</key>
<type>int</type>
</param>
<param>
<name>Source Callsign</name>
<key>src_addr</key>
<type>string</type>
</param>
<param>
<name>Source SSID</name>
<key>src_ssid</key>
<type>int</type>
</param>
<param>
<name>Preamble Length</name>
<key>preamble_len</key>
<value>16</value>
<type>int</type>
</param>
<param>
<name>Postamble Length</name>
<key>postamble_len</key>
<value>16</value>
<type>int</type>
</param>
<param>
<name>G3RUH Scrambling</name>
<key>scramble</key>
<type>enum</type>
<option>
<name>Yes</name>
<key>True</key>
</option>
<option>
<name>No</name>
<key>False</key>
</option>
</param>
<sink>
<name>info</name>
<type>message</type>
</sink>
<source>
<name>out</name>
<type>byte</type>
</source>
</block>

View File

@ -1,46 +0,0 @@
<cat>
<name>[SatNOGS]</name>
<cat>
<name>Decoders</name>
<block>variable_ax25_decoder</block>
<block>variable_amsat_duv_decoder</block>
<block>variable_ieee802_15_4_variant_decoder</block>
<block>variable_ax100_decoder</block>
</cat>
<cat>
<name>Satellites</name>
<cat>
<name>NOAA</name>
<block>satnogs_noaa_apt_sink</block>
</cat>
<cat>
<name>UPSat</name>
<block>satnogs_upsat_fsk_frame_encoder</block>
<block>satnogs_upsat_transmitter</block>
<block>satnogs_qb50_deframer</block>
</cat>
<cat>
<name>METOP</name>
<block>satnogs_lrpt_sync</block>
<block>satnogs_lrpt_decoder</block>
</cat>
</cat>
<block>satnogs_cw_matched_filter_ff</block>
<block>satnogs_morse_decoder</block>
<block>satnogs_multi_format_msg_sink</block>
<block>satnogs_iq_sink</block>
<block>satnogs_json_converter</block>
<block>satnogs_ogg_encoder</block>
<block>satnogs_ogg_source</block>
<block>satnogs_cw_to_symbol</block>
<block>satnogs_udp_msg_source</block>
<block>satnogs_tcp_rigctl_msg_source</block>
<block>satnogs_doppler_correction_cc</block>
<block>satnogs_udp_msg_sink</block>
<block>satnogs_coarse_doppler_correction_cc</block>
<block>satnogs_ax25_encoder_mb</block>
<block>satnogs_waterfall_sink</block>
<block>variable_whitening</block>
<block>variable_whitening_ccsds</block>
<block>satnogs_frame_decoder</block>
</cat>

View File

@ -0,0 +1,30 @@
id: satnogs_coarse_doppler_correction_cc
label: Doppler Correction (Coarse)
parameters:
- id: target_freq
label: Target frequency
dtype: real
- id: sampling_rate
label: Sample Rate
dtype: real
default: samp_rate
inputs:
- label: in
domain: stream
dtype: complex
outputs:
- label: out
domain: stream
dtype: complex
templates:
imports: import satnogs
make: satnogs.coarse_doppler_correction_cc(${target_freq}, ${sampling_rate})
callbacks:
- set_new_freq_locked(${target_freq})
file_format: 1

View File

@ -1,36 +0,0 @@
<?xml version="1.0"?>
<block>
<name>Coarse Doppler Correction</name>
<key>satnogs_coarse_doppler_correction_cc</key>
<import>import satnogs</import>
<make>satnogs.coarse_doppler_correction_cc($target_freq, $sampling_rate)</make>
<callback>set_new_freq_locked($target_freq)</callback>
<param>
<name>Target Frequency</name>
<key>target_freq</key>
<type>real</type>
</param>
<param>
<name>Sample Rate</name>
<key>sampling_rate</key>
<value>samp_rate</value>
<type>real</type>
</param>
<sink>
<name>freq</name>
<type>message</type>
</sink>
<sink>
<name>in</name>
<type>complex</type>
</sink>
<source>
<name>out</name>
<type>complex</type>
</source>
</block>

View File

@ -0,0 +1,34 @@
id: satnogs_cw_encoder
label: CW Encoder
parameters:
- id: samp_rate
label: Sample Rate
dtype: real
default: samp_rate
- id: cw_freq
label: CW Tone Frequency
dtype: real
default: 700
- id: wpm
label: Words per minute
dtype: int
default: 20
inputs:
- domain: message
id: symbol
outputs:
- label: out
domain: stream
dtype: complex
templates:
imports: import satnogs
make: satnogs.cw_encoder(${samp_rate}, ${cw_freq}, ${wpm})
file_format: 1

View File

@ -1,39 +0,0 @@
<?xml version="1.0"?>
<block>
<name>CW Encoder</name>
<key>satnogs_cw_encoder</key>
<category>[SatNOGS]/Debug</category>
<import>import satnogs</import>
<make>satnogs.cw_encoder($samp_rate, $cw_freq, $wpm)</make>
<param>
<name>Sample Rate</name>
<key>samp_rate</key>
<value>samp_rate</value>
<type>real</type>
</param>
<param>
<name>CW Frequency</name>
<key>cw_freq</key>
<value>700</value>
<type>real</type>
</param>
<param>
<name>Words per minute</name>
<key>wpm</key>
<value>20</value>
<type>int</type>
</param>
<sink>
<name>symbol</name>
<type>message</type>
</sink>
<source>
<name>out</name>
<type>complex</type>
</source>
</block>

View File

@ -0,0 +1,48 @@
id: satnogs_cw_to_symbol
label: CW to Symbol
parameters:
- id: samp_rate
label: Sample Rate
dtype: real
default: samp_rate
- id: threshold
label: Activation Threshold
dtype: real
- id: conf_level
label: Confidence Level
dtype: real
default: 0.9
- id: wpm
label: Words per Minute
dtype: int
default: 20
- id: hysteresis
label: Hysteresis
dtype: int
default: 0
inputs:
- domain: message
id: act_threshold
optiona: true
- label: in
domain: stream
dtype: float
outputs:
- domain: message
id: out
templates:
imports: import satnogs
make: satnogs.cw_to_symbol(${sampling_rate}, ${threshold}, ${conf_level}, ${wpm}, ${hysteresis})
callbacks:
- set_act_threshold(${threshold})
file_format: 1

View File

@ -1,58 +0,0 @@
<?xml version="1.0"?>
<block>
<name>CW to Symbols</name>
<key>satnogs_cw_to_symbol</key>
<import>import satnogs</import>
<make>satnogs.cw_to_symbol($sampling_rate, $threshold, $conf_level, $wpm, $hysteresis)</make>
<callback>set_act_threshold($threshold)</callback>
<param>
<name>Sampling Rate</name>
<key>sampling_rate</key>
<value>samp_rate</value>
<type>real</type>
</param>
<param>
<name>Activation Threshold</name>
<key>threshold</key>
<type>real</type>
</param>
<param>
<name>Confidence Level</name>
<key>conf_level</key>
<value>0.9</value>
<type>real</type>
</param>
<param>
<name>Words per Minute</name>
<key>wpm</key>
<value>20</value>
<type>int</type>
</param>
<param>
<name>Hysteresis</name>
<key>hysteresis</key>
<value>0</value>
<type>int</type>
</param>
<sink>
<name>act_threshold</name>
<type>message</type>
<optional>1</optional>
</sink>
<sink>
<name>in</name>
<type>float</type>
</sink>
<source>
<name>out</name>
<type>message</type>
</source>
</block>

View File

@ -0,0 +1,30 @@
id: satnogs_debug_msg_source
label: Message Source (String)
parameters:
- id: msg
label: Message
dtype: string
default: 'HELLO WORLD'
- id: Delay (seconds)
label: delay
dtype: real
default: 0.01
- id: repeat
label: Repeat
dtype: bool
default: 'False'
options: ['True', 'False']
option_labels: ['Enable', 'Disable']
outputs:
- id: msg
domain: message
templates:
imports: import satnogs
make: satnogs.debug_msg_source(${msg}, ${delay}, ${repeat})
file_format: 1

View File

@ -1,41 +0,0 @@
<?xml version="1.0"?>
<block>
<name>Debug Message Source</name>
<key>satnogs_debug_msg_source</key>
<category>[SatNOGS]/Debug</category>
<import>import satnogs</import>
<make>satnogs.debug_msg_source($msg, $delay, $repeat)</make>
<param>
<name>Message</name>
<key>msg</key>
<value>"HELLO WORLD"</value>
<type>string</type>
</param>
<param>
<name>Delay (seconds)</name>
<key>delay</key>
<value>0.01</value>
<type>real</type>
</param>
<param>
<name>Repeat</name>
<key>repeat</key>
<type>enum</type>
<option>
<name>Yes</name>
<key>True</key>
</option>
<option>
<name>No</name>
<key>False</key>
</option>
</param>
<source>
<name>msg</name>
<type>message</type>
</source>
</block>

View File

@ -0,0 +1,30 @@
id: satnogs_debug_msg_source_raw
label: Message Source (Raw bytes)
parameters:
- id: msg
label: Message
dtype: raw
default: [0x33, 0x44, 0x55, 0x66]
- id: Delay (seconds)
label: delay
dtype: real
default: 0.01
- id: repeat
label: Repeat
dtype: bool
default: 'False'
options: ['True', 'False']
option_labels: ['Enable', 'Disable']
outputs:
- id: msg
domain: message
templates:
imports: import satnogs
make: satnogs.debug_msg_source_raw(${msg}, ${delay}, ${repeat})
file_format: 1

View File

@ -1,41 +0,0 @@
<?xml version="1.0"?>
<block>
<name>Debug Message Source Raw</name>
<key>satnogs_debug_msg_source_raw</key>
<category>[SatNOGS]/Debug</category>
<import>import satnogs</import>
<make>satnogs.debug_msg_source_raw($msg, $delay, $repeat)</make>
<param>
<name>Message</name>
<key>msg</key>
<value>[0x33, 0x44, 0x55, 0x66]</value>
<type>raw</type>
</param>
<param>
<name>Delay (seconds)</name>
<key>delay</key>
<value>0.01</value>
<type>real</type>
</param>
<param>
<name>Repeat</name>
<key>repeat</key>
<type>enum</type>
<option>
<name>Yes</name>
<key>True</key>
</option>
<option>
<name>No</name>
<key>False</key>
</option>
</param>
<source>
<name>msg</name>
<type>message</type>
</source>
</block>

View File

@ -0,0 +1,41 @@
id: satnogs_doppler_correction_cc
label: Doppler Correction
parameters:
- id: target_freq
label: Target frequency
dtype: real
- id: sampling_rate
label: Sample Rate
dtype: real
default: samp_rate
- id: corrections_per_sec
label: Corrections per Second
dtype: int
default: 1000
inputs:
- id: freq
domain: message
- id: reset
domain: message
optional: true
- label: in
domain: stream
dtype: complex
outputs:
- label: out
domain: stream
dtype: complex
templates:
imports: import satnogs
make: satnogs.doppler_correction_cc(${target_freq}, ${sampling_rate}, ${corrections_per_sec})
file_format: 1

View File

@ -1,48 +0,0 @@
<?xml version="1.0"?>
<block>
<name>Doppler Correction</name>
<key>satnogs_doppler_correction_cc</key>
<import>import satnogs</import>
<make>satnogs.doppler_correction_cc($target_freq, $sampling_rate, $corrections_per_sec)</make>
<param>
<name>Target Frequency</name>
<key>target_freq</key>
<type>real</type>
</param>
<param>
<name>Sample Rate</name>
<key>sampling_rate</key>
<value>samp_rate</value>
<type>real</type>
</param>
<param>
<name>Corrections per Second</name>
<key>corrections_per_sec</key>
<value>1000</value>
<type>int</type>
</param>
<sink>
<name>freq</name>
<type>message</type>
</sink>
<sink>
<name>reset</name>
<type>message</type>
<optional>1</optional>
</sink>
<sink>
<name>in</name>
<type>complex</type>
</sink>
<source>
<name>out</name>
<type>complex</type>
</source>
</block>

View File

@ -0,0 +1,46 @@
id: satnogs_frame_decoder
label: Frame Decoder
parameters:
- id: itype
label: IO Type
dtype: enum
default: complex
options: [complex, float, int, short, byte]
option_attributes:
size: [8, 4, 4, 2, 1]
hide: part
- id: vlen
label: Vec Length
dtype: int
default: '1'
hide: ${ 'part' if vlen == 1 else 'none' }
- id: decoder_object
label: Decoder_object
dtype: raw
default: None
inputs:
- label: in
domain: stream
dtype: ${itype}
vlen: ${vlen}
- id: reset
domain: message
optional: true
outputs:
- id: out
domain: message
asserts:
- ${vlen > 0}
templates:
imports: import satnogs
make: satnogs.frame_decoder(${decoder_object}, ${itype.size} * ${vlen})
file_format: 1

View File

@ -1,63 +0,0 @@
<?xml version="1.0"?>
<block>
<name>Frame Decoder</name>
<key>satnogs_frame_decoder</key>
<import>import satnogs</import>
<make>satnogs.frame_decoder($decoder_object, $itype.size)</make>
<param>
<name>Input Type</name>
<key>itype</key>
<value></value>
<type>enum</type>
<option>
<name>Complex</name>
<key>complex</key>
<opt>size:gr.sizeof_gr_complex</opt>
</option>
<option>
<name>Float</name>
<key>float</key>
<opt>size:gr.sizeof_float</opt>
</option>
<option>
<name>Int</name>
<key>int</key>
<opt>size:gr.sizeof_int</opt>
</option>
<option>
<name>Short</name>
<key>short</key>
<opt>size:gr.sizeof_short</opt>
</option>
<option>
<name>Byte</name>
<key>byte</key>
<opt>size:gr.sizeof_char</opt>
</option>
</param>
<param>
<name>Decoder object</name>
<key>decoder_object</key>
<value>None</value>
<type>raw</type>
</param>
<sink>
<name>in</name>
<type>$itype</type>
</sink>
<sink>
<name>reset</name>
<type>message</type>
<optional>1</optional>
</sink>
<source>
<name>out</name>
<type>message</type>
</source>
</block>

View File

@ -0,0 +1,25 @@
id: satnogs_frame_file_sink
label: Frame File Sink
parameters:
- id: prefix_name
label: Prefix
dtype: string
default: 'test'
- id: output_type
label: Output Type
dtype: int
options: [0, 1, 2]
option_labels: ['Binary', 'Hex annotation', 'Binary annotation']
default: 0
inputs:
- id: frame
domain: message
templates:
imports: import satnogs
make: satnogs.frame_file_sink(${prefix_name}, ${output_type})
file_format: 1

View File

@ -1,42 +0,0 @@
<?xml version="1.0"?>
<block>
<name>Frame File Sink</name>
<key>satnogs_frame_file_sink</key>
<category>[SatNOGS]</category>
<import>import satnogs</import>
<make>satnogs.frame_file_sink($prefix_name, $output_type)</make>
<!-- Make one 'param' node for every Parameter you want settable from the
GUI. Sub-nodes: * name * key (makes the value accessible as $keyname, e.g.
in the make node) * type -->
<param>
<name>Prefix name</name>
<key>prefix_name</key>
<value>test</value>
<type>string</type>
</param>
<param>
<name>Output type</name>
<key>output_type</key>
<type>enum</type>
<option>
<name>Binary</name>
<key>0</key>
</option>
<option>
<name>Hex annotated</name>
<key>1</key>
</option>
<option>
<name>Binary annotated</name>
<key>2</key>
</option>
</param>
<sink>
<name>frame</name>
<type>message</type>
</sink>
</block>

View File

@ -0,0 +1,54 @@
id: variable_ieee802_15_4_variant_decoder
label: IEEE 802.15.4 Decoder Definition
flags: [show_id]
parameters:
- id: var_len
label: Variable Length
dtype: bool
default: 'True'
options: ['True', 'False']
option_labels: ['Enable', 'Disable']
- id: preamble
label: Preamble
dtype: raw
default: [0x55, 0x55, 0x55, 0x55, 0x55]
- id: preamble_thrsh
label: Preamble Threshold
dtype: int
default: 5
- id: sync_word
label: Synchronization Word
dtype: raw
default: [0x31, 0xe5]
- id: sync_thrsh
label: Synchronization Word Threshold
dtype: int
default: 3
- id: frame_len
label: (Maximum) Frame Length
dtype: int
default: 240
- id: crc
label: CRC
dtype: raw
default: 'satnogs.crc.CRC_NONE'
- id: whitening
label: Whitening
dtype: raw
default: 'satnogs.whitening_sptr(None)'
value: ${satnogs.ieee802_15_4_variant_decoder_make(preamble, preamble_thrsh, sync_word, sync_thrsh, crc, whitening, var_len, frame_len)}
templates:
imports: import satnogs
var_make: self.${id} = ${id} = satnogs.ieee802_15_4_variant_decoder_make(${preamble}, ${preamble_thrsh}, ${sync_word}, ${sync_thrsh}, ${crc}, ${whitening}, ${var_len}, ${frame_len})
file_format: 1

View File

@ -1,80 +0,0 @@
<?xml version="1.0"?>
<block>
<name>IEEE 802.15.4 Decoder Definition</name>
<key>variable_ieee802_15_4_variant_decoder</key>
<import>import satnogs</import>
<var_make>self.$(id) = $(id) = satnogs.ieee802_15_4_variant_decoder_make($preamble, $preamble_thrsh, $sync_word, $sync_thrsh, $crc, $whitening, $var_len, $frame_len)</var_make>
<var_value>satnogs.ieee802_15_4_variant_decoder_make($preamble, $preamble_thrsh, $sync_word, $sync_thrsh, $crc, $whitening, $var_len, $frame_len)</var_value>
<make></make>
<param>
<name>Ignore Me</name>
<key>value</key>
<value>'ok'</value>
<type>raw</type>
<hide>all</hide>
</param>
<param>
<name>Variable Length</name>
<key>var_len</key>
<type>enum</type>
<option>
<name>Variable Frame Length</name>
<key>True</key>
</option>
<option>
<name>Constant Frame Length</name>
<key>False</key>
</option>
</param>
<param>
<name>Frame Preamble</name>
<key>preamble</key>
<value>[0x55, 0x55, 0x55, 0x55, 0x55]</value>
<type>raw</type>
</param>
<param>
<name>Preamble Threshold</name>
<key>preamble_thrsh</key>
<value>5</value>
<type>int</type>
</param>
<param>
<name>Synchronization Word</name>
<key>sync_word</key>
<value>[0x31, 0xe5]</value>
<type>raw</type>
</param>
<param>
<name>Synchronization Word Threshold</name>
<key>sync_thrsh</key>
<value>3</value>
<type>int</type>
</param>
<param>
<name>Maximum Frame Length</name>
<key>frame_len</key>
<value>254</value>
<type>int</type>
</param>
<param>
<name>CRC</name>
<key>crc</key>
<value>None</value>
<type>raw</type>
</param>
<param>
<name>Whitening</name>
<key>whitening</key>
<value>None</value>
<type>raw</type>
</param>
</block>

View File

@ -0,0 +1,39 @@
id: satnogs_iq_sink
label: IQ Sink
parameters:
- id: filename
label: File
dtype: file_save
- id: activate
label: Activate
dtype: int
options: [0, 1]
option_labels: ['Off', 'On']
default: 1
- id: scale
label: Scale
dtype: real
default: 32767.0
- id: append
label: Append File
dtype: bool
options: [False, True]
option_labels: ['False', 'True']
default: False
inputs:
- label: in
domain: stream
dtype: complex
templates:
imports: import satnogs
make: satnogs.iq_sink(${scale}, ${filename}, ${append}, ${activate})
callbacks:
- open(${filename})
file_format: 1

View File

@ -1,51 +0,0 @@
<?xml version="1.0"?>
<block>
<name>IQ Sink</name>
<key>satnogs_iq_sink</key>
<import>import satnogs</import>
<make>satnogs.iq_sink($scale, $filename, $append, $status)</make>
<callback>open($file)</callback>
<param>
<name>File</name>
<key>filename</key>
<value></value>
<type>file_save</type>
</param>
<param>
<name>Status</name>
<key>status</key>
<value>0</value>
<type>int</type>
<hide>part</hide>
</param>
<param>
<name>Scale</name>
<key>scale</key>
<value>32767</value>
<type>float</type>
</param>
<param>
<name>Append file</name>
<key>append</key>
<value>False</value>
<type>bool</type>
<option>
<name>Append</name>
<key>True</key>
</option>
<option>
<name>Overwrite</name>
<key>False</key>
</option>
</param>
<sink>
<name>in</name>
<type>complex</type>
</sink>
</block>

View File

@ -0,0 +1,21 @@
id: satnogs_json_converter
label: Telemetry to JSON
parameters:
- id: extra
label: Extra JSON field
dtype: raw
inputs:
- id: in
domain: message
outputs:
- id: out
domain: message
templates:
imports: import satnogs
make: satnogs.json_converter(${extra})
file_format: 1

View File

@ -1,24 +0,0 @@
<?xml version="1.0"?>
<block>
<name>Telemetry to JSON</name>
<key>satnogs_json_converter</key>
<import>import satnogs</import>
<make>satnogs.json_converter($extra)</make>
<param>
<name>Extra JSON field</name>
<key>extra</key>
<value></value>
<type>raw</type>
</param>
<sink>
<name>in</name>
<type>message</type>
</sink>
<source>
<name>out</name>
<type>message</type>
</source>
</block>

View File

@ -0,0 +1,16 @@
id: satnogs_lrpt_decoder
label: LRPT Frame Decoder
inputs:
- id: cadu
domain: message
outputs:
- id: frame
domain: message
templates:
imports: import satnogs
make: satnogs.lrpt_decoder()
file_format: 1

View File

@ -1,17 +0,0 @@
<?xml version="1.0"?>
<block>
<name>LRPT Frame Decoder</name>
<key>satnogs_lrpt_decoder</key>
<import>import satnogs</import>
<make>satnogs.lrpt_decoder()</make>
<sink>
<name>cadu</name>
<type>message</type>
</sink>
<source>
<name>frame</name>
<type>message</type>
</source>
</block>

View File

@ -0,0 +1,23 @@
id: satnogs_lrpt_sync
label: LRPT Frame Sync
parameters:
- id: thresh
label: Threshold
dtype: int
default: 2
inputs:
- label: in
domain: stream
dtype: complex
outputs:
- id: cadu
domain: message
templates:
imports: import satnogs
make: satnogs.lrpt_sync(${thresh})
file_format: 1

View File

@ -1,24 +0,0 @@
<?xml version="1.0"?>
<block>
<name>LRPT Frame Sync</name>
<key>satnogs_lrpt_sync</key>
<import>import satnogs</import>
<make>satnogs.lrpt_sync($thresh)</make>
<param>
<name>Threshold</name>
<key>thresh</key>
<value>2</value>
<type>int</type>
</param>
<sink>
<name>in</name>
<type>complex</type>
</sink>
<source>
<name>cadu</name>
<type>message</type>
</source>
</block>

View File

@ -0,0 +1,39 @@
id: satnogs_morse_debug_source
label: Morse code Debug Source
parameters:
- id: wpm
label: Words per Minute
dtype: int
default: 20
- id: debug_seq
label: Sentence
dtype: string
default: 'HELLO WORLD'
- id: Inject Errors
label: errors
dtype: bool
default: 'False'
options: ['True', 'False']
- id: Error probability
label: p
dtype: real
default: 0.1
- id: Delay (millis)
label: seq_pause_ms
dtype: int
default: 1000
outputs:
- id: out
domain: message
templates:
imports: import satnogs
make: satnogs.morse_debug_source(${wpm}, ${debug_seq}, ${errors}, ${p}, ${seq_pause_ms})
file_format: 1

View File

@ -1,55 +0,0 @@
<?xml version="1.0"?>
<block>
<name>Morse code Debug Source</name>
<key>satnogs_morse_debug_source</key>
<category>[SatNOGS]/Debug</category>
<import>import satnogs</import>
<make>satnogs.morse_debug_source($wpm, $debug_seq, $errors, $p, $seq_pause_ms)</make>
<param>
<name>WPM</name>
<key>wpm</key>
<value>20</value>
<type>int</type>
</param>
<param>
<name>Sentence</name>
<key>debug_seq</key>
<value>"HELLO WORLD"</value>
<type>string</type>
</param>
<param>
<name>Inject Errors</name>
<key>errors</key>
<type>enum</type>
<option>
<name>Yes</name>
<key>True</key>
</option>
<option>
<name>No</name>
<key>False</key>
</option>
</param>
<param>
<name>Error probability</name>
<key>p</key>
<value>0.1</value>
<type>real</type>
</param>
<param>
<name>Sequence Pause (millis)</name>
<key>seq_pause_ms</key>
<value>1000</value>
<type>int</type>
</param>
<source>
<name>out</name>
<type>message</type>
</source>
</block>

View File

@ -0,0 +1,27 @@
id: satnogs_morse_decoder
label: Morse Decoder
parameters:
- id: unrecognized_char
label: Unrecognized character
dtype: int
default: ord('#')
- id: min_frame_len
label: Minimum Message Length
dtype: int
default: 5
inputs:
- id: in
domain: message
outputs:
- id: out
domain: message
templates:
imports: import satnogs
make: satnogs.morse_decoder(${unrecognized_char}, ${min_frame_len})
file_format: 1

View File

@ -1,32 +0,0 @@
<?xml version="1.0"?>
<block>
<name>Morse Decoder</name>
<key>satnogs_morse_decoder</key>
<import>import satnogs</import>
<make>satnogs.morse_decoder($unrecognized_char, $min_frame_len)</make>
<param>
<name>Unrecognized character</name>
<key>unrecognized_char</key>
<value>ord('#')</value>
<type>int</type>
</param>
<param>
<name>Minimum frame length</name>
<key>min_frame_len</key>
<value>3</value>
<type>int</type>
</param>
<sink>
<name>in</name>
<type>message</type>
</sink>
<source>
<name>out</name>
<type>message</type>
</source>
</block>

View File

@ -0,0 +1,37 @@
id: satnogs_multi_format_msg_sink
label: Message Sink
parameters:
- id: format
label: Output Format
dtype: int
options: [0, 1, 2]
option_labels: ['Binary', 'Hex annotation', 'Binary annotation']
default: 0
- id: timestamp
label: Timestamping
dtype: bool
default: False
- id: outstream
label: Output
dtype: enum
options: ['False', 'True']
option_labels: ['File', 'STDOUT']
default: 'True'
- id: filepath
label: File
dtype: file_save
hide: ${ 'all' if outstream == 'True' else 'none' }
inputs:
- id: in
domain: message
templates:
imports: import satnogs
make: satnogs.multi_format_msg_sink(${format}, ${timestamp}, ${outstream}, ${filepath})
file_format: 1

View File

@ -1,65 +0,0 @@
<?xml version="1.0"?>
<block>
<name>Multi Format Message Sink</name>
<key>satnogs_multi_format_msg_sink</key>
<import>import satnogs</import>
<make>satnogs.multi_format_msg_sink($format, $timestamp, $outstream, $filename)</make>
<param>
<name>Output format</name>
<key>format</key>
<type>enum</type>
<option>
<name>Binary</name>
<key>0</key>
</option>
<option>
<name>Hex annotated</name>
<key>1</key>
</option>
<option>
<name>Binary annotated</name>
<key>2</key>
</option>
</param>
<param>
<name>Output Timestamp</name>
<key>timestamp</key>
<type>enum</type>
<option>
<name>No</name>
<key>False</key>
</option>
<option>
<name>Yes</name>
<key>True</key>
</option>
</param>
<param>
<name>Output Result</name>
<key>outstream</key>
<type>enum</type>
<option>
<name>STDOUT</name>
<key>True</key>
<opt>t:stdout</opt>
</option>
<option>
<name>File</name>
<key>False</key>
<opt>t:file</opt>
</option>
</param>
<param>
<name>File</name>
<key>filename</key>
<value></value>
<type>file_save</type>
<hide>#if $outstream.t == "file" then 'none' else 'all'#</hide>
</param>
<sink>
<name>in</name>
<type>message</type>
</sink>
</block>

View File

@ -0,0 +1,38 @@
id: satnogs_noaa_apt_sink
label: NOAA APT Sink
parameters:
- id: filename_png
label: Output PNG Filename
dtype: file_save
- id: width
label: Image Width
dtype: int
default: 2080
- id: height
label: Image Height
dtype: int
default: 1800
- id: sync
label: Synchronize
dtype: bool
default: True
- id: flip
label: Flip Image
dtype: bool
default: False
inputs:
- label: in
domain: stream
dtype: float
templates:
imports: import satnogs
make: satnogs.noaa_apt_sink(${filename_png}, ${width}, ${height}, ${sync}, ${flip})
file_format: 1

View File

@ -1,58 +0,0 @@
<?xml version="1.0"?>
<block>
<name>NOAA APT Sink</name>
<key>satnogs_noaa_apt_sink</key>
<import>import satnogs</import>
<make>satnogs.noaa_apt_sink($filename_png, $width, $height, $sync, $flip)</make>
<param>
<name>Output PNG Filename</name>
<key>filename_png</key>
<value></value>
<type>file_save</type>
</param>
<param>
<name>PNG width</name>
<key>width</key>
<value>2080</value>
<type>int</type>
</param>
<param>
<name>PNG height</name>
<key>height</key>
<value>1800</value>
<type>int</type>
</param>
<param>
<name>Synchronize</name>
<key>sync</key>
<value>False</value>
<type>bool</type>
<option>
<name>Yes</name>
<key>True</key>
</option>
<option>
<name>No</name>
<key>False</key>
</option>
</param>
<param>
<name>Flip Image</name>
<key>flip</key>
<value>False</value>
<type>bool</type>
<option>
<name>Yes</name>
<key>True</key>
</option>
<option>
<name>No</name>
<key>False</key>
</option>
</param>
<sink>
<name>in</name>
<type>float</type>
</sink>
</block>

View File

@ -0,0 +1,28 @@
id: satnogs_ogg_encoder
label: OGG Encoder
parameters:
- id: filename
label: File
dtype: file_save
- id: samp_rate
label: Sampling Rate
dtype: int
default: 48000
- id: Quality
label: Image Height
dtype: real
default: 0.8
inputs:
- label: in
domain: stream
dtype: float
templates:
imports: import satnogs
make: satnogs.ogg_encoder(${filename}, ${samp_rate}, ${quality})
file_format: 1

View File

@ -1,32 +0,0 @@
<?xml version="1.0"?>
<block>
<name>OGG Encoder</name>
<key>satnogs_ogg_encoder</key>
<import>import satnogs</import>
<make>satnogs.ogg_encoder($filename, $samp_rate, $quality)</make>
<param>
<name>File</name>
<key>filename</key>
<value></value>
<type>file_save</type>
</param>
<param>
<name>Sampling rate</name>
<key>samp_rate</key>
<type>real</type>
</param>
<param>
<name>Quality</name>
<key>quality</key>
<value>0.8</value>
<type>real</type>
</param>
<sink>
<name>in</name>
<type>float</type>
</sink>
</block>

View File

@ -0,0 +1,29 @@
id: satnogs_ogg_source
label: OGG Source
parameters:
- id: filename
label: File
dtype: file_save
- id: channels
label: Channels
dtype: int
default: 1
- id: repeat
label: Repeat
dtype: bool
default: False
outputs:
- label: out
domain: stream
dtype: float
multiplicity: ${channels}
templates:
imports: import satnogs
make: satnogs.ogg_source(${filename}, ${channels}, ${repeat})
file_format: 1

View File

@ -1,42 +0,0 @@
<?xml version="1.0"?>
<block>
<name>OGG File Source</name>
<key>satnogs_ogg_source</key>
<category>[satnogs]</category>
<import>import satnogs</import>
<make>satnogs.ogg_source($filename, $channels, $repeat)</make>
<param>
<name>File</name>
<key>filename</key>
<value></value>
<type>file_open</type>
</param>
<param>
<name>Channels</name>
<key>channels</key>
<value>1</value>
<type>int</type>
</param>
<param>
<name>Repeat</name>
<key>repeat</key>
<type>enum</type>
<option>
<name>No</name>
<key>False</key>
</option>
<option>
<name>Yes</name>
<key>True</key>
</option>
</param>
<source>
<name>out</name>
<type>float</type>
<nports>$channels</nports>
</source>
</block>

View File

@ -0,0 +1,40 @@
id: satnogs_tcp_rigctl_msg_source
label: Rigctl Message Source (TCP)
parameters:
- id: addr
label: IP Address
dtype: string
default: '127.0.0.1'
- id: port
label: Port
dtype: int
default: 16886
- id: mode
label: Mode
dtype: enum
options: ['False', 'True']
option_labels: ['Client', 'Server']
default: 'False'
- id: interval
label: Update Interval (milliseconds)
dtype: int
default: 1000
- id: mtu
label: MTU
dtype: int
default: 1500
outputs:
- id: freq
domain: message
templates:
imports: import satnogs
make: satnogs.tcp_rigctl_msg_source(${addr}, ${port}, ${mode}, ${interval}, ${mtu})
file_format: 1

View File

@ -1,54 +0,0 @@
<?xml version="1.0"?>
<block>
<name>TCP rigctl Message Source</name>
<key>satnogs_tcp_rigctl_msg_source</key>
<import>import satnogs</import>
<make>satnogs.tcp_rigctl_msg_source($addr, $port, $mode, $interval, $mtu)</make>
<param>
<name>IP Address</name>
<key>addr</key>
<value>"127.0.0.1"</value>
<type>string</type>
</param>
<param>
<name>Port</name>
<key>port</key>
<value>16886</value>
<type>int</type>
</param>
<param>
<name>Mode</name>
<key>mode</key>
<type>enum</type>
<option>
<name>Client</name>
<key>False</key>
</option>
<option>
<name>Server</name>
<key>True</key>
</option>
</param>
<param>
<name>Update interval (ms)</name>
<key>interval</key>
<value>1000</value>
<type>int</type>
</param>
<param>
<name>MTU</name>
<key>mtu</key>
<value>1500</value>
<type>int</type>
</param>
<source>
<name>freq</name>
<type>message</type>
</source>
</block>

View File

@ -0,0 +1,28 @@
id: satnogs_udp_msg_sink
label: UDP Message Sink
parameters:
- id: addr
label: IP Address
dtype: string
default: '127.0.0.1'
- id: port
label: Port
dtype: int
default: 16886
- id: mtu
label: MTU
dtype: int
default: 1500
inputs:
- id: in
domain: message
templates:
imports: import satnogs
make: satnogs.udp_msg_sink(${addr}, ${port}, ${mtu})
file_format: 1

View File

@ -1,32 +0,0 @@
<?xml version="1.0"?>
<block>
<name>UDP Message Sink</name>
<key>satnogs_udp_msg_sink</key>
<import>import satnogs</import>
<make>satnogs.udp_msg_sink($addr, $port, $mtu)</make>
<param>
<name>IP Address</name>
<key>addr</key>
<value>"127.0.0.1"</value>
<type>string</type>
</param>
<param>
<name>UDP port</name>
<key>port</key>
<value>16886</value>
<type>int</type>
</param>
<param>
<name>MTU</name>
<key>mtu</key>
<value>1500</value>
<type>int</type>
</param>
<sink>
<name>in</name>
<type>message</type>
</sink>
</block>

View File

@ -0,0 +1,35 @@
id: satnogs_udp_msg_source
label: UDP Message Source
parameters:
- id: addr
label: IP Address
dtype: string
default: '127.0.0.1'
- id: port
label: Port
dtype: int
default: 16886
- id: mtu
label: MTU
dtype: int
default: 1500
- id: msg_type
label: Message Type
dtype: enum
options: ['0', '1', '2']
option_labels: ['Raw', 'uint32_t', 'int32_t']
default: '0'
outputs:
- id: msg
domain: message
templates:
imports: import satnogs
make: satnogs.udp_msg_source(${addr}, ${port}, ${mtu}, ${msg_type})
file_format: 1

View File

@ -1,51 +0,0 @@
<?xml version="1.0"?>
<block>
<name>UDP Message Source</name>
<key>satnogs_udp_msg_source</key>
<import>import satnogs</import>
<make>satnogs.udp_msg_source($addr, $port, $mtu, $msg_type)</make>
<param>
<name>IP Address</name>
<key>addr</key>
<value>"127.0.0.1"</value>
<type>string</type>
</param>
<param>
<name>UDP port</name>
<key>port</key>
<value>16886</value>
<type>int</type>
</param>
<param>
<name>MTU</name>
<key>mtu</key>
<value>1500</value>
<type>int</type>
</param>
<param>
<name>Message Type</name>
<key>msg_type</key>
<type>enum</type>
<option>
<name>Raw</name>
<key>0</key>
</option>
<option>
<name>uin32_t</name>
<key>1</key>
</option>
<option>
<name>in32_t</name>
<key>2</key>
</option>
</param>
<source>
<name>msg</name>
<type>message</type>
</source>
</block>

View File

@ -0,0 +1,47 @@
id: satnogs_waterfall_sink
label: Waterfall Sink
parameters:
- id: samp_rate
label: Sampling Rate
dtype: real
default: samp_rate
- id: fft_size
label: FFT Size
dtype: int
default: 1024
- id: rps
label: Rows per Second
dtype: int
default: 10
- id: mode
label: Mode
dtype: enum
options: ['0', '1', '2']
option_labels: ['Decimation', 'Max Hold', 'Mean']
default: '1'
- id: center_freq
label: Center Frequency
dtype: real
default: 0.0
- id: filename
label: File
dtype: file_save
inputs:
- label: in
domain: stream
dtype: complex
templates:
imports: import satnogs
make: satnogs.waterfall_sink(${samp_rate}, ${center_freq}, ${rps}, ${fft_size},
${filename}, ${mode})
file_format: 1

View File

@ -1,67 +0,0 @@
<?xml version="1.0"?>
<block>
<name>Waterfall Sink</name>
<key>satnogs_waterfall_sink</key>
<import>import satnogs</import>
<make>satnogs.waterfall_sink($samp_rate, $center_freq, $pps, $fft_size, $filename, $mode)</make>
<param>
<name>Sample Rate</name>
<key>samp_rate</key>
<value>samp_rate</value>
<type>real</type>
</param>
<param>
<name>FFT Size</name>
<key>fft_size</key>
<value>1024</value>
<type>int</type>
</param>
<param>
<name>Pixel Rows per Second</name>
<key>pps</key>
<value>10</value>
<type>int</type>
</param>
<param>
<name>Mode</name>
<key>mode</key>
<type>enum</type>
<option>
<name>Simple decimation</name>
<key>0</key>
</option>
<option>
<name>Max hold</name>
<key>1</key>
</option>
<option>
<name>Mean</name>
<key>2</key>
</option>
</param>
<param>
<name>Center Frequency</name>
<key>center_freq</key>
<value>0.0</value>
<type>real</type>
</param>
<param>
<name>File</name>
<key>filename</key>
<value></value>
<type>file_save</type>
</param>
<sink>
<name>in</name>
<type>complex</type>
</sink>
</block>

View File

@ -0,0 +1,24 @@
id: variable_whitening
label: Whitening
flags: [show_id]
parameters:
- id: mask
label: Mask
dtype: int
- id: seed
label: Seed
dtype: int
- id: order
label: Order
dtype: int
value: ${satnogs.whitening_make(mask, seed, order)}
templates:
imports: import satnogs
var_make: self.${id} = ${id} = satnogs.whitening_make(${mask}, ${seed}, ${order})
file_format: 1

View File

@ -1,35 +0,0 @@
<?xml version="1.0"?>
<block>
<name>Whitening</name>
<key>variable_whitening</key>
<import>import satnogs</import>
<var_make>self.$(id) = $(id) = satnogs.whitening_make($mask, $seed, $order)</var_make>
<var_value>satnogs.whitening_make($mask, $seed, $order)</var_value>
<make></make>
<param>
<name>Ignore Me</name>
<key>value</key>
<value>'ok'</value>
<type>raw</type>
<hide>all</hide>
</param>
<param>
<name>Mask</name>
<key>mask</key>
<type>int</type>
</param>
<param>
<name>Seed</name>
<key>seed</key>
<type>int</type>
</param>
<param>
<name>Order</name>
<key>order</key>
<type>int</type>
</param>
</block>

View File

@ -0,0 +1,11 @@
id: variable_whitening_ccsds
label: Whitening (CCSDS)
flags: [show_id]
value: ${satnogs.whitening.make_ccsds()}
templates:
imports: import satnogs
var_make: self.${id} = ${id} = satnogs.whitening.make_ccsds()
file_format: 1

View File

@ -1,16 +0,0 @@
<?xml version="1.0"?>
<block>
<name>CCSDS Whitening</name>
<key>variable_whitening_ccsds</key>
<import>import satnogs</import>
<var_make>self.$(id) = $(id) = satnogs.whitening.make_ccsds()</var_make>
<var_value>satnogs.whitening.make_ccsds()</var_value>
<make></make>
<param>
<name>Ignore Me</name>
<key>value</key>
<value>'ok'</value>
<type>raw</type>
<hide>all</hide>
</param>
</block>

View File

@ -22,56 +22,55 @@
# Install public header files
########################################################################
list(APPEND DEBUG_HEADER_FILES
morse_debug_source.h
cw_encoder.h
debug_msg_source_raw.h
debug_msg_source.h
cw_encoder.h
morse_debug_source.h
)
list(APPEND HEADER_FILES
ax100_decoder.h
amsat_duv_decoder.h
api.h
ax25.h
ax25_decoder.h
ax25_encoder_mb.h
ax100_decoder.h
base64.h
coarse_doppler_correction_cc.h
config.h
convolutional_deinterleaver.h
log.h
metadata.h
morse_tree.h
morse.h
morse_decoder.h
multi_format_msg_sink.h
ogg_encoder.h
crc.h
cw_to_symbol.h
utils.h
udp_msg_source.h
tcp_rigctl_msg_source.h
decoder.h
frame_decoder.h
frame_encoder.h
doppler_correction_cc.h
doppler_fit.h
freq_drift.h
upsat_fsk_frame_encoder.h
whitening.h
udp_msg_sink.h
coarse_doppler_correction_cc.h
ax25_encoder_mb.h
qb50_deframer.h
waterfall_sink.h
ogg_source.h
noaa_apt_sink.h
frame_decoder.h
frame_file_sink.h
iq_sink.h
lrpt_sync.h
lrpt_decoder.h
shift_reg.h
freq_drift.h
golay24.h
ax25_decoder.h
json_converter.h
ieee802_15_4_variant_decoder.h
crc.h
iq_sink.h
json_converter.h
log.h
lrpt_decoder.h
lrpt_sync.h
metadata.h
morse.h
morse_decoder.h
morse_tree.h
multi_format_msg_sink.h
noaa_apt_sink.h
ogg_encoder.h
ogg_source.h
qb50_deframer.h
shift_reg.h
tcp_rigctl_msg_source.h
udp_msg_sink.h
udp_msg_source.h
upsat_fsk_frame_encoder.h
utils.h
waterfall_sink.h
whitening.h
)
if(${INCLUDE_DEBUG_BLOCKS})

View File

@ -1,57 +0,0 @@
/* -*- c++ -*- */
/*
* gr-satnogs: SatNOGS GNU Radio Out-Of-Tree Module
*
* Copyright (C) 2016, 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/>.
*/
#ifndef INCLUDED_SATNOGS_FRAME_ENCODER_H
#define INCLUDED_SATNOGS_FRAME_ENCODER_H
#include <satnogs/api.h>
#include <gnuradio/sync_block.h>
namespace gr {
namespace satnogs {
/*!
* \brief <+description of block+>
* \ingroup satnogs
*
*/
class SATNOGS_API frame_encoder : virtual public gr::sync_block {
public:
typedef boost::shared_ptr<frame_encoder> sptr;
/*!
* \brief Return a shared_ptr to a new instance of satnogs::frame_encoder.
*
* To avoid accidental use of raw pointers, satnogs::frame_encoder's
* constructor is in a private implementation
* class. satnogs::frame_encoder::make is the public interface for
* creating new instances.
*/
static sptr
make(bool append_preamble, bool ecss_encap,
const std::string &dest_addr, uint8_t dest_ssid, const std::string &src_addr,
uint8_t src_ssid);
};
} // namespace satnogs
} // namespace gr
#endif /* INCLUDED_SATNOGS_FRAME_ENCODER_H */

View File

@ -55,7 +55,6 @@ list(APPEND satnogs_sources
doppler_correction_cc_impl.cc
doppler_fit.cc
frame_decoder_impl.cc
frame_encoder_impl.cc
frame_file_sink_impl.cc
freq_drift.cc
golay24.cc
@ -96,6 +95,7 @@ add_dependencies(gnuradio-satnogs fec)
target_link_libraries(gnuradio-satnogs PUBLIC
${Boost_LIBRARIES}
Boost::chrono
gnuradio::gnuradio-runtime
gnuradio::gnuradio-fft
gnuradio::gnuradio-blocks
@ -144,7 +144,7 @@ list(APPEND test_satnogs_sources
qa_golay24.cc
)
# Anything we need to link to for the unit tests go here
list(APPEND GR_TEST_TARGET_DEPS gnuradio-satnogs Boost::chrono)
list(APPEND GR_TEST_TARGET_DEPS gnuradio-satnogs)
if(NOT test_satnogs_sources)
MESSAGE(STATUS "No C++ unit tests... skipping")

View File

@ -1,75 +0,0 @@
/* -*- c++ -*- */
/*
* gr-satnogs: SatNOGS GNU Radio Out-Of-Tree Module
*
* Copyright (C) 2016, 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/>.
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <gnuradio/io_signature.h>
#include "frame_encoder_impl.h"
namespace gr {
namespace satnogs {
frame_encoder::sptr
frame_encoder::make(bool append_preamble, bool ecss_encap,
const std::string &dest_addr, uint8_t dest_ssid,
const std::string &src_addr, uint8_t src_ssid)
{
return gnuradio::get_initial_sptr(
new frame_encoder_impl(append_preamble, ecss_encap, dest_addr,
dest_ssid, src_addr, src_ssid));
}
/*
* The private constructor
*/
frame_encoder_impl::frame_encoder_impl(bool append_preamble,
bool ecss_encap,
const std::string &dest_addr,
uint8_t dest_ssid,
const std::string &src_addr,
uint8_t src_ssid) :
gr::sync_block("frame_encoder", gr::io_signature::make(0, 0, 0),
gr::io_signature::make(0, 0, 0))
{
}
/*
* Our virtual destructor.
*/
frame_encoder_impl::~frame_encoder_impl()
{
}
int
frame_encoder_impl::work(int noutput_items,
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items)
{
// Do <+signal processing+>
// Tell runtime system how many output items we produced.
return noutput_items;
}
} /* namespace satnogs */
} /* namespace gr */

View File

@ -1,49 +0,0 @@
/* -*- c++ -*- */
/*
* gr-satnogs: SatNOGS GNU Radio Out-Of-Tree Module
*
* Copyright (C) 2016, 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/>.
*/
#ifndef INCLUDED_SATNOGS_FRAME_ENCODER_IMPL_H
#define INCLUDED_SATNOGS_FRAME_ENCODER_IMPL_H
#include <satnogs/frame_encoder.h>
namespace gr {
namespace satnogs {
class frame_encoder_impl : public frame_encoder {
private:
// Nothing to declare in this block.
public:
frame_encoder_impl(bool append_preamble, bool ecss_encap,
const std::string &dest_addr, uint8_t dest_ssid,
const std::string &src_addr, uint8_t src_ssid);
~frame_encoder_impl();
// Where all the action really happens
int
work(int noutput_items, gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items);
};
} // namespace satnogs
} // namespace gr
#endif /* INCLUDED_SATNOGS_FRAME_ENCODER_IMPL_H */

View File

@ -22,14 +22,15 @@
This is the GNU Radio SATNOGS module. Place your Python package
description here (python/__init__.py).
'''
from __future__ import unicode_literals
import sys
# import swig generated symbols into the satnogs namespace
try:
# this might fail if the module is python-only
from satnogs_swig import *
from hw_settings import *
from utils import *
from .satnogs_swig import *
from .hw_settings import *
from .utils import *
except ImportError as err:
sys.stderr.write("Failed to import SatNOGS ({})\n".format(err))
sys.stderr.write("Consider first to run 'sudo ldconfig'\n")

View File

@ -39,7 +39,10 @@ include(GrPython)
########################################################################
# Setup swig generation
########################################################################
set(GR_SWIG_INCLUDE_DIRS $<TARGET_PROPERTY:gnuradio::runtime_swig,INTERFACE_INCLUDE_DIRECTORIES>)
set(GR_SWIG_INCLUDE_DIRS
$<TARGET_PROPERTY:gnuradio::runtime_swig,INTERFACE_INCLUDE_DIRECTORIES>
)
set(GR_SWIG_TARGET_DEPS gnuradio::runtime_swig)
set(GR_SWIG_LIBRARIES gnuradio-satnogs)
@ -50,6 +53,11 @@ else()
set(INCLUDE_DEBUG_BLOCKS_BOOL_VAL 0)
endif()
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/satnogs_swig.py.in
${CMAKE_CURRENT_BINARY_DIR}/satnogs_swig.py
@ONLY)
if(${INCLUDE_DEBUG_BLOCKS})
set(SATONGS_SWIG_FILES
satnogs_swig0
@ -61,13 +69,24 @@ else()
)
endif()
set(GR_SWIG_DOC_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../include)
foreach(swigfile ${SATONGS_SWIG_FILES})
set(GR_SWIG_DOC_FILE ${CMAKE_CURRENT_BINARY_DIR}/${swigfile}_doc.i)
GR_SWIG_MAKE(${swigfile} ${swigfile}.i)
GR_SWIG_INSTALL(TARGETS ${swigfile} DESTINATION ${GR_PYTHON_DIR}/satnogs)
list(APPEND SWIGFILES ${swigfile}.i)
list(APPEND SWIGDOCFILES ${CMAKE_CURRENT_BINARY_DIR}/${swigfile}_doc.i)
set(GR_SWIG_DOC_FILE ${CMAKE_CURRENT_BINARY_DIR}/${swigfile}_doc.i)
set(GR_SWIG_DOC_DIRS
${CMAKE_CURRENT_SOURCE_DIR}/../include
${CMAKE_CURRENT_BINARY_DIR}/../include
)
set(GR_SWIG_LIBRARIES gnuradio-satnogs)
GR_SWIG_MAKE(${swigfile} ${swigfile}.i)
GR_SWIG_INSTALL(
TARGETS ${swigfile}
DESTINATION ${GR_PYTHON_DIR}/satnogs
)
list(APPEND SWIGFILES ${swigfile}.i)
list(APPEND SWIGDOCFILES ${CMAKE_CURRENT_BINARY_DIR}/${swigfile}_doc.i)
endforeach(swigfile)
install(
@ -75,4 +94,9 @@ install(
${SWIGFILES}
${SWIGDOCFILES}
DESTINATION ${GR_INCLUDE_DIR}/satnogs/swig
)
GR_PYTHON_INSTALL(
FILES ${CMAKE_CURRENT_BINARY_DIR}/satnogs_swig.py
DESTINATION ${GR_PYTHON_DIR}/satnogs
)

View File

@ -1,8 +1,8 @@
#! /usr/bin/python
#! /usr/bin/python3
#
# gr-satnogs: SatNOGS GNU Radio Out-Of-Tree Module
#
# Copyright (C) 2018
# Copyright (C) 2018, 2019
# Libre Space Foundation <http://librespacefoundation.org/>
#
# This program is free software: you can redistribute it and/or modify
@ -19,6 +19,6 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>
#
from satnogs_swig0 import *
from .satnogs_swig0 import *
if @INCLUDE_DEBUG_BLOCKS_BOOL_VAL@:
from satnogs_debug_swig import *
from .satnogs_debug_swig import *

View File

@ -26,13 +26,10 @@
#include "satnogs/decoder.h"
#include "satnogs/doppler_correction_cc.h"
#include "satnogs/frame_decoder.h"
#include "satnogs/frame_encoder.h"
#include "satnogs/upsat_fsk_frame_encoder.h"
#include "satnogs/whitening.h"
#include "satnogs/udp_msg_sink.h"
#include "satnogs/coarse_doppler_correction_cc.h"
#include "satnogs/ax25_encoder_mb.h"
#include "satnogs/qb50_deframer.h"
#include "satnogs/waterfall_sink.h"
#include "satnogs/ogg_encoder.h"
#include "satnogs/ogg_source.h"
@ -78,15 +75,9 @@ GR_SWIG_BLOCK_MAGIC2(satnogs, tcp_rigctl_msg_source);
%include "satnogs/frame_decoder.h"
GR_SWIG_BLOCK_MAGIC2(satnogs, frame_decoder);
%include "satnogs/frame_encoder.h"
GR_SWIG_BLOCK_MAGIC2(satnogs, frame_encoder);
%include "satnogs/doppler_correction_cc.h"
GR_SWIG_BLOCK_MAGIC2(satnogs, doppler_correction_cc);
%include "satnogs/upsat_fsk_frame_encoder.h"
GR_SWIG_BLOCK_MAGIC2(satnogs, upsat_fsk_frame_encoder);
%include "satnogs/udp_msg_sink.h"
GR_SWIG_BLOCK_MAGIC2(satnogs, udp_msg_sink);
@ -96,9 +87,6 @@ GR_SWIG_BLOCK_MAGIC2(satnogs, coarse_doppler_correction_cc);
%include "satnogs/ax25_encoder_mb.h"
GR_SWIG_BLOCK_MAGIC2(satnogs, ax25_encoder_mb);
%include "satnogs/qb50_deframer.h"
GR_SWIG_BLOCK_MAGIC2(satnogs, qb50_deframer);
%include "satnogs/waterfall_sink.h"
GR_SWIG_BLOCK_MAGIC2(satnogs, waterfall_sink);