discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: [Discuss-gnuradio] Custom Block Issue


From: Jonathan Fox
Subject: Re: [Discuss-gnuradio] Custom Block Issue
Date: Mon, 30 Jul 2012 14:20:50 -0400

On Fri, Jul 27, 2012 at 6:12 PM, Josh Blum <address@hidden> wrote:


On 07/27/2012 02:01 PM, Jonathan Fox wrote:
> I am trying to create a custom block that does energy detection. I used the
> gr-modtool.py to generate the appropriate directory and files and added my
> algorithm and necessary code to the header and cc. I also added the XML
> file for the GRC It compiled without error but when I tried testing it out,
> I got this error:
>
> linux; GNU C++ version 4.6.3; Boost_104601; UHD_003.004.002-181-g25649781
>
> Traceback (most recent call last):
>   File "/home/jonfox/spectrum_sensing_test.py", line 21, in <module>
>     import specsense
>   File "/usr/local/lib/python2.7/dist-packages/specsense/__init__.py", line
> 45, in <module>
>     from specsense_swig import *
>   File
> "/usr/local/lib/python2.7/dist-packages/specsense/specsense_swig.py", line
> 26, in <module>
>     _specsense_swig = swig_import_helper()
>   File
> "/usr/local/lib/python2.7/dist-packages/specsense/specsense_swig.py", line
> 22, in swig_import_helper
>     _mod = imp.load_module('_specsense_swig', fp, pathname, description)
> ImportError: libgnuradio-specsense.so: cannot open shared object file: No
> such file or directory
>

First off, does the file really exist, if not is it installed, but under
the wrong name or wrong directory?

If its there, sometimes running sudo ldconfig fixes issues like this.

> specsense is the module I created with the modtool but I did not modify the
> swig file. Any ideas on what I did wrong here?
>
> Also, it seems that my code for having a vector input does not hold up and
> I have to manually change the input type in the appropriate python script
> despite setting it in GRC already. Is there any documentation on adding
> vector inputs and outputs?
>

any code snippets with the problem that you can post?
-josh

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

Sudo ldconfig worked. Now I get this:

Traceback (most recent call last):
  File "/home/jonfox/gnuradio/spectrum_sensing_test.py", line 214, in <module>
    tb.Run(True)
  File "/usr/local/lib/python2.7/dist-packages/grc_gnuradio/wxgui/top_block_gui.py", line 76, in Run
    self.start()
  File "/usr/local/lib/python2.7/dist-packages/gnuradio/gr/top_block.py", line 97, in start
    self._tb.start(max_noutput_items)
  File "/usr/local/lib/python2.7/dist-packages/gnuradio/gr/gnuradio_core_runtime.py", line 1768, in start
    return _gnuradio_core_runtime.gr_top_block_sptr_start(self, max_noutput_items)
RuntimeError: gr_buffer_add_reader: nzero_preload must be >= 0

I have looked up the last line in Google and found an email requesting the flow graph be attached (although it was a differenet user) so see attached.
 
For the code snippets, let me start with this error.

  File "/home/jonfox/gnuradio/spectrum_sensing_test.py", line 213, in <module>
    tb = spectrum_sensing_test(freq=options.freq, address=options.address, samp_rate=options.samp_rate, gain=options.gain, fft_vector=options.fft_vector)
  File "/home/jonfox/gnuradio/spectrum_sensing_test.py", line 142, in __init__
    self.connect((self.blks2_logpwrfft_x_0, 0), (self.specsense_edetect_cl_ff_0, 0))
  File "/usr/local/lib/python2.7/dist-packages/gnuradio/gr/top_block.py", line 124, in connect
    self._connect(points[i-1], points[i])
  File "/usr/local/lib/python2.7/dist-packages/gnuradio/gr/top_block.py", line 130, in _connect
    dst_block.to_basic_block(), dst_port)
  File "/usr/local/lib/python2.7/dist-packages/gnuradio/gr/gnuradio_core_runtime.py", line 1836, in primitive_connect
    return _gnuradio_core_runtime.gr_top_block_sptr_primitive_connect(self, *args)
ValueError: itemsize mismatch: logpwrfft_c(17):0 using 2048, edetect_cl_ff(13):0 using 4

This is the vector mismatch error despite the fact I have looked up other blocks and followed their code for vector implementation.

The .cc

specsense_edetect_cl_ff_sptr
specsense_make_edetect_cl_ff (size_t vlen)
{
    return specsense_edetect_cl_ff_sptr (new specsense_edetect_cl_ff (vlen));
}

static const int MIN_IN = 1;    // mininum number of input streams
static const int MAX_IN = 1;    // maximum number of input streams
static const int MIN_OUT = 1;    // minimum number of output streams
static const int MAX_OUT = 1;    // maximum number of output streams

specsense_edetect_cl_ff::specsense_edetect_cl_ff (size_t vlen)
    : gr_block ("edetect_cl_ff",
        gr_make_io_signature (MIN_IN, MAX_IN, sizeof (float) * vlen),
        gr_make_io_signature (MIN_IN, MAX_OUT, sizeof (float) * vlen)),
          d_vlen (vlen)
{
}

the .h

class specsense_edetect_cl_ff;
typedef boost::shared_ptr<specsense_edetect_cl_ff> specsense_edetect_cl_ff_sptr;

SPECSENSE_API specsense_edetect_cl_ff_sptr specsense_make_edetect_cl_ff (size_t vlen = 1);

/*!
 * \brief <+description+>
 *
 */
class SPECSENSE_API specsense_edetect_cl_ff : public gr_block
{
    friend SPECSENSE_API specsense_edetect_cl_ff_sptr specsense_make_edetect_cl_ff (size_t vlen);

    specsense_edetect_cl_ff (size_t vlen);

        size_t d_vlen;

the .xml

<?xml version="1.0"?>
<block>
  <name>edetect_cl_ff</name>
  <key>specsense_edetect_cl_ff</key>
  <category>specsense</category>
  <import>import specsense</import>
  <make>specsense.edetect_cl_ff()</make>
  <!-- Make one 'param' node for every Parameter you want settable from the GUI.
       Sub-nodes:
       * name
       * key (makes the value accessible as $keyname, e.g. in the make node)
       * type -->
  <param>
         <name>Vec Length</name>
         <key>vlen</key>
         <value>1</value>
         <type>int</type>
  </param>
  <check>$vlen &gt; 0</check>
  <sink>
    <name>in</name>
    <type>float</type>
    <vlen>$vlen</vlen>
  </sink>

  <source>
    <name>out</name>
    <type>float</type>
    <vlen>$vlen</vlen>
  </source>
</block>

Anything else I should post?


Attachment: spectrum_sensing_test.py
Description: Binary data


reply via email to

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