Code:
#!/usr/bin/env python
##################################################
# Gnuradio Python Flow Graph
# Title: Ofdm Acoustic
# Generated: Wed Dec 1 18:17:52 2010
##################################################
from gnuradio import audio
from gnuradio import blks2
from gnuradio import gr
from gnuradio.eng_option import eng_option
from gnuradio.wxgui import constsink_gl
from gnuradio.wxgui import fftsink2
from grc_gnuradio import blks2 as grc_blks2
from grc_gnuradio import wxgui as grc_wxgui
from optparse import OptionParser
import wx
class ofdm_acoustic(grc_wxgui.top_block_gui):
def __init__(self):
grc_wxgui.top_block_gui.__init__(self, title="Ofdm Acoustic")
_icon_path = "/home/betafish/.local/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.audio_sink_0 = audio.sink(48000, "", True)
self.blks2_ofdm_demod_0 = grc_blks2.packet_demod_f(blks2.ofdm_demod(
options=grc_blks2.options(
modulation="qpsk",
fft_length=512,
occupied_tones=200,
cp_length=[COLOR="rgb(255, 140, 0)"]L[/COLOR],
snr=10,
log=None,
verbose=None,
),
callback=lambda ok, payload: self.blks2_ofdm_demod_0.recv_pkt(ok, payload),
),
)
self.blks2_ofdm_mod_0 = grc_blks2.packet_mod_f(blks2.ofdm_mod(
options=grc_blks2.options(
modulation="qpsk",
fft_length=512,
occupied_tones=200,
cp_length=L,
pad_for_usrp=False,
log=None,
verbose=None,
),
),
payload_length=0,
)
self.gr_complex_to_float_0 = gr.complex_to_float(1)
self.gr_throttle_0 = gr.throttle(gr.sizeof_float*1, samp_rate)
self.gr_wavfile_sink_0 = gr.wavfile_sink("/home/betafish/Desktop/Cpp_codes/gnuradio/acoustic/data_rx", 1, samp_rate, 8)
self.gr_wavfile_source_0 = gr.wavfile_source("/home/betafish/Desktop/Cpp_codes/gnuradio/acoustic/data_tx.wav", True)
self.wxgui_constellationsink2_0 = constsink_gl.const_sink_c(
self.GetWin(),
title="Constellation Plot",
sample_rate=samp_rate,
frame_rate=5,
const_size=2048,
M=4,
theta=0,
alpha=0.005,
fmax=0.06,
mu=0.5,
gain_mu=0.005,
symbol_rate=samp_rate/4.,
omega_limit=0.005,
)
self.Add(self.wxgui_constellationsink2_0.win)
self.wxgui_fftsink2_0 = fftsink2.fft_sink_c(
self.GetWin(),
baseband_freq=9000,
y_per_div=10,
y_divs=10,
ref_level=50,
sample_rate=samp_rate,
fft_size=1024,
fft_rate=30,
average=False,
avg_alpha=None,
title="FFT Plot",
peak_hold=False,
)
self.Add(self.wxgui_fftsink2_0.win)
##################################################
# Connections
##################################################
self.connect((self.gr_wavfile_source_0, 0), (self.gr_throttle_0, 0))
self.connect((self.gr_throttle_0, 0), (self.blks2_ofdm_mod_0, 0))
self.connect((self.gr_complex_to_float_0, 0), (self.audio_sink_0, 0))
self.connect((self.gr_complex_to_float_0, 1), (self.audio_sink_0, 1))
self.connect((self.blks2_ofdm_mod_0, 0), (self.wxgui_fftsink2_0, 0))
self.connect((self.blks2_ofdm_mod_0, 0), (self.wxgui_constellationsink2_0, 0))
self.connect((self.blks2_ofdm_mod_0, 0), (self.gr_complex_to_float_0, 0))
self.connect((self.blks2_ofdm_mod_0, 0), (self.blks2_ofdm_demod_0, 0))
self.connect((self.blks2_ofdm_demod_0, 0), (self.gr_wavfile_sink_0, 0))
def set_samp_rate(self, samp_rate):
self.samp_rate = samp_rate
self.wxgui_constellationsink2_0.set_sample_rate(self.samp_rate)
self.wxgui_fftsink2_0.set_sample_rate(self.samp_rate)
if __name__ == '__main__':
parser = OptionParser(option_class=eng_option, usage="%prog: [options]")
(options, args) = parser.parse_args()
tb = ofdm_acoustic()
tb.Run(True)