Good afternoon,

I know there is already a Random Source, but my advisor would like me to
create my own out of tree modules and use them in a flowgraph. So, I am
creating my own block, here are my steps so everyone can see what I have
done.

gr_modtool newmod Random
gr_modtool add my_Random_Byte_Source
Block Type: Source
Language: Cpp
No arguments(Side note I might redo this and make arguments but for now it
will be specific for one need)
Add python QA code: n
Add C++ QA code: y
I then opened the my_Random_Byte_Source_impl.cc file and added:
#include <gnuradio/random.h>
/*
     * The private constructor
     */
    my_Random_Byte_Source_impl::my_Random_Byte_Source_impl()
      : gr::sync_block("my_Random_Byte_Source",
              gr::io_signature::make(0, 0, 0),
              gr::io_signature::make(1, 1, sizeof(byte)))
    {}

unsigned byte
    my_Random_Byte_Source_impl::get_bytes(const byte &sample)
    {
    return gr::random::random(0,0,4)
    }

  int
    my_Random_Byte_Source_impl::work(int noutput_items,
        gr_vector_const_void_star &input_items,
        gr_vector_void_star &output_items)
    {
      byte *out = (byte *) output_items[0];

      for(int i = 0; i < noutput_items; i++)
      {
            out[i] = get_bytes(i)
      }

      // Tell runtime system how many output items we produced.
      return noutput_items;
    }

Then in the yml file I changed it up to be:

id: Random_my_Random_Byte_Source
label: my_Random_Byte_Source
category: '[Random]'

templates:
  imports: import Random
  make: Random.my_Random_Byte_Source()

outputs:
- label: out
  dtype: byte


#  'file_format' specifies the version of the GRC yml format used in the
file
#  and should usually not be changed.
file_format: 1

Now, I created the build directory and used cmake
-DCMAKE_INSTALL_PREFIX=/home/mariom/prefix-3.8/ .. and it was able to
complete this but it failed the make install. Here is the error:

/home/mariom/gr-Random/lib/my_Random_Byte_Source_impl.cc: In constructor
‘gr::Random::my_Random_Byte_Source_impl::my_Random_Byte_Source_impl()’:
/home/mariom/gr-Random/lib/my_Random_Byte_Source_impl.cc:46:51: error:
‘byte’ was not declared in this scope
   46 |               gr::io_signature::make(1, 1, sizeof(byte)))
      |                                                   ^~~~
/home/mariom/gr-Random/lib/my_Random_Byte_Source_impl.cc: At global scope:
/home/mariom/gr-Random/lib/my_Random_Byte_Source_impl.cc:57:5: error:
expected initializer before ‘my_Random_Byte_Source_impl’
   57 |     my_Random_Byte_Source_impl::get_bytes(const byte &sample)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/mariom/gr-Random/lib/my_Random_Byte_Source_impl.cc: In member
function ‘virtual int gr::Random::my_Random_Byte_Source_impl::work(int,
gr_vector_const_void_star&, gr_vector_void_star&)’:
/home/mariom/gr-Random/lib/my_Random_Byte_Source_impl.cc:67:7: error:
‘byte’ was not declared in this scope
   67 |       byte *out = (byte *) output_items[0];
      |       ^~~~
/home/mariom/gr-Random/lib/my_Random_Byte_Source_impl.cc:67:13: error:
‘out’ was not declared in this scope
   67 |       byte *out = (byte *) output_items[0];
      |             ^~~
/home/mariom/gr-Random/lib/my_Random_Byte_Source_impl.cc:67:26: error:
expected primary-expression before ‘)’ token
   67 |       byte *out = (byte *) output_items[0];
      |                          ^
/home/mariom/gr-Random/lib/my_Random_Byte_Source_impl.cc:71:24: error:
‘get_bytes’ was not declared in this scope
   71 |               out[i] = get_bytes(i)
      |                        ^~~~~~~~~
make[2]: *** [lib/CMakeFiles/gnuradio-Random.dir/build.make:63:
lib/CMakeFiles/gnuradio-Random.dir/my_Random_Byte_Source_impl.cc.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:301:
lib/CMakeFiles/gnuradio-Random.dir/all] Error 2
make: *** [Makefile:141: all] Error 2

So, I know it doesn't like byte but I'm not sure why. I know when I did the
tutorial I did gr_complex and I thought gr_byte would work but it did not
so I tried the byte by itself but it still did not work. So, I imagine that
the problem is there but is there anything I did wrong? How can I fix this?
Please and thank you for your help everyone.

P.S. I am using ubuntu 20.04, gnuradio 3.8.4.0, and I installed it using
pybombs which is why I used cmake
-DCMAKE_INTSALL_PREFIX=/home/mariom/prefix-3.8/ ..

Reply via email to