hey, I am working to make a detector block in gnuradio 3.7.1 using gr-how "out-of-tree module". I am stuck with an error during make command
abhishek@abhishek-Inspiron-N5110:~/gr-howto/build$ make Scanning dependencies of target gnuradio-howto [ 5%] Building CXX object lib/CMakeFiles/gnuradio-howto.dir/howto_detect_ff_impl.cc.o /home/abhishek/gr-howto/lib/howto_detect_ff_impl.cc:37:5: error: ‘howto_detect_ff_sptr’ does not name a type howto_detect_ff_sptr ^ /home/abhishek/gr-howto/lib/howto_detect_ff_impl.cc: In constructor ‘gr::howto::howto_detect_ff_impl::howto_detect_ff_impl(float, int, int)’: /home/abhishek/gr-howto/lib/howto_detect_ff_impl.cc:59:17: error: expression cannot be used as a function d_pfa(pfa), d_L(L), d_samples(samples) ^ /home/abhishek/gr-howto/lib/howto_detect_ff_impl.cc:59:25: error: expression cannot be used as a function d_pfa(pfa), d_L(L), d_samples(samples) ^ /home/abhishek/gr-howto/lib/howto_detect_ff_impl.cc:59:45: error: expression cannot be used as a function d_pfa(pfa), d_L(L), d_samples(samples) ^ /home/abhishek/gr-howto/lib/howto_detect_ff_impl.cc:185:1: error: expected ‘{’ before ‘}’ token } /* namespace howto */ ^ 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 Os is ubuntu 14.04. Even i have attached howto_detect_ff_impl.h, howto_detect_ff_impl.cc and howto_swig.i file. It seems that some mistake is there in howto_detect_ff.h file whose path is gr-howto/include/howto. But i am not getting what exactly it is Any solution to sort an error will be appreciated. Thanks in advance, Abhishek.
/* -*- c++ -*- */ /* * Copyright 2015 <+YOU OR YOUR COMPANY+>. * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this software; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 51 Franklin Street, * Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include <gnuradio/io_signature.h> #include "howto_detect_ff_impl.h" #include <stdio.h> #include <math.h> #include <gsl/gsl_matrix.h> #include <gsl/gsl_vector.h> #include <gsl/gsl_linalg.h> namespace gr { namespace howto { howto_detect_ff_sptr howto_make_detect_ff(float pfa, int L, int samples) { return gnuradio::get_initial_sptr (new howto_detect_ff_impl(pfa, L, samples)); } static const int MIN_IN = 1; // mininum number of input streams static const int MAX_IN = 1; // maximum number of input streams static const int MIN_OUT = 1; // minimum number of output streams static const int MAX_OUT = 1; // maximum number of output streams float mem = 0; //Global Variable /* * The private constructor */ howto_detect_ff_impl::howto_detect_ff_impl (float pfa, int L, int samples) : gr::block("howto_detect_ff", gr::io_signature::make (MIN_IN, MAX_IN, sizeof (float)), gr::io_signature::make (MIN_OUT, MAX_OUT, sizeof(float)), d_pfa(pfa), d_L(L), d_samples(samples) { } /* * Our virtual destructor. */ howto_detect_ff_impl::~howto_detect_ff_impl() { } //------------functions--------------- /*This function gives the CDF value for the pfa in input*/ float TracyWidom (float p){ float pd, tw; tw = 0.45; pd = 1 - p; if (pd >= 0.01 && pd <= 0.05){ tw = 18*(pd - (17/75)); printf("a - %f\n", tw); }else if (pd >= 0.05 && pd <= 0.1){ tw = 8*(pd - (179/400)); printf("b - %f\n", tw); }else if (pd >= 0.1 && pd <= 0.3){ tw = (87/20)*(pd - (643/870)); printf("c - %f\n", tw); }else if (pd >= 0.3 && pd <= 0.5){ tw = (16/5)*(pd - (287/320)); printf("d - %f\n", tw); }else if (pd >= 0.5 && pd <= 0.7){ tw = (17/5)*(pd - (297/340)); printf("e - %f\n", tw); }else if (pd >= 0.7 && pd <= 0.9){ tw = (5.2)*(pd - (0.813)); printf("f - %f\n", tw); }else if (pd >= 0.9 && pd <= 0.95){ tw = (53/5)*(pd - (909/1060)); printf("g - %f\n", tw); }else if (pd >= 0.95 && pd <= 1){ tw = 26*(pd - (593/650)); printf("h - %f\n", tw); }else{ printf ("wrong pfa value: it must be between 0 and 1\n"); printf ("the pfa value standard is 0.1\n"); tw = (53/5)*(0.9 - (909/1060)); } return tw; } /*this function calculates the threshold for the test the inputs are: ns = numbers of samples; L = length of the correlation function; pfa = probability of false alarm*/ float gamma (int ns, int L, float pfa){ float A, B, C, ratio1, ratio2, g; A = sqrt(ns)+sqrt(L); B = sqrt(ns)-sqrt(L); C = ns*L; ratio1 = pow(A,2)/pow(B,2); ratio2 = 1+( pow(A,-0.667) / pow(C,0.167) )*pfa; g = ratio1*ratio2; return g; } /*This function makes the detection test*/ float test (float r, float t){ float decision; if(r > -1){ if(r <= t){ decision = 0; }else{ decision = 1; } } return decision;} //-------------end functions----------- int howto_detect_ff_impl::general_work (int noutput_items, gr_vector_int &ninput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { const float *in = (const float *) input_items[0]; float *out = (float *) output_items[0]; float vett [d_samples]; int lenght = floor(d_samples / d_L) * d_L; int p, j, k; float thr, lmax, lmin, ratio, TW; // char c[1]; gsl_matrix * hankel = gsl_matrix_alloc (lenght,d_L); gsl_matrix * V = gsl_matrix_alloc (d_L,d_L); gsl_vector * S = gsl_vector_alloc (d_L); gsl_vector * temp = gsl_vector_alloc (d_ L); FILE *story; k=0; ratio = -1; gsl_matrix_set_zero (hankel); TW = TracyWidom (d_pfa); thr = gamma(lenght, d_L, TW); for (int i = 0; i < noutput_items; i++){ vett[k]=in[i]; k++; if (k >= lenght){ k = 0; story = fopen("filestory.txt", "a"); for( p=0; p<lenght; p++ ){ for( j=0; j<d_L; j++ ){ gsl_matrix_set (hankel, p, j, vett[p+j]); } } gsl_linalg_SV_decomp (hankel, V, S, temp); lmax = gsl_vector_get(S, 0); lmin = gsl_vector_get(S, (d_L -1)); ratio = lmax/lmin; mem = test(ratio, thr); fprintf(story, "%f - ratio=%f - soglia=%f\n ", mem, ratio, thr); fclose(story); } out[i] = mem; } // Do <+signal processing+> // Tell runtime system how many input items we consumed on // each input stream. consume_each (noutput_items); // Tell runtime system how many output items we produced. return noutput_items; } } /* namespace howto */ } /* namespace gr */
/* -*- c++ -*- */ /* * Copyright 2015 <+YOU OR YOUR COMPANY+>. * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this software; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 51 Franklin Street, * Boston, MA 02110-1301, USA. */ #ifndef INCLUDED_HOWTO_HOWTO_DETECT_FF_IMPL_H #define INCLUDED_HOWTO_HOWTO_DETECT_FF_IMPL_H #include <howto/howto_detect_ff.h> namespace gr { namespace howto { class howto_detect_ff_impl; typedef boost::shared_ptr<howto_detect_ff_impl> howto_detect_ff_impl_sptr; howto_detect_ff_impl_sptr howto_make_detect_ff_impl (float pfa, int L, int samples); class howto_detect_ff_impl : public howto_detect_ff { private: // Nothing to declare in this block. friend howto_detect_ff_impl_sptr howto_make_detect_ff_impl (float pfa, int L, int samples); howto_detect_ff_impl (float pfa, int L, int samples); float d_pfa; int d_L; int d_samples; public: howto_detect_ff_impl(); ~howto_detect_ff_impl(); // Where all the action really happens void set_pfa(float input_a) { d_pfa = input_a; } int get_pfa() { return d_pfa; } void set_L(int input_b) { d_L = input_b; } int get_L() { return d_L; } void set_samples(int input_c) { d_samples = input_c; } int get_samples() { return d_samples; } int general_work(int noutput_items, gr_vector_int &ninput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items); }; } // namespace howto } // namespace gr #endif /* INCLUDED_HOWTO_HOWTO_DETECT_FF_IMPL_H */
howto_swig.i
Description: Binary data
/* -*- c++ -*- */ /* * Copyright 2015 <+YOU OR YOUR COMPANY+>. * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this software; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 51 Franklin Street, * Boston, MA 02110-1301, USA. */ #ifndef INCLUDED_HOWTO_HOWTO_DETECT_FF_H #define INCLUDED_HOWTO_HOWTO_DETECT_FF_H #include <howto/api.h> #include <gnuradio/block.h> namespace gr { namespace howto { /*! * \brief <+description of block+> * \ingroup howto * */ class HOWTO_API howto_detect_ff : virtual public gr::block { public: typedef boost::shared_ptr<howto_detect_ff> sptr; /*! * \brief Return a shared_ptr to a new instance of howto::howto_detect_ff. * * To avoid accidental use of raw pointers, howto::howto_detect_ff's * constructor is in a private implementation * class. howto::howto_detect_ff::make is the public interface for * creating new instances. */ static sptr make(); }; } // namespace howto } // namespace gr #endif /* INCLUDED_HOWTO_HOWTO_DETECT_FF_H */
_______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio