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: Marcus Müller
Subject: Re: Creating my own Random Source
Date: Tue, 9 Nov 2021 12:51:22 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0

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/ ..

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature


reply via email to

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