[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/ ..
smime.p7s
Description: S/MIME Cryptographic Signature