Hi Marcus,

Actually, I need to do the spectrum management and interference identification 
using GNU radio and USRP, and I’ve read some articles about them, but I still 
don’t know how to realize them, so I want to find some examples about this 
area. Unfortunately, I first find was an energy detector to create an 
Out-Of-Tree module by C++.

Could you recommend some examples that I can follow?

Thank you,
Yan

From: Marcus Müller [mailto:[email protected]]
Sent: 25 November 2015 16:05
To: Yan Huang; GNURadio Discussion List
Subject: Re: [Discuss-gnuradio] error while making detector

Hi Yan,


If I want to add more functions can I add them to existing blocks?
You could do that; often, functionality is cleaner implemented by adding 
further blocks, but if you need something that needs a modified block, creating 
your own might really be the best way. I'd really recommend doing that in 
python for a start, though.

I really just was recommending using existing blocks because I felt that 
getting C++ problems right at the beginning might have been frustrating; the 
usual way we try to introduce new people to GNU Radio development really is 
taking the road from the GNU Radio companion, combining existing blocks, over 
gr_modtool to create an Out-Of-Tree module for python blocks to C++ blocks in 
that same gr_modtool created module. Now, gr_modtool usually creates block 
"stubs" that just work, and all the errors you were getting were indicative of 
you not including the right headers and maybe not linking against GSL.

Also, the code line the compiler output showed contained a lot of bugs (mainly 
integer division where you'd want to have proper float division, and a lot of 
basic syntax errors), so to be honest: you should not start with writing a C++ 
block before you're really somewhat used to writing C++ code. Python blocks are 
slower than C++ blocks in many cases, but the speed up might not really worth 
the labour here, until you have tried and figured out which actually become 
problematic (and if the reduced computational performance is a problem at all). 
Python is super easy to learn if you've ever saw any imperative programming 
language, be that matlab, ruby, PHP, or anything else.

So: I don't really know what your energy detector should do, or what your 
current implementation's purpose is exactly, so I'm not really fit to say "that 
can be solved with existing blocks only", but energy detection is a very common 
problem, and hence, chances are that most of the functionality can be done by 
existing blocks. You seem to be using a rather fair amount of linear algebra in 
your block, judging by the amount of GSL calls you do.

Maybe you'd want to describe your problem, so that the mailing list (hint: try 
to reply to the mailing list instead of individuals; then more people can be 
helpful; and also, that's proper mailing list etiquette) can come up with a 
suitable approach.

Best regards,
Marcus
On 25.11.2015 16:45, Yan Huang wrote:
Thank you very much, I guess I’d better use the existing blocks to implement 
energy detection. If I want to add more functions can I add them to existing 
blocks?

Thank you,
Yan
From: Marcus Müller [mailto:[email protected]]
Sent: 25 November 2015 15:23
To: Yan Huang; GNURadio Discussion List
Subject: Re: [Discuss-gnuradio] error while making detector

There's already blocks that do energy calculation, so you really don't have to 
implement this yourself.
In fact, I wrote a short answer on a similar question just yesterday. The 
question there was how to add a method "get_bandpower" to a C++ block, so 
here's the excerpt from
http://stackoverflow.com/a/33901845/4433386
where I explained other ways than implementing this yourself:




Other than that, there's already blocks that can do what you want:

[three                  ways to probe 
signal]<http://i.stack.imgur.com/jdwd6.png>

  *   Probe Avg Mag²: has a method level() which does the same as your 
get_bandpower (aside from the √(.) )
  *   Complex to Mag ⟶ Decimating FIR Filter ⟶ Probe Signal: does the 
√(Re²+Im²), before passing it on to a filter with 123 (that was just my 
arbitrary fixed length) taps of 1/length, and decimating it to one value every 
average. Result get send to the Signal Probe, which has a signal() method, 
which does what your get_bandpower does. CPU load of this is relatively small 
-- it's really just the magnitude finding for every sample, and then 123 real 
multiplications + 123 real additions per 123 samples,in the filter, all SIMD 
increased, so basically, less than 1 FMAC per sample.
  *   Complex to Mag ⟶ Moving Average ⟶ Probe Signal: Names say it all. Nothing 
magical here.

Best regards,
Marcus
On 25.11.2015 16:19, Yan Huang wrote:
Hi Marcus,

I have followed the URL you recommended, but  I want to use gnuradio to do 
energy detection , so I follow the howto infrastructure and want to learn more 
about  it by building a new block. Is there any suggestion about how to make 
anergy detection?

Thanks,

Yan

From: 
[email protected]<mailto:[email protected]>
 [mailto:[email protected]] On Behalf 
Of Marcus Müller
Sent: 25 November 2015 15:10
To: [email protected]<mailto:[email protected]>
Subject: Re: [Discuss-gnuradio] error while making detector

Hi Yan,

which tutorial exactly where you following (URL)?
I recommend using the Guided Tutorials for beginners; they are much better 
illustrated, and they don't need the sometimes broken howto infrastructure.
https://gnuradio.org/redmine/projects/gnuradio/wiki/Guided_Tutorials

Best regards,
Marcus
On 25.11.2015 15:45, Yan Huang wrote:
Hey,
I’m a new to use gnuradio and USRP B210, now I want to generate my OOT module 
start with the example ‘howto_detect’, and I followed guided tutorial in 
gnuradio.org. But there are still some problems as follows.

[  6%] Building CXX object 
lib/CMakeFiles/gnuradio-howto.dir/howto_detect_ff_impl.cc.o
/home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:32:5: error: 
prototype for ‘gr::howto::howto_detect_ff::sptr 
gr::howto::howto_detect_ff::make(float, int, int)’ does not match any in class 
‘gr::howto::howto_detect_ff’
     howto_detect_ff::make(float pfa, int L, int samples)
     ^
In file included from 
/home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.h:24:0,
                 from 
/home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:26:
/home/mint/Documents/gr-howto/include/howto/howto_detect_ff.h:49:19: error: 
candidate is: static gr::howto::howto_detect_ff::sptr 
gr::howto::howto_detect_ff::make()
       static sptr make();
                   ^
/home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc: In constructor 
‘gr::howto::howto_detect_ff_impl::howto_detect_ff_impl(float, int, int)’:
/home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:52:24: error: 
expression cannot be used as a function
               d_pfa(pfa), d_L(L), d_samples(samples))
                        ^
/home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:52:32: error: 
expression cannot be used as a function
               d_pfa(pfa), d_L(L), d_samples(samples))
                                ^
/home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:52:52: error: 
expression cannot be used as a function
               d_pfa(pfa), d_L(L), d_samples(samples))
                                                    ^
/home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc: In function ‘float 
gr::howto::TracyWidom(float)’:
/home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:71:46: error: 
‘printf’ was not declared in this scope
 tw = 18*(pd - (17/75)); printf("a - %f\n", tw);
                                              ^
/home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:73:47: error: 
‘printf’ was not declared in this scope
 tw = 8*(pd - (179/400)); printf("b - %f\n", tw);
                                               ^
/home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:75:53: error: 
‘printf’ was not declared in this scope
 tw = (87/20)*(pd - (643/870)); printf("c - %f\n", tw);
                                                     ^
/home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:77:52: error: 
‘printf’ was not declared in this scope
 tw = (16/5)*(pd - (287/320)); printf("d - %f\n", tw);
                                                    ^
/home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:79:52: error: 
‘printf’ was not declared in this scope
 tw = (17/5)*(pd - (297/340)); printf("e - %f\n", tw);
                                                    ^
/home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:81:49: error: 
‘printf’ was not declared in this scope
 tw = (5.2)*(pd - (0.813)); printf("f - %f\n", tw);
                                                 ^
/home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:83:53: error: 
‘printf’ was not declared in this scope
 tw = (53/5)*(pd - (909/1060)); printf("g - %f\n", tw);
                                                     ^
/home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:85:48: error: 
‘printf’ was not declared in this scope
 tw = 26*(pd - (593/650)); printf("h - %f\n", tw);
                                                ^
/home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:87:56: error: 
‘printf’ was not declared in this scope
 printf ("wrong pfa value: it must be between 0 and 1\n");
                                                        ^
/home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc: In member function 
‘virtual int gr::howto::howto_detect_ff_impl::general_work(int, gr_vector_int&, 
gr_vector_const_void_star&, gr_vector_void_star&)’:
/home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:141:9: error: 
‘gsl_matrix’ was not declared in this scope
         gsl_matrix * hankel = gsl_matrix_alloc (lenght,d_L);
         ^
/home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:141:22: error: 
‘hankel’ was not declared in this scope
         gsl_matrix * hankel = gsl_matrix_alloc (lenght,d_L);
                      ^
/home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:141:59: error: 
‘gsl_matrix_alloc’ was not declared in this scope
         gsl_matrix * hankel = gsl_matrix_alloc (lenght,d_L);
                                                           ^
/home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:142:22: error: ‘V’ 
was not declared in this scope
         gsl_matrix * V = gsl_matrix_alloc (d_L,d_L);
                      ^
/home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:143:9: error: 
‘gsl_vector’ was not declared in this scope
         gsl_vector * S = gsl_vector_alloc (d_L);
         ^
/home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:143:22: error: ‘S’ 
was not declared in this scope
         gsl_vector * S = gsl_vector_alloc (d_L);
                      ^
/home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:143:47: error: 
‘gsl_vector_alloc’ was not declared in this scope
         gsl_vector * S = gsl_vector_alloc (d_L);
                                               ^
/home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:144:22: error: ‘temp’ 
was not declared in this scope
         gsl_vector * temp = gsl_vector_alloc (d_ L);
                      ^
/home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:144:47: error: ‘d_’ 
was not declared in this scope
         gsl_vector * temp = gsl_vector_alloc (d_ L);
                                               ^
/home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:147:36: error: 
‘gsl_matrix_set_zero’ was not declared in this scope
         gsl_matrix_set_zero (hankel);
                                    ^
/home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:156:47: error: 
‘fopen’ was not declared in this scope
             story = fopen("filestory.txt", "a");
                                               ^
/home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:159:60: error: 
‘gsl_matrix_set’ was not declared in this scope
                     gsl_matrix_set (hankel, p, j, vett[p+j]);
                                                            ^
/home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:162:57: error: 
‘gsl_linalg_SV_decomp’ was not declared in this scope
                 gsl_linalg_SV_decomp (hankel, V, S, temp);
                                                         ^
/home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:163:43: error: 
‘gsl_vector_get’ was not declared in this scope
                 lmax = gsl_vector_get(S, 0);
                                           ^
/home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:167:79: error: 
‘fprintf’ was not declared in this scope
                 fprintf(story, "%f - ratio=%f - soglia=%f\n ", mem, ratio, 
thr);
                                                                               ^
/home/mint/Documents/gr-howto/lib/howto_detect_ff_impl.cc:168:29: error: 
‘fclose’ was not declared in this scope
                 fclose(story);
                             ^
make[2]: *** [lib/CMakeFiles/gnuradio-howto.dir/howto_detect_ff_impl.cc.o] 
Error 1
make[1]: *** [lib/CMakeFiles/gnuradio-howto.dir/all] Error 2
make: *** [all] Error 2

Any solution to sort an error will be appreciated.

Thanks a lot,

Yan






This message and any attachment are intended solely for the addressee

and may contain confidential information. If you have received this

message in error, please send it back to me, and immediately delete it.



Please do not use, copy or disclose the information contained in this

message or in any attachment.  Any views or opinions expressed by the

author of this email do not necessarily reflect the views of the

University of Nottingham.



This message has been checked for viruses but the contents of an

attachment may still contain software viruses which could damage your

computer system, you are advised to perform your own checks. Email

communications with the University of Nottingham may be monitored as

permitted by UK legislation.






_______________________________________________

Discuss-gnuradio mailing list

[email protected]<mailto:[email protected]>

https://lists.gnu.org/mailman/listinfo/discuss-gnuradio






This message and any attachment are intended solely for the addressee

and may contain confidential information. If you have received this

message in error, please send it back to me, and immediately delete it.



Please do not use, copy or disclose the information contained in this

message or in any attachment.  Any views or opinions expressed by the

author of this email do not necessarily reflect the views of the

University of Nottingham.



This message has been checked for viruses but the contents of an

attachment may still contain software viruses which could damage your

computer system, you are advised to perform your own checks. Email

communications with the University of Nottingham may be monitored as

permitted by UK legislation.






This message and any attachment are intended solely for the addressee

and may contain confidential information. If you have received this

message in error, please send it back to me, and immediately delete it.



Please do not use, copy or disclose the information contained in this

message or in any attachment.  Any views or opinions expressed by the

author of this email do not necessarily reflect the views of the

University of Nottingham.



This message has been checked for viruses but the contents of an

attachment may still contain software viruses which could damage your

computer system, you are advised to perform your own checks. Email

communications with the University of Nottingham may be monitored as

permitted by UK legislation.





This message and any attachment are intended solely for the addressee
and may contain confidential information. If you have received this
message in error, please send it back to me, and immediately delete it. 

Please do not use, copy or disclose the information contained in this
message or in any attachment.  Any views or opinions expressed by the
author of this email do not necessarily reflect the views of the
University of Nottingham.

This message has been checked for viruses but the contents of an
attachment may still contain software viruses which could damage your
computer system, you are advised to perform your own checks. Email
communications with the University of Nottingham may be monitored as
permitted by UK legislation.

_______________________________________________
Discuss-gnuradio mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to