diff --git a/apps/tx_example.grc b/apps/tx_example.grc new file mode 100644 index 0000000000000000000000000000000000000000..39e4f6664f26cd24eae04e3343f0a9a8890aba84 --- /dev/null +++ b/apps/tx_example.grc @@ -0,0 +1,295 @@ +options: + parameters: + author: '' + catch_exceptions: 'True' + category: '[GRC Hier Blocks]' + cmake_opt: '' + comment: '' + copyright: '' + description: '' + gen_cmake: 'On' + gen_linking: dynamic + generate_options: qt_gui + hier_block_src_path: '.:' + id: tx_example + 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: Not titled yet + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [8, 8] + rotation: 0 + state: enabled + +blocks: +- name: freq + id: variable + parameters: + comment: '' + value: 144.4e6 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [280, 12.0] + rotation: 0 + state: true +- name: rf_gain_sink + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: RF gain sink + min_len: '200' + orient: QtCore.Qt.Horizontal + rangeType: float + start: '0' + step: '1' + stop: '60' + value: '10' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [376, 12.0] + rotation: 0 + state: true +- name: samp_rate + id: variable + parameters: + comment: '' + value: 2e6 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [184, 12] + rotation: 0 + state: enabled +- name: analog_sig_source_x_0 + id: analog_sig_source_x + parameters: + affinity: '' + alias: '' + amp: '1' + comment: '' + freq: '10000' + maxoutbuf: '0' + minoutbuf: '0' + offset: '0' + phase: '0' + samp_rate: samp_rate + type: complex + waveform: analog.GR_COS_WAVE + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [112, 108.0] + rotation: 0 + state: true +- name: bladeRF_sink_0 + id: bladeRF_sink + parameters: + affinity: '' + alias: '' + bias_tee0: 'False' + bias_tee1: 'False' + bw0: samp_rate + bw1: '200000' + comment: '' + corr0: '0' + corr1: '0' + dac: '10000' + dc_calibration: LPF_TUNING + device_id: '0' + fpga_image: '' + fpga_reload: 'False' + freq0: freq + freq1: 1e8 + gain0: rf_gain_sink + gain1: '10' + if_gain0: '20' + if_gain1: '20' + in_clk: ONBOARD + lpf_mode: disabled + maxoutbuf: '0' + metadata: 'False' + minoutbuf: '0' + nchan: '1' + out_clk: 'False' + ref_clk: '' + sample_rate: samp_rate + sampling: internal + smb: '0' + tamer: internal + trigger0: 'True' + trigger1: 'False' + trigger_role0: master + trigger_role1: master + trigger_signal0: J51_1 + trigger_signal1: J51_1 + verbosity: verbose + xb200: none + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [560, 36.0] + rotation: 0 + state: true +- name: bladeRF_source_0 + id: bladeRF_source + parameters: + affinity: '' + alias: '' + bias_tee0: 'False' + bias_tee1: 'False' + bw0: samp_rate + bw1: '200000' + comment: '' + corr0: '0' + corr1: '0' + dac: '10000' + dc_calibration: LPF_TUNING + dc_offset_mode0: '0' + dc_offset_mode1: '0' + device_id: '0' + fpga_image: '' + fpga_reload: 'False' + freq0: freq + freq1: 1e8 + gain0: '10' + gain1: '10' + gain_mode0: 'False' + gain_mode1: 'False' + if_gain0: '20' + if_gain1: '20' + in_clk: ONBOARD + iq_balance_mode0: '0' + iq_balance_mode1: '0' + lpf_mode: disabled + maxoutbuf: '0' + metadata: 'False' + minoutbuf: '0' + nchan: '1' + out_clk: 'False' + ref_clk: '' + sample_rate: samp_rate + sampling: internal + smb: '0' + tamer: internal + trigger0: 'True' + trigger1: 'False' + trigger_role0: slave + trigger_role1: master + trigger_signal0: J51_1 + trigger_signal1: J51_1 + verbosity: verbose + xb200: none + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [128, 252.0] + rotation: 0 + state: true +- 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: 'False' + 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: freq + 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: '""' + nconnections: '1' + norm_window: 'False' + showports: 'False' + 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: [352, 268.0] + rotation: 0 + state: true + +connections: +- [analog_sig_source_x_0, '0', bladeRF_sink_0, '0'] +- [bladeRF_source_0, '0', qtgui_freq_sink_x_0, '0'] + +metadata: + file_format: 1 diff --git a/grc/gen_bladerf_blocks.py b/grc/gen_bladerf_blocks.py index 66d0e794941f63678e3cf37d4bc354bb821b2da8..b891acfb3149d508463fb84c3e900464612ad2a7 100644 --- a/grc/gen_bladerf_blocks.py +++ b/grc/gen_bladerf_blocks.py @@ -147,10 +147,6 @@ parameters: ${params} inputs: -- domain: message - id: command - optional: true - - domain: message id: pmic_in optional: true @@ -164,18 +160,12 @@ outputs: multiplicity: ${'$'}{nchan} % if sourk == 'sink': outputs: -- domain: message - id: async_msgs - optional: true % endif - domain: message id: pmic_out optional: true - - - templates: imports: |- import bladeRF diff --git a/lib/sink_impl.cc b/lib/sink_impl.cc index 553d85737c7dc5e53da8e8f897ce967c005da948..9e3f3c3cc18cf8ff655f8b295b68f11a0a1982ea 100644 --- a/lib/sink_impl.cc +++ b/lib/sink_impl.cc @@ -35,6 +35,11 @@ namespace gr { "(check the connection and/or udev rules)."); device_ = make_bladerf_sink_c( args ); //todo: get by id from block args + for (size_t i = 0; i < device_->get_num_channels(); i++) + { + connect(self(), i, device_, i); + } + setup_device_connects(device_); }