##################################################
# GNU Radio Python Flow Graph
# Title: Fecapi Cc Decoders
# Generated: Tue Nov 17 09:33:12 2015
##################################################
if __name__ == '__main__':
import ctypes
import sys
if sys.platform.startswith('linux'):
try:
x11 = ctypes.cdll.LoadLibrary('libX11.so')
x11.XInitThreads()
except:
print "Warning: failed to XInitThreads()"
from gnuradio import blocks
from gnuradio import digital
from gnuradio import eng_notation
from gnuradio import fec
from gnuradio import gr
from gnuradio.eng_option import eng_option
from gnuradio.filter import firdes
from grc_gnuradio import wxgui as grc_wxgui
from optparse import OptionParser
import wx
class fecapi_cc_decoders(grc_wxgui.top_block_gui):
def __init__(self, frame_size=5, puncpat='11', reps=7):
grc_wxgui.top_block_gui.__init__(self, title="Fecapi Cc Decoders")
_icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png"
self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY))
##################################################
# Parameters
##################################################
self.frame_size = frame_size
self.puncpat = puncpat
self.reps = reps
##################################################
# Variables
##################################################
self.rate = rate = 2
self.polys = polys = [109, 79]
self.k = k = 7
self.samp_rate = samp_rate = 50000
self.enc_rep = enc_rep = fec.repetition_encoder_make(frame_size*8, reps)
self.enc_cc = enc_cc = fec.cc_encoder_make(reps*frame_size*8, k, rate, (polys), 0, fec.CC_TERMINATED, True)
self.dec_rep = dec_rep = fec.repetition_decoder.make(frame_size*8, reps, 0.5)
self.dec_cc = dec_cc = fec.cc_decoder.make(reps*frame_size*8, k, rate, (polys), 0, -1, fec.CC_TERMINATED, True)
##################################################
# Blocks
##################################################
self.fec_extended_encoder_0_0 = fec.extended_encoder(encoder_obj_list=enc_rep, threading= None, puncpat=puncpat)
self.fec_extended_encoder_0 = fec.extended_encoder(encoder_obj_list=enc_cc, threading= None, puncpat=puncpat)
self.fec_extended_decoder_0_0_0 = self.fec_extended_decoder_0_0_0 = fec_extended_decoder_0_0_0 = fec.extended_decoder(decoder_obj_list=dec_cc, threading= None, ann=None, puncpat=puncpat, integration_period=10000)
self.fec_extended_decoder_0_0 = self.fec_extended_decoder_0_0 = fec_extended_decoder_0_0 = fec.extended_decoder(decoder_obj_list=dec_cc, threading= None, ann=None, puncpat=puncpat, integration_period=10000)
self.digital_map_bb_0 = digital.map_bb(([-1, 1]))
self.blocks_vector_source_x_0_1_0 = blocks.vector_source_b([2,3,9,12,2+3+9+12], False, 1, [])
self.blocks_unpack_k_bits_bb_0 = blocks.unpack_k_bits_bb(8)
self.blocks_pack_k_bits_bb_0_0 = blocks.pack_k_bits_bb(8)
self.blocks_file_sink_0_0 = blocks.file_sink(gr.sizeof_char*1, "fec_input.dat")
self.blocks_file_sink_0_0.set_unbuffered(True)
self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_char*1, "fec_output.dat")
self.blocks_file_sink_0.set_unbuffered(True)
self.blocks_char_to_float_1_0 = blocks.char_to_float(1, 1)
self.blocks_char_to_float_1 = blocks.char_to_float(1, 1)
##################################################
# Connections
##################################################
self.connect((self.blocks_char_to_float_1, 0), (self.fec_extended_decoder_0_0, 0))
self.connect((self.blocks_char_to_float_1_0, 0), (self.fec_extended_decoder_0_0_0, 0))
self.connect((self.blocks_pack_k_bits_bb_0_0, 0), (self.blocks_file_sink_0, 0))
self.connect((self.blocks_unpack_k_bits_bb_0, 0), (self.fec_extended_encoder_0_0, 0))
self.connect((self.blocks_vector_source_x_0_1_0, 0), (self.blocks_unpack_k_bits_bb_0, 0))
self.connect((self.digital_map_bb_0, 0), (self.blocks_char_to_float_1, 0))
self.connect((self.fec_extended_decoder_0_0, 0), (self.blocks_char_to_float_1_0, 0))
self.connect((self.fec_extended_decoder_0_0_0, 0), (self.blocks_pack_k_bits_bb_0_0, 0))
self.connect((self.fec_extended_encoder_0, 0), (self.blocks_file_sink_0_0, 0))
self.connect((self.fec_extended_encoder_0, 0), (self.digital_map_bb_0, 0))
self.connect((self.fec_extended_encoder_0_0, 0), (self.fec_extended_encoder_0, 0))
def get_frame_size(self):
return self.frame_size
def set_frame_size(self, frame_size):
self.frame_size = frame_size
def get_puncpat(self):
return self.puncpat
def set_puncpat(self, puncpat):
self.puncpat = puncpat
def get_reps(self):
return self.reps
def set_reps(self, reps):
self.reps = reps
def get_rate(self):
return self.rate
def set_rate(self, rate):
self.rate = rate
def get_polys(self):
return self.polys
def set_polys(self, polys):
self.polys = polys
def get_k(self):
return self.k
def set_k(self, k):
self.k = k
def get_samp_rate(self):
return self.samp_rate
def set_samp_rate(self, samp_rate):
self.samp_rate = samp_rate
def get_enc_rep(self):
return self.enc_rep
def set_enc_rep(self, enc_rep):
self.enc_rep = enc_rep
def get_enc_cc(self):
return self.enc_cc
def set_enc_cc(self, enc_cc):
self.enc_cc = enc_cc
def get_dec_rep(self):
return self.dec_rep
def set_dec_rep(self, dec_rep):
self.dec_rep = dec_rep
def get_dec_cc(self):
return self.dec_cc
def set_dec_cc(self, dec_cc):
self.dec_cc = dec_cc
if __name__ == '__main__':
parser = OptionParser(option_class=eng_option, usage="%prog: [options]")
parser.add_option("", "--frame-size", dest="frame_size", type="intx", default=5,
help="Set Frame Size [default=%default]")
parser.add_option("", "--puncpat", dest="puncpat", type="string", default='11',
help="Set puncpat [default=%default]")
parser.add_option("", "--reps", dest="reps", type="intx", default=7,
help="Set Repetitions [default=%default]")
(options, args) = parser.parse_args()
tb = fecapi_cc_decoders(frame_size=options.frame_size, puncpat=options.puncpat, reps=options.reps)
tb.Start(True)
tb.Wait()
Hi guys,
I am trying to use a combination of a CC code and a repetition code. This might sounds a bit odd, but it just so happens I have 5 short ints 5*8 bits, so I am repeating this 7 times, then using 1/2 rate to fill my packet - 576bits.
I can get the codes to work separately, but please see attached .grc, I can't get the repetition decoder to work, it doesn't output anything. I clearly have some parameters/sizes wrong. When I use the FEC Decoder (disabled) rather that the Extended FEC decoder for the repetition decoder, I get the right number of bytes out - but the wrong values.
Thanks for your help!!
David
NOTE: The information in this email and any attachments may be confidential and/or legally privileged. This message may be read, copied and used only by the intended recipient. If you are not the intended recipient, please destroy this message, delete any copies held on your system and notify the sender immediately.
Toshiba Research Europe Limited, registered in England and Wales (2519556). Registered Office 208 Cambridge Science Park, Milton Road, Cambridge CB4 0GZ, England. Web: www.toshiba.eu/research/trl
This email has been scanned for email related threats and delivered safely by Mimecast.
For more information please visit http://www.mimecast.com
No comments:
Post a Comment