def __init__(self): gr.top_block.__init__(self, "Example Tx Ii With Geosson Gui") ################################################## # Variables ################################################## self.samp_rate = samp_rate = 8000000 ################################################## # Blocks ################################################## self.remotecar_RemoteCarIIBaseBand_0 = remotecar.RemoteCarIIBaseBand(samp_rate,True, 99) self.osmosdr_sink_0 = osmosdr.sink( args="numchan=" + str(1) + " " + "" ) self.osmosdr_sink_0.set_sample_rate(samp_rate) self.osmosdr_sink_0.set_center_freq(27.15e6, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(0, 0) self.osmosdr_sink_0.set_if_gain(50, 0) self.osmosdr_sink_0.set_bb_gain(30, 0) self.osmosdr_sink_0.set_antenna("", 0) self.osmosdr_sink_0.set_bandwidth(0, 0) self.blocks_float_to_complex_0 = blocks.float_to_complex(1) ################################################## # Connections ################################################## self.connect((self.remotecar_RemoteCarIIBaseBand_0, 0), (self.blocks_float_to_complex_0, 0)) self.connect((self.remotecar_RemoteCarIIBaseBand_0, 0), (self.blocks_float_to_complex_0, 1)) self.connect((self.blocks_float_to_complex_0, 0), (self.osmosdr_sink_0, 0))
def __init__(self, samp_rate, freq, gain, bw, port): gr.top_block.__init__(self, "Top Block") ################################################## # Variables ################################################## self.samp_rate = samp_rate self.gain = gain self.freq = freq self.bw = bw ################################################## # Blocks ################################################## #self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_gr_complex * 1, "/tmp/send_test.complex", False) #self.blocks_file_sink_0.set_unbuffered(True) # self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex*1, samp_rate, True) self.osmosdr_sink_0 = osmosdr.sink(args="numchan=" + str(1) + " " + "bladerf") self.osmosdr_sink_0.set_sample_rate(samp_rate) self.osmosdr_sink_0.set_center_freq(freq, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(gain, 0) # self.osmosdr_sink_0.set_if_gain(gain, 0) # self.osmosdr_sink_0.set_bb_gain(gain, 0) self.osmosdr_sink_0.set_antenna("", 0) self.osmosdr_sink_0.set_bandwidth(bw, 0) self.zeromq_pull_source_0 = zeromq.pull_source(gr.sizeof_gr_complex, 1, 'tcp://127.0.0.1:' + str(port)) ################################################## # Connections ################################################## #self.connect((self.blks2_tcp_source_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.zeromq_pull_source_0, 0), (self.osmosdr_sink_0, 0))
def __init__(self, command): gr.top_block.__init__(self, "Top Block") # ################################################## # # Variables # ################################################## self.samp_rate = samp_rate = 5e6 self.frequency = frequency = 49000000 self.command = command # ################################################## # # Blocks # ############################################### self.osmosdr_sink_0 = osmosdr.sink( args="numchan=" + str(1) + " " + "" ) self.osmosdr_sink_0.set_sample_rate(samp_rate) self.osmosdr_sink_0.set_center_freq(frequency, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(0, 0) self.osmosdr_sink_0.set_if_gain(47, 0) self.osmosdr_sink_0.set_bb_gain(16, 0) self.osmosdr_sink_0.set_antenna("", 0) self.osmosdr_sink_0.set_bandwidth(0, 0) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vcc((6, )) self.blocks_file_source_0 = blocks.file_source(gr.sizeof_gr_complex*1, "/home/cssummer2016/Desktop/" + self.command, True) ################################################## # Connections ################################################## self.connect((self.blocks_file_source_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.osmosdr_sink_0, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Top Block") _icon_path = "C:\Program Files\GNURadio-3.7\share\icons\hicolor\scalable/apps\gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Variables ################################################## self.samp_rate = samp_rate = 2e6 self.center_freq = center_freq = 1575.42e6 ################################################## # Blocks ################################################## self.osmosdr_sink_0 = osmosdr.sink(args="numchan=" + str(1) + " " + '') self.osmosdr_sink_0.set_sample_rate(samp_rate) self.osmosdr_sink_0.set_center_freq(center_freq, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(0, 0) self.osmosdr_sink_0.set_if_gain(20, 0) self.osmosdr_sink_0.set_bb_gain(20, 0) self.osmosdr_sink_0.set_antenna('', 0) self.osmosdr_sink_0.set_bandwidth(5e6, 0) self.blocks_file_source_0 = blocks.file_source( gr.sizeof_gr_complex * 1, 'E:\\hackrf_gpssim\\circle_hackrf.bin', True) ################################################## # Connections ################################################## self.connect((self.blocks_file_source_0, 0), (self.osmosdr_sink_0, 0))
def __init__(self, sample_rate, frequency, freq_correction, rf_gain, if_gain, bb_gain, bandwidth, port): gr.top_block.__init__(self, "Top Block") self.sample_rate = sample_rate self.rf_gain = rf_gain self.port = port self.if_gain = if_gain self.frequency = frequency self.freq_correction = freq_correction self.bb_gain = bb_gain self.bandwidth = bandwidth self.osmosdr_sink_0 = osmosdr.sink(args="numchan=" + str(1) + " " + 'uhd') self.osmosdr_sink_0.set_time_unknown_pps(osmosdr.time_spec_t()) self.osmosdr_sink_0.set_sample_rate(sample_rate) self.osmosdr_sink_0.set_center_freq(frequency, 0) self.osmosdr_sink_0.set_freq_corr(freq_correction, 0) self.osmosdr_sink_0.set_gain(rf_gain, 0) self.osmosdr_sink_0.set_if_gain(if_gain, 0) self.osmosdr_sink_0.set_bb_gain(bb_gain, 0) self.osmosdr_sink_0.set_antenna('', 0) self.osmosdr_sink_0.set_bandwidth(bandwidth, 0) self.blocks_udp_source_0 = blocks.udp_source(gr.sizeof_gr_complex * 1, '127.0.0.1', port, 65536, False) self.connect((self.blocks_udp_source_0, 0), (self.osmosdr_sink_0, 0))
def __init__(self, command): gr.top_block.__init__(self, "Top Block") # ################################################## # # Variables # ################################################## self.samp_rate = samp_rate = 5e6 self.frequency = frequency = 49000000 self.command = command # ################################################## # # Blocks # ############################################### self.osmosdr_sink_0 = osmosdr.sink(args="numchan=" + str(1) + " " + "") self.osmosdr_sink_0.set_sample_rate(samp_rate) self.osmosdr_sink_0.set_center_freq(frequency, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(0, 0) self.osmosdr_sink_0.set_if_gain(47, 0) self.osmosdr_sink_0.set_bb_gain(16, 0) self.osmosdr_sink_0.set_antenna("", 0) self.osmosdr_sink_0.set_bandwidth(0, 0) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vcc((6, )) self.blocks_file_source_0 = blocks.file_source( gr.sizeof_gr_complex * 1, "/home/cssummer2016/Desktop/" + self.command, True) ################################################## # Connections ################################################## self.connect((self.blocks_file_source_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.osmosdr_sink_0, 0))
def __init__(self): FlowGraphBlock.__init__(self) if (RadioSinkBlock.sdrSink == None): sdrSnk = osmosdr.sink(args="soapy=0,driver=lime") sdrSnk.set_antenna("BAND1") print "Found LimeSDR Sink" for sampleRange in sdrSnk.get_sample_rates(): print " Sample range : %d->%d" % \ (sampleRange.start(), sampleRange.stop()) for freqRange in sdrSnk.get_freq_range(): print " Frequency range : %d->%d" % \ (freqRange.start(), freqRange.stop()) minBandwidth = 10e10 for bwRange in sdrSnk.get_bandwidth_range(): if (minBandwidth > bwRange.start()): minBandwidth = bwRange.start() print " Bandwidth range : %d->%d" % \ (bwRange.start(), bwRange.stop()) print " Min bandwidth : %d" % minBandwidth for gainRange in sdrSnk.get_gain_range(): print " Gain range : %d->%d" % \ (gainRange.start(), gainRange.stop()) selectedAntenna = sdrSnk.get_antenna() for antennaName in sdrSnk.get_antennas(): if (antennaName == selectedAntenna): print " Antenna option * : %s" % antennaName else: print " Antenna option : %s" % antennaName RadioSinkBlock.sdrSink = sdrSnk RadioSinkBlock.minBandwidth = minBandwidth
def __init__(self): gr.top_block.__init__(self) #variables self.samp_rate = samp_rate self.direction = RC_NOTHING #no direction to start #blocks #define the gnuradio blocks #interpolator expands the input function - this creates long zeros and ones self.interpolator = rccar2.functioninterpolator(samp_rate) #functioncoder takes a functioncode into it and creates the appropriate command stream self.functioncoder = rccar2.functioncoder(samplerate=samp_rate, functioncode=1) #sink (the hackRF in this case), can be changed to your transmitting device of course self.hackrf = osmosdr.sink(args="numchan=" +str(1) + " " + "hackhf") self.hackrf.set_sample_rate(samp_rate) self.hackrf.set_center_freq(RC_FREQUENCY,0) self.hackrf.set_freq_corr(0,0) #enable the hackrf to transmit (need to set the gain to 14dB) self.hackrf.set_gain(14,0) self.hackrf.set_if_gain(30,0) self.hackrf.set_bb_gain(20,0) self.hackrf.set_antenna("",0) self.hackrf.set_bandwidth(0,0) #conversion blocks self.float_to_complex = blocks.float_to_complex(1) self.char_to_float = blocks.char_to_float(1,1) #vector source which sends the direction to the functioncoder self.vector_source = blocks.vector_source_i([self.direction], False) #connect it all up self.connect((self.char_to_float,0), (self.float_to_complex,0)) self.connect((self.char_to_float,0), (self.float_to_complex,1)) self.connect((self.interpolator,0), (self.char_to_float,0)) self.connect((self.float_to_complex,0), (self.hackrf,0)) self.connect((self.vector_source,0), (self.functioncoder,0)) self.connect((self.functioncoder,0), (self.interpolator,0))
def __init__(self, samp_rate, freq, gain, if_gain, baseband_gain, bw, port): gr.top_block.__init__(self, "Top Block") ################################################## # Variables ################################################## self.samp_rate = samp_rate self.gain = gain self.freq = freq self.bw = bw ################################################## # Blocks ################################################## #self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_gr_complex * 1, "/tmp/send_test.complex", False) #self.blocks_file_sink_0.set_unbuffered(True) # self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex*1, samp_rate, True) self.osmosdr_sink_0 = osmosdr.sink(args="numchan=" + str(1) + " " + "hackrf") self.osmosdr_sink_0.set_sample_rate(samp_rate) self.osmosdr_sink_0.set_center_freq(freq, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(gain, 0) self.osmosdr_sink_0.set_if_gain(if_gain, 0) self.osmosdr_sink_0.set_bb_gain(baseband_gain, 0) self.osmosdr_sink_0.set_antenna("", 0) self.osmosdr_sink_0.set_bandwidth(bw, 0) self.zeromq_pull_source_0 = zeromq.pull_source(gr.sizeof_gr_complex, 1, 'tcp://127.0.0.1:' + str(port)) ################################################## # Connections ################################################## #self.connect((self.blks2_tcp_source_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.zeromq_pull_source_0, 0), (self.osmosdr_sink_0, 0))
def main(args): nargs = len(args) if nargs == 1: infile = args[0] outfile = None elif nargs == 2: infile = args[0] outfile = args[1] else: sys.stderr.write("Usage: atsc-blade.py input_file [output_file]\n") sys.exit(1) symbol_rate = 4500000.0 / 286 * 684 pilot_freq = 309441 center_freq = 441000000 txvga1_gain = -4 txvga2_gain = 25 tb = gr.top_block() src = blocks.file_source(gr.sizeof_char, infile, True) pad = atsc.pad() rand = atsc.randomizer() rs_enc = atsc.rs_encoder() inter = atsc.interleaver() trell = atsc.trellis_encoder() fsm = atsc.field_sync_mux() v2s = blocks.vector_to_stream(gr.sizeof_char, 1024) minn = blocks.keep_m_in_n(gr.sizeof_char, 832, 1024, 4) c2sym = digital.chunks_to_symbols_bc( ([symbol + 1.25 for symbol in [-7, -5, -3, -1, 1, 3, 5, 7]]), 1) offset = analog.sig_source_c(symbol_rate, analog.GR_COS_WAVE, -3000000 + pilot_freq, 0.9, 0) mix = blocks.multiply_vcc(1) rrc = filter.fft_filter_ccc( 1, firdes.root_raised_cosine(0.1, symbol_rate, symbol_rate / 2, 0.1152, 100)) out = osmosdr.sink(args="bladerf=0,buffers=128,buflen=32768") out.set_sample_rate(symbol_rate) out.set_center_freq(center_freq, 0) out.set_freq_corr(0, 0) out.set_gain(txvga2_gain, 0) out.set_bb_gain(txvga1_gain, 0) out.set_bandwidth(6000000, 0) tb.connect(src, pad, rand, rs_enc, inter, trell, fsm, v2s, minn, c2sym) tb.connect((c2sym, 0), (mix, 0)) tb.connect((offset, 0), (mix, 1)) tb.connect(mix, rrc, out) if outfile: dst = blocks.file_sink(gr.sizeof_gr_complex, outfile) tb.connect(rrc, dst) tb.run()
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Ntsc Hackrf") _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Variables ################################################## self.samples_per_line = samples_per_line = 772 self.samp_rate = samp_rate = samples_per_line * 60 * .999 * 525 / 2 self.rf_gain = rf_gain = 14 self.if_gain = if_gain = 40 self.digital_gain = digital_gain = 0.9 self.center_freq = center_freq = 186000000 + 1250000 ################################################## # Blocks ################################################## self.zero = analog.sig_source_f(0, analog.GR_CONST_WAVE, 0, 0, 0) self.osmosdr_sink_0 = osmosdr.sink(args="numchan=" + str(1) + " " + "hackrf=0") self.osmosdr_sink_0.set_sample_rate(samp_rate) self.osmosdr_sink_0.set_center_freq(center_freq, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(rf_gain, 0) self.osmosdr_sink_0.set_if_gain(if_gain, 0) self.osmosdr_sink_0.set_bb_gain(0, 0) self.osmosdr_sink_0.set_antenna("", 0) self.osmosdr_sink_0.set_bandwidth(0, 0) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vff( (digital_gain, )) self.blocks_float_to_complex_0 = blocks.float_to_complex(1) self.blocks_file_source_0 = blocks.file_source( gr.sizeof_float * 1, "/home/ubuntu/WAHD-TV/ve3irr-testing.dat", True) self.blocks_add_xx_0 = blocks.add_vcc(1) self.band_pass_filter_0 = filter.fir_filter_ccc( 1, firdes.complex_band_pass(1, samp_rate, -2475000 + 1725000, 2475000 + 1725000, 500000, firdes.WIN_HAMMING, 6.76)) self.analog_sig_source_x_1 = analog.sig_source_c( samp_rate, analog.GR_COS_WAVE, 4500000, 0.1, 0) ################################################## # Connections ################################################## self.connect((self.analog_sig_source_x_1, 0), (self.blocks_add_xx_0, 0)) self.connect((self.band_pass_filter_0, 0), (self.blocks_add_xx_0, 1)) self.connect((self.blocks_add_xx_0, 0), (self.osmosdr_sink_0, 0)) self.connect((self.blocks_file_source_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.blocks_float_to_complex_0, 0), (self.band_pass_filter_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.blocks_float_to_complex_0, 0)) self.connect((self.zero, 0), (self.blocks_float_to_complex_0, 1))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Top Block") _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Variables ################################################## self.samp_rate = samp_rate = 32000 ################################################## # Blocks ################################################## self.rational_resampler_xxx_0 = filter.rational_resampler_ccc( interpolation=70, decimation=64, taps=None, fractional_bw=None, ) self.osmosdr_sink_0 = osmosdr.sink( args="numchan=" + str(1) + " " + "bladerf=0,buffers=128,buflen=32768" ) self.osmosdr_sink_0.set_sample_rate(10e6) self.osmosdr_sink_0.set_center_freq(800e6, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(19, 0) self.osmosdr_sink_0.set_if_gain(0, 0) self.osmosdr_sink_0.set_bb_gain(0, 0) self.osmosdr_sink_0.set_antenna("", 0) self.osmosdr_sink_0.set_bandwidth(0, 0) self.fft_vxx_0 = fft.fft_vcc(2048, False, (window.rectangular(2048)), True, 10) self.dvbt_symbol_inner_interleaver_0 = dvbt.symbol_inner_interleaver(1512, dvbt.T2k, 1) self.dvbt_reference_signals_0 = dvbt.reference_signals(gr.sizeof_gr_complex, 1512, 2048, dvbt.QAM16, dvbt.NH, dvbt.C1_2, dvbt.C1_2, dvbt.G1_32, dvbt.T2k, 0, 0) self.dvbt_reed_solomon_enc_0 = dvbt.reed_solomon_enc(2, 8, 0x11d, 255, 239, 8, 51, 8) self.dvbt_inner_coder_0 = dvbt.inner_coder(1, 1512, dvbt.QAM16, dvbt.NH, dvbt.C1_2) self.dvbt_energy_dispersal_0 = dvbt.energy_dispersal(1) self.dvbt_dvbt_map_0 = dvbt.dvbt_map(1512, dvbt.QAM16, dvbt.NH, dvbt.T2k, 1) self.dvbt_convolutional_interleaver_0 = dvbt.convolutional_interleaver(136, 12, 17) self.dvbt_bit_inner_interleaver_0 = dvbt.bit_inner_interleaver(1512, dvbt.QAM16, dvbt.NH, dvbt.T2k) self.digital_ofdm_cyclic_prefixer_0 = digital.ofdm_cyclic_prefixer(2048, 2048+64, 0, "") self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vcc((0.0022097087, )) self.blocks_file_source_0 = blocks.file_source(gr.sizeof_char*1, "test.ts", True) ################################################## # Connections ################################################## self.connect((self.blocks_file_source_0, 0), (self.dvbt_energy_dispersal_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.rational_resampler_xxx_0, 0)) self.connect((self.digital_ofdm_cyclic_prefixer_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.dvbt_bit_inner_interleaver_0, 0), (self.dvbt_symbol_inner_interleaver_0, 0)) self.connect((self.dvbt_convolutional_interleaver_0, 0), (self.dvbt_inner_coder_0, 0)) self.connect((self.dvbt_dvbt_map_0, 0), (self.dvbt_reference_signals_0, 0)) self.connect((self.dvbt_energy_dispersal_0, 0), (self.dvbt_reed_solomon_enc_0, 0)) self.connect((self.dvbt_inner_coder_0, 0), (self.dvbt_bit_inner_interleaver_0, 0)) self.connect((self.dvbt_reed_solomon_enc_0, 0), (self.dvbt_convolutional_interleaver_0, 0)) self.connect((self.dvbt_reference_signals_0, 0), (self.fft_vxx_0, 0)) self.connect((self.dvbt_symbol_inner_interleaver_0, 0), (self.dvbt_dvbt_map_0, 0)) self.connect((self.fft_vxx_0, 0), (self.digital_ofdm_cyclic_prefixer_0, 0)) self.connect((self.rational_resampler_xxx_0, 0), (self.osmosdr_sink_0, 0))
def __init__(self, buffer, baud_rate=38400, samp_rate_tx=4000000, sps=10): gr.top_block.__init__(self, "Top Block") ################################################## # Parameters ################################################## self.baud_rate = baud_rate self.samp_rate_tx = samp_rate_tx self.sps = sps ################################################## # Variables ################################################## self.samp_rate = samp_rate = 384000 self.freq = freq = 867300000 ################################################## # Blocks ################################################## self.rational_resampler_xxx_0 = filter.rational_resampler_ccc( interpolation=samp_rate_tx, decimation=samp_rate, taps=None, fractional_bw=None, ) self.osmosdr_sink_0 = osmosdr.sink(args="numchan=" + str(1) + " " + '') self.osmosdr_sink_0.set_sample_rate(samp_rate_tx) self.osmosdr_sink_0.set_center_freq(freq, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(30, 0) self.osmosdr_sink_0.set_if_gain(20, 0) self.osmosdr_sink_0.set_bb_gain(20, 0) self.osmosdr_sink_0.set_antenna('', 0) self.osmosdr_sink_0.set_bandwidth(0, 0) self.digital_gfsk_mod_0 = digital.gfsk_mod( samples_per_symbol=sps, sensitivity=1, bt=1, verbose=False, log=False, ) self.blocks_vector_source_x_0 = blocks.vector_source_b( buffer, True, 1, []) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vcc( (800000000, )) ################################################## # Connections ################################################## self.connect((self.blocks_multiply_const_vxx_0, 0), (self.osmosdr_sink_0, 0)) self.connect((self.blocks_vector_source_x_0, 0), (self.digital_gfsk_mod_0, 0)) self.connect((self.digital_gfsk_mod_0, 0), (self.rational_resampler_xxx_0, 0)) self.connect((self.rational_resampler_xxx_0, 0), (self.blocks_multiply_const_vxx_0, 0))
def __init__(self, RIC=1006370, SubRIC=0, Text='pRIWET'): gr.top_block.__init__(self, "POCSAG Sender via HackRF") ################################################## # Parameters ################################################## self.RIC = RIC self.SubRIC = SubRIC self.Text = Text ################################################## # Variables ################################################## self.tx_gain = tx_gain = 47 self.symrate = symrate = 38400 self.samp_rate = samp_rate = 12000000 self.pocsagbitrate = pocsagbitrate = 1200 self.pagerfreq = pagerfreq = 473325000 self.max_deviation = max_deviation = 4500.0 self.af_gain = af_gain = 190 ################################################## # Blocks ################################################## self.pocsag_generator = pocsag_generator.pocsagsender(number=RIC, source=SubRIC, sleeptime=5, text=Text) self.pfb_arb_resampler_xxx_0 = pfb.arb_resampler_ccf( float(samp_rate)/float(symrate), taps=None, flt_size=16) self.pfb_arb_resampler_xxx_0.declare_sample_delay(0) self.osmosdr_sink_0 = osmosdr.sink( args="numchan=" + str(1) + " " + 'hackrf' ) self.osmosdr_sink_0.set_sample_rate(samp_rate) self.osmosdr_sink_0.set_center_freq(pagerfreq, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(0, 0) self.osmosdr_sink_0.set_if_gain(tx_gain, 0) self.osmosdr_sink_0.set_bb_gain(20, 0) self.osmosdr_sink_0.set_antenna('', 0) self.osmosdr_sink_0.set_bandwidth(0, 0) self.blocks_repeat_0 = blocks.repeat(gr.sizeof_char*1, symrate/pocsagbitrate) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vcc((af_gain/100, )) self.blocks_char_to_float_0 = blocks.char_to_float(1, af_gain*0.7/1000) self.analog_frequency_modulator_fc_0 = analog.frequency_modulator_fc(2.0 * math.pi * max_deviation / float(symrate)) ################################################## # Connections ################################################## self.connect((self.analog_frequency_modulator_fc_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.blocks_char_to_float_0, 0), (self.analog_frequency_modulator_fc_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.pfb_arb_resampler_xxx_0, 0)) self.connect((self.blocks_repeat_0, 0), (self.blocks_char_to_float_0, 0)) self.connect((self.pfb_arb_resampler_xxx_0, 0), (self.osmosdr_sink_0, 0)) self.connect((self.pocsag_generator, 0), (self.blocks_repeat_0, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Exploit Pack - RF Hacking") _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Variables ################################################## self.samp_rate = samp_rate = 2e6 ################################################## # Blocks ################################################## self.wxgui_fftsink2_0 = fftsink2.fft_sink_c( self.GetWin(), baseband_freq=0, y_per_div=10, y_divs=10, ref_level=0, ref_scale=2.0, sample_rate=samp_rate, fft_size=1024, fft_rate=15, average=False, avg_alpha=None, title='Exploit Pack - Repeat RF', peak_hold=False, win=window.blackmanharris, ) self.Add(self.wxgui_fftsink2_0.win) self.osmosdr_sink_0 = osmosdr.sink(args="numchan=" + str(1) + " " + '') self.osmosdr_sink_0.set_sample_rate(samp_rate) self.osmosdr_sink_0.set_center_freq(27e6, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(0, 0) self.osmosdr_sink_0.set_if_gain(47, 0) self.osmosdr_sink_0.set_bb_gain(20, 0) self.osmosdr_sink_0.set_antenna('', 0) self.osmosdr_sink_0.set_bandwidth(0, 0) self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex * 1, samp_rate, True) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vcc((6, )) self.blocks_file_source_0 = blocks.file_source( gr.sizeof_gr_complex * 1, '/tmp/saveRF', True) ################################################## # Connections ################################################## self.connect((self.blocks_file_source_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.blocks_throttle_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.osmosdr_sink_0, 0)) self.connect((self.blocks_throttle_0, 0), (self.wxgui_fftsink2_0, 0))
class top_block(gr.top_block): def __init__(self): gr.top_block.__init__(self, "Top Block") ################################################## # Variables ################################################## self.samp_rate = samp_rate = 1e6 self.center_freq = center_freq = 433.92e6 self.jamming_freq = jamming_freq = 433.85e6 self.cutoff_freq = cutoff_freq = 50e3 self.output_file = output_file = 'signal.raw' ################################################## # Blocks ################################################## self.osmosdr_source_0_0 = osmosdr.source( args="numchan=" + str(1) + " " + '' ) self.osmosdr_source_0_0.set_sample_rate(samp_rate) self.osmosdr_source_0_0.set_center_freq(center_freq, 0) self.osmosdr_source_0_0.set_freq_corr(0, 0) self.osmosdr_source_0_0.set_dc_offset_mode(0, 0) self.osmosdr_source_0_0.set_iq_balance_mode(0, 0) self.osmosdr_source_0_0.set_gain_mode(False, 0) self.osmosdr_source_0_0.set_gain(10, 0) self.osmosdr_source_0_0.set_if_gain(20, 0) self.osmosdr_source_0_0.set_bb_gain(20, 0) self.osmosdr_source_0_0.set_antenna('', 0) self.osmosdr_source_0_0.set_bandwidth(0, 0) self.osmosdr_sink_0 = osmosdr.sink( args="numchan=" + str(1) + " " + '' ) self.osmosdr_sink_0.set_sample_rate(samp_rate) self.osmosdr_sink_0.set_center_freq(center_freq, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(40, 0) self.osmosdr_sink_0.set_if_gain(20, 0) self.osmosdr_sink_0.set_bb_gain(20, 0) self.osmosdr_sink_0.set_antenna('', 0) self.osmosdr_sink_0.set_bandwidth(0, 0) self.custom_file_sink = custom_file_sink.blk(sink=output_file) self.blocks_threshold_ff_0_0 = blocks.threshold_ff(4e-3, 4e-3, 0) self.blocks_complex_to_mag_squared_0_0 = blocks.complex_to_mag_squared(1) self.band_pass_filter_0 = filter.fir_filter_ccf(1, firdes.band_pass( 1, samp_rate, 1, cutoff_freq, 5e3, firdes.WIN_HAMMING, 6.76)) self.analog_sig_source_x_0 = analog.sig_source_c(samp_rate, analog.GR_COS_WAVE, jamming_freq - center_freq, 1, 0) ################################################## # Connections ################################################## self.connect((self.analog_sig_source_x_0, 0), (self.custom_file_sink, 0)) self.connect((self.band_pass_filter_0, 0), (self.blocks_complex_to_mag_squared_0_0, 0)) self.connect((self.band_pass_filter_0, 0), (self.custom_file_sink, 1)) self.connect((self.blocks_complex_to_mag_squared_0_0, 0), (self.blocks_threshold_ff_0_0, 0)) self.connect((self.blocks_threshold_ff_0_0, 0), (self.custom_file_sink, 2)) self.connect((self.custom_file_sink, 0), (self.osmosdr_sink_0, 0)) self.connect((self.osmosdr_source_0_0, 0), (self.band_pass_filter_0, 0))
def u_sink(self): self.sink = osmosdr.sink(args="numchan=" + str(1) + " " + 'bladerf=0,buffers=2,buflen=1024') self.sink.set_sample_rate(self.dac_rate) self.sink.set_center_freq(self.freq, 0) self.sink.set_freq_corr(0, 0) self.sink.set_gain(self.tx_gain, 0) self.sink.set_antenna('', 0) self.sink.set_bandwidth(0, 0)
def __init__(self): gr.top_block.__init__(self, "Transmitter") ################################################## # Variables ################################################## self.samp_rate = samp_rate = int(1e6) self.freq = freq = 875e5 ################################################## # Blocks ################################################## self.rational_resampler_xxx_0 = filter.rational_resampler_ccc( interpolation=100, decimation=1, taps=None, fractional_bw=None, ) self.osmosdr_sink_0 = osmosdr.sink( args="numchan=" + str(1) + " " + 'hackrf=000000000000000087c867dc2d0c6c5f') self.osmosdr_sink_0.set_sample_rate(samp_rate) self.osmosdr_sink_0.set_center_freq(freq, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(10, 0) self.osmosdr_sink_0.set_if_gain(20, 0) self.osmosdr_sink_0.set_bb_gain(20, 0) self.osmosdr_sink_0.set_antenna('', 0) self.osmosdr_sink_0.set_bandwidth(0, 0) self.blocks_wavfile_source_0 = blocks.wavfile_source( '/home/pwntoo/GRC/assets/morse.wav', True) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vff((0, )) self.blocks_add_xx_0 = blocks.add_vff(1) self.audio_source_0 = audio.source(44100, '', True) self.analog_wfm_tx_0 = analog.wfm_tx( audio_rate=samp_rate, quad_rate=samp_rate, tau=75e-6, max_dev=5e3, fh=-1.0, ) ################################################## # Connections ################################################## self.connect((self.analog_wfm_tx_0, 0), (self.rational_resampler_xxx_0, 0)) self.connect((self.audio_source_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.blocks_add_xx_0, 0), (self.analog_wfm_tx_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.blocks_add_xx_0, 1)) self.connect((self.blocks_wavfile_source_0, 0), (self.blocks_add_xx_0, 0)) self.connect((self.rational_resampler_xxx_0, 0), (self.osmosdr_sink_0, 0))
def __init__(self, args): gr.top_block.__init__(self, "Nordic Auto-ACK Example") # SDR configuration self.freq = 2400e6 + args.channel * 1e6 self.gain = args.gain self.symbol_rate = args.data_rate self.sample_rate = args.data_rate * args.samples_per_symbol # SDR source (gr-osmosdr source) self.osmosdr_source = osmosdr.source() self.osmosdr_source.set_sample_rate(self.sample_rate) self.osmosdr_source.set_center_freq(self.freq) self.osmosdr_source.set_gain(self.gain) self.osmosdr_source.set_antenna('TX/RX') # SDR sink (gr-osmosdr source) self.osmosdr_sink = osmosdr.sink() self.osmosdr_sink.set_sample_rate(self.sample_rate) self.osmosdr_sink.set_center_freq(self.freq) self.osmosdr_sink.set_gain(self.gain) self.osmosdr_sink.set_antenna('TX/RX') # Transmit chain self.tx = nordic.nordic_tx() self.gfsk_mod = digital.gfsk_mod( samples_per_symbol=args.samples_per_symbol) self.connect(self.tx, self.gfsk_mod) self.connect(self.gfsk_mod, self.osmosdr_sink) # Receive chain dr = 0 if args.data_rate == 1e6: dr = 1 elif args.data_rate == 2e6: dr = 2 self.rx = nordic.nordic_rx(args.channel, args.address_length, args.crc_length, dr) self.gfsk_demod = digital.gfsk_demod( samples_per_symbol=args.samples_per_symbol) self.lpf = filter.fir_filter_ccf( 1, firdes.low_pass_2(1, self.sample_rate, self.symbol_rate / 2, 50e3, 50)) self.connect(self.osmosdr_source, self.lpf) self.connect(self.lpf, self.gfsk_demod) self.connect(self.gfsk_demod, self.rx) # Handle incoming packets self.nordictap_ack_handler = nordictap_ack_handler() self.msg_connect(self.rx, "nordictap_out", self.nordictap_ack_handler, "nordictap_in") # Reply with ACKs self.msg_connect(self.nordictap_ack_handler, "nordictap_out", self.tx, "nordictap_in")
def __init__(self): gr.top_block.__init__(self, "Qam64 HackRF") ################################################## # Variables ################################################## self.interpolation = interpolation = 2 self.samp_rate = samp_rate = 5056941 * interpolation self.rrc_taps = rrc_taps = 50 self.gain = gain = 40 self.center_freq = center_freq = 441000000 ################################################## # Blocks ################################################## self.osmosdr_sink_0 = osmosdr.sink( args="hackrf=0" ) self.osmosdr_sink_0.set_sample_rate(samp_rate) self.osmosdr_sink_0.set_center_freq(center_freq, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(14, 0) self.osmosdr_sink_0.set_if_gain(gain, 0) self.osmosdr_sink_0.set_bb_gain(-4, 0) self.osmosdr_sink_0.set_antenna("", 0) self.osmosdr_sink_0.set_bandwidth(6000000, 0) self.qam_trellis_enc_bb_0 = qam.trellis_enc_bb() self.qam_transport_framing_enc_bb_0 = qam.transport_framing_enc_bb() self.qam_reed_solomon_enc_bb_0 = qam.reed_solomon_enc_bb() self.qam_randomizer_bb_0 = qam.randomizer_bb() self.qam_interleaver_bb_0 = qam.interleaver_bb(128,4) self.qam_frame_sync_enc_bb_0 = qam.frame_sync_enc_bb(6) self.interp_fir_filter_xxx_0 = filter.interp_fir_filter_ccc(interpolation, (firdes.root_raised_cosine(0.14, samp_rate, samp_rate/interpolation, 0.18, rrc_taps))) self.interp_fir_filter_xxx_0.declare_sample_delay(0) self.digital_chunks_to_symbols_xx_0 = digital.chunks_to_symbols_bc(([complex(1,1), complex(1,-1), complex(1,-3), complex(-3,-1), complex(-3,1), complex(1,3), complex(-3,-3), complex(-3,3), complex(-1,1), complex(-1,-1), complex(3,1), complex(-1,3), complex(-1,-3), complex(3,-1), complex(3,-3), complex(3,3), complex(5,1), complex(1,-5), complex(1,-7), complex(-7,-1), complex(-3,5), complex(5,3), complex(-7,-3), complex(-3,7), complex(-1,5), complex(-5,-1), complex(7,1), complex(-1,7), complex(-5,-3), complex(3,-5), complex(3,-7), complex(7,3), complex(1,5), complex(5,-1), complex(5,-3), complex(-3,-5), complex(-7,1), complex(1,7), complex(-3,-7), complex(-7,3), complex(-5,1), complex(-1,-5), complex(3,5), complex(-5,3), complex(-1,-7), complex(7,-1), complex(7,-3), complex(3,7), complex(5,5), complex(5,-5), complex(5,-7), complex(-7,-5), complex(-7,5), complex(5,7), complex(-7,-7), complex(-7,7), complex(-5,5), complex(-5,-5), complex(7,5), complex(-5,7), complex(-5,-7), complex(7,-5), complex(7,-7), complex(7,7)]), 1) self.blocks_packed_to_unpacked_xx_0 = blocks.packed_to_unpacked_bb(7, gr.GR_MSB_FIRST) self.blks2_tcp_source_0 = grc_blks2.tcp_source( itemsize=gr.sizeof_char*1, addr="127.0.0.1", port=5555, server=True, ) ################################################## # Connections ################################################## self.connect((self.interp_fir_filter_xxx_0, 0), (self.osmosdr_sink_0, 0)) self.connect((self.digital_chunks_to_symbols_xx_0, 0), (self.interp_fir_filter_xxx_0, 0)) self.connect((self.qam_interleaver_bb_0, 0), (self.qam_randomizer_bb_0, 0)) self.connect((self.qam_randomizer_bb_0, 0), (self.qam_frame_sync_enc_bb_0, 0)) self.connect((self.qam_frame_sync_enc_bb_0, 0), (self.qam_trellis_enc_bb_0, 0)) self.connect((self.blks2_tcp_source_0, 0), (self.qam_transport_framing_enc_bb_0, 0)) self.connect((self.blocks_packed_to_unpacked_xx_0, 0), (self.qam_reed_solomon_enc_bb_0, 0)) self.connect((self.qam_transport_framing_enc_bb_0, 0), (self.blocks_packed_to_unpacked_xx_0, 0)) self.connect((self.qam_trellis_enc_bb_0, 0), (self.digital_chunks_to_symbols_xx_0, 0)) self.connect((self.qam_reed_solomon_enc_bb_0, 0), (self.qam_interleaver_bb_0, 0))
def main(args): nargs = len(args) if nargs == 1: infile = args[0] outfile = None elif nargs == 2: infile = args[0] outfile = args[1] else: sys.stderr.write("Usage: atsc-blade.py input_file [output_file]\n"); sys.exit(1) symbol_rate = 4500000.0 / 286 * 684 pilot_freq = 309441 center_freq = 441000000 txvga1_gain = -4 txvga2_gain = 25 tb = gr.top_block() src = blocks.file_source(gr.sizeof_char, infile, True) pad = atsc.pad() rand = atsc.randomizer() rs_enc = atsc.rs_encoder() inter = atsc.interleaver() trell = atsc.trellis_encoder() fsm = atsc.field_sync_mux() v2s = blocks.vector_to_stream(gr.sizeof_char, 1024) minn = blocks.keep_m_in_n(gr.sizeof_char, 832, 1024, 4) c2sym = digital.chunks_to_symbols_bc(([symbol + 1.25 for symbol in [-7,-5,-3,-1,1,3,5,7]]), 1) offset = analog.sig_source_c(symbol_rate, analog.GR_COS_WAVE, -3000000 + pilot_freq, 0.9, 0) mix = blocks.multiply_vcc(1) rrc_taps = firdes.root_raised_cosine(0.1, symbol_rate*2, symbol_rate/2, 0.1152, 200) rrc = filter.rational_resampler_ccc(interpolation=2, decimation=3, taps=rrc_taps, fractional_bw=None, ) out = osmosdr.sink(args="bladerf=0,buffers=128,buflen=32768") out.set_sample_rate(symbol_rate * 2 / 3) out.set_center_freq(center_freq, 0) out.set_freq_corr(0, 0) out.set_gain(txvga2_gain, 0) out.set_bb_gain(txvga1_gain, 0) out.set_bandwidth(6000000, 0) tb.connect(src, pad, rand, rs_enc, inter, trell, fsm, v2s, minn, c2sym) tb.connect((c2sym, 0), (mix, 0)) tb.connect((offset, 0), (mix, 1)) tb.connect(mix, rrc, out) if outfile: dst = blocks.file_sink(gr.sizeof_gr_complex, outfile) tb.connect(rrc, dst) tb.run()
def __init__(self): gr.top_block.__init__(self, "Blade Tx") ################################################## # Variables ################################################## self.samp_rate = samp_rate = 4000000 self.interpolation = interpolation = 80 self.wpm = wpm = 15 self.tune = tune = 100 self.rf_gain = rf_gain = 10 self.offset = offset = 200000 self.cw_vector = cw_vector = (1,0,1,0,1,0,1,1,1, 0,0,0, 1,0,1,0,1,0,1,1,1, 0,0,0, 1,0,1,0,1,0,1,1,1, 0,0,0,0,0,0,0, 1,1,1,0,1,0,1, 0,0,0, 1, 0,0,0,0,0,0,0, 1,0,1,0,1,0,1,1,1, 0,0,0, 1, 0,0,0, 1,0,1,0,1,0,1,1,1,0,1,1,1, 0,0,0, 1,0,1, 0,0,0, 1,0,1,1,1,0,1, 0,0,0, 1,0,1,1,1,0,1, 0,0,0,0,0,0,0, 1,1,1, 0,0,0, 1, 0,0,0, 1,0,1,0,1, 0,0,0, 1,1,1, 0,0,0, 1,0,1, 0,0,0, 1,1,1,0,1, 0,0,0, 1,1,1,0,1,1,1,0,1, 0,0,0,0,0,0,0) self.correction = correction = 0 self.bb_gain = bb_gain = -25 self.band = band = 432 self.audio_rate = audio_rate = samp_rate / interpolation ################################################## # Blocks ################################################## self.resamp = filter.rational_resampler_ccc( interpolation=interpolation, decimation=1, taps=None, fractional_bw=None, ) self.out = osmosdr.sink( args="numchan=" + str(1) + " " + "" ) self.out.set_sample_rate(samp_rate) self.out.set_center_freq(band * (1 + correction / 1e6) * 1e6 + 100000 - offset, 0) self.out.set_freq_corr(0, 0) self.out.set_gain(rf_gain, 0) self.out.set_if_gain(0, 0) self.out.set_bb_gain(bb_gain, 0) self.out.set_antenna("", 0) self.out.set_bandwidth(0, 0) self.offset_osc = analog.sig_source_c(samp_rate, analog.GR_COS_WAVE, tune * 1000 + 100000, 0.9, 0) self.mixer = blocks.multiply_vcc(1) self.cw_vector_source = blocks.vector_source_c(cw_vector, False, 1, []) self.cw_repeat = blocks.repeat(gr.sizeof_gr_complex*1, int(1.2 * audio_rate / wpm)) self.click_filter = filter.single_pole_iir_filter_cc(1e-2, 1) self.blocks_add_const_vxx_0 = blocks.add_const_vcc((0.000001, )) ################################################## # Connections ################################################## self.connect((self.blocks_add_const_vxx_0, 0), (self.resamp, 0)) self.connect((self.click_filter, 0), (self.blocks_add_const_vxx_0, 0)) self.connect((self.cw_repeat, 0), (self.click_filter, 0)) self.connect((self.cw_vector_source, 0), (self.cw_repeat, 0)) self.connect((self.mixer, 0), (self.out, 0)) self.connect((self.offset_osc, 0), (self.mixer, 0)) self.connect((self.resamp, 0), (self.mixer, 1))
def __init__(self): gr.top_block.__init__(self, "Transmission") Qt.QWidget.__init__(self) self.setWindowTitle("Transmission") try: self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc')) except: pass self.top_scroll_layout = Qt.QVBoxLayout() self.setLayout(self.top_scroll_layout) self.top_scroll = Qt.QScrollArea() self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame) self.top_scroll_layout.addWidget(self.top_scroll) self.top_scroll.setWidgetResizable(True) self.top_widget = Qt.QWidget() self.top_scroll.setWidget(self.top_widget) self.top_layout = Qt.QVBoxLayout(self.top_widget) self.top_grid_layout = Qt.QGridLayout() self.top_layout.addLayout(self.top_grid_layout) self.settings = Qt.QSettings("GNU Radio", "transmission") self.restoreGeometry(self.settings.value("geometry").toByteArray()) ################################################## # Variables ################################################## self.samp_rate = samp_rate = 48000 self.freq = freq = 5000 ################################################## # Blocks ################################################## self._freq_range = Range(0, 10000, 1, 5000, 200) self._freq_win = RangeWidget(self._freq_range, self.set_freq, "freq", "counter_slider", float) self.top_layout.addWidget(self._freq_win) self.osmosdr_sink_0 = osmosdr.sink(args="numchan=" + str(1) + " " + "hackrf=995d5f") self.osmosdr_sink_0.set_sample_rate(1.8e6) self.osmosdr_sink_0.set_center_freq(430e6 - 9000, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(100, 0) self.osmosdr_sink_0.set_if_gain(20, 0) self.osmosdr_sink_0.set_bb_gain(20, 0) self.osmosdr_sink_0.set_antenna("", 0) self.osmosdr_sink_0.set_bandwidth(0, 0) self.analog_sig_source_x_0 = analog.sig_source_c( samp_rate, analog.GR_COS_WAVE, freq, 1, 0) ################################################## # Connections ################################################## self.connect((self.analog_sig_source_x_0, 0), (self.osmosdr_sink_0, 0))
def main(args): nargs = len(args) if nargs == 1: port = int(args[0]) outfile = None elif nargs == 2: port = int(args[0]) outfile = args[1] else: sys.stderr.write("Usage: atsc-hackrf.py port [output_file]\n"); sys.exit(1) symbol_rate = 4500000.0 / 286 * 684 pilot_freq = 309441 center_freq = 441000000 rf_gain = 14 if_gain = 40 tb = gr.top_block() src = grc_blks2.tcp_source(gr.sizeof_char*1, "127.0.0.1", port, True) pad = atsc.pad() rand = atsc.randomizer() rs_enc = atsc.rs_encoder() inter = atsc.interleaver() trell = atsc.trellis_encoder() fsm = atsc.field_sync_mux() v2s = blocks.vector_to_stream(gr.sizeof_char, 1024) minn = blocks.keep_m_in_n(gr.sizeof_char, 832, 1024, 4) c2sym = digital.chunks_to_symbols_bc(([symbol + 1.25 for symbol in [-7,-5,-3,-1,1,3,5,7]]), 1) offset = analog.sig_source_c(symbol_rate, analog.GR_COS_WAVE, -3000000 + pilot_freq, 0.9, 0) mix = blocks.multiply_vcc(1) rrc = filter.fft_filter_ccc(1, firdes.root_raised_cosine(0.1, symbol_rate, symbol_rate/2, 0.1152, 100)) out = osmosdr.sink(args="hackrf=0") out.set_sample_rate(symbol_rate) out.set_center_freq(center_freq, 0) out.set_freq_corr(0, 0) out.set_gain(rf_gain, 0) out.set_if_gain(if_gain, 0) out.set_bandwidth(6000000, 0) tb.connect(src, pad, rand, rs_enc, inter, trell, fsm, v2s, minn, c2sym) tb.connect((c2sym, 0), (mix, 0)) tb.connect((offset, 0), (mix, 1)) tb.connect(mix, rrc, out) if outfile: dst = blocks.file_sink(gr.sizeof_gr_complex, outfile) tb.connect(rrc, dst) tb.run()
def __init__(self, p, c, pw, ff, sr, br): grc_wxgui.top_block_gui.__init__(self, title="Top Block") _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Variables ################################################## self.samp_rate = samp_rate = sr self.channel_select = channel_select = c self.bit_rate = bit_rate = br ################################################## # Blocks ################################################## self.osmosdr_sink_0 = osmosdr.sink(args="numchan=" + str(1) + " " + "") self.osmosdr_sink_0.set_sample_rate(samp_rate) self.osmosdr_sink_0.set_center_freq(161999000, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(0, 0) self.osmosdr_sink_0.set_if_gain(0, 0) self.osmosdr_sink_0.set_bb_gain(0, 0) self.osmosdr_sink_0.set_antenna("", 0) self.osmosdr_sink_0.set_bandwidth(0, 0) # self.uhd_usrp_sink_0 = uhd.usrp_sink( # device_addr="", # stream_args=uhd.stream_args( # cpu_format="fc32", # channels=range(1), # ), # ) # self.uhd_usrp_sink_0.set_samp_rate(samp_rate) # self.uhd_usrp_sink_0.set_center_freq(uhd.tune_request_t(161975000+50000*c,ff), 0) # self.uhd_usrp_sink_0.set_gain(-10, 0) # self.uhd_usrp_sink_0.set_antenna("TX/RX", 0) # self.digital_gmsk_mod_0 = digital.gmsk_mod( # samples_per_symbol=int(samp_rate/bit_rate), # bt=0.4, # verbose=False, # log=False, # ) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vcc((0.9, )) self.AISTX_Build_Frame_0 = AISTX.Build_Frame(p, False, True) ################################################## # Connections ################################################## self.connect((self.AISTX_Build_Frame_0, 0), (self.digital_gmsk_mod_0, 0)) self.connect((self.digital_gmsk_mod_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.osmosdr_sink_0, 0))
def _setup_osmosdr(self, options): self._sink = osmosdr.sink(options.args) try: self._sink.get_sample_rates().start() except RuntimeError: print "Sink has no sample rates (wrong device arguments?)." sys.exit(1) if options.samp_rate is None: options.samp_rate = self._sink.get_sample_rates().start() self.set_samp_rate(options.samp_rate) # Set the gain from options if(options.gain): gain = self._sink.set_gain(options.gain) if self._verbose: print "Set gain to:", gain if self._verbose: gain_names = self.src.get_gain_names() for name in gain_names: range = self.src.get_gain_range(name) print "%s gain range: start %d stop %d step %d" % (name, range.start(), range.stop(), range.step()) if options.gains: for tuple in options.gains.split(","): name, gain = tuple.split(":") gain = int(gain) print "Setting gain %s to %d." % (name, gain) self.src.set_gain(gain, name) if self._verbose: rates = self.src.get_sample_rates() print 'Supported sample rates %d-%d step %d.' % (rates.start(), rates.stop(), rates.step()) # Set the antenna if(options.antenna): ant = self._sink.set_antenna(options.antenna, 0) if self._verbose: print "Set antenna to:", ant self.publish(FREQ_RANGE_KEY, self._sink.get_freq_range) for name in self.get_gain_names(): self.publish(GAIN_RANGE_KEY(name), (lambda self=self,name=name: self._sink.get_gain_range(name))) self.publish(BWIDTH_RANGE_KEY, self._sink.get_bandwidth_range) for name in self.get_gain_names(): self.publish(GAIN_KEY(name), (lambda self=self,name=name: self._sink.get_gain(name))) self.publish(BWIDTH_KEY, self._sink.get_bandwidth)
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Vv009 4Kfft") ################################################## # Variables ################################################## self.samp_rate = samp_rate = (8000000.0 * 8) / 7 ################################################## # Blocks ################################################## self.osmosdr_sink_0 = osmosdr.sink( args="numchan=" + str(1) + " " + "bladerf=0,buffers=128,buflen=32768" ) self.osmosdr_sink_0.set_sample_rate(samp_rate) self.osmosdr_sink_0.set_center_freq(429e6, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(18, 0) self.osmosdr_sink_0.set_if_gain(0, 0) self.osmosdr_sink_0.set_bb_gain(-8, 0) self.osmosdr_sink_0.set_antenna("", 0) self.osmosdr_sink_0.set_bandwidth(8750000, 0) self.dvbt2_pilotgenerator_cc_0 = dvbt2.pilotgenerator_cc(dvbt2.CARRIERS_NORMAL, dvbt2.FFTSIZE_4K, dvbt2.PILOT_PP7, dvbt2.GI_1_32, 100, dvbt2.PAPR_OFF, dvbt2.VERSION_111, dvbt2.PREAMBLE_T2_SISO, dvbt2.MISO_TX1, dvbt2.EQUALIZATION_ON, dvbt2.BANDWIDTH_8_0_MHZ, 4096) self.dvbt2_p1insertion_cc_0 = dvbt2.p1insertion_cc(dvbt2.CARRIERS_NORMAL, dvbt2.FFTSIZE_4K, dvbt2.GI_1_32, 100, dvbt2.PREAMBLE_T2_SISO, dvbt2.SHOWLEVELS_OFF, 3.3) self.dvbt2_modulator_bc_0 = dvbt2.modulator_bc(dvbt2.FECFRAME_NORMAL, dvbt2.MOD_64QAM, dvbt2.ROTATION_ON) self.dvbt2_ldpc_bb_0 = dvbt2.ldpc_bb(dvbt2.FECFRAME_NORMAL, dvbt2.C2_3) self.dvbt2_interleaver_bb_0 = dvbt2.interleaver_bb(dvbt2.FECFRAME_NORMAL, dvbt2.C2_3, dvbt2.MOD_64QAM) self.dvbt2_freqinterleaver_cc_0 = dvbt2.freqinterleaver_cc(dvbt2.CARRIERS_NORMAL, dvbt2.FFTSIZE_4K, dvbt2.PILOT_PP7, dvbt2.GI_1_32, 100, dvbt2.PAPR_OFF, dvbt2.VERSION_111, dvbt2.PREAMBLE_T2_SISO, ) self.dvbt2_framemapper_cc_0 = dvbt2.framemapper_cc(dvbt2.FECFRAME_NORMAL, dvbt2.C2_3, dvbt2.MOD_64QAM, dvbt2.ROTATION_ON, 31, 3, dvbt2.CARRIERS_NORMAL, dvbt2.FFTSIZE_4K, dvbt2.GI_1_32, dvbt2.L1_MOD_16QAM, dvbt2.PILOT_PP7, 2, 100, dvbt2.PAPR_OFF, dvbt2.VERSION_111, dvbt2.PREAMBLE_T2_SISO, dvbt2.INPUTMODE_NORMAL, dvbt2.RESERVED_OFF, dvbt2.L1_SCRAMBLED_OFF, dvbt2.INBAND_OFF) self.dvbt2_cellinterleaver_cc_0 = dvbt2.cellinterleaver_cc(dvbt2.FECFRAME_NORMAL, dvbt2.MOD_64QAM, 31, 3) self.dvbt2_bch_bb_0 = dvbt2.bch_bb(dvbt2.FECFRAME_NORMAL, dvbt2.C2_3) self.dvbt2_bbscrambler_bb_0 = dvbt2.bbscrambler_bb(dvbt2.FECFRAME_NORMAL, dvbt2.C2_3) self.dvbt2_bbheader_bb_0 = dvbt2.bbheader_bb(dvbt2.FECFRAME_NORMAL, dvbt2.C2_3, dvbt2.INPUTMODE_NORMAL, dvbt2.INBAND_OFF, 168, 4000000) self.digital_ofdm_cyclic_prefixer_0 = digital.ofdm_cyclic_prefixer(4096, 4096+4096/32, 0, "") self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vcc((0.2, )) self.blocks_file_source_0 = blocks.file_source(gr.sizeof_char*1, "/run/shm/adv4k64qam.ts", True) ################################################## # Connections ################################################## self.connect((self.blocks_file_source_0, 0), (self.dvbt2_bbheader_bb_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.osmosdr_sink_0, 0)) self.connect((self.digital_ofdm_cyclic_prefixer_0, 0), (self.dvbt2_p1insertion_cc_0, 0)) self.connect((self.dvbt2_bbheader_bb_0, 0), (self.dvbt2_bbscrambler_bb_0, 0)) self.connect((self.dvbt2_bbscrambler_bb_0, 0), (self.dvbt2_bch_bb_0, 0)) self.connect((self.dvbt2_bch_bb_0, 0), (self.dvbt2_ldpc_bb_0, 0)) self.connect((self.dvbt2_cellinterleaver_cc_0, 0), (self.dvbt2_framemapper_cc_0, 0)) self.connect((self.dvbt2_framemapper_cc_0, 0), (self.dvbt2_freqinterleaver_cc_0, 0)) self.connect((self.dvbt2_freqinterleaver_cc_0, 0), (self.dvbt2_pilotgenerator_cc_0, 0)) self.connect((self.dvbt2_interleaver_bb_0, 0), (self.dvbt2_modulator_bc_0, 0)) self.connect((self.dvbt2_ldpc_bb_0, 0), (self.dvbt2_interleaver_bb_0, 0)) self.connect((self.dvbt2_modulator_bc_0, 0), (self.dvbt2_cellinterleaver_cc_0, 0)) self.connect((self.dvbt2_p1insertion_cc_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.dvbt2_pilotgenerator_cc_0, 0), (self.digital_ofdm_cyclic_prefixer_0, 0))
def get_sdr(self): out = osmosdr.sink( args= "bladerf=0,buffers=128,buflen=32768,fpga=/usr/share/Nuand/bladeRF/hostedx40.rbf" ) out.set_sample_rate(self._symbol_rate) out.set_center_freq(self._center_freq, 0) out.set_freq_corr(0, 0) out.set_gain(self._txvga2_gain, 0) out.set_bb_gain(self._txvga1_gain, 0) out.set_bandwidth(26000000, 0) return out
def __init__(self, sr, bw): gr.top_block.__init__(self, "Top Block") ################################################## # Variables ################################################## self.samp_rate = samp_rate = sr self.freq = freq = 2400e6 self.bandwidth = bandwidth = bw ################################################## # Blocks ################################################## self.osmosdr_sink_0 = osmosdr.sink(args="numchan=" + str(1) + " " + "bladerf=32a") self.osmosdr_sink_0.set_sample_rate(samp_rate) self.osmosdr_sink_0.set_center_freq(freq, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(10, 0) self.osmosdr_sink_0.set_if_gain(0, 0) self.osmosdr_sink_0.set_bb_gain(0, 0) self.osmosdr_sink_0.set_antenna('TX', 0) self.osmosdr_sink_0.set_bandwidth(bandwidth, 0) self.blocks_float_to_complex_0 = blocks.float_to_complex(1) self.blocks_file_source_0_0 = blocks.file_source( gr.sizeof_float * 1, '/dev/shm/QPulse.dat', True) self.blocks_file_source_0 = blocks.file_source(gr.sizeof_float * 1, '/dev/shm/IPulse.dat', True) self.blocks_file_sink_0_0_0_0_0_0 = blocks.file_sink( gr.sizeof_float * 1, '/dev/shm/ruidoR.dat', False) self.blocks_file_sink_0_0_0_0_0_0.set_unbuffered(True) self.blocks_file_sink_0_0_0_0_0 = blocks.file_sink( gr.sizeof_float * 1, '/dev/shm/ruidoI.dat', False) self.blocks_file_sink_0_0_0_0_0.set_unbuffered(True) self.blocks_complex_to_float_0 = blocks.complex_to_float(1) ################################################## # Connections ################################################## self.connect((self.blocks_complex_to_float_0, 1), (self.blocks_file_sink_0_0_0_0_0, 0)) self.connect((self.blocks_complex_to_float_0, 0), (self.blocks_file_sink_0_0_0_0_0_0, 0)) self.connect((self.blocks_file_source_0, 0), (self.blocks_float_to_complex_0, 0)) self.connect((self.blocks_file_source_0_0, 0), (self.blocks_float_to_complex_0, 1)) self.connect((self.blocks_float_to_complex_0, 0), (self.blocks_complex_to_float_0, 0)) self.connect((self.blocks_float_to_complex_0, 0), (self.osmosdr_sink_0, 0))
def __init__(self, wpm, tx_freq, if_gain, rf_amp, morse_vector): gr.top_block.__init__(self, "Top Block") ################################################## # Variables ################################################## self.wpm = wpm self.tx_freq = tx_freq - cw_tone_ofs self.rf_sample_rate = rf_sample_rate = 500000 self.morse_vector = morse_vector self.audio_rate = audio_rate = 8000 ################################################## # Blocks ################################################## self.root_raised_cosine_filter_0 = filter.fir_filter_ccf(1, firdes.root_raised_cosine( 1, audio_rate, 5, 0.35, 200)) self.rational_resampler_xxx_0 = filter.rational_resampler_ccc( interpolation=rf_sample_rate, decimation=audio_rate, taps=None, fractional_bw=None, ) self.osmosdr_sink_0 = osmosdr.sink( args="numchan=" + str(1) + " " + "" ) self.osmosdr_sink_0.set_sample_rate(rf_sample_rate) self.osmosdr_sink_0.set_center_freq(self.tx_freq, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) # OK, osmocom is incredibly stupid. It interprets "0" for these fields as "not set", #and defaults to an IF gain of +16 and turning the RF amp *ON*. # A value of "1" for the RF gain turns it off, and a value >=7 turns it on. # For IF gain, 0->16, 1..47 behave as you'd expect. This means IF gain=0 is impossible. self.osmosdr_sink_0.set_gain( 14 if rf_amp > 0 else 1, 0) self.osmosdr_sink_0.set_if_gain(if_gain if if_gain > 0 else 1, 0) self.osmosdr_sink_0.set_antenna("", 0) self.osmosdr_sink_0.set_bandwidth(0, 0) self.blocks_vector_source_x_0 = blocks.vector_source_c(morse_vector, False, 1, []) self.blocks_repeat_0 = blocks.repeat(gr.sizeof_gr_complex*1, int(1.2 * audio_rate / wpm)) self.blocks_multiply_xx_0 = blocks.multiply_vcc(1) self.analog_sig_source_x_0 = analog.sig_source_c(audio_rate, analog.GR_COS_WAVE, cw_tone_ofs, 1, 0) ################################################## # Connections ################################################## self.connect((self.rational_resampler_xxx_0, 0), (self.osmosdr_sink_0, 0)) self.connect((self.blocks_vector_source_x_0, 0), (self.blocks_repeat_0, 0)) self.connect((self.blocks_repeat_0, 0), (self.root_raised_cosine_filter_0, 0)) self.connect((self.analog_sig_source_x_0, 0), (self.blocks_multiply_xx_0, 1)) self.connect((self.root_raised_cosine_filter_0, 0), (self.blocks_multiply_xx_0, 0)) self.connect((self.blocks_multiply_xx_0, 0), (self.rational_resampler_xxx_0, 0))
def __init__(self): gr.top_block.__init__(self, "grc_cc1111_hackrf_sender") ################################################## # Variables ################################################## self.symbole_rate = symbole_rate = 40000 self.samp_rate = samp_rate = 2e6 self.samp_per_sym = samp_per_sym = int(samp_rate / symbole_rate) self.preamble = preamble = '0101010101010101' self.myqueue_in = myqueue_in = gr.msg_queue(2) self.frequency = frequency = 433.6e6 self.bit_per_sym = bit_per_sym = 1 self.access_code = access_code = '11010011100100011101001110010001' ################################################## # Blocks ################################################## self.osmosdr_sink_0 = osmosdr.sink(args="numchan=" + str(1) + " " + "rfcat") self.osmosdr_sink_0.set_sample_rate(samp_rate) self.osmosdr_sink_0.set_center_freq(frequency, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(10, 0) self.osmosdr_sink_0.set_if_gain(20, 0) self.osmosdr_sink_0.set_bb_gain(20, 0) self.osmosdr_sink_0.set_antenna("", 0) self.osmosdr_sink_0.set_bandwidth(0, 0) self.digital_gmsk_mod_0 = digital.gmsk_mod( samples_per_symbol=int(samp_per_sym), bt=0.5, verbose=False, log=False, ) self.cc1111_cc1111_packet_encoder_0 = cc1111.cc1111_packet_mod_base( cc1111.cc1111_packet_encoder(samples_per_symbol=samp_per_sym, bits_per_symbol=bit_per_sym, preamble=preamble, access_code=access_code, pad_for_usrp=True, do_whitening=True, add_crc=True), source_queue=myqueue_in) ################################################## # Connections ################################################## self.connect((self.digital_gmsk_mod_0, 0), (self.osmosdr_sink_0, 0)) self.connect((self.cc1111_cc1111_packet_encoder_0, 0), (self.digital_gmsk_mod_0, 0))
def __init__(self, p, c, pw, ff, sr, br): grc_wxgui.top_block_gui.__init__(self, title="Top Block") _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Variables ################################################## self.samp_rate = samp_rate = sr self.channel_select = channel_select = c self.bit_rate = bit_rate = br ################################################## # Blocks ################################################## self.osmosdr_sink_0 = osmosdr.sink(args="numchan=" + str(1) + " " + "") self.osmosdr_sink_0.set_sample_rate(samp_rate) self.osmosdr_sink_0.set_center_freq(161999000, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(0, 0) self.osmosdr_sink_0.set_if_gain(0, 0) self.osmosdr_sink_0.set_bb_gain(0, 0) self.osmosdr_sink_0.set_antenna("", 0) self.osmosdr_sink_0.set_bandwidth(0, 0) # self.uhd_usrp_sink_0 = uhd.usrp_sink( # device_addr="", # stream_args=uhd.stream_args( # cpu_format="fc32", # channels=range(1), # ), # ) # self.uhd_usrp_sink_0.set_samp_rate(samp_rate) # self.uhd_usrp_sink_0.set_center_freq(uhd.tune_request_t(161975000+50000*c,ff), 0) # self.uhd_usrp_sink_0.set_gain(-10, 0) # self.uhd_usrp_sink_0.set_antenna("TX/RX", 0) # self.digital_gmsk_mod_0 = digital.gmsk_mod( # samples_per_symbol=int(samp_rate/bit_rate), # bt=0.4, # verbose=False, # log=False, # ) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vcc((0.9,)) self.AISTX_Build_Frame_0 = AISTX.Build_Frame(p, False, True) ################################################## # Connections ################################################## self.connect((self.AISTX_Build_Frame_0, 0), (self.digital_gmsk_mod_0, 0)) self.connect((self.digital_gmsk_mod_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.osmosdr_sink_0, 0))
def __init__(self): gr.top_block.__init__(self, "grc_cc1111_hackrf_sender") ################################################## # Variables ################################################## self.symbole_rate = symbole_rate = 40000 self.samp_rate = samp_rate = 2e6 self.samp_per_sym = samp_per_sym = int(samp_rate / symbole_rate) self.preamble = preamble = '0101010101010101' self.myqueue_in = myqueue_in = gr.msg_queue(2) self.frequency = frequency = 433.6e6 self.bit_per_sym = bit_per_sym = 1 self.access_code = access_code = '11010011100100011101001110010001' ################################################## # Blocks ################################################## self.osmosdr_sink_0 = osmosdr.sink( args="numchan=" + str(1) + " " + "rfcat" ) self.osmosdr_sink_0.set_sample_rate(samp_rate) self.osmosdr_sink_0.set_center_freq(frequency, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(10, 0) self.osmosdr_sink_0.set_if_gain(20, 0) self.osmosdr_sink_0.set_bb_gain(20, 0) self.osmosdr_sink_0.set_antenna("", 0) self.osmosdr_sink_0.set_bandwidth(0, 0) self.digital_gmsk_mod_0 = digital.gmsk_mod( samples_per_symbol=int(samp_per_sym), bt=0.5, verbose=False, log=False, ) self.cc1111_cc1111_packet_encoder_0 = cc1111.cc1111_packet_mod_base(cc1111.cc1111_packet_encoder( samples_per_symbol=samp_per_sym, bits_per_symbol=bit_per_sym, preamble=preamble, access_code=access_code, pad_for_usrp=True, do_whitening=True, add_crc=True ), source_queue=myqueue_in ) ################################################## # Connections ################################################## self.connect((self.digital_gmsk_mod_0, 0), (self.osmosdr_sink_0, 0)) self.connect((self.cc1111_cc1111_packet_encoder_0, 0), (self.digital_gmsk_mod_0, 0))
def __init__(self, fixed=1234567890, freq=315150000, rolling=1234567890): gr.top_block.__init__(self, "Secplus Tx") ################################################## # Parameters ################################################## self.fixed = fixed self.freq = freq self.rolling = rolling ################################################## # Variables ################################################## self.seq = seq = [0] * 100 + secplus.encode_ook( rolling, fixed, fast=False) * 4 + [0] * 100 self.samp_rate = samp_rate = 2e6 ################################################## # Blocks ################################################## self.single_pole_iir_filter_xx_0 = filter.single_pole_iir_filter_cc( 0.1, 1) self.osmosdr_sink_0 = osmosdr.sink(args="numchan=" + str(1) + " " + '') self.osmosdr_sink_0.set_time_unknown_pps(osmosdr.time_spec_t()) self.osmosdr_sink_0.set_sample_rate(samp_rate) self.osmosdr_sink_0.set_center_freq(freq - 300e3, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(0, 0) self.osmosdr_sink_0.set_if_gain(47, 0) self.osmosdr_sink_0.set_bb_gain(0, 0) self.osmosdr_sink_0.set_antenna('', 0) self.osmosdr_sink_0.set_bandwidth(0, 0) self.blocks_vector_source_x_0 = blocks.vector_source_c( seq, False, 1, []) self.blocks_repeat_0 = blocks.repeat(gr.sizeof_gr_complex * 1, 1000) self.blocks_multiply_xx_0 = blocks.multiply_vcc(1) self.analog_sig_source_x_0 = analog.sig_source_c( samp_rate, analog.GR_COS_WAVE, 300e3, 0.9, 0, 0) ################################################## # Connections ################################################## self.connect((self.analog_sig_source_x_0, 0), (self.blocks_multiply_xx_0, 1)) self.connect((self.blocks_multiply_xx_0, 0), (self.osmosdr_sink_0, 0)) self.connect((self.blocks_repeat_0, 0), (self.single_pole_iir_filter_xx_0, 0)) self.connect((self.blocks_vector_source_x_0, 0), (self.blocks_repeat_0, 0)) self.connect((self.single_pole_iir_filter_xx_0, 0), (self.blocks_multiply_xx_0, 0))
def __init__(self): gr.top_block.__init__(self, "Gfsk") ################################################## # Variables ################################################## self.samp_rate = samp_rate = 1000000 self.ch = ch = 25 self.rf_gain = rf_gain = 0 self.if_gain = if_gain = 20 self.fsk_deviation_hz = fsk_deviation_hz = 170000 self.fc = fc = 2400000000 + ch * 1000000 self.bw = bw = samp_rate self.bitrate = bitrate = 250000 self.bb_gain = bb_gain = 30 ################################################## # Blocks ################################################## self.osmosdr_sink_0 = osmosdr.sink(args="numchan=" + str(1) + " " + "") self.osmosdr_sink_0.set_sample_rate(samp_rate) self.osmosdr_sink_0.set_center_freq(fc, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(rf_gain, 0) self.osmosdr_sink_0.set_if_gain(if_gain, 0) self.osmosdr_sink_0.set_bb_gain(bb_gain, 0) self.osmosdr_sink_0.set_antenna("", 0) self.osmosdr_sink_0.set_bandwidth(samp_rate, 0) self.digital_gfsk_mod_0 = digital.gfsk_mod( samples_per_symbol=samp_rate / bitrate, sensitivity=0.5, bt=0.5, verbose=False, log=False, ) self.blocks_vector_source_x_1 = blocks.vector_source_b([ 0x00, 0xaa, 0xa2, 0x00, 0x09, 0x89, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x95, 0x7f, 0x1e ] + [0x00] * 100, True, 1, []) (self.blocks_vector_source_x_1).set_min_output_buffer(0) (self.blocks_vector_source_x_1).set_max_output_buffer(0) ################################################## # Connections ################################################## self.connect((self.blocks_vector_source_x_1, 0), (self.digital_gfsk_mod_0, 0)) self.connect((self.digital_gfsk_mod_0, 0), (self.osmosdr_sink_0, 0))
def main(args): nargs = len(args) if nargs == 1: infile = args[0] outfile = None elif nargs == 2: infile = args[0] outfile = args[1] else: sys.stderr.write( "Usage: atsc-blade-fpga.py input_file [output_file]\n") sys.exit(1) symbol_rate = (4500000.0 / 286 * 684) * 3 center_freq = 429000000 txvga1_gain = -6 txvga2_gain = 20 tb = gr.top_block() src = blocks.file_source(gr.sizeof_char, infile, True) pad = atsc.pad() rand = atsc.randomizer() rs_enc = atsc.rs_encoder() inter = atsc.interleaver() trell = atsc.trellis_encoder() fsm = atsc.field_sync_mux() v2s = blocks.vector_to_stream(gr.sizeof_char, 1024) minn = blocks.keep_m_in_n(gr.sizeof_char, 832, 1024, 4) symmap = atscmap.atscmap_bc() out = osmosdr.sink(args="bladerf=0") out.set_sample_rate(symbol_rate) out.set_center_freq(center_freq, 0) out.set_freq_corr(0, 0) out.set_gain(txvga2_gain, 0) out.set_bb_gain(txvga1_gain, 0) out.set_bandwidth(6000000, 0) tb.connect(src, pad, rand, rs_enc, inter, trell, fsm, v2s, minn, symmap) tb.connect(symmap, out) if outfile: dst = blocks.file_sink(gr.sizeof_gr_complex, outfile) tb.connect(symmap, dst) tb.run()
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Jammer") _icon_path = "C:\Program Files\GNURadio-3.7\share\icons\hicolor\scalable/apps\gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Variables ################################################## self.target_freq = target_freq = 2.416e9 self.samp_rate = samp_rate = 32000 ################################################## # Blocks ################################################## self.wxgui_fftsink2_0 = fftsink2.fft_sink_c( self.GetWin(), baseband_freq=0, y_per_div=10, y_divs=10, ref_level=0, ref_scale=2.0, sample_rate=samp_rate, fft_size=1024, fft_rate=15, average=False, avg_alpha=None, title='FFT Plot', peak_hold=False, ) self.Add(self.wxgui_fftsink2_0.win) self.osmosdr_sink_0 = osmosdr.sink( args="numchan=" + str(1) + " " + '' ) self.osmosdr_sink_0.set_sample_rate(samp_rate) self.osmosdr_sink_0.set_center_freq(target_freq, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(50, 0) self.osmosdr_sink_0.set_if_gain(20, 0) self.osmosdr_sink_0.set_bb_gain(20, 0) self.osmosdr_sink_0.set_antenna('', 0) self.osmosdr_sink_0.set_bandwidth(20e6, 0) self.analog_noise_source_x_0 = analog.noise_source_c(analog.GR_GAUSSIAN, 1, 0) ################################################## # Connections ################################################## self.connect((self.analog_noise_source_x_0, 0), (self.osmosdr_sink_0, 0)) self.connect((self.analog_noise_source_x_0, 0), (self.wxgui_fftsink2_0, 0))
def __init__(self, capcode, message): gr.top_block.__init__(self, "Pocsagtx") ################################################## # Variables ################################################## self.symrate = symrate = 38400 self.samp_rate = samp_rate = 5000000 ### Set the frequency! #self.pagerfreq = pagerfreq = 421000000 raise Exception("Make sure you're legal!") ### Set to 2500.0 for narrowband self.max_deviation = max_deviation = 4500.0 ################################################## # Blocks ################################################## self.pfb_arb_resampler_xxx_0 = pfb.arb_resampler_ccf( float(samp_rate)/float(symrate), taps=None, flt_size=32) self.pfb_arb_resampler_xxx_0.declare_sample_delay(0) self.osmosdr_sink_0 = osmosdr.sink( args="numchan=" + str(1)) self.osmosdr_sink_0.set_sample_rate(samp_rate) self.osmosdr_sink_0.set_center_freq(pagerfreq, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(10, 0) self.osmosdr_sink_0.set_if_gain(20, 0) self.osmosdr_sink_0.set_bb_gain(20, 0) self.osmosdr_sink_0.set_antenna("", 0) self.osmosdr_sink_0.set_bandwidth(0, 0) self.mixalot_pocencode_0 = mixalot.pocencode(1, 512, capcode, message, symrate) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vcc((0.7, )) self.blocks_char_to_float_0 = blocks.char_to_float(1, 1) self.analog_frequency_modulator_fc_0 = analog.frequency_modulator_fc(2.0 * math.pi * max_deviation / float(symrate)) ################################################## # Connections ################################################## self.connect((self.analog_frequency_modulator_fc_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.blocks_char_to_float_0, 0), (self.analog_frequency_modulator_fc_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.pfb_arb_resampler_xxx_0, 0)) self.connect((self.mixalot_pocencode_0, 0), (self.blocks_char_to_float_0, 0)) self.connect((self.pfb_arb_resampler_xxx_0, 0), (self.osmosdr_sink_0, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Ntsc Hackrf") _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Variables ################################################## self.samples_per_line = samples_per_line = 772 self.samp_rate = samp_rate = samples_per_line * 60 * .999 * 525 / 2 self.rf_gain = rf_gain = 14 self.if_gain = if_gain = 40 self.digital_gain = digital_gain = 0.9 self.center_freq = center_freq = 186000000+1250000 ################################################## # Blocks ################################################## self.zero = analog.sig_source_f(0, analog.GR_CONST_WAVE, 0, 0, 0) self.osmosdr_sink_0 = osmosdr.sink( args="numchan=" + str(1) + " " + "hackrf=0" ) self.osmosdr_sink_0.set_sample_rate(samp_rate) self.osmosdr_sink_0.set_center_freq(center_freq, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(rf_gain, 0) self.osmosdr_sink_0.set_if_gain(if_gain, 0) self.osmosdr_sink_0.set_bb_gain(0, 0) self.osmosdr_sink_0.set_antenna("", 0) self.osmosdr_sink_0.set_bandwidth(0, 0) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vff((digital_gain, )) self.blocks_float_to_complex_0 = blocks.float_to_complex(1) self.blocks_file_source_0 = blocks.file_source(gr.sizeof_float*1, "/home/ubuntu/WAHD-TV/ve3irr-testing.dat", True) self.blocks_add_xx_0 = blocks.add_vcc(1) self.band_pass_filter_0 = filter.fir_filter_ccc(1, firdes.complex_band_pass( 1, samp_rate, -2475000 + 1725000, 2475000 + 1725000, 500000, firdes.WIN_HAMMING, 6.76)) self.analog_sig_source_x_1 = analog.sig_source_c(samp_rate, analog.GR_COS_WAVE, 4500000, 0.1, 0) ################################################## # Connections ################################################## self.connect((self.analog_sig_source_x_1, 0), (self.blocks_add_xx_0, 0)) self.connect((self.band_pass_filter_0, 0), (self.blocks_add_xx_0, 1)) self.connect((self.blocks_add_xx_0, 0), (self.osmosdr_sink_0, 0)) self.connect((self.blocks_file_source_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.blocks_float_to_complex_0, 0), (self.band_pass_filter_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.blocks_float_to_complex_0, 0)) self.connect((self.zero, 0), (self.blocks_float_to_complex_0, 1))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Top Block") _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Variables ################################################## self.samp_rate = samp_rate = 1e6 ################################################## # Blocks ################################################## self.osmosdr_sink_0 = osmosdr.sink( args="numchan=" + str(1) + " " + "" ) self.osmosdr_sink_0.set_sample_rate(samp_rate) self.osmosdr_sink_0.set_center_freq(145.6e6, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(10, 0) self.osmosdr_sink_0.set_if_gain(20, 0) self.osmosdr_sink_0.set_bb_gain(20, 0) self.osmosdr_sink_0.set_antenna("", 0) self.osmosdr_sink_0.set_bandwidth(0, 0) self.digital_gfsk_mod_0 = digital.gfsk_mod( samples_per_symbol=4, sensitivity=1.0, bt=0.35, verbose=False, log=False, ) self.blocks_file_source_0 = blocks.file_source(gr.sizeof_char*1, "/home/david/Projects/telemetrum_sim/teledata.dat", False) self.blks2_packet_encoder_0 = grc_blks2.packet_mod_b(grc_blks2.packet_encoder( samples_per_symbol=2, bits_per_symbol=1, preamble="", access_code="", pad_for_usrp=False, ), payload_length=32, ) ################################################## # Connections ################################################## self.connect((self.blks2_packet_encoder_0, 0), (self.digital_gfsk_mod_0, 0)) self.connect((self.blocks_file_source_0, 0), (self.blks2_packet_encoder_0, 0)) self.connect((self.digital_gfsk_mod_0, 0), (self.osmosdr_sink_0, 0))
def __init__(self): gr.top_block.__init__(self, "Fm Wav") ################################################## # Variables ################################################## self.audio_samp = audio_samp = 10000 self.quad_rate = quad_rate = 5 * audio_samp self.samp_rate = samp_rate = 10 * quad_rate ################################################## # Blocks ################################################## self.rational_resampler_xxx_0 = filter.rational_resampler_ccc( interpolation=10, decimation=1, taps=None, fractional_bw=None, ) self.osmosdr_sink_0 = osmosdr.sink(args="numchan=" + str(1) + " " + "") self.osmosdr_sink_0.set_sample_rate(samp_rate) self.osmosdr_sink_0.set_center_freq(448.925e6, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(14, 0) self.osmosdr_sink_0.set_if_gain(47, 0) self.osmosdr_sink_0.set_bb_gain(0, 0) self.osmosdr_sink_0.set_antenna("", 0) self.osmosdr_sink_0.set_bandwidth(0, 0) self.blocks_wavfile_source_1 = blocks.wavfile_source( "/home/ubuntu/kf7siv_testing.wav", True) self.analog_nbfm_tx_0 = analog.nbfm_tx( audio_rate=audio_samp, quad_rate=quad_rate, tau=75e-6, max_dev=5e3, ) ################################################## # Connections ################################################## self.connect((self.blocks_wavfile_source_1, 0), (self.analog_nbfm_tx_0, 0)) self.connect((self.analog_nbfm_tx_0, 0), (self.rational_resampler_xxx_0, 0)) self.connect((self.rational_resampler_xxx_0, 0), (self.osmosdr_sink_0, 0))
def __init__(self): gr.top_block.__init__(self, "Top Block") ################################################## # Variables ################################################## self.wpm = wpm = 15 self.tx_freq = tx_freq = 433.000e6 self.rf_sample_rate = rf_sample_rate = 250000 self.morse_vector = morse_vector = (1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0) self.audio_rate = audio_rate = 8000 ################################################## # Blocks ################################################## self.root_raised_cosine_filter_0 = filter.fir_filter_ccf(1, firdes.root_raised_cosine( 1, audio_rate, 5, 0.35, 200)) self.rational_resampler_xxx_0 = filter.rational_resampler_ccc( interpolation=rf_sample_rate, decimation=audio_rate, taps=None, fractional_bw=None, ) self.osmosdr_sink_0 = osmosdr.sink( args="numchan=" + str(1) + " " + "" ) self.osmosdr_sink_0.set_sample_rate(rf_sample_rate) self.osmosdr_sink_0.set_center_freq(tx_freq, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(0, 0) self.osmosdr_sink_0.set_if_gain(20, 0) self.osmosdr_sink_0.set_bb_gain(20, 0) self.osmosdr_sink_0.set_antenna("", 0) self.osmosdr_sink_0.set_bandwidth(0, 0) self.blocks_vector_source_x_0 = blocks.vector_source_c(morse_vector, False, 1, []) self.blocks_repeat_0 = blocks.repeat(gr.sizeof_gr_complex*1, int(1.2 * audio_rate / wpm)) self.blocks_multiply_xx_0 = blocks.multiply_vcc(1) self.analog_sig_source_x_0 = analog.sig_source_c(audio_rate, analog.GR_COS_WAVE, 1000, 1, 0) ################################################## # Connections ################################################## self.connect((self.rational_resampler_xxx_0, 0), (self.osmosdr_sink_0, 0)) self.connect((self.blocks_vector_source_x_0, 0), (self.blocks_repeat_0, 0)) self.connect((self.blocks_repeat_0, 0), (self.root_raised_cosine_filter_0, 0)) self.connect((self.analog_sig_source_x_0, 0), (self.blocks_multiply_xx_0, 1)) self.connect((self.root_raised_cosine_filter_0, 0), (self.blocks_multiply_xx_0, 0)) self.connect((self.blocks_multiply_xx_0, 0), (self.rational_resampler_xxx_0, 0))
def set_transmitting(self, value, midpoint_hook): self.disconnect_all() if value: self.__rx_driver._stop_rx() midpoint_hook() self.__sink = osmosdr.sink(self.__osmo_device) self.__sink.set_sample_rate(self.__signal_type.get_sample_rate()) self.__tuning.set_block(self.__sink) self.connect(self, self.__sink) self.state_from_json(self.__state_while_inactive) else: self.__state_while_inactive = self.state_to_json() self.__tuning.set_block(None) self.__sink = None self.connect(self, self.__placeholder) midpoint_hook() self.__rx_driver._start_rx()
def __init__(self): gr.top_block.__init__(self, "Gfsk") ################################################## # Variables ################################################## self.samp_rate = samp_rate = 1000000 self.ch = ch = 25 self.rf_gain = rf_gain = 0 self.if_gain = if_gain = 20 self.fsk_deviation_hz = fsk_deviation_hz = 170000 self.fc = fc = 2400000000+ch*1000000 self.bw = bw = samp_rate self.bitrate = bitrate = 250000 self.bb_gain = bb_gain = 30 ################################################## # Blocks ################################################## self.osmosdr_sink_0 = osmosdr.sink( args="numchan=" + str(1) + " " + "" ) self.osmosdr_sink_0.set_sample_rate(samp_rate) self.osmosdr_sink_0.set_center_freq(fc, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(rf_gain, 0) self.osmosdr_sink_0.set_if_gain(if_gain, 0) self.osmosdr_sink_0.set_bb_gain(bb_gain, 0) self.osmosdr_sink_0.set_antenna("", 0) self.osmosdr_sink_0.set_bandwidth(samp_rate, 0) self.digital_gfsk_mod_0 = digital.gfsk_mod( samples_per_symbol=samp_rate/bitrate, sensitivity=0.5, bt=0.5, verbose=False, log=False, ) self.blocks_vector_source_x_1 = blocks.vector_source_b([0x00, 0xaa, 0xa2, 0x00, 0x09, 0x89, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x95, 0x7f, 0x1e]+ [0x00]*100, True, 1, []) (self.blocks_vector_source_x_1).set_min_output_buffer(0) (self.blocks_vector_source_x_1).set_max_output_buffer(0) ################################################## # Connections ################################################## self.connect((self.blocks_vector_source_x_1, 0), (self.digital_gfsk_mod_0, 0)) self.connect((self.digital_gfsk_mod_0, 0), (self.osmosdr_sink_0, 0))
def __init__(self): if choice == 1: self.num = 0 self.g = 3 self.p = 5 self.x = 4 if choice == 2: self.num = 0 self.g = 5 self.p = 7 self.x = 5 num = pow(self.g, self.x) % self.p print("g^x mod p=%d") % num gr.top_block.__init__(self, "Top Block") self.vector = blocks.vector_source_f((num, num, num), True, 1, []) self.packet = grc_blks2.packet_mod_f(grc_blks2.packet_encoder( samples_per_symbol=2, bits_per_symbol=1, preamble="", access_code="", pad_for_usrp=True), payload_length=256) self.mod = digital.gmsk_mod(samples_per_symbol=2, bt=0.35, verbose=False, log=False) self.sender = osmosdr.sink(args="numchan" + str(1) + "" + "") self.sender.set_sample_rate(1e6) self.sender.set_center_freq(100e6) self.sender.set_freq_corr(0, 0) self.sender.set_gain_mode(False, 0) self.sender.set_gain(20, 0) self.sender.set_if_gain(30, 0) self.sender.set_bb_gain(30, 0) self.sender.set_antenna("", 0) self.sender.set_bandwidth(0, 0) #connection self.connect((self.vector, 0), (self.packet, 0)) self.connect((self.packet, 0), (self.mod, 0)) self.connect((self.mod, 0), (self.sender, 0))
def __init__(self, vector): gr.top_block.__init__(self, "Stanley Tx") ################################################## # Variables ################################################## self.interp = interp = 1200 self.baud_rate = baud_rate = 1872 self.samp_rate = samp_rate = baud_rate*interp self.center_freq = center_freq = 433893000 ################################################## # Blocks ################################################## self.osmosdr_sink_0 = osmosdr.sink(args="numchan=" + str(1) + " " + "") self.osmosdr_sink_0.set_sample_rate(samp_rate) self.osmosdr_sink_0.set_center_freq(center_freq, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(14, 0) self.osmosdr_sink_0.set_if_gain(40, 0) self.osmosdr_sink_0.set_bb_gain(40, 0) self.osmosdr_sink_0.set_antenna("", 0) self.osmosdr_sink_0.set_bandwidth(2000000, 0) self.blocks_vector_source_x_0 = blocks.vector_source_c( (([int(v) for v in vector] + [0]*25) * 25), False, 1, [] ) self.blocks_repeat_0 = blocks.repeat(gr.sizeof_gr_complex*1, interp) self.blocks_moving_average_xx_0 = blocks.moving_average_cc( 20, 0.9/20, 4000 ) ################################################## # Connections ################################################## self.connect( (self.blocks_moving_average_xx_0, 0), (self.osmosdr_sink_0, 0) ) self.connect( (self.blocks_repeat_0, 0), (self.blocks_moving_average_xx_0, 0) ) self.connect( (self.blocks_vector_source_x_0, 0), (self.blocks_repeat_0, 0) )
def _setup_transmitter(self): ### transmitter extra parameters ### lpf_sample_rate = self.bandwidth * 5 # pick a nice sample rate for the filter noise_source_gain = 5.0 # noise source block gain for the transmitter ### end transmitter extra parameters ### ### transmitter blocks ### self.analog_noise_source_0 = analog.noise_source_c( analog.GR_UNIFORM, noise_source_gain, 0) self.low_pass_filter_xmit_0 = filter.fir_filter_ccf( 1, firdes.low_pass(1, lpf_sample_rate, self.bandwidth / 2, self.transition, firdes.WIN_HAMMING, 6.76)) self.rational_resampler_xmit_0 = filter.rational_resampler_ccc( interpolation=int(self.radio_sample_rate / lpf_sample_rate), decimation=1, taps=None, fractional_bw=None, ) self.osmosdr_sink_0 = osmosdr.sink(args="numchan=1" + " " + self.radio_id) self.osmosdr_sink_0.set_sample_rate(self.radio_sample_rate) self.osmosdr_sink_0.set_center_freq(self.frequency + self.freq_offset, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(self.tx_rf_gain, 0) self.osmosdr_sink_0.set_if_gain(self.tx_if_gain, 0) self.osmosdr_sink_0.set_bb_gain(0, 0) self.osmosdr_sink_0.set_antenna('', 0) self.osmosdr_sink_0.set_bandwidth(self.bandwidth, 0) ### end transmitter blocks ### ### transmitter connections ### self.connect((self.analog_noise_source_0, 0), (self.low_pass_filter_xmit_0, 0)) self.connect((self.low_pass_filter_xmit_0, 0), (self.rational_resampler_xmit_0, 0)) self.connect((self.rational_resampler_xmit_0, 0), (self.osmosdr_sink_0, 0)) ### end transmitter connections ### return
def __init__(self, frequency, file, sample_rate): gr.top_block.__init__(self, "FM Transmitter") ################################################## # Variables ################################################## self.tune_freq = tune_freq = frequency self.file_name = file_name = file self.samp_rate = samp_rate = sample_rate ################################################## # Blocks ################################################## self.osmosdr_sink_0 = osmosdr.sink(args="numchan=" + str(1) + " " + 'hackrf') self.osmosdr_sink_0.set_clock_source('gpsdo', 0) self.osmosdr_sink_0.set_time_source('gpsdo', 0) self.osmosdr_sink_0.set_time_now(osmosdr.time_spec_t(time.time()), osmosdr.ALL_MBOARDS) self.osmosdr_sink_0.set_sample_rate(16 * samp_rate) self.osmosdr_sink_0.set_center_freq(tune_freq, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(RF_GAIN, 0) self.osmosdr_sink_0.set_if_gain(0, 0) self.osmosdr_sink_0.set_bb_gain(0, 0) self.osmosdr_sink_0.set_antenna('', 0) self.osmosdr_sink_0.set_bandwidth(70000, 0) self.blocks_wavfile_source_0 = blocks.wavfile_source(file_name, True) self.analog_wfm_tx_0 = analog.wfm_tx( audio_rate=samp_rate, quad_rate=16 * samp_rate, tau=50e-6, max_dev=50e3, fh=-1, ) ################################################## # Connections ################################################## self.connect((self.analog_wfm_tx_0, 0), (self.osmosdr_sink_0, 0)) self.connect((self.blocks_wavfile_source_0, 0), (self.analog_wfm_tx_0, 0))
def __init__(self): gr.top_block.__init__(self, "CW Tx") ################################################## # Variables ################################################## self.samp_rate = samp_rate = 2e6 ################################################## # Blocks ################################################## self.rational_resampler_xxx_0 = filter.rational_resampler_ccc( interpolation=int(samp_rate), decimation=176400, taps=None, fractional_bw=None, ) self.osmosdr_sink_0 = osmosdr.sink( args="numchan=" + str(1) + " " + "" ) self.osmosdr_sink_0.set_sample_rate(samp_rate) self.osmosdr_sink_0.set_center_freq(DEF_MORSE_FREQ, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(10, 0) self.osmosdr_sink_0.set_if_gain(20, 0) self.osmosdr_sink_0.set_bb_gain(20, 0) self.osmosdr_sink_0.set_antenna("", 0) self.osmosdr_sink_0.set_bandwidth(0, 0) self.blocks_wavfile_source_0 = blocks.wavfile_source("/tmp/morse.wav", False) self.analog_wfm_tx_0 = analog.wfm_tx( audio_rate=DEF_SAMPLE_RATE, quad_rate=176400, tau=75e-6, max_dev=5e3, ) ################################################## # Connections ################################################## self.connect((self.blocks_wavfile_source_0, 0), (self.analog_wfm_tx_0, 0)) self.connect((self.analog_wfm_tx_0, 0), (self.rational_resampler_xxx_0, 0)) self.connect((self.rational_resampler_xxx_0, 0), (self.osmosdr_sink_0, 0))
def __init__(self): ################################################## # Variables ################################################## self.samp_rate = samp_rate = 32000 ################################################## # Blocks ################################################## self.osmosdr_source_0 = osmosdr.source( args="numchan=" + str(1) + " " + "" ) self.osmosdr_source_0.set_sample_rate(samp_rate) self.osmosdr_source_0.set_center_freq(100e6, 0) self.osmosdr_source_0.set_freq_corr(0, 0) self.osmosdr_source_0.set_dc_offset_mode(0, 0) self.osmosdr_source_0.set_iq_balance_mode(0, 0) self.osmosdr_source_0.set_gain_mode(False, 0) self.osmosdr_source_0.set_gain(10, 0) self.osmosdr_source_0.set_if_gain(20, 0) self.osmosdr_source_0.set_bb_gain(20, 0) self.osmosdr_source_0.set_antenna("", 0) self.osmosdr_source_0.set_bandwidth(0, 0) self.osmosdr_sink_0 = osmosdr.sink( args="numchan=" + str(1) + " " + "" ) self.osmosdr_sink_0.set_sample_rate(samp_rate) self.osmosdr_sink_0.set_center_freq(100e6, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(10, 0) self.osmosdr_sink_0.set_if_gain(20, 0) self.osmosdr_sink_0.set_bb_gain(20, 0) self.osmosdr_sink_0.set_antenna("", 0) self.osmosdr_sink_0.set_bandwidth(0, 0) self.blocks_null_source_0 = blocks.null_source(gr.sizeof_gr_complex*1) self.blocks_null_sink_0 = blocks.null_sink(gr.sizeof_gr_complex*1) ################################################## # Connections ################################################## self.connect((self.blocks_null_source_0, 0), (self.osmosdr_sink_0, 0)) self.connect((self.osmosdr_source_0, 0), (self.blocks_null_sink_0, 0))
def __init__(self, options): gr.top_block.__init__(self) self.osmosdr_sink_0 = osmosdr.sink( args="numchan=" + str(1) + " " + "bladerf=0" ) self.osmosdr_sink_0.set_sample_rate(5e6) self.osmosdr_sink_0.set_center_freq(2.412e9, 0) self.osmosdr_sink_0.set_freq_corr(10, 0) self.osmosdr_sink_0.set_gain(20, 0) self.osmosdr_sink_0.set_if_gain(20, 0) self.osmosdr_sink_0.set_bb_gain(20, 0) self.osmosdr_sink_0.set_antenna("", 0) self.osmosdr_sink_0.set_bandwidth(5e6, 0) if(options.to_file is not None): self.sink = blocks.file_sink(gr.sizeof_gr_complex, options.to_file) else: self.sink = blocks.null_sink(gr.sizeof_gr_complex) # do this after for any adjustments to the options that may # occur in the sinks (specifically the UHD sink) self.txpath = transmit_path(options) self.connect(self.txpath, self.osmosdr_sink_0)
def _setup_osmosdr(self, options): self._sink = osmosdr.sink(options.args) try: self._sink.get_sample_rates().start() except RuntimeError: print "Sink has no sample rates (wrong device arguments?)." sys.exit(1) if options.samp_rate is None: options.samp_rate = self._sink.get_sample_rates().start() self.set_samp_rate(options.samp_rate) # Set the gain from options if(options.gain): gain = self._sink.set_gain(options.gain) if self._verbose: print "Set gain to:", gain # Set the antenna if(options.antenna): ant = self._sink.set_antenna(options.antenna, 0) if self._verbose: print "Set antenna to:", ant self.publish(FREQ_RANGE_KEY, self._sink.get_freq_range) for name in self.get_gain_names(): self.publish(GAIN_RANGE_KEY(name), (lambda self=self,name=name: self._sink.get_gain_range(name))) self.publish(BWIDTH_RANGE_KEY, self._sink.get_bandwidth_range) for name in self.get_gain_names(): self.publish(GAIN_KEY(name), (lambda self=self,name=name: self._sink.get_gain(name))) self.publish(BWIDTH_KEY, self._sink.get_bandwidth)
def __init__(self): gr.top_block.__init__(self, "TX FRSK") ################################################## # Variables ################################################## self.samp_rate = samp_rate = 48000 ################################################## # Blocks ################################################## self.osmosdr_sink_0 = osmosdr.sink( args="numchan=" + str(1) + " " + "" ) self.osmosdr_sink_0.set_sample_rate(samp_rate) self.osmosdr_sink_0.set_center_freq(440e6, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(10, 0) self.osmosdr_sink_0.set_if_gain(20, 0) self.osmosdr_sink_0.set_bb_gain(20, 0) self.osmosdr_sink_0.set_antenna("", 0) self.osmosdr_sink_0.set_bandwidth(0, 0) self.digital_psk_mod_0 = digital.psk.psk_mod( constellation_points=8, mod_code="gray", differential=True, samples_per_symbol=2, excess_bw=0.35, verbose=False, log=False, ) self.blocks_file_source_0 = blocks.file_source(gr.sizeof_char*1, "info.dat", False) ################################################## # Connections ################################################## self.connect((self.blocks_file_source_0, 0), (self.digital_psk_mod_0, 0)) self.connect((self.digital_psk_mod_0, 0), (self.osmosdr_sink_0, 0))
def __init__(self, args): gr.top_block.__init__(self) self._channel = args.channel self._light = args.light self._fan = args.fan ################################################## # Variables ################################################## self.samp_rate = samp_rate = 8000000 self.center_freq = center_freq = 303747000 ################################################## # Blocks ################################################## self.osmosdr_sink_0 = osmosdr.sink( args="numchan=" + str(1) + " " + "" ) self.osmosdr_sink_0.set_sample_rate(samp_rate) self.osmosdr_sink_0.set_center_freq(center_freq, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(14, 0) self.osmosdr_sink_0.set_if_gain(40, 0) self.osmosdr_sink_0.set_bb_gain(20, 0) self.osmosdr_sink_0.set_antenna("1", 0) self.osmosdr_sink_0.set_bandwidth(2e6, 0) self.fancontrol_FanBaseBand_0 = fancontrol.FanBaseBand(samp_rate, True, self._channel, self._light, self._fan) self.blocks_float_to_complex_0 = blocks.float_to_complex(1) ################################################## # Connections ################################################## self.connect((self.fancontrol_FanBaseBand_0, 0), (self.blocks_float_to_complex_0, 0)) self.connect((self.fancontrol_FanBaseBand_0, 0), (self.blocks_float_to_complex_0, 1)) self.connect((self.blocks_float_to_complex_0, 0), (self.osmosdr_sink_0, 0))
def main(args): nargs = len(args) if nargs == 1: port = int(args[0]) outfile = None elif nargs == 2: port = int(args[0]) outfile = args[1] else: sys.stderr.write("Usage: dvbt-hackrf.py port [output_file]\n"); sys.exit(1) channel_mhz = 6 mode = dtv.T2k code_rate = dtv.C1_2 constellation = dtv.MOD_QPSK guard_interval = dtv.GI_1_32 symbol_rate = channel_mhz * 8000000.0 / 7 center_freq = 441000000 rf_gain = 14 if_gain = 40 if mode == dtv.T2k: factor = 1 carriers = 2048 elif mode == dtv.T8k: factor = 4 carriers = 8192 if guard_interval == dtv.GI_1_32: gi = carriers / 32 elif guard_interval == dtv.GI_1_16: gi = carriers / 16 elif guard_interval == dtv.GI_1_8: gi = carriers / 8 elif guard_interval == dtv.GI_1_4: gi = carriers / 4 if channel_mhz == 8: bandwidth = 8750000 elif channel_mhz == 7: bandwidth = 7000000 elif channel_mhz == 6: bandwidth = 6000000 elif channel_mhz == 5: bandwidth = 5000000 else: bandwidth = 8750000 tb = gr.top_block() src = grc_blks2.tcp_source(gr.sizeof_char*1, "127.0.0.1", port, True) dvbt_energy_dispersal = dtv.dvbt_energy_dispersal(1 * factor) dvbt_reed_solomon_enc = dtv.dvbt_reed_solomon_enc(2, 8, 0x11d, 255, 239, 8, 51, (8 * factor)) dvbt_convolutional_interleaver = dtv.dvbt_convolutional_interleaver((136 * factor), 12, 17) dvbt_inner_coder = dtv.dvbt_inner_coder(1, (1512 * factor), constellation, dtv.NH, code_rate) dvbt_bit_inner_interleaver = dtv.dvbt_bit_inner_interleaver((1512 * factor), constellation, dtv.NH, mode) dvbt_symbol_inner_interleaver = dtv.dvbt_symbol_inner_interleaver((1512 * factor), mode, 1) dvbt_map = dtv.dvbt_map((1512 * factor), constellation, dtv.NH, mode, 1) dvbt_reference_signals = dtv.dvbt_reference_signals(gr.sizeof_gr_complex, (1512 * factor), carriers, constellation, dtv.NH, code_rate, code_rate, dtv.GI_1_32, mode, 0, 0) fft_vxx = fft.fft_vcc(carriers, False, (window.rectangular(carriers)), True, 10) digital_ofdm_cyclic_prefixer = digital.ofdm_cyclic_prefixer(carriers, carriers+(gi), 0, "") blocks_multiply_const_vxx = blocks.multiply_const_vcc((0.0022097087 * 2.5, )) out = osmosdr.sink() out.set_sample_rate(symbol_rate) out.set_center_freq(center_freq, 0) out.set_freq_corr(0, 0) out.set_gain(rf_gain, 0) out.set_if_gain(if_gain, 0) out.set_bandwidth(bandwidth, 0) tb.connect(src, dvbt_energy_dispersal) tb.connect(dvbt_energy_dispersal, dvbt_reed_solomon_enc) tb.connect(dvbt_reed_solomon_enc, dvbt_convolutional_interleaver) tb.connect(dvbt_convolutional_interleaver, dvbt_inner_coder) tb.connect(dvbt_inner_coder, dvbt_bit_inner_interleaver) tb.connect(dvbt_bit_inner_interleaver, dvbt_symbol_inner_interleaver) tb.connect(dvbt_symbol_inner_interleaver, dvbt_map) tb.connect(dvbt_map, dvbt_reference_signals) tb.connect(dvbt_reference_signals, fft_vxx) tb.connect(fft_vxx, digital_ofdm_cyclic_prefixer) tb.connect(digital_ofdm_cyclic_prefixer, blocks_multiply_const_vxx) tb.connect(blocks_multiply_const_vxx, out) if outfile: dst = blocks.file_sink(gr.sizeof_gr_complex, outfile) tb.connect(blocks_multiply_const_vxx, dst) tb.run()
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Dvbs Tx") ################################################## # Variables ################################################## self.symbol_rate = symbol_rate = 4500000 self.samp_rate = samp_rate = symbol_rate * 2 self.rrc_taps = rrc_taps = 20 ################################################## # Blocks ################################################## self.wxgui_fftsink2_0 = fftsink2.fft_sink_c( self.GetWin(), baseband_freq=435000000, y_per_div=10, y_divs=10, ref_level=0, ref_scale=2.0, sample_rate=samp_rate, fft_size=1024, fft_rate=15, average=True, avg_alpha=None, title="FFT Plot", peak_hold=False, ) self.Add(self.wxgui_fftsink2_0.win) self.trellis_encoder_xx_0 = trellis.encoder_bb(trellis.fsm(1, 2, (0171, 0133)), 0) self.osmosdr_sink_0 = osmosdr.sink( args="numchan=" + str(1) + " " + "" ) self.osmosdr_sink_0.set_sample_rate(samp_rate) self.osmosdr_sink_0.set_center_freq(435e6, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(2, 0) self.osmosdr_sink_0.set_if_gain(0, 0) self.osmosdr_sink_0.set_bb_gain(-4, 0) self.osmosdr_sink_0.set_antenna("", 0) self.osmosdr_sink_0.set_bandwidth(6000000, 0) self.fft_filter_xxx_0 = filter.fft_filter_ccc(1, (firdes.root_raised_cosine(1.79, samp_rate, samp_rate/2, 0.35, rrc_taps)), 1) self.fft_filter_xxx_0.declare_sample_delay(0) self.dvbs_reed_solomon_enc_bb_0 = dvbs.reed_solomon_enc_bb() self.dvbs_randomizer_bb_0 = dvbs.randomizer_bb() self.dvbs_puncture_bb_0 = dvbs.puncture_bb(dvbs.C1_2) self.dvbs_modulator_bc_0 = dvbs.modulator_bc() self.dvbs_interleaver_bb_0 = dvbs.interleaver_bb() self.blocks_unpack_k_bits_bb_0 = blocks.unpack_k_bits_bb(2) self.blocks_packed_to_unpacked_xx_0 = blocks.packed_to_unpacked_bb(1, gr.GR_MSB_FIRST) self.blocks_pack_k_bits_bb_0 = blocks.pack_k_bits_bb(2) self.blocks_file_source_0 = blocks.file_source(gr.sizeof_char*1, "/home/re/xfer/adv.ts", False) ################################################## # Connections ################################################## self.connect((self.blocks_file_source_0, 0), (self.dvbs_randomizer_bb_0, 0)) self.connect((self.dvbs_randomizer_bb_0, 0), (self.dvbs_reed_solomon_enc_bb_0, 0)) self.connect((self.dvbs_reed_solomon_enc_bb_0, 0), (self.dvbs_interleaver_bb_0, 0)) self.connect((self.dvbs_interleaver_bb_0, 0), (self.blocks_packed_to_unpacked_xx_0, 0)) self.connect((self.blocks_packed_to_unpacked_xx_0, 0), (self.trellis_encoder_xx_0, 0)) self.connect((self.trellis_encoder_xx_0, 0), (self.blocks_unpack_k_bits_bb_0, 0)) self.connect((self.blocks_unpack_k_bits_bb_0, 0), (self.dvbs_puncture_bb_0, 0)) self.connect((self.dvbs_puncture_bb_0, 0), (self.blocks_pack_k_bits_bb_0, 0)) self.connect((self.dvbs_modulator_bc_0, 0), (self.fft_filter_xxx_0, 0)) self.connect((self.blocks_pack_k_bits_bb_0, 0), (self.dvbs_modulator_bc_0, 0)) self.connect((self.fft_filter_xxx_0, 0), (self.osmosdr_sink_0, 0)) self.connect((self.fft_filter_xxx_0, 0), (self.wxgui_fftsink2_0, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Qam64") _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Variables ################################################## self.samp_rate = samp_rate = 5056941 * 2 self.rrc_taps = rrc_taps = 50 self.gain = gain = 0 self.center_freq = center_freq = 441000000 ################################################## # Blocks ################################################## _gain_sizer = wx.BoxSizer(wx.VERTICAL) self._gain_text_box = forms.text_box( parent=self.GetWin(), sizer=_gain_sizer, value=self.gain, callback=self.set_gain, label="TX gain", converter=forms.float_converter(), proportion=0, ) self._gain_slider = forms.slider( parent=self.GetWin(), sizer=_gain_sizer, value=self.gain, callback=self.set_gain, minimum=0, maximum=25, num_steps=25, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_gain_sizer) self.qam_trellis_enc_bb_0 = qam.trellis_enc_bb() self.qam_transport_framing_enc_bb_0 = qam.transport_framing_enc_bb() self.qam_reed_solomon_enc_bb_0 = qam.reed_solomon_enc_bb() self.qam_randomizer_bb_0 = qam.randomizer_bb() self.qam_interleaver_bb_0 = qam.interleaver_bb(128,4) self.qam_frame_sync_enc_bb_0 = qam.frame_sync_enc_bb(6) self.osmosdr_sink_0 = osmosdr.sink( args="numchan=" + str(1) + " " + "bladerf=0,buffers=128,buflen=32768" ) self.osmosdr_sink_0.set_sample_rate(samp_rate) self.osmosdr_sink_0.set_center_freq(center_freq, 0) self.osmosdr_sink_0.set_freq_corr(0, 0) self.osmosdr_sink_0.set_gain(gain, 0) self.osmosdr_sink_0.set_if_gain(0, 0) self.osmosdr_sink_0.set_bb_gain(-4, 0) self.osmosdr_sink_0.set_antenna("", 0) self.osmosdr_sink_0.set_bandwidth(6000000, 0) self.interp_fir_filter_xxx_0 = filter.interp_fir_filter_ccc(2, (firdes.root_raised_cosine(0.14, samp_rate, samp_rate/2, 0.18, rrc_taps))) self.interp_fir_filter_xxx_0.declare_sample_delay(0) self.digital_chunks_to_symbols_xx_0 = digital.chunks_to_symbols_bc(([complex(1,1), complex(1,-1), complex(1,-3), complex(-3,-1), complex(-3,1), complex(1,3), complex(-3,-3), complex(-3,3), complex(-1,1), complex(-1,-1), complex(3,1), complex(-1,3), complex(-1,-3), complex(3,-1), complex(3,-3), complex(3,3), complex(5,1), complex(1,-5), complex(1,-7), complex(-7,-1), complex(-3,5), complex(5,3), complex(-7,-3), complex(-3,7), complex(-1,5), complex(-5,-1), complex(7,1), complex(-1,7), complex(-5,-3), complex(3,-5), complex(3,-7), complex(7,3), complex(1,5), complex(5,-1), complex(5,-3), complex(-3,-5), complex(-7,1), complex(1,7), complex(-3,-7), complex(-7,3), complex(-5,1), complex(-1,-5), complex(3,5), complex(-5,3), complex(-1,-7), complex(7,-1), complex(7,-3), complex(3,7), complex(5,5), complex(5,-5), complex(5,-7), complex(-7,-5), complex(-7,5), complex(5,7), complex(-7,-7), complex(-7,7), complex(-5,5), complex(-5,-5), complex(7,5), complex(-5,7), complex(-5,-7), complex(7,-5), complex(7,-7), complex(7,7)]), 1) self.blocks_packed_to_unpacked_xx_0 = blocks.packed_to_unpacked_bb(7, gr.GR_MSB_FIRST) self.blocks_file_source_0 = blocks.file_source(gr.sizeof_char*1, "/home/argilo/git/gr-qam/in.fifo", False) ################################################## # Connections ################################################## self.connect((self.digital_chunks_to_symbols_xx_0, 0), (self.interp_fir_filter_xxx_0, 0)) self.connect((self.interp_fir_filter_xxx_0, 0), (self.osmosdr_sink_0, 0)) self.connect((self.qam_reed_solomon_enc_bb_0, 0), (self.qam_interleaver_bb_0, 0)) self.connect((self.qam_trellis_enc_bb_0, 0), (self.digital_chunks_to_symbols_xx_0, 0)) self.connect((self.blocks_file_source_0, 0), (self.qam_transport_framing_enc_bb_0, 0)) self.connect((self.blocks_packed_to_unpacked_xx_0, 0), (self.qam_reed_solomon_enc_bb_0, 0)) self.connect((self.qam_transport_framing_enc_bb_0, 0), (self.blocks_packed_to_unpacked_xx_0, 0)) self.connect((self.qam_interleaver_bb_0, 0), (self.qam_randomizer_bb_0, 0)) self.connect((self.qam_randomizer_bb_0, 0), (self.qam_frame_sync_enc_bb_0, 0)) self.connect((self.qam_frame_sync_enc_bb_0, 0), (self.qam_trellis_enc_bb_0, 0))
def main(args): nargs = len(args) if nargs == 1: infile = args[0] outfile = None elif nargs == 2: infile = args[0] outfile = args[1] else: sys.stderr.write("Usage: dvbs2-blade.py input_file [output_file]\n"); sys.exit(1) symbol_rate = 5000000 samp_rate = symbol_rate * 2 frame_size = dvbs2.FECFRAME_NORMAL constellation = dvbs2.MOD_16APSK code_rate = dvbs2.C9_10 pilots = dvbs2.PILOTS_ON rolloff = dvbs2.RO_0_20 gold_code = 0 rrc_taps = 50 center_freq = 1280000000 txvga1_gain = -10 txvga2_gain = 15 bandwidth = 6000000 if constellation == dvbs2.MOD_QPSK: if ( code_rate == dvbs2.C1_4 or code_rate == dvbs2.C1_3 or code_rate == dvbs2.C2_5 or code_rate == dvbs2.C1_2 or code_rate == dvbs2.C3_5 or code_rate == dvbs2.C2_3 or code_rate == dvbs2.C3_4 or code_rate == dvbs2.C4_5 or code_rate == dvbs2.C5_6 or code_rate == dvbs2.C8_9 or code_rate == dvbs2.C9_10 or code_rate == dvbs2.C13_45 or code_rate == dvbs2.C9_20 or code_rate == dvbs2.C11_20 or code_rate == dvbs2.C11_45 or code_rate == dvbs2.C4_15 or code_rate == dvbs2.C14_45 or code_rate == dvbs2.C7_15 or code_rate == dvbs2.C8_15 or code_rate == dvbs2.C32_45): pass else: sys.stderr.write("Invalid code rate for QPSK\n"); sys.exit(1) if constellation == dvbs2.MOD_8PSK: if ( code_rate == dvbs2.C3_5 or code_rate == dvbs2.C2_3 or code_rate == dvbs2.C3_4 or code_rate == dvbs2.C5_6 or code_rate == dvbs2.C8_9 or code_rate == dvbs2.C9_10 or code_rate == dvbs2.C23_36 or code_rate == dvbs2.C25_36 or code_rate == dvbs2.C13_18 or code_rate == dvbs2.C7_15 or code_rate == dvbs2.C8_15 or code_rate == dvbs2.C26_45 or code_rate == dvbs2.C32_45): pass else: sys.stderr.write("Invalid code rate for 8PSK\n"); sys.exit(1) if constellation == dvbs2.MOD_8APSK: if ( code_rate == dvbs2.C100_180 or code_rate == dvbs2.C104_180): pass else: sys.stderr.write("Invalid code rate for 8APSK\n"); sys.exit(1) if constellation == dvbs2.MOD_16APSK: if ( code_rate == dvbs2.C2_3 or code_rate == dvbs2.C3_4 or code_rate == dvbs2.C4_5 or code_rate == dvbs2.C5_6 or code_rate == dvbs2.C8_9 or code_rate == dvbs2.C9_10 or code_rate == dvbs2.C26_45 or code_rate == dvbs2.C3_5 or code_rate == dvbs2.C28_45 or code_rate == dvbs2.C23_36 or code_rate == dvbs2.C25_36 or code_rate == dvbs2.C13_18 or code_rate == dvbs2.C140_180 or code_rate == dvbs2.C154_180 or code_rate == dvbs2.C7_15 or code_rate == dvbs2.C8_15 or code_rate == dvbs2.C26_45 or code_rate == dvbs2.C3_5 or code_rate == dvbs2.C32_45): pass else: sys.stderr.write("Invalid code rate for 16APSK\n"); sys.exit(1) if constellation == dvbs2.MOD_8_8APSK: if ( code_rate == dvbs2.C90_180 or code_rate == dvbs2.C96_180 or code_rate == dvbs2.C100_180 or code_rate == dvbs2.C18_30 or code_rate == dvbs2.C20_30): pass else: sys.stderr.write("Invalid code rate for 8+8APSK\n"); sys.exit(1) if constellation == dvbs2.MOD_32APSK: if ( code_rate == dvbs2.C3_4 or code_rate == dvbs2.C4_5 or code_rate == dvbs2.C5_6 or code_rate == dvbs2.C8_9 or code_rate == dvbs2.C9_10): pass else: sys.stderr.write("Invalid code rate for 32APSK\n"); sys.exit(1) if constellation == dvbs2.MOD_4_12_16APSK: if ( code_rate == dvbs2.C2_3 or code_rate == dvbs2.C32_45): pass else: sys.stderr.write("Invalid code rate for 4+12+16rbAPSK\n"); sys.exit(1) if constellation == dvbs2.MOD_4_8_4_16APSK: if ( code_rate == dvbs2.C128_180 or code_rate == dvbs2.C132_180 or code_rate == dvbs2.C140_180): pass else: sys.stderr.write("Invalid code rate for 4+8+4+16APSK\n"); sys.exit(1) if constellation == dvbs2.MOD_64APSK: if ( code_rate == dvbs2.C128_180): pass else: sys.stderr.write("Invalid code rate for 64APSK\n"); sys.exit(1) if constellation == dvbs2.MOD_4_12_20_28APSK: if ( code_rate == dvbs2.C132_180): pass else: sys.stderr.write("Invalid code rate for 4+12+20+28APSK\n"); sys.exit(1) if constellation == dvbs2.MOD_8_16_20_20APSK: if ( code_rate == dvbs2.C7_9 or code_rate == dvbs2.C4_5 or code_rate == dvbs2.C5_6): pass else: sys.stderr.write("Invalid code rate for 8+16+20+20APSK\n"); sys.exit(1) if constellation == dvbs2.MOD_128APSK: if ( code_rate == dvbs2.C135_180 or code_rate == dvbs2.C140_180): pass else: sys.stderr.write("Invalid code rate for 128APSK\n"); sys.exit(1) if constellation == dvbs2.MOD_256APSK: if ( code_rate == dvbs2.C20_30 or code_rate == dvbs2.C22_30 or code_rate == dvbs2.C116_180 or code_rate == dvbs2.C124_180 or code_rate == dvbs2.C128_180 or code_rate == dvbs2.C135_180): pass else: sys.stderr.write("Invalid code rate for 256APSK\n"); sys.exit(1) if rolloff == dvbs2.RO_0_05: rrc_rolloff = 0.05 elif rolloff == dvbs2.RO_0_10: rrc_rolloff = 0.10 elif rolloff == dvbs2.RO_0_15: rrc_rolloff = 0.15 elif rolloff == dvbs2.RO_0_20: rrc_rolloff = 0.20 elif rolloff == dvbs2.RO_0_25: rrc_rolloff = 0.25 elif rolloff == dvbs2.RO_0_35: rrc_rolloff = 0.35 if ( code_rate == dvbs2.C3_5 or code_rate == dvbs2.C4_5 or code_rate == dvbs2.C5_6 or code_rate == dvbs2.C7_9 or code_rate == dvbs2.C13_18 or code_rate == dvbs2.C23_36 or code_rate == dvbs2.C25_36 or code_rate == dvbs2.C26_45 or code_rate == dvbs2.C28_45 or code_rate == dvbs2.C90_180 or code_rate == dvbs2.C96_180 or code_rate == dvbs2.C100_180 or code_rate == dvbs2.C116_180 or code_rate == dvbs2.C124_180 or code_rate == dvbs2.C128_180 or code_rate == dvbs2.C135_180 or code_rate == dvbs2.C140_180): code_rate_interleaver = code_rate else: code_rate_interleaver = dvbs2.C_OTHER if ( code_rate == dvbs2.C2_3 or code_rate == dvbs2.C3_4 or code_rate == dvbs2.C4_5 or code_rate == dvbs2.C5_6 or code_rate == dvbs2.C8_9 or code_rate == dvbs2.C9_10 or code_rate == dvbs2.C90_180 or code_rate == dvbs2.C96_180 or code_rate == dvbs2.C100_180 or code_rate == dvbs2.C104_180 or code_rate == dvbs2.C26_45 or code_rate == dvbs2.C18_30 or code_rate == dvbs2.C28_45 or code_rate == dvbs2.C23_36 or code_rate == dvbs2.C116_180 or code_rate == dvbs2.C20_30 or code_rate == dvbs2.C124_180 or code_rate == dvbs2.C25_36 or code_rate == dvbs2.C128_180 or code_rate == dvbs2.C13_18 or code_rate == dvbs2.C132_180 or code_rate == dvbs2.C22_30 or code_rate == dvbs2.C135_180 or code_rate == dvbs2.C140_180 or code_rate == dvbs2.C7_9 or code_rate == dvbs2.C154_180): code_rate_modulator = code_rate else: code_rate_modulator = dvbs2.C_OTHER if constellation == dvbs2.MOD_128APSK: constellation_ldpc = constellation else: constellation_ldpc = dvbs2.MOD_OTHER tb = gr.top_block() src = blocks.file_source(gr.sizeof_char, infile, True) dvbs2_bbheader = dvbs2.bbheader_bb(code_rate, rolloff, frame_size) dvbs2_bbscrambler = dvbs2.bbscrambler_bb(code_rate, frame_size) dvbs2_bch = dvbs2.bch_bb(code_rate, frame_size) dvbs2_ldpc = dvbs2.ldpc_bb(code_rate, frame_size, constellation) dvbs2_interleaver = dvbs2.interleaver_bb(constellation, code_rate_interleaver, frame_size) dvbs2_modulator = dvbs2.modulator_bc(constellation, code_rate_modulator, frame_size) dvbs2_physical = dvbs2.physical_cc(constellation, code_rate, pilots, frame_size, gold_code) fft_filter = filter.fft_filter_ccc(1, (firdes.root_raised_cosine(1, samp_rate, samp_rate/2, rrc_rolloff, rrc_taps)), 1) fft_filter.declare_sample_delay(0) out = osmosdr.sink(args="bladerf=0,buffers=128,buflen=32768") out.set_sample_rate(samp_rate) out.set_center_freq(center_freq, 0) out.set_freq_corr(0, 0) out.set_gain(txvga2_gain, 0) out.set_bb_gain(txvga1_gain, 0) out.set_bandwidth(bandwidth, 0) tb.connect(src, dvbs2_bbheader) tb.connect(dvbs2_bbheader, dvbs2_bbscrambler) tb.connect(dvbs2_bbscrambler, dvbs2_bch) tb.connect(dvbs2_bch, dvbs2_ldpc) tb.connect(dvbs2_ldpc, dvbs2_interleaver) tb.connect(dvbs2_interleaver, dvbs2_modulator) tb.connect(dvbs2_modulator, dvbs2_physical) tb.connect(dvbs2_physical, fft_filter) tb.connect(fft_filter, out) if outfile: dst = blocks.file_sink(gr.sizeof_gr_complex, outfile) tb.connect(fft_filter, dst) tb.run()
def make_driver(self): d = osmosdr.sink('hackrf=0') d.set_center_freq(909e6) # re-set device freq, rate, gain parameters here return d