discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] Update Channel coding toolbox to Gnuradio 3.7.0


From: Hoang Ngo Khac
Subject: Re: [Discuss-gnuradio] Update Channel coding toolbox to Gnuradio 3.7.0
Date: Sat, 28 Jun 2014 10:24:21 +0700

Thank you Tom.
I've modified the Decode CCSDS 27. In particular, I changed the code in implementation file (.cc):

Existing code:
const float *in = (const float *)input_items[0];
      unsigned char *out = (unsigned char *)output_items[0];
     
      for (int i = 0; i < noutput_items*16; i++) {
    // Translate and clip [-1.0..1.0] to [28..228]
    float sample = in[i]*100.0+128.0;
    if (sample > 255.0)
      sample = 255.0;
    else if (sample < 0.0)
      sample = 0.0;
    unsigned char sym = (unsigned char)(floor(sample));
   
    d_viterbi_in[d_count % 4] = sym;
    if ((d_count % 4) == 3) {
      // Every fourth symbol, perform butterfly operation
      viterbi_butterfly2(d_viterbi_in, d_mettab, d_state0, d_state1);
     
      // Every sixteenth symbol, read out a byte
      if (d_count % 16 == 11) {
        // long metric =
        viterbi_get_output(d_state0, out++);
        // printf("%li\n", *(out-1), metric);
      }
    }
   
    d_count++;
      }
My code:
unsigned char *in = (unsigned char *)input_items[0];
      unsigned char *out = (unsigned char *)output_items[0];
     
  
    int ni = 0;      
      
    unsigned char byte = 0x0;

    while (ni < noutput_items*16)
    {
        byte = in[ni];
        d_viterbi_in[d_count % 4] = byte;
    if ((d_count % 4) == 3) {
      // Every fourth symbol, perform butterfly operation
      viterbi_butterfly2(d_viterbi_in, d_mettab, d_state0, d_state1);
     
      // Every sixteenth symbol, read out a byte
      if (d_count % 16 == 11) {
        // long metric =
        viterbi_get_output(d_state0, out++);
        // printf("%li\n", *(out-1), metric);
      }
    }
    ni ++;
    d_count++;
 }

I also modify the header file, xml file.  Now the new block appear in GRC. I build a flow graph (see in attachment) to test this block. When I run this flowgraph, I got this error:

init::console_sink_bb
Traceback (most recent call last):
  File "/home/khachoang/GNU_Radio/Test GRC/top_block.py", line 58, in <module>
    tb = top_block()
  File "/home/khachoang/GNU_Radio/Test GRC/top_block.py", line 43, in __init__
    self.connect((self.fec_encode_ccsds_27_bb_0, 0), (self.fec_decode_ccsds_27_bb_0, 0))
  File "/usr/local/lib/python2.7/dist-packages/gnuradio/gr/top_block.py", line 130, in connect
    self._connect(points[i-1], points[i])
  File "/usr/local/lib/python2.7/dist-packages/gnuradio/gr/top_block.py", line 142, in _connect
    dst_block.to_basic_block(), dst_port)
  File "/usr/local/lib/python2.7/dist-packages/gnuradio/gr/runtime_swig.py", line 4100, in primitive_connect
    return _runtime_swig.top_block_sptr_primitive_connect(self, *args)
ValueError: itemsize mismatch: encode_ccsds_27_bb0:0 using 1, decode_ccsds_27_bb0:0 using 4

Is my code correct? How could I fix this bug?

Thanks,
Hoang


On Wed, Jun 25, 2014 at 8:55 PM, Tom Rondeau <address@hidden> wrote:
On Wed, Jun 25, 2014 at 5:27 AM, Hoang Ngo Khac <address@hidden> wrote:
Thank you Marcus.

I've checked out gr-fec. The problem is that Decode CCSDS 27 block takes float input while my data to feed it is in byte.

If you've built the documentation of the latest version of GNU Radio, look at the Forward Error Correction page for a description of the new FEC API. It's designed with exactly your issue in mind. You would write a new deployment for the FEC of your choice to handle the data type conversions. In fact, the current CC decoder actually takes in bytes but the deployment takes in floats. The floats are intended to be soft symbols, and the decoder deployment converts from the soft symbol floats to a quantized soft symbol byte that floats at a particular level.

Tom

 
On Wed, Jun 25, 2014 at 3:23 PM, Marcus Müller <address@hidden> wrote:
Hi Hoang,

GNU Radio 3.7 has the gr-fec framework, and recent updates brought more performance and some features, so if that matches your use case, go ahead and try it out!

Greetings,
Marcus


On 25.06.2014 09:54, Hoang Ngo Khac wrote:
Deal all,

Does anyone update the Channel Coding (https://www.cgran.org/wiki/chancoding)
toolbox so that it can work in Gnuradio 3.7.0?

I did try to install this toolbox. The installation was done but it do not
appear in Gnuradio Companion interface.

Thanks,
Hoang



_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio


_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio



_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio




reply via email to

[Prev in Thread] Current Thread [Next in Thread]