diff options
author | Johnathan Corgan | 2011-03-14 15:20:19 -0700 |
---|---|---|
committer | Johnathan Corgan | 2011-03-14 15:20:19 -0700 |
commit | 7df5b10ddcd64309a5c299f662a4cd62a7d175ab (patch) | |
tree | 1b345cb9be2d6eb04a87efa6102f5220bc3759b4 /gnuradio-examples/c++ | |
parent | c16a01e08e7b4fa3a7660fac785d2095053b323e (diff) | |
download | gnuradio-7df5b10ddcd64309a5c299f662a4cd62a7d175ab.tar.gz gnuradio-7df5b10ddcd64309a5c299f662a4cd62a7d175ab.tar.bz2 gnuradio-7df5b10ddcd64309a5c299f662a4cd62a7d175ab.zip |
gnuradio-examples: add C++ audio examples using new gr-audio
* gnuradio-examples/C++/audio/dial_tone
Diffstat (limited to 'gnuradio-examples/c++')
-rw-r--r-- | gnuradio-examples/c++/Makefile.am | 4 | ||||
-rw-r--r-- | gnuradio-examples/c++/audio/.gitignore (renamed from gnuradio-examples/c++/dial_tone/.gitignore) | 2 | ||||
-rw-r--r-- | gnuradio-examples/c++/audio/Makefile.am (renamed from gnuradio-examples/c++/dial_tone/Makefile.am) | 25 | ||||
-rw-r--r-- | gnuradio-examples/c++/audio/dial_tone.cc | 78 | ||||
-rw-r--r-- | gnuradio-examples/c++/dial_tone/README | 16 | ||||
-rw-r--r-- | gnuradio-examples/c++/dial_tone/dial_tone.cc | 43 | ||||
-rw-r--r-- | gnuradio-examples/c++/dial_tone/dial_tone.h | 33 | ||||
-rw-r--r-- | gnuradio-examples/c++/dial_tone/main.cc | 35 |
8 files changed, 89 insertions, 147 deletions
diff --git a/gnuradio-examples/c++/Makefile.am b/gnuradio-examples/c++/Makefile.am index 43c63847a..5a49e0e89 100644 --- a/gnuradio-examples/c++/Makefile.am +++ b/gnuradio-examples/c++/Makefile.am @@ -1,5 +1,5 @@ # -# Copyright 2006,2008 Free Software Foundation, Inc. +# Copyright 2011 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -20,4 +20,4 @@ # include $(top_srcdir)/Makefile.common -#SUBDIRS = dial_tone +SUBDIRS = audio diff --git a/gnuradio-examples/c++/dial_tone/.gitignore b/gnuradio-examples/c++/audio/.gitignore index c5e345858..bb08aaf91 100644 --- a/gnuradio-examples/c++/dial_tone/.gitignore +++ b/gnuradio-examples/c++/audio/.gitignore @@ -1,5 +1,3 @@ -/.deps -/.libs /Makefile /Makefile.in /dial_tone diff --git a/gnuradio-examples/c++/dial_tone/Makefile.am b/gnuradio-examples/c++/audio/Makefile.am index 188275fca..88bd7c1fd 100644 --- a/gnuradio-examples/c++/dial_tone/Makefile.am +++ b/gnuradio-examples/c++/audio/Makefile.am @@ -1,5 +1,5 @@ # -# Copyright 2006,2008,2009,2010 Free Software Foundation, Inc. +# Copyright 2011 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -21,25 +21,18 @@ include $(top_srcdir)/Makefile.common -# For compiling within the GNU Radio build tree +# For compiling with the GNU Radio build tree, use include dir below. +# For compiling outside the tree, use 'pkg-config --cflags gnuradio-audio' AM_CPPFLAGS = \ - -I$(top_srcdir)/gr-audio-alsa/src \ + -I$(top_srcdir)/gr-audio/include \ $(STD_DEFINES_AND_INCLUDES) \ $(WITH_INCLUDES) -GR_AUDIO_ALSA_LA=$(top_builddir)/gr-audio-alsa/src/libgnuradio-audio-alsa.la - -# For compiling outside the tree, these will get fished out by pkgconfig +# For compiling within the GNU Radio build tree, link against GR_AUDIO_LA +# For compiling outside the tree, use 'pkg-config --libs gnuradio-audio' +GR_AUDIO_LA=$(top_builddir)/gr-audio/lib/libgnuradio-audio.la noinst_PROGRAMS = dial_tone -noinst_HEADERS = \ - dial_tone.h - -dial_tone_SOURCES = \ - dial_tone.cc \ - main.cc - -dial_tone_LDADD = \ - $(GNURADIO_CORE_LA) \ - $(GR_AUDIO_ALSA_LA) +dial_tone_SOURCES = dial_tone.cc +dial_tone_LDADD = $(GNURADIO_CORE_LA) $(GR_AUDIO_LA) diff --git a/gnuradio-examples/c++/audio/dial_tone.cc b/gnuradio-examples/c++/audio/dial_tone.cc new file mode 100644 index 000000000..e4e3d8ceb --- /dev/null +++ b/gnuradio-examples/c++/audio/dial_tone.cc @@ -0,0 +1,78 @@ +/* + * Copyright 2011 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. + */ + + +/* + * GNU Radio C++ example creating dial tone + * ("the simplest thing that could possibly work") + * + * Send a tone each to the left and right channels of stereo audio + * output and let the user's brain sum them. + * + * GNU Radio makes extensive use of Boost shared pointers. Signal processing + * blocks are typically created by calling a "make" factory function, which + * returns an instance of the block as a typedef'd shared pointer that can + * be used in any way a regular pointer can. Shared pointers created this way + * keep track of their memory and free it at the right time, so the user + * doesn't need to worry about it (really). + * + */ + +// Include header files for each block used in flowgraph +#include <gr_top_block.h> +#include <gr_sig_source_f.h> +#include <gr_audio_sink.h> + +int main(int argc, char **argv) +{ + int rate = 48000; // Audio card sample rate + float ampl = 0.1; // Don't exceed 0.5 or clipping will occur + + // Construct a top block that will contain flowgraph blocks. Alternatively, + // one may create a derived class from gr_top_block and hold instantiated blocks + // as member data for later manipulation. + gr_top_block_sptr tb = gr_make_top_block("dial_tone"); + + // Construct a real-valued signal source for each tone, at given sample rate + gr_sig_source_f_sptr src0 = gr_make_sig_source_f(rate, GR_SIN_WAVE, 350, ampl); + gr_sig_source_f_sptr src1 = gr_make_sig_source_f(rate, GR_SIN_WAVE, 440, ampl); + + // Construct an audio sink to accept audio tones + audio_sink::sptr sink = audio_make_sink(rate); + + // Connect output #0 of src0 to input #0 of sink (left channel) + tb->connect(src0, 0, sink, 0); + + // Connect output #0 of src1 to input #1 of sink (right channel) + tb->connect(src1, 0, sink, 1); + + // Tell GNU Radio runtime to start flowgraph threads; the foreground thread + // will block until either flowgraph exits (this example doesn't) or the + // application receives SIGINT (e.g., user hits CTRL-C). + // + // Real applications may use tb->start() which returns, allowing the foreground + // thread to proceed, then later use tb->stop(), followed by tb->wait(), to cleanup + // GNU Radio before exiting. + tb->run(); + + // Exit normally. + return 0; +} diff --git a/gnuradio-examples/c++/dial_tone/README b/gnuradio-examples/c++/dial_tone/README deleted file mode 100644 index 6d5ed5059..000000000 --- a/gnuradio-examples/c++/dial_tone/README +++ /dev/null @@ -1,16 +0,0 @@ -This example requires that gr-audio-alsa be built in the main tree in order -to compile successfully. It is not built automatically. - -To build this example, you must make two modifications to the build system: - -1) Add the following line inside config/grc_gnuradio_examples.m4: - - gnuradio-examples/c++/dial_tone/Makefile - - ...to the list of Makefiles already in there. - -2) In gnuradio-examples/c++/Makefile.am, uncomment the SUBDIRS line - -# SUBDIRS = dial_tone - -Then, from the top-level directory, re-run ./bootstrap and ./configure.
\ No newline at end of file diff --git a/gnuradio-examples/c++/dial_tone/dial_tone.cc b/gnuradio-examples/c++/dial_tone/dial_tone.cc deleted file mode 100644 index 9a2772a18..000000000 --- a/gnuradio-examples/c++/dial_tone/dial_tone.cc +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2006,2008 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. - */ - -#include <dial_tone.h> -#include <gr_io_signature.h> -#include <gr_sig_source_f.h> -#include <audio_alsa_sink.h> - -// Shared pointer constructor -dial_tone_sptr make_dial_tone() -{ - return gnuradio::get_initial_sptr(new dial_tone()); -} - -// Hierarchical block constructor, with no inputs or outputs -dial_tone::dial_tone() : - gr_top_block("dial_tone") -{ - gr_sig_source_f_sptr src0 = gr_make_sig_source_f(48000, GR_SIN_WAVE, 350, 0.1); - gr_sig_source_f_sptr src1 = gr_make_sig_source_f(48000, GR_SIN_WAVE, 440, 0.1); - audio_alsa_sink_sptr sink = audio_alsa_make_sink(48000); - - connect(src0, 0, sink, 0); - connect(src1, 0, sink, 1); -} diff --git a/gnuradio-examples/c++/dial_tone/dial_tone.h b/gnuradio-examples/c++/dial_tone/dial_tone.h deleted file mode 100644 index c645439bb..000000000 --- a/gnuradio-examples/c++/dial_tone/dial_tone.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2006 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. - */ - -#include <gr_top_block.h> - -class dial_tone; -typedef boost::shared_ptr<dial_tone> dial_tone_sptr; -dial_tone_sptr make_dial_tone(); - -class dial_tone : public gr_top_block -{ -private: - dial_tone(); - friend dial_tone_sptr make_dial_tone(); -}; diff --git a/gnuradio-examples/c++/dial_tone/main.cc b/gnuradio-examples/c++/dial_tone/main.cc deleted file mode 100644 index a09bd8288..000000000 --- a/gnuradio-examples/c++/dial_tone/main.cc +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2006 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. - */ - -// GNU Radio C++ application -// -// Instantiate a top block -// Instantiate a runtime, passing it the top block -// Tell the runtime to go... - -#include <dial_tone.h> - -int main() -{ - dial_tone_sptr top_block = make_dial_tone(); - top_block->run(); - return 0; -} |