summaryrefslogtreecommitdiff
path: root/gnuradio-examples/c++/dialtone
diff options
context:
space:
mode:
authorjcorgan <jcorgan@221aa14e-8319-0410-a670-987f0aec2ac5>2006-12-12 20:00:39 +0000
committerjcorgan <jcorgan@221aa14e-8319-0410-a670-987f0aec2ac5>2006-12-12 20:00:39 +0000
commit76ed4c2fea5f59bfe02bbbb17754ef7eda44feca (patch)
treec30952925ea02e52f137e1e7f4da658629994936 /gnuradio-examples/c++/dialtone
parent5de36fac220305307d6fb64eabe6f417a26c0982 (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.am48
-rw-r--r--gnuradio-examples/c++/dialtone/dialtone.cc45
-rw-r--r--gnuradio-examples/c++/dialtone/dialtone.h33
-rw-r--r--gnuradio-examples/c++/dialtone/main.cc38
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;
+}