options:
  parameters:
    author: Zoe, Nestoras
    catch_exceptions: 'True'
    category: '[GRC Hier Blocks]'
    cmake_opt: ''
    comment: ''
    copyright: ''
    description: Generic FSK decoder to test zmq frame decode subscriber
    gen_cmake: 'On'
    gen_linking: dynamic
    generate_options: no_gui
    hier_block_src_path: '.:'
    id: frame_decoder_zmq_test
    max_nouts: '0'
    output_language: python
    placement: (0,0)
    qt_qss_theme: ''
    realtime_scheduling: ''
    run: 'True'
    run_command: '{python} -u {filename}'
    run_options: run
    sizing_mode: fixed
    thread_safe_setters: ''
    title: frame_decoder_zmq_test
    window_size: 2*1080,1080
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [8, 4.0]
    rotation: 0
    state: enabled

blocks:
- name: alpha
  id: variable
  parameters:
    comment: ''
    value: 0.5*1
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [1264, 8.0]
    rotation: 0
    state: enabled
- name: audio_samp_rate
  id: variable
  parameters:
    comment: ''
    value: '48000'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [1616, 12.0]
    rotation: 0
    state: enabled
- name: available_framings
  id: variable
  parameters:
    comment: 'Dictionary holding all the available framing schemes.

      Currently supported:

      * AX.25 (key: ax25)

      * AX.100 Mode 5 (key: ax100_mode5)

      * AX.100 Mode 6 (key: ax100_mode6)'
    value: '{''ax25'':variable_ax25_decoder_0, ''ax100_mode5'':variable_ax100_mode5_decoder_0,  ''ax100_mode6'':variable_ax100_mode6_decoder_0}'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [1024, 24.0]
    rotation: 0
    state: enabled
- name: decimation
  id: variable
  parameters:
    comment: ''
    value: max(4,satnogs.find_decimation(baudrate, 2, audio_samp_rate))
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [1760, 12]
    rotation: 0
    state: true
- name: variable_ax100_mode5_decoder_0
  id: variable_ax100_mode5_decoder
  parameters:
    comment: ''
    crc_type: CRC32_C
    custom_crc: satnogs.crc.crc16(0x1021, 0xFFFF, 0xFFFF, True, True)
    preamble: '[]'
    preamble_thrsh: '0'
    rs: 'True'
    sync_thrsh: '3'
    sync_word: '[0x93, 0x0B, 0x51, 0xDE]'
    whitening: ' satnogs.whitening.make_ccsds(True)'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [416, 4.0]
    rotation: 0
    state: true
- name: variable_ax100_mode6_decoder_0
  id: variable_ax100_mode6_decoder
  parameters:
    comment: ''
    crc_type: CRC32_C
    descramble: 'True'
    whitening: satnogs.whitening.make_ccsds(True)
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [608, 8.0]
    rotation: 0
    state: enabled
- name: variable_ax25_decoder_0
  id: variable_ax25_decoder
  parameters:
    addr: '''GND'''
    comment: ''
    crc_check: 'True'
    descrambling: 'True'
    error_correction: 'False'
    frame_len: '1024'
    promisc: 'True'
    ssid: '0'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [240, 4.0]
    rotation: 0
    state: enabled
- name: analog_quadrature_demod_cf_0_0
  id: analog_quadrature_demod_cf
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    gain: '1.2'
    maxoutbuf: '0'
    minoutbuf: '0'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [848, 352.0]
    rotation: 0
    state: enabled
- name: baudrate
  id: parameter
  parameters:
    alias: ''
    comment: ''
    hide: none
    label: ''
    short_id: ''
    type: eng_float
    value: '2400'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [1496, 12.0]
    rotation: 0
    state: enabled
- name: bb_freq
  id: parameter
  parameters:
    alias: ''
    comment: ''
    hide: none
    label: Baseband CORDIC frequency (if the device supports it)
    short_id: ''
    type: eng_float
    value: '0.0'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [1976, 156.0]
    rotation: 0
    state: disabled
- name: blocks_file_source_0
  id: blocks_file_source
  parameters:
    affinity: ''
    alias: ''
    begin_tag: pmt.PMT_NIL
    comment: ''
    file: iq_9888458.raw
    length: '0'
    maxoutbuf: '0'
    minoutbuf: '0'
    offset: '0'
    repeat: 'False'
    type: short
    vlen: '1'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [168, 204.0]
    rotation: 0
    state: true
- name: blocks_interleaved_short_to_complex_0
  id: blocks_interleaved_short_to_complex
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    maxoutbuf: '0'
    minoutbuf: '0'
    scale_factor: '32768'
    swap: 'False'
    vector_input: 'False'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [408, 228.0]
    rotation: 0
    state: true
- name: dc_blocker_xx_0
  id: dc_blocker_xx
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    length: '1024'
    long_form: 'True'
    maxoutbuf: '0'
    minoutbuf: '0'
    type: ff
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [1040, 344.0]
    rotation: 0
    state: enabled
- name: dc_removal
  id: parameter
  parameters:
    alias: ''
    comment: ''
    hide: none
    label: Remove automatically the DC offset (if the device support it)
    short_id: ''
    type: str
    value: '"False"'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [1816, 156.0]
    rotation: 0
    state: disabled
- name: digital_binary_slicer_fb_0
  id: digital_binary_slicer_fb
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    maxoutbuf: '0'
    minoutbuf: '0'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [1272, 488.0]
    rotation: 180
    state: enabled
- name: digital_clock_recovery_mm_xx_0
  id: digital_clock_recovery_mm_xx
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    gain_mu: 0.5/8.0
    gain_omega: 2 * math.pi / 100
    maxoutbuf: '0'
    minoutbuf: '0'
    mu: '0.5'
    omega: '2'
    omega_relative_limit: '0.01'
    type: float
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [1208, 328.0]
    rotation: 0
    state: enabled
- name: digital_fll_band_edge_cc_0
  id: digital_fll_band_edge_cc
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    filter_size: int((audio_samp_rate// baudrate)*2+1)
    maxoutbuf: '0'
    minoutbuf: '0'
    rolloff: alpha
    samps_per_sym: audio_samp_rate/ baudrate
    type: cc
    w: 2*math.pi/(audio_samp_rate/ baudrate)/100
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [400, 360.0]
    rotation: 0
    state: enabled
- name: framing
  id: parameter
  parameters:
    alias: ''
    comment: ''
    hide: none
    label: the framing scheme to use [ax25, ax100_mode5, ax100_mode6]
    short_id: ''
    type: str
    value: '"ax100_mode5"'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [824, 8.0]
    rotation: 0
    state: true
- name: import_0
  id: import
  parameters:
    alias: ''
    comment: ''
    imports: import math
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [16, 164.0]
    rotation: 0
    state: enabled
- name: low_pass_filter_0
  id: low_pass_filter
  parameters:
    affinity: ''
    alias: ''
    beta: '6.76'
    comment: ''
    cutoff_freq: 0.625 * baudrate
    decim: decimation // 2
    gain: '1'
    interp: '1'
    maxoutbuf: '0'
    minoutbuf: '0'
    samp_rate: baudrate*decimation
    type: fir_filter_ccf
    width: baudrate / 8.0
    win: window.WIN_HAMMING
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [648, 300.0]
    rotation: 0
    state: enabled
- name: other_settings
  id: parameter
  parameters:
    alias: ''
    comment: ''
    hide: none
    label: Soapy Channel other settings
    short_id: ''
    type: str
    value: '""'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [1664, 156.0]
    rotation: 0
    state: disabled
- name: ppm
  id: parameter
  parameters:
    alias: ''
    comment: 'The frequency correction in PPM

      to correct for a local oscillator frequency deviation'
    hide: none
    label: ''
    short_id: ''
    type: eng_float
    value: '0'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [1856, 12.0]
    rotation: 0
    state: disabled
- name: satnogs_frame_decoder_0_0
  id: satnogs_frame_decoder
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    decoder_object: available_framings[framing]
    itype: byte
    maxoutbuf: '0'
    minoutbuf: '0'
    vlen: '1'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [992, 488.0]
    rotation: 180
    state: enabled
- name: tune_args
  id: parameter
  parameters:
    alias: ''
    comment: ''
    hide: none
    label: Soapy Channel Tune arguments
    short_id: ''
    type: str
    value: '""'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [1496, 156.0]
    rotation: 0
    state: disabled
- name: virtual_sink_0
  id: virtual_sink
  parameters:
    alias: ''
    comment: ''
    stream_id: doppler_corrected
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [640, 236.0]
    rotation: 0
    state: enabled
- name: virtual_source_0
  id: virtual_source
  parameters:
    alias: ''
    comment: ''
    stream_id: doppler_corrected
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [136, 400.0]
    rotation: 0
    state: true
- name: zeromq_pub_msg_sink_0
  id: zeromq_pub_msg_sink
  parameters:
    address: zmq_pub_uri
    affinity: ''
    alias: ''
    bind: 'True'
    comment: ''
    timeout: '100'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [736, 504.0]
    rotation: 180
    state: enabled
- name: zmq_pub_uri
  id: parameter
  parameters:
    alias: ''
    comment: ''
    hide: none
    label: ''
    short_id: ''
    type: str
    value: tcp://127.0.0.1:55555
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [984, 632.0]
    rotation: 0
    state: enabled

connections:
- [analog_quadrature_demod_cf_0_0, '0', dc_blocker_xx_0, '0']
- [blocks_file_source_0, '0', blocks_interleaved_short_to_complex_0, '0']
- [blocks_interleaved_short_to_complex_0, '0', virtual_sink_0, '0']
- [dc_blocker_xx_0, '0', digital_clock_recovery_mm_xx_0, '0']
- [digital_binary_slicer_fb_0, '0', satnogs_frame_decoder_0_0, '0']
- [digital_clock_recovery_mm_xx_0, '0', digital_binary_slicer_fb_0, '0']
- [digital_fll_band_edge_cc_0, '0', low_pass_filter_0, '0']
- [low_pass_filter_0, '0', analog_quadrature_demod_cf_0_0, '0']
- [satnogs_frame_decoder_0_0, out, zeromq_pub_msg_sink_0, in]
- [virtual_source_0, '0', digital_fll_band_edge_cc_0, '0']

metadata:
  file_format: 1
  grc_version: 3.10.5.1
