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,
on 2014-05-07 15:02
on 2014-05-08 09:38
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,
on 2014-05-08 10:34
-----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 > <firstname.lastname@example.org>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 Discussemail@example.com > 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-----
on 2014-05-08 10:49
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
on 2014-05-08 11:59
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,
on 2014-05-08 14:16
On Thu, May 8, 2014 at 12:53 AM, Mostafa Alizadeh <firstname.lastname@example.org>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.
on 2014-05-08 14:50
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
on 2014-05-08 15:35
On Thu, May 8, 2014 at 8:48 AM, Marcus Müller <email@example.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
on 2014-05-08 15:55
On Thu, May 8, 2014 at 9:33 PM, Tom Rondeau <firstname.lastname@example.org> 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.
on 2014-05-09 07:43
On Thu, May 8, 2014 at 8:24 PM, Mostafa Alizadeh <email@example.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.