options:
  parameters:
    author: ''
    catch_exceptions: 'True'
    category: Custom
    cmake_opt: ''
    comment: ''
    copyright: ''
    description: Example of an OFDM Transmitter
    gen_cmake: 'On'
    gen_linking: dynamic
    generate_options: qt_gui
    hier_block_src_path: '.:'
    id: tx_ofdm
    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: OFDM Tx
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [16, 12.0]
    rotation: 0
    state: enabled

blocks:
- name: fft_len
  id: variable
  parameters:
    comment: ''
    value: '64'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [282, 16]
    rotation: 0
    state: enabled
- name: header_formatter
  id: variable
  parameters:
    comment: ''
    value: digital.packet_header_ofdm(occupied_carriers, n_syms=1, len_tag_key=length_tag_key,
      frame_len_tag_key=length_tag_key, bits_per_header_sym=header_mod.bits_per_symbol(),
      bits_per_payload_sym=payload_mod.bits_per_symbol(), scramble_header=False)
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [989, 74]
    rotation: 0
    state: enabled
- name: header_mod
  id: variable
  parameters:
    comment: ''
    value: digital.constellation_bpsk()
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [666, 16]
    rotation: 0
    state: enabled
- name: length_tag_key
  id: variable
  parameters:
    comment: ''
    value: '"packet_len"'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [442, 16]
    rotation: 0
    state: enabled
- name: occupied_carriers
  id: variable
  parameters:
    comment: ''
    value: (list(range(-26, -21)) + list(range(-20, -7)) + list(range(-6, 0)) + list(range(1,
      7)) + list(range(8, 21)) + list(range(22, 27)),)
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [584, 73]
    rotation: 0
    state: enabled
- name: packet_len
  id: variable
  parameters:
    comment: ''
    value: '96'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [570, 16]
    rotation: 0
    state: enabled
- name: payload_mod
  id: variable
  parameters:
    comment: ''
    value: digital.constellation_qpsk()
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [826, 16]
    rotation: 0
    state: enabled
- name: pilot_carriers
  id: variable
  parameters:
    comment: ''
    value: ((-21, -7, 7, 21,),)
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [746, 72]
    rotation: 0
    state: enabled
- name: pilot_symbols
  id: variable
  parameters:
    comment: ''
    value: ((1, 1, 1, -1,),)
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [874, 72]
    rotation: 0
    state: enabled
- name: rolloff
  id: variable
  parameters:
    comment: ''
    value: '0'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [986, 16]
    rotation: 0
    state: enabled
- name: samp_rate
  id: variable
  parameters:
    comment: ''
    value: '50000'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [346, 16]
    rotation: 0
    state: enabled
- name: sync_word1
  id: variable
  parameters:
    comment: ''
    value: '[0., 0., 0., 0., 0., 0., 0., 1.41421356, 0., -1.41421356, 0., 1.41421356,
      0., -1.41421356, 0., -1.41421356, 0., -1.41421356, 0., 1.41421356, 0., -1.41421356,
      0., 1.41421356, 0., -1.41421356, 0., -1.41421356, 0., -1.41421356, 0., -1.41421356,
      0., 1.41421356, 0., -1.41421356, 0., 1.41421356, 0., 1.41421356, 0., 1.41421356,
      0., -1.41421356, 0., 1.41421356, 0., 1.41421356, 0., 1.41421356, 0., -1.41421356,
      0., 1.41421356, 0., 1.41421356, 0., 1.41421356, 0., 0., 0., 0., 0., 0.]'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [282, 72]
    rotation: 0
    state: enabled
- name: sync_word2
  id: variable
  parameters:
    comment: ''
    value: '[0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 1, 1, -1, -1, -1, 1, -1, 1, 1, 1, 1,
      1, -1, -1, -1, -1, -1, 1, -1, -1, 1, -1, 0, 1, -1, 1, 1, 1, -1, 1, 1, 1, -1,
      1, 1, 1, 1, -1, 1, -1, -1, -1, 1, -1, 1, -1, -1, -1, -1, 0, 0, 0, 0, 0] '
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [410, 72]
    rotation: 0
    state: enabled
- name: analog_random_source_x_0
  id: analog_random_source_x
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    max: '255'
    maxoutbuf: '0'
    min: '0'
    minoutbuf: '0'
    num_samps: '1000'
    repeat: 'True'
    type: byte
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [90, 168]
    rotation: 0
    state: enabled
- name: blocks_multiply_const_vxx_0
  id: blocks_multiply_const_vxx
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    const: '0.05'
    maxoutbuf: '0'
    minoutbuf: '0'
    type: complex
    vlen: '1'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [274, 696]
    rotation: 0
    state: enabled
- name: blocks_repack_bits_bb_0
  id: blocks_repack_bits_bb
  parameters:
    affinity: ''
    alias: ''
    align_output: 'False'
    comment: ''
    endianness: gr.GR_LSB_FIRST
    k: '8'
    l: payload_mod.bits_per_symbol()
    len_tag_key: length_tag_key
    maxoutbuf: '0'
    minoutbuf: '0'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [714, 248]
    rotation: 0
    state: enabled
- name: blocks_stream_to_tagged_stream_0
  id: blocks_stream_to_tagged_stream
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    len_tag_key: length_tag_key
    maxoutbuf: '0'
    minoutbuf: '0'
    packet_len: packet_len
    type: byte
    vlen: '1'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [250, 184]
    rotation: 0
    state: enabled
- name: blocks_tag_debug_0
  id: blocks_tag_debug
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    display: 'False'
    filter: '""'
    name: Rx'd Packets
    num_inputs: '1'
    type: byte
    vlen: '1'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [786, 832]
    rotation: 0
    state: enabled
- name: blocks_tag_gate_0
  id: blocks_tag_gate
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    maxoutbuf: '0'
    minoutbuf: '0'
    propagate_tags: 'False'
    single_key: '""'
    type: complex
    vlen: '1'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [434, 688]
    rotation: 0
    state: enabled
- name: blocks_tagged_stream_mux_0
  id: blocks_tagged_stream_mux
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    lengthtagname: length_tag_key
    maxoutbuf: '0'
    minoutbuf: '0'
    ninputs: '2'
    tag_preserve_head_pos: '0'
    type: complex
    vlen: '1'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [586, 364]
    rotation: 0
    state: enabled
- 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: [626, 696]
    rotation: 0
    state: enabled
- name: channels_channel_model_0
  id: channels_channel_model
  parameters:
    affinity: ''
    alias: ''
    block_tags: 'True'
    comment: ''
    epsilon: '1.0'
    freq_offset: '0.0'
    maxoutbuf: '0'
    minoutbuf: '0'
    noise_voltage: '0.0'
    seed: '0'
    taps: 1.0 + 1.0j
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [274, 816]
    rotation: 0
    state: enabled
- name: digital_chunks_to_symbols_xx_0
  id: digital_chunks_to_symbols_xx
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    dimension: '1'
    in_type: byte
    maxoutbuf: '0'
    minoutbuf: '0'
    num_ports: '1'
    out_type: complex
    symbol_table: header_mod.points()
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [290, 324]
    rotation: 0
    state: enabled
- name: digital_chunks_to_symbols_xx_0_0
  id: digital_chunks_to_symbols_xx
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    dimension: '1'
    in_type: byte
    maxoutbuf: '0'
    minoutbuf: '0'
    num_ports: '1'
    out_type: complex
    symbol_table: payload_mod.points()
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [290, 396]
    rotation: 0
    state: enabled
- name: digital_crc32_bb_0
  id: digital_crc32_bb
  parameters:
    affinity: ''
    alias: ''
    check: 'False'
    comment: ''
    lengthtagname: length_tag_key
    maxoutbuf: '0'
    minoutbuf: '0'
    packed: 'True'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [458, 176]
    rotation: 0
    state: enabled
- name: digital_ofdm_carrier_allocator_cvc_0
  id: digital_ofdm_carrier_allocator_cvc
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    fft_len: fft_len
    len_tag_key: length_tag_key
    maxoutbuf: '0'
    minoutbuf: '0'
    occupied_carriers: occupied_carriers
    output_is_shifted: 'True'
    pilot_carriers: pilot_carriers
    pilot_symbols: pilot_symbols
    sync_words: (sync_word1, sync_word2)
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [274, 480]
    rotation: 0
    state: enabled
- name: digital_ofdm_cyclic_prefixer_0
  id: digital_ofdm_cyclic_prefixer
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    cp_len: fft_len//4
    input_size: fft_len
    maxoutbuf: '0'
    minoutbuf: '0'
    rolloff: rolloff
    tagname: length_tag_key
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [698, 512]
    rotation: 0
    state: enabled
- name: digital_ofdm_rx_0
  id: digital_ofdm_rx
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    cp_len: fft_len//4
    fft_len: fft_len
    header_mod: '"BPSK"'
    log: 'False'
    maxoutbuf: '0'
    minoutbuf: '0'
    occupied_carriers: occupied_carriers
    packet_len_key: '"length"'
    payload_mod: '"QPSK"'
    pilot_carriers: pilot_carriers
    pilot_symbols: pilot_symbols
    scramble_bits: 'False'
    sync_word1: sync_word1
    sync_word2: sync_word2
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [514, 768]
    rotation: 0
    state: enabled
- name: digital_packet_headergenerator_bb_0
  id: digital_packet_headergenerator_bb
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    header_formatter: header_formatter.base()
    len_tag_key: length_tag_key
    maxoutbuf: '0'
    minoutbuf: '0'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [781, 169]
    rotation: 0
    state: enabled
- name: fft_vxx_0
  id: fft_vxx
  parameters:
    affinity: ''
    alias: ''
    comment: ''
    fft_size: fft_len
    forward: 'False'
    maxoutbuf: '0'
    minoutbuf: '0'
    nthreads: '1'
    shift: 'True'
    type: complex
    window: ()
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [490, 496]
    rotation: 0
    state: enabled
- name: header_bits
  id: virtual_sink
  parameters:
    alias: ''
    comment: ''
    stream_id: Header Bits
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [1162, 192]
    rotation: 0
    state: enabled
- name: qtgui_freq_sink_x_0
  id: qtgui_freq_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: 'True'
    average: '1.0'
    axislabels: 'True'
    bw: samp_rate
    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'
    fc: '0'
    fftsize: '1024'
    freqhalf: 'True'
    grid: 'False'
    gui_hint: ''
    label: Relative Gain
    label1: ''
    label10: ''
    label2: ''
    label3: ''
    label4: ''
    label5: ''
    label6: ''
    label7: ''
    label8: ''
    label9: ''
    legend: 'True'
    maxoutbuf: '0'
    minoutbuf: '0'
    name: FFT Plot
    nconnections: '1'
    showports: 'True'
    tr_chan: '0'
    tr_level: '0.0'
    tr_mode: qtgui.TRIG_MODE_FREE
    tr_tag: '""'
    type: complex
    units: dB
    update_time: '0.10'
    width1: '1'
    width10: '1'
    width2: '1'
    width3: '1'
    width4: '1'
    width5: '1'
    width6: '1'
    width7: '1'
    width8: '1'
    width9: '1'
    wintype: window.WIN_BLACKMAN_hARRIS
    ymax: '10'
    ymin: '-140'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [1034, 760]
    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: 'True'
    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: ''
    label1: Scope Plot
    label10: ''
    label2: ''
    label3: ''
    label4: ''
    label5: ''
    label6: ''
    label7: ''
    label8: ''
    label9: ''
    legend: 'True'
    marker1: '-1'
    marker10: '-1'
    marker2: '-1'
    marker3: '-1'
    marker4: '-1'
    marker5: '-1'
    marker6: '-1'
    marker7: '-1'
    marker8: '-1'
    marker9: '-1'
    name: Scope Plot
    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_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'
    ylabel: Amplitude
    ymax: '1'
    ymin: '-1'
    yunit: '""'
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [1034, 672]
    rotation: 0
    state: enabled
- name: virtual_sink_0
  id: virtual_sink
  parameters:
    alias: ''
    comment: ''
    stream_id: Time Domain
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [930, 528]
    rotation: 0
    state: enabled
- name: virtual_sink_0_0
  id: virtual_sink
  parameters:
    alias: ''
    comment: ''
    stream_id: Payload Bits
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [906, 256]
    rotation: 0
    state: enabled
- name: virtual_sink_0_0_0
  id: virtual_sink
  parameters:
    alias: ''
    comment: ''
    stream_id: Pre-OFDM
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [818, 376]
    rotation: 0
    state: enabled
- name: virtual_sink_1
  id: virtual_sink
  parameters:
    alias: ''
    comment: ''
    stream_id: Tx Signal
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [1034, 624]
    rotation: 0
    state: enabled
- name: virtual_source_0
  id: virtual_source
  parameters:
    alias: ''
    comment: ''
    stream_id: Header Bits
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [82, 320]
    rotation: 0
    state: enabled
- name: virtual_source_0_0
  id: virtual_source
  parameters:
    alias: ''
    comment: ''
    stream_id: Payload Bits
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [82, 392]
    rotation: 0
    state: enabled
- name: virtual_source_0_0_0
  id: virtual_source
  parameters:
    alias: ''
    comment: ''
    stream_id: Pre-OFDM
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [82, 528]
    rotation: 0
    state: enabled
- name: virtual_source_0_0_0_0
  id: virtual_source
  parameters:
    alias: ''
    comment: ''
    stream_id: Time Domain
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [82, 696]
    rotation: 0
    state: enabled
- name: virtual_source_1
  id: virtual_source
  parameters:
    alias: ''
    comment: ''
    stream_id: Tx Signal
  states:
    bus_sink: false
    bus_source: false
    bus_structure: null
    coordinate: [82, 848]
    rotation: 0
    state: enabled

connections:
- [analog_random_source_x_0, '0', blocks_stream_to_tagged_stream_0, '0']
- [blocks_multiply_const_vxx_0, '0', blocks_tag_gate_0, '0']
- [blocks_repack_bits_bb_0, '0', virtual_sink_0_0, '0']
- [blocks_stream_to_tagged_stream_0, '0', digital_crc32_bb_0, '0']
- [blocks_tag_gate_0, '0', blocks_throttle_0, '0']
- [blocks_tagged_stream_mux_0, '0', virtual_sink_0_0_0, '0']
- [blocks_throttle_0, '0', qtgui_freq_sink_x_0, '0']
- [blocks_throttle_0, '0', qtgui_time_sink_x_0, '0']
- [blocks_throttle_0, '0', virtual_sink_1, '0']
- [channels_channel_model_0, '0', digital_ofdm_rx_0, '0']
- [digital_chunks_to_symbols_xx_0, '0', blocks_tagged_stream_mux_0, '0']
- [digital_chunks_to_symbols_xx_0_0, '0', blocks_tagged_stream_mux_0, '1']
- [digital_crc32_bb_0, '0', blocks_repack_bits_bb_0, '0']
- [digital_crc32_bb_0, '0', digital_packet_headergenerator_bb_0, '0']
- [digital_ofdm_carrier_allocator_cvc_0, '0', fft_vxx_0, '0']
- [digital_ofdm_cyclic_prefixer_0, '0', virtual_sink_0, '0']
- [digital_ofdm_rx_0, '0', blocks_tag_debug_0, '0']
- [digital_packet_headergenerator_bb_0, '0', header_bits, '0']
- [fft_vxx_0, '0', digital_ofdm_cyclic_prefixer_0, '0']
- [virtual_source_0, '0', digital_chunks_to_symbols_xx_0, '0']
- [virtual_source_0_0, '0', digital_chunks_to_symbols_xx_0_0, '0']
- [virtual_source_0_0_0, '0', digital_ofdm_carrier_allocator_cvc_0, '0']
- [virtual_source_0_0_0_0, '0', blocks_multiply_const_vxx_0, '0']
- [virtual_source_1, '0', channels_channel_model_0, '0']

metadata:
  file_format: 1
