options:
  parameters:
    author: ''
    catch_exceptions: 'True'
    category: Packet Operators
    cmake_opt: ''
    comment: ''
    copyright: ''
    description: ''
    gen_cmake: 'On'
    gen_linking: dynamic
    generate_options: hb
    hier_block_src_path: '.:'
    id: packet_rx
    max_nouts: '0'
    output_language: python
    placement: (0,0)
    qt_qss_theme: ''
    realtime_scheduling: ''
    run: 'True'
    run_command: '{python} -u {filename}'
    run_options: prompt
    sizing_mode: fixed
    thread_safe_setters: ''
    title: ''
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [8, 11]
    rotation: 0
    state: enabled

blocks:
- name: mark_delay
  id: variable
  parameters:
    comment: ''
    value: mark_delays[sps]
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [32, 436.0]
    rotation: 0
    state: enabled
- name: mark_delays
  id: variable
  parameters:
    comment: "Tag Marking Delay for \nCorr Est block, indexed\nby sps.\n\nFound empirically."
    value: '[0, 0, 34, 56, 87, 119]'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [32, 500.0]
    rotation: 0
    state: enabled
- name: modulated_sync_word
  id: variable_modulate_vector
  parameters:
    comment: ''
    data: preamble
    mod: rxmod
    taps: '[1]'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [744, 484.0]
    rotation: 0
    state: enabled
- name: nfilts
  id: variable
  parameters:
    comment: ''
    value: '32'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [8, 91]
    rotation: 0
    state: enabled
- name: preamble
  id: variable
  parameters:
    comment: ''
    value: preamble_select[int(1.0/hdr_dec.rate())]
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [728, 692.0]
    rotation: 0
    state: enabled
- name: preamble_dummy
  id: variable
  parameters:
    comment: 'use when header

      FEC is Dummy'
    value: '[0xac, 0xdd, 0xa4, 0xe2, 0xf2, 0x8c, 0x20, 0xfc]'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [560, 580.0]
    rotation: 0
    state: enabled
- name: preamble_rep
  id: variable
  parameters:
    comment: 'use when header

      FEC is Repetition (x3)'
    value: '[0xe3, 0x8f, 0xc0, 0xfc, 0x7f, 0xc7, 0xe3, 0x81, 0xc0, 0xff, 0x80, 0x38,
      0xff, 0xf0, 0x38, 0xe0, 0x0f, 0xc0, 0x03, 0x80, 0x00, 0xff, 0xff, 0xc0]'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [728, 580.0]
    rotation: 0
    state: enabled
- name: preamble_select
  id: variable
  parameters:
    comment: ''
    value: '{1: preamble_dummy, 3: preamble_rep}'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [560, 692.0]
    rotation: 0
    state: enabled
- name: rxmod
  id: variable
  parameters:
    comment: ''
    value: digital.generic_mod(hdr_const, False, sps, True, eb, False, False)
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [560, 516.0]
    rotation: 0
    state: enabled
- name: blocks_multiply_by_tag_value_cc_0
  id: blocks_multiply_by_tag_value_cc
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    maxoutbuf: '0'
    minoutbuf: '0'
    tagname: '"amp_est"'
    vlen: '1'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [376, 316.0]
    rotation: 0
    state: enabled
- name: blocks_tagged_stream_multiply_length_0
  id: blocks_tagged_stream_multiply_length
  parameters:
    affinity: ''
    alias: ''
    c: pld_const.bits_per_symbol()
    comment: ''
    lengthtagname: '"payload symbols"'
    maxoutbuf: '0'
    minoutbuf: '0'
    type: float
    vlen: '1'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [1320, 496.0]
    rotation: 180
    state: enabled
- name: digital_constellation_soft_decoder_cf_0
  id: digital_constellation_soft_decoder_cf
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    constellation: pld_const
    maxoutbuf: '0'
    minoutbuf: '0'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [1440, 356.0]
    rotation: 0
    state: enabled
- name: digital_constellation_soft_decoder_cf_0_0
  id: digital_constellation_soft_decoder_cf
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    constellation: hdr_const
    maxoutbuf: '0'
    minoutbuf: '0'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [1424, 196.0]
    rotation: 0
    state: enabled
- name: digital_corr_est_cc_0
  id: digital_corr_est_cc
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    mark_delay: mark_delay
    maxoutbuf: '0'
    minoutbuf: '0'
    sps: sps
    symbols: modulated_sync_word
    threshold: '0.999'
    threshold_method: digital.THRESHOLD_ABSOLUTE
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [144, 308.0]
    rotation: 0
    state: enabled
- name: digital_costas_loop_cc_0_0
  id: digital_costas_loop_cc
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    maxoutbuf: '0'
    minoutbuf: '0'
    order: hdr_const.arity()
    use_snr: 'False'
    w: 6.28/200.0
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [1232, 200.0]
    rotation: 0
    state: enabled
- name: digital_costas_loop_cc_0_0_0
  id: digital_costas_loop_cc
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    maxoutbuf: '0'
    minoutbuf: '0'
    order: pld_const.arity()
    use_snr: 'False'
    w: 6.28/200.0
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [1232, 360.0]
    rotation: 0
    state: enabled
- name: digital_crc32_async_bb_0
  id: digital_crc32_async_bb
  parameters:
    affinity: ''
    alias: ''
    check: 'True'
    comment: ''
    maxoutbuf: '0'
    minoutbuf: '0'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [1680, 580.0]
    rotation: 0
    state: enabled
- name: digital_header_payload_demux_0
  id: digital_header_payload_demux
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    guard_interval: '0'
    header_len: (hdr_format.header_nbits() * int(1.0/hdr_dec.rate())) //  hdr_const.bits_per_symbol()
    header_padding: '0'
    items_per_symbol: '1'
    length_tag_key: '"payload symbols"'
    maxoutbuf: '0'
    minoutbuf: '0'
    output_symbols: 'True'
    samp_rate: '1'
    special_tags: '[]'
    timing_tag_key: '"rx_time"'
    trigger_tag_key: '"time_est"'
    type: complex
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [856, 244.0]
    rotation: 0
    state: enabled
- name: digital_pfb_clock_sync_xxx_0
  id: digital_pfb_clock_sync_xxx
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    filter_size: nfilts
    init_phase: nfilts/2
    loop_bw: 6.28/400.0
    max_dev: '1.5'
    maxoutbuf: '0'
    minoutbuf: '0'
    osps: '1'
    sps: sps
    taps: psf_taps
    type: ccf
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [568, 276.0]
    rotation: 0
    state: enabled
- name: digital_protocol_parser_b_0
  id: digital_protocol_parser_b
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    format: hdr_format
    maxoutbuf: '0'
    minoutbuf: '0'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [856, 140.0]
    rotation: 180
    state: enabled
- name: eb
  id: parameter
  parameters:
    alias: ''
    comment: ''
    hide: none
    label: Filter Rolloff
    short_id: ''
    type: eng_float
    value: '0.35'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [1408, 11]
    rotation: 0
    state: enabled
- name: fec_async_decoder_0
  id: fec_async_decoder
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    decoder: pld_dec
    maxoutbuf: '0'
    minoutbuf: '0'
    mtu: 1500*8
    packed: 'True'
    rev_pack: 'False'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [1440, 572.0]
    rotation: 0
    state: enabled
- name: fec_generic_decoder_0
  id: fec_generic_decoder
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    decoder: hdr_dec
    itype: float
    maxoutbuf: '0'
    minoutbuf: '0'
    otype: byte
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [1424, 140.0]
    rotation: 180
    state: enabled
- name: hdr_const
  id: parameter
  parameters:
    alias: ''
    comment: ''
    hide: none
    label: Header constellation
    short_id: ''
    type: ''
    value: digital.constellation_calcdist((digital.psk_2()[0]), (digital.psk_2()[1]),
      2, 1).base()
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [544, 11]
    rotation: 0
    state: enabled
- name: hdr_dec
  id: parameter
  parameters:
    alias: ''
    comment: ''
    hide: none
    label: Header FEC Decoder
    short_id: ''
    type: ''
    value: ' fec.dummy_decoder.make(8000)'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [192, 11]
    rotation: 0
    state: enabled
- name: hdr_format
  id: parameter
  parameters:
    alias: ''
    comment: ''
    hide: none
    label: Header Formatter
    short_id: ''
    type: ''
    value: digital.header_format_default(digital.packet_utils.default_access_code,
      0)
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [904, 11]
    rotation: 0
    state: enabled
- name: pad_sink_0
  id: pad_sink
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    label: pkt out
    num_streams: '1'
    optional: 'True'
    type: message
    vlen: '1'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [1840, 580.0]
    rotation: 0
    state: enabled
- name: pad_sink_1
  id: pad_sink
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    label: precrc
    num_streams: '1'
    optional: 'True'
    type: message
    vlen: '1'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [1680, 628.0]
    rotation: 0
    state: enabled
- name: pad_sink_2
  id: pad_sink
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    label: hdr_out
    num_streams: '1'
    optional: 'True'
    type: complex
    vlen: '1'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [1024, 196.0]
    rotation: 180
    state: enabled
- name: pad_sink_3
  id: pad_sink
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    label: pld_out
    num_streams: '1'
    optional: 'True'
    type: complex
    vlen: '1'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [1024, 420.0]
    rotation: 180
    state: enabled
- name: pad_sink_3_0
  id: pad_sink
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    label: pld_phs
    num_streams: '1'
    optional: 'True'
    type: complex
    vlen: '1'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [1456, 308.0]
    rotation: 0
    state: enabled
- name: pad_sink_5
  id: pad_sink
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    label: timing
    num_streams: '1'
    optional: 'True'
    type: complex
    vlen: '1'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [664, 220.0]
    rotation: 180
    state: enabled
- name: pad_sink_7
  id: pad_sink
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    label: corr est
    num_streams: '1'
    optional: 'True'
    type: complex
    vlen: '1'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [232, 420.0]
    rotation: 180
    state: enabled
- name: pad_source_0
  id: pad_source
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    label: in
    maxoutbuf: '0'
    minoutbuf: '0'
    num_streams: '1'
    optional: 'False'
    type: complex
    vlen: '1'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [8, 340.0]
    rotation: 0
    state: enabled
- name: pdu_tagged_stream_to_pdu_0
  id: pdu_tagged_stream_to_pdu
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    maxoutbuf: '0'
    minoutbuf: '0'
    tag: '"payload symbols"'
    type: float
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [1200, 580.0]
    rotation: 0
    state: enabled
- name: pld_const
  id: parameter
  parameters:
    alias: ''
    comment: ''
    hide: none
    label: Payload constellation
    short_id: ''
    type: ''
    value: digital.constellation_calcdist((digital.psk_2()[0]), (digital.psk_2()[1]),
      2, 1).base()
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [720, 11]
    rotation: 0
    state: enabled
- name: pld_dec
  id: parameter
  parameters:
    alias: ''
    comment: ''
    hide: none
    label: Payload FEC Decoder
    short_id: ''
    type: ''
    value: ' fec.dummy_decoder.make(8000)'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [368, 11]
    rotation: 0
    state: enabled
- name: psf_taps
  id: parameter
  parameters:
    alias: ''
    comment: ''
    hide: none
    label: Pulse Shape Filter
    short_id: ''
    type: ''
    value: '[0,]'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [1256, 11]
    rotation: 0
    state: enabled
- name: sps
  id: parameter
  parameters:
    alias: ''
    comment: ''
    hide: none
    label: Samples per Symbol
    short_id: ''
    type: eng_float
    value: '2'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [1096, 11]
    rotation: 0
    state: enabled

connections:
- [blocks_multiply_by_tag_value_cc_0, '0', digital_pfb_clock_sync_xxx_0, '0']
- [blocks_tagged_stream_multiply_length_0, '0', pdu_tagged_stream_to_pdu_0, '0']
- [digital_constellation_soft_decoder_cf_0, '0', blocks_tagged_stream_multiply_length_0,
  '0']
- [digital_constellation_soft_decoder_cf_0_0, '0', fec_generic_decoder_0, '0']
- [digital_corr_est_cc_0, '0', blocks_multiply_by_tag_value_cc_0, '0']
- [digital_corr_est_cc_0, '1', pad_sink_7, '0']
- [digital_costas_loop_cc_0_0, '0', digital_constellation_soft_decoder_cf_0_0, '0']
- [digital_costas_loop_cc_0_0_0, '0', digital_constellation_soft_decoder_cf_0, '0']
- [digital_costas_loop_cc_0_0_0, '0', pad_sink_3_0, '0']
- [digital_crc32_async_bb_0, out, pad_sink_0, in]
- [digital_header_payload_demux_0, '0', digital_costas_loop_cc_0_0, '0']
- [digital_header_payload_demux_0, '0', pad_sink_2, '0']
- [digital_header_payload_demux_0, '1', digital_costas_loop_cc_0_0_0, '0']
- [digital_header_payload_demux_0, '1', pad_sink_3, '0']
- [digital_pfb_clock_sync_xxx_0, '0', digital_header_payload_demux_0, '0']
- [digital_pfb_clock_sync_xxx_0, '0', pad_sink_5, '0']
- [digital_protocol_parser_b_0, info, digital_header_payload_demux_0, header_data]
- [fec_async_decoder_0, out, digital_crc32_async_bb_0, in]
- [fec_async_decoder_0, out, pad_sink_1, in]
- [fec_generic_decoder_0, '0', digital_protocol_parser_b_0, '0']
- [pad_source_0, '0', digital_corr_est_cc_0, '0']
- [pdu_tagged_stream_to_pdu_0, pdus, fec_async_decoder_0, in]

metadata:
  file_format: 1
