On Fri, Jul 27, 2012 at 6:12 PM, Josh Blum <[email protected]> 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
> [email protected]
> 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

_______________________________________________
Discuss-gnuradio mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to