Forum: GNU Radio I have a trouble with new types in python!

D50c3828e720e33ce734d9124c97d960?d=identicon&s=25 Mostafa Alizadeh (m-alizadeh)
on 2014-05-07 15:02
(Received via mailing list)
Hello everybody,
I have a new type in my gnuradio blocks which are defined in c++.
However,
the GRC don't know them.
*The first question is how I could make GRC of such blocks? *

I think if I could be able to define them in python I could add new
types
to the GRC of the block.
Although I'm not so familiar with python, I want to define new type as
it
was previously defined in c++ as :

*typedef unsigned char   bit; *

*how could I define such variable in python!!!? *(may it helps me to
make
my GRC block)

Thank,
D50c3828e720e33ce734d9124c97d960?d=identicon&s=25 Mostafa Alizadeh (m-alizadeh)
on 2014-05-08 09:38
(Received via mailing list)
Hi Marcus,
Thank you very much for your explicit explanations. Yeah, I found it so
hard to do what I thought. As you said I determined the type as "byte"
and
there is no problem. But there is another problem! I have defined
something
like this in c++:

#define X 0x01864CFB

and I should pass X, instead of  this 0x01864CFB which is 32 bits number
to
my "make" function of my block.

What do you prefer for making a GRC xml file for this block?

best,
7d89a70df32c0ae27c1235016f9e5441?d=identicon&s=25 Marcus Müller (Guest)
on 2014-05-08 10:34
(Received via mailing list)
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi Mostafa,


On 07.05.2014 16:34, Mostafa Alizadeh wrote:
>
> #define X 0x01864CFB

Attention! This is a preprocessing define. This means that /prior/ to
compilation, all occurences of X will be replaced by 0x01..., so your
compiler will never see X.

Is it possible that you want to define a default option for your make
function? That works! you can just have a make function with a
function stub like
...::make(int param1, float param2, unsigned char param3, int param4 =
0x0186);

Again, XML files are only useful for defining the graphical
representation of a GNU Radio block in GRC, it's not meant to define
constants. There are ways to do that, but most of the time it's not
what you want.
You can set default values for input fields in the block options, you
can also do dropdown menus. I don't know what you're really trying to
do, so you might be best of to look at different blocks in GRC and
find one that fits your problem best, and copy that block's XML.

Greetings,
Marcus


> <marcus.mueller@ettus.com>wrote:
>> SWIG will generate wrapper code to make these classes (which are
>> neither python, nor GNU Radio care about the type; they just care
>>> Hello everybody, I have a new type in my gnuradio blocks which
>>> *how could I define such variable in python!!!? *(may it helps
>
>
>
> _______________________________________________ Discuss-gnuradio
> mailing list Discuss-gnuradio@gnu.org
> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQEcBAEBAgAGBQJTalFKAAoJEBQ6EdjyzlHtRHwIAJnlorrctCzyARolZl4gc6mJ
7gTeGZc43oGj/1Ise3I7lqcY7lmBMkErGDLiKWsyWYOW0HTSHobDQr9xOY/UK5j+
HtaFAec2WeX9spTLNUBg87ZLTJlWBjoEvl6nT9xvbJSXDvoIBzF1cQ7EY1TkVU5V
zLWRxwMA1G6LeP9JGCuxlA1t92hP7gLR+UOoff1EmWx2HbwF4Jin8frn6irrzqpi
SCQ3X5VoMT2/vX10lFgbumEUhijTr5q9m3JvMIA2n7CBdq5SrLEpqjgZIHUPUxOs
nAN9h6UZ8mSfAvxjik8X1frDpp0rJxl2iZH+r69OILBAt+nQQJzb88LHyRh7UyQ=
=bJMO
-----END PGP SIGNATURE-----
Adb3f7a3251a26ecdd5cbdef07412a0f?d=identicon&s=25 王先达 (Guest)
on 2014-05-08 10:49
(Received via mailing list)
Hello
         Thank you so much.I have already read all the wiki somedays
before.But i find it's difficult to write my own application.Have you
some tutorials?And how do you be familiar with this area?Any advices
will be appreciated.So many people want to learn it but no good ways to
touch it.
Best regards,
Xianda Wang
D50c3828e720e33ce734d9124c97d960?d=identicon&s=25 Mostafa Alizadeh (m-alizadeh)
on 2014-05-08 11:59
(Received via mailing list)
Hi Marcus,
I actually have a deep, really deep,  problem with data types!!!! As you
see I have a preprocessor definition which is 32 bit number. I wanna
pass
it to the make!!! how could I? If I use the gnuradio type " gr_uint32",
after turning my c++-written blocks, the GRC tells me:

*TypeError: in method 'xxxx_make', argument 1 of type 'gr_uint32'*

I put an option to the xml file :

*<option>*
*        <name>CRC16</name>*
*        <key>gr_uint32</key>*
*        <opt>CRC_type:0x00011021</opt>*
*</option>*

I know that this is not true, but I want to pass a 32-bit number to the
"make". How could I do?

please help me,

best,
739a038d5a03d5448114b3615e2caedc?d=identicon&s=25 Activecat K. (activecat_k)
on 2014-05-08 14:16
(Received via mailing list)
On Thu, May 8, 2014 at 12:53 AM, Mostafa Alizadeh
<m.alizadehee@gmail.com>wrote:

>
> *<option>*
> *        <name>CRC16</name>*
> *        <key>gr_uint32</key>*
> *        <opt>CRC_type:0x00011021</opt>*
> *</option>*
>
> I know that this is not true, but I want to pass a 32-bit number to the
> "make". How could I do?
>
>

Anyone correct me if I am wrong.

In xml file we use the Python data types.
In usual case Python doesn't distinguish among "unsigned" or "signed"
integer, this is different from c++.
The casting will be intelligently handled by swig.

Hence, for your case, just pass "gr_uint32" to the make() assuming your
block is coded in c++. Then use "<type>int</type>" in the xml file.
This
solves your problem.

Meanwhile, C preprocessor does not know types or C keywords.
D17685d174fee4ca258c75cce7bc2202?d=identicon&s=25 Marcus Müller (Guest)
on 2014-05-08 14:50
(Received via mailing list)
Hi Activecat,
On 08.05.2014 14:14, Activecat wrote:
> Anyone correct me if I am wrong.
>
> In xml file we use the Python data types.
well, kind of. The XML is just being parsed by GRC to validate the input
of a field, color things etc.
However, there are only mappings in grc/python/Param.py for the
correctly wrappable python types.
You won't be able to have a let's say some Python class as param type in
GRC.

Greetings,
Marcus
C539637020fd56193dd6daec746c4a84?d=identicon&s=25 Tom Rondeau (Guest)
on 2014-05-08 15:35
(Received via mailing list)
On Thu, May 8, 2014 at 8:48 AM, Marcus Müller
<marcus.mueller@ettus.com>wrote:

> GRC.
>
> Greetings,
> Marcus



Yes, GRC isn't a complete language and doesn't implement things like it
is.
There are only a subset of possible data types. Using "gr_modtool add"
to
create a new block nicely gives you a lot of hints in the XML file it
builds for you, including a list of all possible data types.

Tom
739a038d5a03d5448114b3615e2caedc?d=identicon&s=25 Activecat K. (activecat_k)
on 2014-05-08 15:55
(Received via mailing list)
On Thu, May 8, 2014 at 9:33 PM, Tom Rondeau <tom@trondeau.com> wrote:

>> correctly wrappable python types.
> builds for you, including a list of all possible data types.
>
> Tom
>


That is very clear.
Thank you very much.
739a038d5a03d5448114b3615e2caedc?d=identicon&s=25 Activecat K. (activecat_k)
on 2014-05-09 07:43
(Received via mailing list)
On Thu, May 8, 2014 at 8:24 PM, Mostafa Alizadeh
<m.alizadehee@gmail.com>wrote:

> Activecat your right,
> I finally got what you said. Types in Python are so different than that of
> c++.
> For example, Python doesn't care the data is int or usigned int !
>

Pls stay on the list so that others know your problem has been solved.
Please log in before posting. Registration is free and takes only a minute.
Existing account

NEW: Do you have a Google/GoogleMail, Yahoo or Facebook account? No registration required!
Log in with Google account | Log in with Yahoo account | Log in with Facebook account
No account? Register here.