From 0bf2c776befa6ce7607686d670d2ee4a6c97c9f4 Mon Sep 17 00:00:00 2001 From: Glenn Bradford <glenn.bradford@unimelb.edu.au> Date: Wed, 27 Apr 2022 09:50:15 +1000 Subject: [PATCH] add cdc packet phy rx, add sw loopback --- examples/cdc_packet_loopback.grc | 791 +++++++++++++++++++++++++++++++ examples/packet_phy_rx.grc | 666 ++++++++++++++++++++++++++ 2 files changed, 1457 insertions(+) create mode 100644 examples/cdc_packet_loopback.grc create mode 100644 examples/packet_phy_rx.grc diff --git a/examples/cdc_packet_loopback.grc b/examples/cdc_packet_loopback.grc new file mode 100644 index 0000000..8cd127e --- /dev/null +++ b/examples/cdc_packet_loopback.grc @@ -0,0 +1,791 @@ +options: + parameters: + author: '' + catch_exceptions: 'True' + category: '[GRC Hier Blocks]' + cmake_opt: '' + comment: '' + copyright: University of Melbourne + description: '' + gen_cmake: 'On' + gen_linking: dynamic + generate_options: qt_gui + hier_block_src_path: '.:' + id: cdc_pkt_sw_loopback + 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: Transmit + window_size: (1000,1000) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [8, 8] + rotation: 0 + state: enabled + +blocks: +- name: bps_payload + id: variable_qtgui_chooser + parameters: + comment: '' + gui_hint: 2, 1, 1, 1 + label: Payload Constellation + label0: BPSK + label1: QPSK + label2: 8PSK + label3: 16QAM + label4: '' + labels: '[]' + num_opts: '3' + option0: '1' + option1: '2' + option2: '3' + option3: '4' + option4: '4' + options: '[0, 1, 2]' + orient: Qt.QVBoxLayout + type: int + value: '1' + widget: combo_box + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1088, 12.0] + rotation: 0 + state: true +- name: chan_gain + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: 0, 1, 1, 1 + label: Channel Gain + min_len: '200' + orient: QtCore.Qt.Horizontal + rangeType: float + start: '-1' + step: '0.1' + stop: '1' + value: '0.0' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [832, 12.0] + rotation: 0 + state: true +- name: chan_phase + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: 1, 1, 1, 1 + label: Channel Phase + min_len: '200' + orient: QtCore.Qt.Horizontal + rangeType: float + start: -np.pi + step: 2*np.pi/100 + stop: np.pi + value: '0.0' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [960, 12.0] + rotation: 0 + state: true +- name: excess_bw + id: variable + parameters: + comment: '' + value: '0.350' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [184, 76.0] + rotation: 0 + state: enabled +- name: freq_offset + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: 1, 0, 1, 1 + label: Frequency Offset + min_len: '200' + orient: QtCore.Qt.Horizontal + rangeType: float + start: -100e-3 + step: 100e-6 + stop: 100e-3 + value: '0.0' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [568, 12.0] + rotation: 0 + state: true +- name: pld_data + id: variable + parameters: + comment: '' + value: np.arange(20, dtype=np.uint8) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [48, 172.0] + rotation: 0 + state: enabled +- name: samp_rate + id: variable + parameters: + comment: '' + value: symb_rate * sps + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [352, 12.0] + rotation: 0 + state: enabled +- name: snr_db + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: 0, 0, 1, 1 + label: SNR (dB) + min_len: '200' + orient: QtCore.Qt.Horizontal + rangeType: float + start: '-10' + step: '0.1' + stop: '30' + value: '30' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [448, 12.0] + rotation: 0 + state: true +- name: sps + id: variable + parameters: + comment: '' + value: '2' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [280, 12.0] + rotation: 0 + state: enabled +- name: symb_rate + id: variable + parameters: + comment: '' + value: '250000' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [184, 12.0] + rotation: 0 + state: enabled +- name: time_offset + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: 2, 0, 1, 1 + label: Time Offset + min_len: '200' + orient: QtCore.Qt.Horizontal + rangeType: float + start: '0.999' + step: 100e-6 + stop: '1.001' + value: '1.00000' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [712, 12.0] + rotation: 0 + state: true +- name: blocks_message_debug_0 + id: blocks_message_debug + parameters: + affinity: '' + alias: '' + comment: '' + en_uvec: 'True' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [832, 520.0] + rotation: 0 + state: enabled +- name: blocks_message_strobe_0 + id: blocks_message_strobe + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + msg: pmt.cons(pmt.PMT_NIL, pmt.init_u8vector(len(pld_data), pld_data)) + period: '1000' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [48, 236.0] + rotation: 0 + state: true +- name: blocks_throttle_0 + id: blocks_throttle + parameters: + affinity: '' + alias: '' + comment: '' + ignoretag: 'True' + maxoutbuf: '0' + minoutbuf: '0' + samples_per_second: samp_rate + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [800, 244.0] + rotation: 0 + state: true +- name: channels_channel_model_0 + id: channels_channel_model + parameters: + affinity: '' + alias: '' + block_tags: 'True' + comment: '' + epsilon: time_offset + freq_offset: freq_offset + maxoutbuf: '0' + minoutbuf: '0' + noise_voltage: pow(10, -snr_db/20) + seed: '0' + taps: pow(10, chan_gain) * np.exp(1j*chan_phase) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [272, 444.0] + rotation: 0 + state: true +- name: elen90089_packet_mac_tx_0 + id: elen90089_packet_mac_tx + parameters: + affinity: '' + alias: '' + bps: bps_payload + comment: '' + freq: None + gain: None + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [344, 228.0] + rotation: 0 + state: true +- name: import_0 + id: import + parameters: + alias: '' + comment: '' + imports: import numpy as np + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [8, 100.0] + rotation: 0 + state: true +- name: packet_phy_rx_0 + id: packet_phy_rx + parameters: + affinity: '' + alias: '' + comment: '' + excess_bw: excess_bw + maxoutbuf: '0' + minoutbuf: '0' + sps: sps + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [472, 384.0] + rotation: 0 + state: enabled +- name: packet_phy_tx_0 + id: packet_phy_tx + parameters: + affinity: '' + alias: '' + comment: '' + excess_bw: excess_bw + maxoutbuf: '0' + minoutbuf: '0' + show_burst: 'False' + show_header: 'False' + show_postcrc: 'False' + show_symbols: 'False' + sps: sps + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [616, 236.0] + rotation: 0 + state: true +- name: qtgui_const_sink_x_0 + id: qtgui_const_sink_x + parameters: + affinity: '' + alias: '' + alpha1: '1.0' + alpha10: '1.0' + alpha2: '1.0' + alpha3: '1.0' + alpha4: '1.0' + alpha5: '1.0' + alpha6: '1.0' + alpha7: '1.0' + alpha8: '1.0' + alpha9: '1.0' + autoscale: 'False' + axislabels: 'True' + color1: '"blue"' + color10: '"red"' + color2: '"red"' + color3: '"red"' + color4: '"red"' + color5: '"red"' + color6: '"red"' + color7: '"red"' + color8: '"red"' + color9: '"red"' + comment: '' + grid: 'False' + gui_hint: 5, 0, 1, 1 + label1: '' + label10: '' + label2: '' + label3: '' + label4: '' + label5: '' + label6: '' + label7: '' + label8: '' + label9: '' + legend: 'True' + marker1: '0' + marker10: '0' + marker2: '0' + marker3: '0' + marker4: '0' + marker5: '0' + marker6: '0' + marker7: '0' + marker8: '0' + marker9: '0' + name: '"Timing Recovery"' + nconnections: '1' + size: '256' + style1: '0' + style10: '0' + style2: '0' + style3: '0' + style4: '0' + style5: '0' + style6: '0' + style7: '0' + style8: '0' + style9: '0' + tr_chan: '0' + tr_level: '0.0' + tr_mode: qtgui.TRIG_MODE_FREE + tr_slope: qtgui.TRIG_SLOPE_POS + tr_tag: '""' + type: complex + update_time: '0.10' + width1: '1' + width10: '1' + width2: '1' + width3: '1' + width4: '1' + width5: '1' + width6: '1' + width7: '1' + width8: '1' + width9: '1' + xmax: '2' + xmin: '-2' + ymax: '2' + ymin: '-2' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [776, 364.0] + rotation: 0 + state: true +- name: qtgui_const_sink_x_0_1 + id: qtgui_const_sink_x + parameters: + affinity: '' + alias: '' + alpha1: '1.0' + alpha10: '1.0' + alpha2: '1.0' + alpha3: '1.0' + alpha4: '1.0' + alpha5: '1.0' + alpha6: '1.0' + alpha7: '1.0' + alpha8: '1.0' + alpha9: '1.0' + autoscale: 'False' + axislabels: 'True' + color1: '"blue"' + color10: '"red"' + color2: '"red"' + color3: '"red"' + color4: '"red"' + color5: '"red"' + color6: '"red"' + color7: '"red"' + color8: '"red"' + color9: '"red"' + comment: '' + grid: 'False' + gui_hint: 5, 1, 1, 1 + label1: Header + label10: '' + label2: Payload + label3: '' + label4: '' + label5: '' + label6: '' + label7: '' + label8: '' + label9: '' + legend: 'True' + marker1: '0' + marker10: '0' + marker2: '0' + marker3: '0' + marker4: '0' + marker5: '0' + marker6: '0' + marker7: '0' + marker8: '0' + marker9: '0' + name: '"Rx Symbols"' + nconnections: '2' + size: '256' + style1: '0' + style10: '0' + style2: '0' + style3: '0' + style4: '0' + style5: '0' + style6: '0' + style7: '0' + style8: '0' + style9: '0' + tr_chan: '0' + tr_level: '0.0' + tr_mode: qtgui.TRIG_MODE_FREE + tr_slope: qtgui.TRIG_SLOPE_POS + tr_tag: '""' + type: complex + update_time: '0.10' + width1: '1' + width10: '1' + width2: '1' + width3: '1' + width4: '1' + width5: '1' + width6: '1' + width7: '1' + width8: '1' + width9: '1' + xmax: '2' + xmin: '-2' + ymax: '2' + ymin: '-2' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [776, 444.0] + rotation: 0 + state: enabled +- name: qtgui_time_sink_x_0 + id: qtgui_time_sink_x + parameters: + affinity: '' + alias: '' + alpha1: '1.0' + alpha10: '1.0' + alpha2: '1.0' + alpha3: '1.0' + alpha4: '1.0' + alpha5: '1.0' + alpha6: '1.0' + alpha7: '1.0' + alpha8: '1.0' + alpha9: '1.0' + autoscale: 'False' + axislabels: 'True' + color1: blue + color10: dark blue + color2: red + color3: green + color4: black + color5: cyan + color6: magenta + color7: yellow + color8: dark red + color9: dark green + comment: '' + ctrlpanel: 'False' + entags: 'True' + grid: 'False' + gui_hint: 3, 0, 1, 2 + label1: In-phase + label10: Signal 10 + label2: Quadrature + label3: Signal 3 + label4: Signal 4 + label5: Signal 5 + label6: Signal 6 + label7: Signal 7 + label8: Signal 8 + label9: Signal 9 + legend: 'True' + marker1: '-1' + marker10: '-1' + marker2: '-1' + marker3: '-1' + marker4: '-1' + marker5: '-1' + marker6: '-1' + marker7: '-1' + marker8: '-1' + marker9: '-1' + name: '"Tx Waveform"' + nconnections: '1' + size: '1024' + srate: samp_rate + stemplot: 'False' + style1: '1' + style10: '1' + style2: '1' + style3: '1' + style4: '1' + style5: '1' + style6: '1' + style7: '1' + style8: '1' + style9: '1' + tr_chan: '0' + tr_delay: '0' + tr_level: '0.0' + tr_mode: qtgui.TRIG_MODE_TAG + tr_slope: qtgui.TRIG_SLOPE_POS + tr_tag: '"packet_len"' + type: complex + update_time: '0.10' + width1: '1' + width10: '1' + width2: '1' + width3: '1' + width4: '1' + width5: '1' + width6: '1' + width7: '1' + width8: '1' + width9: '1' + ylabel: Amplitude + ymax: '2' + ymin: '-2' + yunit: '""' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [992, 292.0] + rotation: 0 + state: enabled +- name: qtgui_time_sink_x_1 + id: qtgui_time_sink_x + parameters: + affinity: '' + alias: '' + alpha1: '1.0' + alpha10: '1.0' + alpha2: '1.0' + alpha3: '1.0' + alpha4: '1.0' + alpha5: '1.0' + alpha6: '1.0' + alpha7: '1.0' + alpha8: '1.0' + alpha9: '1.0' + autoscale: 'False' + axislabels: 'True' + color1: blue + color10: dark blue + color2: red + color3: green + color4: black + color5: cyan + color6: magenta + color7: yellow + color8: dark red + color9: dark green + comment: '' + ctrlpanel: 'False' + entags: 'True' + grid: 'False' + gui_hint: 4, 0, 1, 2 + label1: Signal 1 + label10: Signal 10 + label2: Signal 2 + label3: Signal 3 + label4: Signal 4 + label5: Signal 5 + label6: Signal 6 + label7: Signal 7 + label8: Signal 8 + label9: Signal 9 + legend: 'True' + marker1: '-1' + marker10: '-1' + marker2: '-1' + marker3: '-1' + marker4: '-1' + marker5: '-1' + marker6: '-1' + marker7: '-1' + marker8: '-1' + marker9: '-1' + name: '"Correlation"' + nconnections: '1' + size: '512' + srate: '1' + stemplot: 'False' + style1: '1' + style10: '1' + style2: '1' + style3: '1' + style4: '1' + style5: '1' + style6: '1' + style7: '1' + style8: '1' + style9: '1' + tr_chan: '0' + tr_delay: '0' + tr_level: '0.2' + tr_mode: qtgui.TRIG_MODE_TAG + tr_slope: qtgui.TRIG_SLOPE_POS + tr_tag: '"corr_start"' + type: float + update_time: '0.10' + width1: '1' + width10: '1' + width2: '1' + width3: '1' + width4: '1' + width5: '1' + width6: '1' + width7: '1' + width8: '1' + width9: '1' + ylabel: Squared Magnitude + ymax: '1.5' + ymin: '0' + yunit: '""' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [808, 620.0] + rotation: 0 + state: enabled +- name: virtual_sink_0 + id: virtual_sink + parameters: + alias: '' + comment: '' + stream_id: tx_waveform + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [992, 244.0] + rotation: 0 + state: true +- name: virtual_source_0 + id: virtual_source + parameters: + alias: '' + comment: '' + stream_id: tx_waveform + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [56, 476.0] + rotation: 0 + state: true + +connections: +- [blocks_message_strobe_0, strobe, elen90089_packet_mac_tx_0, mac_sdu] +- [blocks_throttle_0, '0', qtgui_time_sink_x_0, '0'] +- [blocks_throttle_0, '0', virtual_sink_0, '0'] +- [channels_channel_model_0, '0', packet_phy_rx_0, '0'] +- [elen90089_packet_mac_tx_0, mac_pdu, packet_phy_tx_0, phy_sdu] +- [packet_phy_rx_0, '0', qtgui_const_sink_x_0, '0'] +- [packet_phy_rx_0, '2', qtgui_const_sink_x_0_1, '0'] +- [packet_phy_rx_0, '3', qtgui_const_sink_x_0_1, '1'] +- [packet_phy_rx_0, '4', qtgui_time_sink_x_1, '0'] +- [packet_phy_rx_0, phy_sdu, blocks_message_debug_0, print_pdu] +- [packet_phy_tx_0, '0', blocks_throttle_0, '0'] +- [virtual_source_0, '0', channels_channel_model_0, '0'] + +metadata: + file_format: 1 diff --git a/examples/packet_phy_rx.grc b/examples/packet_phy_rx.grc new file mode 100644 index 0000000..96fe171 --- /dev/null +++ b/examples/packet_phy_rx.grc @@ -0,0 +1,666 @@ +options: + parameters: + author: '' + catch_exceptions: 'True' + category: '[elen90089]' + cmake_opt: '' + comment: '' + copyright: University of Melbourne + description: '' + gen_cmake: 'On' + gen_linking: dynamic + generate_options: hb + hier_block_src_path: '.:' + id: packet_phy_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: CDC Packet PHY Rx + window_size: (1000,1000) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [8, 8] + rotation: 0 + state: enabled + +blocks: +- name: hdr_const + id: variable_constellation + parameters: + comment: '' + const_points: '[-1-1j, -1+1j, 1+1j, 1-1j]' + dims: '1' + normalization: digital.constellation.AMPLITUDE_NORMALIZATION + precision: '8' + rot_sym: '4' + soft_dec_lut: None + sym_map: '[0, 1, 3, 2]' + type: bpsk + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [632, 12.0] + rotation: 0 + state: true +- name: hdr_format + id: header_format_cdc + parameters: + access_code: digital.packet_utils.default_access_code + alias: '' + bps: hdr_const.bits_per_symbol() + comment: '' + threshold: '3' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [448, 12.0] + rotation: 0 + state: true +- name: nfilts + id: variable + parameters: + comment: '' + value: '32' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [288, 356.0] + rotation: 0 + state: enabled +- name: pld_decoder + id: variable_dummy_decoder_def + parameters: + comment: '' + dim1: '1' + dim2: '1' + framebits: '2048' + ndim: '0' + value: '"ok"' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [728, 676.0] + rotation: 0 + state: enabled +- name: rrc_taps + id: variable_rrc_filter_taps + parameters: + alpha: excess_bw + comment: '' + gain: nfilts + ntaps: 11*sps*nfilts + samp_rate: sps*nfilts + sym_rate: '1.0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [152, 356.0] + rotation: 0 + state: enabled +- name: training_seq + id: variable + parameters: + comment: '' + value: '[(2.0*int(x) - 1.0) for x in digital.packet_utils.default_access_code]' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [544, 116.0] + rotation: 0 + state: true +- name: blocks_multiply_by_tag_value_cc_0 + id: blocks_multiply_by_tag_value_cc + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + tagname: chan_est + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [760, 164.0] + rotation: 0 + state: true +- name: blocks_tagged_stream_to_pdu_1 + id: blocks_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: [472, 620.0] + rotation: 0 + state: enabled +- name: blocks_unpack_k_bits_bb_0 + id: blocks_unpack_k_bits_bb + parameters: + affinity: '' + alias: '' + comment: '' + k: hdr_const.bits_per_symbol() + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [448, 524.0] + rotation: 0 + state: true +- name: digital_constellation_decoder_cb_0 + id: digital_constellation_decoder_cb + parameters: + affinity: '' + alias: '' + comment: '' + constellation: hdr_const + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [208, 524.0] + rotation: 0 + state: true +- 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: [992, 620.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() // 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: '"corr_start"' + type: complex + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1056, 140.0] + rotation: 0 + state: true +- 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: [616, 524.0] + rotation: 0 + state: true +- name: digital_symbol_sync_xx_0 + id: digital_symbol_sync_xx + parameters: + affinity: '' + alias: '' + comment: '' + constellation: digital.constellation_bpsk().base() + damping: '1.0' + loop_bw: '0.0157' + max_dev: '1.5' + maxoutbuf: '0' + minoutbuf: '0' + nfilters: nfilts + osps: '1' + pfb_mf_taps: rrc_taps + resamp_type: digital.IR_PFB_MF + sps: sps + ted_gain: '1.0' + ted_type: digital.TED_SIGNAL_TIMES_SLOPE_ML + type: cc + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [152, 164.0] + rotation: 0 + state: enabled +- name: elen90089_constellation_decoder_cf_0 + id: elen90089_constellation_decoder_cf + parameters: + affinity: '' + alias: '' + bps: '1' + comment: '' + length_tag_name: payload symbols + maxoutbuf: '0' + minoutbuf: '0' + soft_decisions: 'True' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [208, 604.0] + rotation: 0 + state: enabled +- name: elen90089_corr_est_cc_0 + id: elen90089_corr_est_cc + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + sequence: training_seq + threshold: '0.7' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [544, 176.0] + rotation: 0 + state: true +- name: elen90089_costas_loop_cc_0 + id: elen90089_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: [1464, 96.0] + rotation: 0 + state: true +- name: elen90089_costas_loop_cc_0_0 + id: elen90089_costas_loop_cc + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + order: '2' + use_snr: 'False' + w: 6.28/200.0 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1464, 232.0] + rotation: 0 + state: true +- name: excess_bw + id: parameter + parameters: + alias: '' + comment: '' + hide: none + label: Excess BW + short_id: '' + type: eng_float + value: '0.350' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [336, 12.0] + rotation: 0 + state: true +- name: fec_async_decoder_0 + id: fec_async_decoder + parameters: + affinity: '' + alias: '' + comment: '' + decoder: pld_decoder + maxoutbuf: '0' + minoutbuf: '0' + mtu: '1500' + packed: 'True' + rev_pack: 'False' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [728, 612.0] + rotation: 0 + state: enabled +- name: import_0 + id: import + parameters: + alias: '' + comment: '' + imports: from gnuradio import fec + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [8, 116.0] + rotation: 0 + state: true +- name: pad_sink_0 + 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: [360, 116.0] + rotation: 180 + state: enabled +- name: pad_sink_0_0 + id: pad_sink + parameters: + affinity: '' + alias: '' + comment: '' + label: chan_est + num_streams: '1' + optional: 'True' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [808, 116.0] + rotation: 180 + state: enabled +- name: pad_sink_0_0_0 + id: pad_sink + parameters: + affinity: '' + alias: '' + comment: '' + label: sym_hdr + num_streams: '1' + optional: 'True' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1728, 44.0] + rotation: 0 + state: enabled +- name: pad_sink_0_0_0_0 + id: pad_sink + parameters: + affinity: '' + alias: '' + comment: '' + label: sym_pld + num_streams: '1' + optional: 'True' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1728, 180.0] + rotation: 0 + state: enabled +- name: pad_sink_1 + id: pad_sink + parameters: + affinity: '' + alias: '' + comment: '' + label: header_data + num_streams: '1' + optional: 'True' + type: message + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [888, 476.0] + rotation: 0 + state: true +- name: pad_sink_2 + id: pad_sink + parameters: + affinity: '' + alias: '' + comment: '' + label: phy_sdu + num_streams: '1' + optional: 'True' + type: message + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1184, 620.0] + rotation: 0 + state: enabled +- name: pad_sink_7 + id: pad_sink + parameters: + affinity: '' + alias: '' + comment: '' + label: corr + num_streams: '1' + optional: 'True' + type: float + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [608, 244.0] + rotation: 180 + state: enabled +- name: pad_source_0 + id: pad_source + parameters: + affinity: '' + alias: '' + comment: '' + label: iq + 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, 236.0] + rotation: 0 + state: true +- name: sps + id: parameter + parameters: + alias: '' + comment: '' + hide: none + label: Samps per Symb + short_id: '' + type: intx + value: '2' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [192, 12.0] + rotation: 0 + state: true +- name: virtual_sink_1 + id: virtual_sink + parameters: + alias: '' + comment: '' + stream_id: sym_hdr + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1728, 92.0] + rotation: 0 + state: true +- name: virtual_sink_1_0 + id: virtual_sink + parameters: + alias: '' + comment: '' + stream_id: sym_pld + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1728, 228.0] + rotation: 0 + state: true +- name: virtual_sink_2 + id: virtual_sink + parameters: + alias: '' + comment: '' + stream_id: header_data + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [888, 524.0] + rotation: 0 + state: true +- name: virtual_source_0 + id: virtual_source + parameters: + alias: '' + comment: '' + stream_id: sym_hdr + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [16, 524.0] + rotation: 0 + state: true +- name: virtual_source_0_0 + id: virtual_source + parameters: + alias: '' + comment: '' + stream_id: sym_pld + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [16, 620.0] + rotation: 0 + state: true +- name: virtual_source_1 + id: virtual_source + parameters: + alias: '' + comment: '' + stream_id: header_data + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [768, 236.0] + rotation: 0 + state: true + +connections: +- [blocks_multiply_by_tag_value_cc_0, '0', digital_header_payload_demux_0, '0'] +- [blocks_multiply_by_tag_value_cc_0, '0', pad_sink_0_0, '0'] +- [blocks_tagged_stream_to_pdu_1, pdus, fec_async_decoder_0, in] +- [blocks_unpack_k_bits_bb_0, '0', digital_protocol_parser_b_0, '0'] +- [digital_constellation_decoder_cb_0, '0', blocks_unpack_k_bits_bb_0, '0'] +- [digital_crc32_async_bb_0, out, pad_sink_2, in] +- [digital_header_payload_demux_0, '0', elen90089_costas_loop_cc_0, '0'] +- [digital_header_payload_demux_0, '1', elen90089_costas_loop_cc_0_0, '0'] +- [digital_protocol_parser_b_0, info, pad_sink_1, in] +- [digital_protocol_parser_b_0, info, virtual_sink_2, '0'] +- [digital_symbol_sync_xx_0, '0', elen90089_corr_est_cc_0, '0'] +- [digital_symbol_sync_xx_0, '0', pad_sink_0, '0'] +- [elen90089_constellation_decoder_cf_0, '0', blocks_tagged_stream_to_pdu_1, '0'] +- [elen90089_corr_est_cc_0, '0', blocks_multiply_by_tag_value_cc_0, '0'] +- [elen90089_corr_est_cc_0, '1', pad_sink_7, '0'] +- [elen90089_costas_loop_cc_0, '0', pad_sink_0_0_0, '0'] +- [elen90089_costas_loop_cc_0, '0', virtual_sink_1, '0'] +- [elen90089_costas_loop_cc_0_0, '0', pad_sink_0_0_0_0, '0'] +- [elen90089_costas_loop_cc_0_0, '0', virtual_sink_1_0, '0'] +- [fec_async_decoder_0, out, digital_crc32_async_bb_0, in] +- [pad_source_0, '0', digital_symbol_sync_xx_0, '0'] +- [virtual_source_0, '0', digital_constellation_decoder_cb_0, '0'] +- [virtual_source_0_0, '0', elen90089_constellation_decoder_cf_0, '0'] +- [virtual_source_1, '0', digital_header_payload_demux_0, header_data] + +metadata: + file_format: 1 -- GitLab