diff options
Diffstat (limited to 'gr-howto-write-a-block/lib')
-rw-r--r-- | gr-howto-write-a-block/lib/CMakeLists.txt | 16 | ||||
-rw-r--r-- | gr-howto-write-a-block/lib/howto_square2_ff.cc | 92 | ||||
-rw-r--r-- | gr-howto-write-a-block/lib/howto_square_ff.cc | 98 | ||||
-rw-r--r-- | gr-howto-write-a-block/lib/qa_square2_ff.cc (renamed from gr-howto-write-a-block/lib/qa_howto_square_ff.cc) | 6 | ||||
-rw-r--r-- | gr-howto-write-a-block/lib/qa_square_ff.cc (renamed from gr-howto-write-a-block/lib/qa_howto_square2_ff.cc) | 6 | ||||
-rw-r--r-- | gr-howto-write-a-block/lib/square2_ff_impl.cc | 98 | ||||
-rw-r--r-- | gr-howto-write-a-block/lib/square2_ff_impl.h | 51 | ||||
-rw-r--r-- | gr-howto-write-a-block/lib/square_ff_impl.cc | 105 | ||||
-rw-r--r-- | gr-howto-write-a-block/lib/square_ff_impl.h | 52 |
9 files changed, 320 insertions, 204 deletions
diff --git a/gr-howto-write-a-block/lib/CMakeLists.txt b/gr-howto-write-a-block/lib/CMakeLists.txt index 835ae02d60..83b510e3f9 100644 --- a/gr-howto-write-a-block/lib/CMakeLists.txt +++ b/gr-howto-write-a-block/lib/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright 2011 Free Software Foundation, Inc. +# Copyright 2011,2012 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -22,7 +22,7 @@ ######################################################################## include(GrPlatform) #define LIB_SUFFIX -add_library(gnuradio-howto SHARED howto_square_ff.cc howto_square2_ff.cc) +add_library(gnuradio-howto SHARED square_ff_impl.cc square2_ff_impl.cc) target_link_libraries(gnuradio-howto ${Boost_LIBRARIES} ${GRUEL_LIBRARIES} ${GNURADIO_CORE_LIBRARIES}) set_target_properties(gnuradio-howto PROPERTIES DEFINE_SYMBOL "gnuradio_howto_EXPORTS") @@ -45,10 +45,10 @@ set(GR_TEST_TARGET_DEPS gnuradio-howto) #turn each test cpp file into an executable with an int main() function add_definitions(-DBOOST_TEST_DYN_LINK -DBOOST_TEST_MAIN) -add_executable(qa_howto_square_ff qa_howto_square_ff.cc) -target_link_libraries(qa_howto_square_ff gnuradio-howto ${Boost_LIBRARIES}) -GR_ADD_TEST(qa_howto_square_ff qa_howto_square_ff) +add_executable(qa_square_ff qa_square_ff.cc) +target_link_libraries(qa_square_ff gnuradio-howto ${Boost_LIBRARIES}) +GR_ADD_TEST(qa_square_ff qa_square_ff) -add_executable(qa_howto_square2_ff qa_howto_square2_ff.cc) -target_link_libraries(qa_howto_square2_ff gnuradio-howto ${Boost_LIBRARIES}) -GR_ADD_TEST(qa_howto_square2_ff qa_howto_square2_ff) +add_executable(qa_square2_ff qa_square2_ff.cc) +target_link_libraries(qa_square2_ff gnuradio-howto ${Boost_LIBRARIES}) +GR_ADD_TEST(qa_square2_ff qa_square2_ff) diff --git a/gr-howto-write-a-block/lib/howto_square2_ff.cc b/gr-howto-write-a-block/lib/howto_square2_ff.cc deleted file mode 100644 index 3586559ffa..0000000000 --- a/gr-howto-write-a-block/lib/howto_square2_ff.cc +++ /dev/null @@ -1,92 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2004,2010 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio 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. - * - * GNU Radio 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 GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -/* - * config.h is generated by configure. It contains the results - * of probing for features, options etc. It should be the first - * file included in your .cc file. - */ -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <howto_square2_ff.h> -#include <gr_io_signature.h> - -/* - * Create a new instance of howto_square2_ff and return - * a boost shared_ptr. This is effectively the public constructor. - */ -howto_square2_ff_sptr -howto_make_square2_ff () -{ - return gnuradio::get_initial_sptr(new howto_square2_ff ()); -} - -/* - * Specify constraints on number of input and output streams. - * This info is used to construct the input and output signatures - * (2nd & 3rd args to gr_block's constructor). The input and - * output signatures are used by the runtime system to - * check that a valid number and type of inputs and outputs - * are connected to this block. In this case, we accept - * only 1 input and 1 output. - */ -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 - -/* - * The private constructor - */ -howto_square2_ff::howto_square2_ff () - : gr_sync_block ("square2_ff", - gr_make_io_signature (MIN_IN, MAX_IN, sizeof (float)), - gr_make_io_signature (MIN_OUT, MAX_OUT, sizeof (float))) -{ - // nothing else required in this example -} - -/* - * Our virtual destructor. - */ -howto_square2_ff::~howto_square2_ff () -{ - // nothing else required in this example -} - -int -howto_square2_ff::work (int noutput_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]; - - for (int i = 0; i < noutput_items; i++){ - out[i] = in[i] * in[i]; - } - - // Tell runtime system how many output items we produced. - return noutput_items; -} diff --git a/gr-howto-write-a-block/lib/howto_square_ff.cc b/gr-howto-write-a-block/lib/howto_square_ff.cc deleted file mode 100644 index f0d2e1f869..0000000000 --- a/gr-howto-write-a-block/lib/howto_square_ff.cc +++ /dev/null @@ -1,98 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2004,2010 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio 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. - * - * GNU Radio 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 GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -/* - * config.h is generated by configure. It contains the results - * of probing for features, options etc. It should be the first - * file included in your .cc file. - */ -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <howto_square_ff.h> -#include <gr_io_signature.h> - -/* - * Create a new instance of howto_square_ff and return - * a boost shared_ptr. This is effectively the public constructor. - */ -howto_square_ff_sptr -howto_make_square_ff () -{ - return gnuradio::get_initial_sptr(new howto_square_ff ()); -} - -/* - * Specify constraints on number of input and output streams. - * This info is used to construct the input and output signatures - * (2nd & 3rd args to gr_block's constructor). The input and - * output signatures are used by the runtime system to - * check that a valid number and type of inputs and outputs - * are connected to this block. In this case, we accept - * only 1 input and 1 output. - */ -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 - -/* - * The private constructor - */ -howto_square_ff::howto_square_ff () - : gr_block ("square_ff", - gr_make_io_signature (MIN_IN, MAX_IN, sizeof (float)), - gr_make_io_signature (MIN_OUT, MAX_OUT, sizeof (float))) -{ - // nothing else required in this example -} - -/* - * Our virtual destructor. - */ -howto_square_ff::~howto_square_ff () -{ - // nothing else required in this example -} - -int -howto_square_ff::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]; - - for (int i = 0; i < noutput_items; i++){ - out[i] = in[i] * in[i]; - } - - // 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; -} diff --git a/gr-howto-write-a-block/lib/qa_howto_square_ff.cc b/gr-howto-write-a-block/lib/qa_square2_ff.cc index 98f6cc587c..fac704a6d5 100644 --- a/gr-howto-write-a-block/lib/qa_howto_square_ff.cc +++ b/gr-howto-write-a-block/lib/qa_square2_ff.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2011 Free Software Foundation, Inc. + * Copyright 2011,2012 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -21,12 +21,12 @@ #include <boost/test/unit_test.hpp> -BOOST_AUTO_TEST_CASE(qa_howto_square_ff_t1){ +BOOST_AUTO_TEST_CASE(qa_square2_ff_t1){ BOOST_CHECK_EQUAL(2 + 2, 4); // TODO BOOST_* test macros here } -BOOST_AUTO_TEST_CASE(qa_howto_square_ff_t2){ +BOOST_AUTO_TEST_CASE(qa_square2_ff_t2){ BOOST_CHECK_EQUAL(2 + 2, 4); // TODO BOOST_* test macros here } diff --git a/gr-howto-write-a-block/lib/qa_howto_square2_ff.cc b/gr-howto-write-a-block/lib/qa_square_ff.cc index ff1e5d5b0a..bf474e7155 100644 --- a/gr-howto-write-a-block/lib/qa_howto_square2_ff.cc +++ b/gr-howto-write-a-block/lib/qa_square_ff.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2011 Free Software Foundation, Inc. + * Copyright 2011,2012 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -21,12 +21,12 @@ #include <boost/test/unit_test.hpp> -BOOST_AUTO_TEST_CASE(qa_howto_square2_ff_t1){ +BOOST_AUTO_TEST_CASE(qa_square_ff_t1){ BOOST_CHECK_EQUAL(2 + 2, 4); // TODO BOOST_* test macros here } -BOOST_AUTO_TEST_CASE(qa_howto_square2_ff_t2){ +BOOST_AUTO_TEST_CASE(qa_square_ff_t2){ BOOST_CHECK_EQUAL(2 + 2, 4); // TODO BOOST_* test macros here } diff --git a/gr-howto-write-a-block/lib/square2_ff_impl.cc b/gr-howto-write-a-block/lib/square2_ff_impl.cc new file mode 100644 index 0000000000..f508a6e05b --- /dev/null +++ b/gr-howto-write-a-block/lib/square2_ff_impl.cc @@ -0,0 +1,98 @@ +/* -*- c++ -*- */ +/* + * Copyright 2004,2010,2012 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio 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. + * + * GNU Radio 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 GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +/* + * config.h is generated by configure. It contains the results + * of probing for features, options etc. It should be the first + * file included in your .cc file. + */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "square2_ff_impl.h" +#include <gr_io_signature.h> + +namespace gr { + namespace howto { + + /* + * Create a new instance of howto_square2_ff and return a boost + * shared_ptr. This is effectively the public constructor. + */ + square2_ff::sptr + square2_ff::make() + { + return gnuradio::get_initial_sptr + (new square2_ff_impl()); + } + + /* + * Specify constraints on number of input and output streams. + * This info is used to construct the input and output signatures + * (2nd & 3rd args to gr_block's constructor). The input and + * output signatures are used by the runtime system to check that + * a valid number and type of inputs and outputs are connected to + * this block. In this case, we accept only 1 input and 1 output. + */ + 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 + + /* + * The private constructor + */ + square2_ff_impl::square2_ff_impl() + : gr_sync_block("square2_ff", + gr_make_io_signature(MIN_IN, MAX_IN, sizeof(float)), + gr_make_io_signature(MIN_OUT, MAX_OUT, sizeof(float))) + { + // nothing else required in this example + } + + /* + * Our virtual destructor. + */ + square2_ff_impl::~square2_ff_impl() + { + // nothing else required in this example + } + + int + square2_ff_impl::work(int noutput_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]; + + for(int i = 0; i < noutput_items; i++) { + out[i] = in[i] * in[i]; + } + + // Tell runtime system how many output items we produced. + return noutput_items; + } + + } /* namespace howto */ +} /* namespace gr */ diff --git a/gr-howto-write-a-block/lib/square2_ff_impl.h b/gr-howto-write-a-block/lib/square2_ff_impl.h new file mode 100644 index 0000000000..1f7ca7ab37 --- /dev/null +++ b/gr-howto-write-a-block/lib/square2_ff_impl.h @@ -0,0 +1,51 @@ +/* -*- c++ -*- */ +/* + * Copyright 2004,2012 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio 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. + * + * GNU Radio 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 GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef INCLUDED_HOWTO_SQUARE2_FF_IMPL_H +#define INCLUDED_HOWTO_SQUARE2_FF_IMPL_H + +#include <howto/square2_ff.h> +#include <gr_sync_block.h> + +namespace gr { + namespace howto { + + class square2_ff_impl : public square2_ff + { + private: + // Nothing to declare in this block. + + public: + square2_ff_impl(); // implementation constructor + ~square2_ff_impl(); // implementation destructor + + // Where all the action really happens + + int work(int noutput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items); + }; + + } // namespace howto +} // namespace gr + +#endif /* INCLUDED_HOWTO_SQUARE2_FF_IMPL_H */ diff --git a/gr-howto-write-a-block/lib/square_ff_impl.cc b/gr-howto-write-a-block/lib/square_ff_impl.cc new file mode 100644 index 0000000000..d49f72da1e --- /dev/null +++ b/gr-howto-write-a-block/lib/square_ff_impl.cc @@ -0,0 +1,105 @@ +/* -*- c++ -*- */ +/* + * Copyright 2004,2010,2012 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio 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. + * + * GNU Radio 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 GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +/* + * config.h is generated by configure. It contains the results + * of probing for features, options etc. It should be the first + * file included in your .cc file. + */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "square_ff_impl.h" +#include <gr_io_signature.h> + +namespace gr { + namespace howto { + + /* + * Create a new instance of howto_square_ff and return a boost + * shared_ptr. This is effectively the public constructor. + */ + square_ff::sptr + square_ff::make() + { + return gnuradio::get_initial_sptr + (new square_ff_impl()); + } + + /* + * Specify constraints on number of input and output streams. + * This info is used to construct the input and output signatures + * (2nd & 3rd args to gr_block's constructor). The input and + * output signatures are used by the runtime system to + * check that a valid number and type of inputs and outputs + * are connected to this block. In this case, we accept + * only 1 input and 1 output. + */ + 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 + + /* + * The private constructor + */ + square_ff_impl::square_ff_impl() + : gr_block("square_ff", + gr_make_io_signature(MIN_IN, MAX_IN, sizeof(float)), + gr_make_io_signature(MIN_OUT, MAX_OUT, sizeof(float))) + { + // nothing else required in this example + } + + /* + * Our virtual destructor. + */ + square_ff_impl::~square_ff_impl() + { + // nothing else required in this example + } + + int + square_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]; + + for(int i = 0; i < noutput_items; i++) { + out[i] = in[i] * in[i]; + } + + // 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 */ diff --git a/gr-howto-write-a-block/lib/square_ff_impl.h b/gr-howto-write-a-block/lib/square_ff_impl.h new file mode 100644 index 0000000000..2f0963423a --- /dev/null +++ b/gr-howto-write-a-block/lib/square_ff_impl.h @@ -0,0 +1,52 @@ +/* -*- c++ -*- */ +/* + * Copyright 2004,2012 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio 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. + * + * GNU Radio 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 GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef INCLUDED_HOWTO_SQUARE_FF_IMPL_H +#define INCLUDED_HOWTO_SQUARE_FF_IMPL_H + +#include <howto/square_ff.h> +#include <gr_block.h> + +namespace gr { + namespace howto { + + class square_ff_impl : public square_ff + { + private: + // Nothing to declare in this block. + + public: + square_ff_impl(); // implementation constructor + ~square_ff_impl(); // implementation destructor + + // Where all the action really happens + + 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_SQUARE_FF_IMPL_H */ |