diff --git a/demos/gnuradio/hackrf_file_tx_demo.grc b/demos/gnuradio/hackrf_file_tx_demo.grc index 37c7721..59d7f38 100644 --- a/demos/gnuradio/hackrf_file_tx_demo.grc +++ b/demos/gnuradio/hackrf_file_tx_demo.grc @@ -49,7 +49,7 @@ blocks: id: variable parameters: comment: '' - value: '931937500' + value: '929937500' states: bus_sink: false bus_source: false @@ -242,285 +242,44 @@ blocks: coordinate: [200, 12.0] rotation: 0 state: true -- name: osmosdr_sink_0 - id: osmosdr_sink +- name: rational_resampler_xxx_0 + id: rational_resampler_xxx parameters: affinity: '' alias: '' - ant0: '1' - ant1: '' - ant10: '' - ant11: '' - ant12: '' - ant13: '' - ant14: '' - ant15: '' - ant16: '' - ant17: '' - ant18: '' - ant19: '' - ant2: '' - ant20: '' - ant21: '' - ant22: '' - ant23: '' - ant24: '' - ant25: '' - ant26: '' - ant27: '' - ant28: '' - ant29: '' - ant3: '' - ant30: '' - ant31: '' - ant4: '' - ant5: '' - ant6: '' - ant7: '' - ant8: '' - ant9: '' - args: hackrf=0 - bb_gain0: '20' - bb_gain1: '20' - bb_gain10: '20' - bb_gain11: '20' - bb_gain12: '20' - bb_gain13: '20' - bb_gain14: '20' - bb_gain15: '20' - bb_gain16: '20' - bb_gain17: '20' - bb_gain18: '20' - bb_gain19: '20' - bb_gain2: '20' - bb_gain20: '20' - bb_gain21: '20' - bb_gain22: '20' - bb_gain23: '20' - bb_gain24: '20' - bb_gain25: '20' - bb_gain26: '20' - bb_gain27: '20' - bb_gain28: '20' - bb_gain29: '20' - bb_gain3: '20' - bb_gain30: '20' - bb_gain31: '20' - bb_gain4: '20' - bb_gain5: '20' - bb_gain6: '20' - bb_gain7: '20' - bb_gain8: '20' - bb_gain9: '20' - bw0: '0' - bw1: '0' - bw10: '0' - bw11: '0' - bw12: '0' - bw13: '0' - bw14: '0' - bw15: '0' - bw16: '0' - bw17: '0' - bw18: '0' - bw19: '0' - bw2: '0' - bw20: '0' - bw21: '0' - bw22: '0' - bw23: '0' - bw24: '0' - bw25: '0' - bw26: '0' - bw27: '0' - bw28: '0' - bw29: '0' - bw3: '0' - bw30: '0' - bw31: '0' - bw4: '0' - bw5: '0' - bw6: '0' - bw7: '0' - bw8: '0' - bw9: '0' - clock_source0: '' - clock_source1: '' - clock_source2: '' - clock_source3: '' - clock_source4: '' - clock_source5: '' - clock_source6: '' - clock_source7: '' comment: '' - corr0: '0.8' - corr1: '0' - corr10: '0' - corr11: '0' - corr12: '0' - corr13: '0' - corr14: '0' - corr15: '0' - corr16: '0' - corr17: '0' - corr18: '0' - corr19: '0' - corr2: '0' - corr20: '0' - corr21: '0' - corr22: '0' - corr23: '0' - corr24: '0' - corr25: '0' - corr26: '0' - corr27: '0' - corr28: '0' - corr29: '0' - corr3: '0' - corr30: '0' - corr31: '0' - corr4: '0' - corr5: '0' - corr6: '0' - corr7: '0' - corr8: '0' - corr9: '0' - freq0: center_freq - freq1: 100e6 - freq10: 100e6 - freq11: 100e6 - freq12: 100e6 - freq13: 100e6 - freq14: 100e6 - freq15: 100e6 - freq16: 100e6 - freq17: 100e6 - freq18: 100e6 - freq19: 100e6 - freq2: 100e6 - freq20: 100e6 - freq21: 100e6 - freq22: 100e6 - freq23: 100e6 - freq24: 100e6 - freq25: 100e6 - freq26: 100e6 - freq27: 100e6 - freq28: 100e6 - freq29: 100e6 - freq3: 100e6 - freq30: 100e6 - freq31: 100e6 - freq4: 100e6 - freq5: 100e6 - freq6: 100e6 - freq7: 100e6 - freq8: 100e6 - freq9: 100e6 - gain0: '40' - gain1: '10' - gain10: '10' - gain11: '10' - gain12: '10' - gain13: '10' - gain14: '10' - gain15: '10' - gain16: '10' - gain17: '10' - gain18: '10' - gain19: '10' - gain2: '10' - gain20: '10' - gain21: '10' - gain22: '10' - gain23: '10' - gain24: '10' - gain25: '10' - gain26: '10' - gain27: '10' - gain28: '10' - gain29: '10' - gain3: '10' - gain30: '10' - gain31: '10' - gain4: '10' - gain5: '10' - gain6: '10' - gain7: '10' - gain8: '10' - gain9: '10' - if_gain0: '20' - if_gain1: '20' - if_gain10: '20' - if_gain11: '20' - if_gain12: '20' - if_gain13: '20' - if_gain14: '20' - if_gain15: '20' - if_gain16: '20' - if_gain17: '20' - if_gain18: '20' - if_gain19: '20' - if_gain2: '20' - if_gain20: '20' - if_gain21: '20' - if_gain22: '20' - if_gain23: '20' - if_gain24: '20' - if_gain25: '20' - if_gain26: '20' - if_gain27: '20' - if_gain28: '20' - if_gain29: '20' - if_gain3: '20' - if_gain30: '20' - if_gain31: '20' - if_gain4: '20' - if_gain5: '20' - if_gain6: '20' - if_gain7: '20' - if_gain8: '20' - if_gain9: '20' + decim: int(samp_rate // math.gcd(int(hw_rate), int(samp_rate))) + fbw: '0' + interp: int(hw_rate // math.gcd(int(hw_rate), int(samp_rate))) maxoutbuf: '0' minoutbuf: '0' - nchan: '1' - num_mboards: '1' - sample_rate: hw_rate - sync: sync - time_source0: '' - time_source1: '' - time_source2: '' - time_source3: '' - time_source4: '' - time_source5: '' - time_source6: '' - time_source7: '' - type: fc32 + taps: '[]' + type: ccc states: bus_sink: false bus_source: false bus_structure: null - coordinate: [928, 460.0] + coordinate: [1152, 252.0] rotation: 0 - state: true -- name: rational_resampler_xxx_0 - id: rational_resampler_xxx + state: enabled +- name: soapy_hackrf_sink_0 + id: soapy_hackrf_sink parameters: affinity: '' alias: '' + amp: 'False' + bandwidth: '0' + center_freq: center_freq comment: '' - decim: int(samp_rate // math.gcd(int(hw_rate), int(samp_rate))) - fbw: '0' - interp: int(hw_rate // math.gcd(int(hw_rate), int(samp_rate))) - maxoutbuf: '0' - minoutbuf: '0' - taps: '[]' - type: ccc + dev_args: '' + samp_rate: hw_rate + type: fc32 + vga: '28' states: bus_sink: false bus_source: false bus_structure: null - coordinate: [1152, 252.0] + coordinate: [1152, 368.0] rotation: 0 state: enabled @@ -532,7 +291,7 @@ connections: - [blocks_throttle_0, '0', rational_resampler_xxx_0, '0'] - [blocks_uchar_to_float_0, '0', blocks_add_const_vxx_0, '0'] - [blocks_unpack_k_bits_bb_0, '0', blocks_repeat_0, '0'] -- [rational_resampler_xxx_0, '0', osmosdr_sink_0, '0'] +- [rational_resampler_xxx_0, '0', soapy_hackrf_sink_0, '0'] metadata: file_format: 1 diff --git a/demos/gnuradio/hackrf_file_tx_demo_osmosdr_sink.grc b/demos/gnuradio/hackrf_file_tx_demo_osmosdr_sink.grc new file mode 100644 index 0000000..37c7721 --- /dev/null +++ b/demos/gnuradio/hackrf_file_tx_demo_osmosdr_sink.grc @@ -0,0 +1,539 @@ +options: + parameters: + author: '' + catch_exceptions: 'True' + category: '[GRC Hier Blocks]' + cmake_opt: '' + comment: '' + copyright: '' + description: '' + gen_cmake: 'On' + gen_linking: dynamic + generate_options: no_gui + hier_block_src_path: '.:' + id: hackrf_file_tx_demo + 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: HackRF FLEX File TX Demo + window_size: (1000,1000) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [8, 12.0] + rotation: 0 + state: enabled + +blocks: +- name: baud_rate + id: variable + parameters: + comment: '' + value: '1600' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [296, 12.0] + rotation: 0 + state: enabled +- name: center_freq + id: variable + parameters: + comment: '' + value: '931937500' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [728, 12.0] + rotation: 0 + state: enabled +- name: deviation + id: variable + parameters: + comment: '' + value: '4800' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [640, 12.0] + rotation: 0 + state: enabled +- name: hw_rate + id: variable + parameters: + comment: '' + value: '2000000' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [480, 12.0] + rotation: 0 + state: enabled +- name: samp_rate + id: variable + parameters: + comment: '' + value: sps * baud_rate + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [384, 12.0] + rotation: 0 + state: enabled +- name: sps + id: variable + parameters: + comment: '' + value: '100' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [560, 12.0] + rotation: 0 + state: enabled +- name: analog_frequency_modulator_fc_0 + id: analog_frequency_modulator_fc + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + sensitivity: 2 * math.pi * deviation / samp_rate + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [784, 276.0] + rotation: 0 + state: true +- name: blocks_add_const_vxx_0 + id: blocks_add_const_vxx + parameters: + affinity: '' + alias: '' + comment: '' + const: '-0.5' + maxoutbuf: '0' + minoutbuf: '0' + type: float + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [616, 276.0] + rotation: 0 + state: true +- name: blocks_file_source_0 + id: blocks_file_source + parameters: + affinity: '' + alias: '' + begin_tag: pmt.PMT_NIL + comment: '' + file: encoded.bin + length: '0' + maxoutbuf: '0' + minoutbuf: '0' + offset: '0' + repeat: 'False' + type: byte + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [88, 148.0] + rotation: 0 + state: true +- name: blocks_repeat_0 + id: blocks_repeat + parameters: + affinity: '' + alias: '' + comment: '' + interp: sps + maxoutbuf: '0' + minoutbuf: '0' + type: byte + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [264, 276.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: [976, 276.0] + rotation: 0 + state: true +- name: blocks_uchar_to_float_0 + id: blocks_uchar_to_float + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [448, 280.0] + rotation: 0 + state: true +- name: blocks_unpack_k_bits_bb_0 + id: blocks_unpack_k_bits_bb + parameters: + affinity: '' + alias: '' + comment: '' + k: '8' + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [96, 276.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: [200, 12.0] + rotation: 0 + state: true +- name: osmosdr_sink_0 + id: osmosdr_sink + parameters: + affinity: '' + alias: '' + ant0: '1' + ant1: '' + ant10: '' + ant11: '' + ant12: '' + ant13: '' + ant14: '' + ant15: '' + ant16: '' + ant17: '' + ant18: '' + ant19: '' + ant2: '' + ant20: '' + ant21: '' + ant22: '' + ant23: '' + ant24: '' + ant25: '' + ant26: '' + ant27: '' + ant28: '' + ant29: '' + ant3: '' + ant30: '' + ant31: '' + ant4: '' + ant5: '' + ant6: '' + ant7: '' + ant8: '' + ant9: '' + args: hackrf=0 + bb_gain0: '20' + bb_gain1: '20' + bb_gain10: '20' + bb_gain11: '20' + bb_gain12: '20' + bb_gain13: '20' + bb_gain14: '20' + bb_gain15: '20' + bb_gain16: '20' + bb_gain17: '20' + bb_gain18: '20' + bb_gain19: '20' + bb_gain2: '20' + bb_gain20: '20' + bb_gain21: '20' + bb_gain22: '20' + bb_gain23: '20' + bb_gain24: '20' + bb_gain25: '20' + bb_gain26: '20' + bb_gain27: '20' + bb_gain28: '20' + bb_gain29: '20' + bb_gain3: '20' + bb_gain30: '20' + bb_gain31: '20' + bb_gain4: '20' + bb_gain5: '20' + bb_gain6: '20' + bb_gain7: '20' + bb_gain8: '20' + bb_gain9: '20' + bw0: '0' + bw1: '0' + bw10: '0' + bw11: '0' + bw12: '0' + bw13: '0' + bw14: '0' + bw15: '0' + bw16: '0' + bw17: '0' + bw18: '0' + bw19: '0' + bw2: '0' + bw20: '0' + bw21: '0' + bw22: '0' + bw23: '0' + bw24: '0' + bw25: '0' + bw26: '0' + bw27: '0' + bw28: '0' + bw29: '0' + bw3: '0' + bw30: '0' + bw31: '0' + bw4: '0' + bw5: '0' + bw6: '0' + bw7: '0' + bw8: '0' + bw9: '0' + clock_source0: '' + clock_source1: '' + clock_source2: '' + clock_source3: '' + clock_source4: '' + clock_source5: '' + clock_source6: '' + clock_source7: '' + comment: '' + corr0: '0.8' + corr1: '0' + corr10: '0' + corr11: '0' + corr12: '0' + corr13: '0' + corr14: '0' + corr15: '0' + corr16: '0' + corr17: '0' + corr18: '0' + corr19: '0' + corr2: '0' + corr20: '0' + corr21: '0' + corr22: '0' + corr23: '0' + corr24: '0' + corr25: '0' + corr26: '0' + corr27: '0' + corr28: '0' + corr29: '0' + corr3: '0' + corr30: '0' + corr31: '0' + corr4: '0' + corr5: '0' + corr6: '0' + corr7: '0' + corr8: '0' + corr9: '0' + freq0: center_freq + freq1: 100e6 + freq10: 100e6 + freq11: 100e6 + freq12: 100e6 + freq13: 100e6 + freq14: 100e6 + freq15: 100e6 + freq16: 100e6 + freq17: 100e6 + freq18: 100e6 + freq19: 100e6 + freq2: 100e6 + freq20: 100e6 + freq21: 100e6 + freq22: 100e6 + freq23: 100e6 + freq24: 100e6 + freq25: 100e6 + freq26: 100e6 + freq27: 100e6 + freq28: 100e6 + freq29: 100e6 + freq3: 100e6 + freq30: 100e6 + freq31: 100e6 + freq4: 100e6 + freq5: 100e6 + freq6: 100e6 + freq7: 100e6 + freq8: 100e6 + freq9: 100e6 + gain0: '40' + gain1: '10' + gain10: '10' + gain11: '10' + gain12: '10' + gain13: '10' + gain14: '10' + gain15: '10' + gain16: '10' + gain17: '10' + gain18: '10' + gain19: '10' + gain2: '10' + gain20: '10' + gain21: '10' + gain22: '10' + gain23: '10' + gain24: '10' + gain25: '10' + gain26: '10' + gain27: '10' + gain28: '10' + gain29: '10' + gain3: '10' + gain30: '10' + gain31: '10' + gain4: '10' + gain5: '10' + gain6: '10' + gain7: '10' + gain8: '10' + gain9: '10' + if_gain0: '20' + if_gain1: '20' + if_gain10: '20' + if_gain11: '20' + if_gain12: '20' + if_gain13: '20' + if_gain14: '20' + if_gain15: '20' + if_gain16: '20' + if_gain17: '20' + if_gain18: '20' + if_gain19: '20' + if_gain2: '20' + if_gain20: '20' + if_gain21: '20' + if_gain22: '20' + if_gain23: '20' + if_gain24: '20' + if_gain25: '20' + if_gain26: '20' + if_gain27: '20' + if_gain28: '20' + if_gain29: '20' + if_gain3: '20' + if_gain30: '20' + if_gain31: '20' + if_gain4: '20' + if_gain5: '20' + if_gain6: '20' + if_gain7: '20' + if_gain8: '20' + if_gain9: '20' + maxoutbuf: '0' + minoutbuf: '0' + nchan: '1' + num_mboards: '1' + sample_rate: hw_rate + sync: sync + time_source0: '' + time_source1: '' + time_source2: '' + time_source3: '' + time_source4: '' + time_source5: '' + time_source6: '' + time_source7: '' + type: fc32 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [928, 460.0] + rotation: 0 + state: true +- name: rational_resampler_xxx_0 + id: rational_resampler_xxx + parameters: + affinity: '' + alias: '' + comment: '' + decim: int(samp_rate // math.gcd(int(hw_rate), int(samp_rate))) + fbw: '0' + interp: int(hw_rate // math.gcd(int(hw_rate), int(samp_rate))) + maxoutbuf: '0' + minoutbuf: '0' + taps: '[]' + type: ccc + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1152, 252.0] + rotation: 0 + state: enabled + +connections: +- [analog_frequency_modulator_fc_0, '0', blocks_throttle_0, '0'] +- [blocks_add_const_vxx_0, '0', analog_frequency_modulator_fc_0, '0'] +- [blocks_file_source_0, '0', blocks_unpack_k_bits_bb_0, '0'] +- [blocks_repeat_0, '0', blocks_uchar_to_float_0, '0'] +- [blocks_throttle_0, '0', rational_resampler_xxx_0, '0'] +- [blocks_uchar_to_float_0, '0', blocks_add_const_vxx_0, '0'] +- [blocks_unpack_k_bits_bb_0, '0', blocks_repeat_0, '0'] +- [rational_resampler_xxx_0, '0', osmosdr_sink_0, '0'] + +metadata: + file_format: 1 + grc_version: 3.10.5.1