discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: Creating my own Random Source


From: Mario Moran
Subject: Re: Creating my own Random Source
Date: Tue, 9 Nov 2021 10:27:22 -0700

Well working with the tutorial called, " Guided Tutorial GNU Radio in C++" there is a line of code:

gr::io_signature::make(1,1, sizeof(gr_complex)),

So that got me thinking, since I know that complex is not a normal complex is not a normal data type so I thought that using "gr" was part of GNU Radio I thought adding it in front of byte would be the correct way of going. Would you recommend me using a double instead? Since then I might be handling high values? 

Also, I do know I am out of practice with C++, I have been working on my coding skills these past few weeks. If you know any good practice websites or videos that would also be great. I have been following a 10 hour lesson video and taking notes and following along with Visual Studio 2019. 

Thank you for your help. 

-Mario Moran

On Tue, Nov 9, 2021 at 4:52 AM Marcus Müller <mueller@kit.edu> wrote:
Hey, `byte` in itself is not a C++ type (`std::byte` might be, don't know). Just use
`char` or `uint8_t` if you mean that. Are you the one introducing the type `byte` by any
chance?

> I did
> gr_complex and I thought gr_byte

no, that doesn't exist.

You seem to be in need of a little more C++ practice! Writing a whole random source might
be a bit much for a start.

Best regards,
Marcus

On 08.11.21 23:05, Mario Moran wrote:
> 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

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