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 <[email protected]> wrote:
> On Wed, Jun 25, 2014 at 5:27 AM, Hoang Ngo Khac <[email protected]>
> 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 <[email protected]>
>> 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
>>> [email protected]https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>>
>>>
>>>
>>> _______________________________________________
>>> Discuss-gnuradio mailing list
>>> [email protected]
>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>>
>>>
>>
>> _______________________________________________
>> Discuss-gnuradio mailing list
>> [email protected]
>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>
>>
>
_______________________________________________
Discuss-gnuradio mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio