diff options
author | jcorgan <jcorgan@221aa14e-8319-0410-a670-987f0aec2ac5> | 2006-12-12 20:00:39 +0000 |
---|---|---|
committer | jcorgan <jcorgan@221aa14e-8319-0410-a670-987f0aec2ac5> | 2006-12-12 20:00:39 +0000 |
commit | 76ed4c2fea5f59bfe02bbbb17754ef7eda44feca (patch) | |
tree | c30952925ea02e52f137e1e7f4da658629994936 /gnuradio-examples/c++/dialtone | |
parent | 5de36fac220305307d6fb64eabe6f417a26c0982 (diff) |
Merge jcorgan/hier developer branch into trunk. Enables creation of true hierarchical blocks, from either C++ or Python, as well as creating pure C++ gnuradio applications. EXPERIMENTAL.
git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@4070 221aa14e-8319-0410-a670-987f0aec2ac5
Diffstat (limited to 'gnuradio-examples/c++/dialtone')
-rw-r--r-- | gnuradio-examples/c++/dialtone/Makefile.am | 48 | ||||
-rw-r--r-- | gnuradio-examples/c++/dialtone/dialtone.cc | 45 | ||||
-rw-r--r-- | gnuradio-examples/c++/dialtone/dialtone.h | 33 | ||||
-rw-r--r-- | gnuradio-examples/c++/dialtone/main.cc | 38 |
4 files changed, 164 insertions, 0 deletions
diff --git a/gnuradio-examples/c++/dialtone/Makefile.am b/gnuradio-examples/c++/dialtone/Makefile.am new file mode 100644 index 0000000000..35e8073811 --- /dev/null +++ b/gnuradio-examples/c++/dialtone/Makefile.am @@ -0,0 +1,48 @@ +# +# 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 2, 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 $(top_srcdir)/Makefile.common + +# For compiling within the GNU Radio build tree +INCLUDES=$(STD_DEFINES_AND_INCLUDES) \ + -I$(top_srcdir)/gr-audio-alsa/src + +GR_AUDIO_ALSA_LIBS=$(top_builddir)/gr-audio-alsa/src/libgr_audio_alsa.la + +# For compiling outside the tree, these are the usual +# INCLUDES = -I/usr/local/include -I/usr/local/include/gnuradio +# GNURADIO_CORE_LIBS = -lgnuradio-core +# GR_AUDIO_ALSA_LIBS = -lgr_audio_alsa + +noinst_PROGRAMS = dialtone + +noinst_HEADERS = \ + dialtone.h + +dialtone_SOURCES = \ + dialtone.cc \ + main.cc + +dialtone_LDADD = \ + $(GNURADIO_CORE_LIBS) \ + $(GR_AUDIO_ALSA_LIBS) + +MOSTLYCLEANFILES = *~ diff --git a/gnuradio-examples/c++/dialtone/dialtone.cc b/gnuradio-examples/c++/dialtone/dialtone.cc new file mode 100644 index 0000000000..08ecccf751 --- /dev/null +++ b/gnuradio-examples/c++/dialtone/dialtone.cc @@ -0,0 +1,45 @@ +/* + * 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 2, 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 <dialtone.h> +#include <gr_io_signature.h> +#include <gr_sig_source_f.h> +#include <audio_alsa_sink.h> + +// Shared pointer constructor +dialtone_sptr make_dialtone() +{ + return dialtone_sptr(new dialtone()); +} + +// Hierarchical block constructor, with no inputs or outputs +dialtone::dialtone() : +gr_hier_block2("dialtone", + gr_make_io_signature(0,0,0), + gr_make_io_signature(0,0,0)) +{ + define_component("source0", gr_make_sig_source_f(48000, GR_SIN_WAVE, 350, 0.5)); + define_component("source1", gr_make_sig_source_f(48000, GR_SIN_WAVE, 440, 0.5)); + define_component("sink", audio_alsa_make_sink(48000)); + + connect("source0", 0, "sink", 0); + connect("source1", 0, "sink", 1); +} diff --git a/gnuradio-examples/c++/dialtone/dialtone.h b/gnuradio-examples/c++/dialtone/dialtone.h new file mode 100644 index 0000000000..2beb46c506 --- /dev/null +++ b/gnuradio-examples/c++/dialtone/dialtone.h @@ -0,0 +1,33 @@ +/* + * 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 2, 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_hier_block2.h> + +class dialtone; +typedef boost::shared_ptr<dialtone> dialtone_sptr; +dialtone_sptr make_dialtone(); + +class dialtone : public gr_hier_block2 +{ +private: + dialtone(); + friend dialtone_sptr make_dialtone(); +}; diff --git a/gnuradio-examples/c++/dialtone/main.cc b/gnuradio-examples/c++/dialtone/main.cc new file mode 100644 index 0000000000..beefac3a58 --- /dev/null +++ b/gnuradio-examples/c++/dialtone/main.cc @@ -0,0 +1,38 @@ +/* + * 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 2, 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 <dialtone.h> +#include <gr_runtime.h> + +int main() +{ + dialtone_sptr top_block = make_dialtone(); + gr_runtime_sptr runtime = gr_make_runtime(top_block); + + runtime->run(); + return 0; +} |