summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJosh Blum2012-08-19 14:27:11 -0700
committerJosh Blum2012-08-26 16:03:51 -0700
commitfa25d15ed1a7b85869229055ef32166ef1d8bef2 (patch)
tree0f39ab553dce30e9c8c11ab20f820d5753d5bf47 /lib
parent87be8242fd5855a8e8f6a76fddf40275b711c784 (diff)
downloadsandhi-fa25d15ed1a7b85869229055ef32166ef1d8bef2.tar.gz
sandhi-fa25d15ed1a7b85869229055ef32166ef1d8bef2.tar.bz2
sandhi-fa25d15ed1a7b85869229055ef32166ef1d8bef2.zip
runtime: work on unit tests
Diffstat (limited to 'lib')
-rw-r--r--lib/CMakeLists.txt20
-rw-r--r--lib/block.cpp42
-rw-r--r--lib/element.cpp42
-rw-r--r--lib/gr_block.cpp26
-rw-r--r--lib/gr_hier_block2.cpp15
-rw-r--r--lib/gr_top_block.cpp34
-rw-r--r--lib/hier_block.cpp5
-rw-r--r--lib/top_block.cpp50
8 files changed, 162 insertions, 72 deletions
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index 115b01d..3b0dc4a 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -3,6 +3,7 @@
########################################################################
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
+include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../tests)
########################################################################
# Append gnuradio-core library sources
@@ -16,9 +17,28 @@ list(APPEND gnuradio_core_sources
${CMAKE_CURRENT_SOURCE_DIR}/block.cpp
${CMAKE_CURRENT_SOURCE_DIR}/block_handlers.cpp
${CMAKE_CURRENT_SOURCE_DIR}/hier_block.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/top_block.cpp
${CMAKE_CURRENT_SOURCE_DIR}/gr_block.cpp
${CMAKE_CURRENT_SOURCE_DIR}/gr_sync_block.cpp
${CMAKE_CURRENT_SOURCE_DIR}/gr_hier_block2.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_top_block.cpp
+)
+
+########################################################################
+# Append gnuradio-core test sources
+########################################################################
+list(APPEND test_gnuradio_core_sources
+ ${CMAKE_CURRENT_SOURCE_DIR}/../tests/qa_gr_block.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/../tests/qa_gr_hier_block2.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/../tests/qa_gr_hier_block2_derived.cc
+ #${CMAKE_CURRENT_SOURCE_DIR}/../tests/qa_gr_buffer.cc
+ #${CMAKE_CURRENT_SOURCE_DIR}/../tests/qa_gr_flowgraph.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/../tests/qa_gr_top_block.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/../tests/qa_gr_io_signature.cc
+ #${CMAKE_CURRENT_SOURCE_DIR}/../tests/qa_gr_vmcircbuf.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/../tests/qa_block_tags.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/../tests/qa_runtime.cc
+ #${CMAKE_CURRENT_SOURCE_DIR}/../tests/qa_set_msg_handler.cc
)
########################################################################
diff --git a/lib/block.cpp b/lib/block.cpp
index 2d5b4af..1bd1217 100644
--- a/lib/block.cpp
+++ b/lib/block.cpp
@@ -16,23 +16,18 @@
#include "element_impl.hpp"
#include <gnuradio/block.hpp>
-#include <boost/detail/atomic_count.hpp>
#include <boost/bind.hpp>
using namespace gnuradio;
-static boost::detail::atomic_count unique_id_pool(0);
-
Block::Block(void)
{
//NOP
}
-Block::Block(const std::string &name)
+Block::Block(const std::string &name):
+ Element(name)
{
- this->reset(new ElementImpl());
- (*this)->name = name;
- (*this)->unique_id = ++unique_id_pool;
this->set_history(0);
this->set_output_multiple(1);
this->set_fixed_rate(true);
@@ -47,17 +42,6 @@ Block::Block(const std::string &name)
}
-
-long Block::unique_id(void) const
-{
- return (*this)->unique_id;
-}
-
-std::string Block::name(void) const
-{
- return (*this)->name;
-}
-
template <typename V, typename T>
void vector_set(V &v, const T &t, const size_t index)
{
@@ -78,28 +62,6 @@ typename V::value_type vector_get(const V &v, const size_t index)
return v[index];
}
-size_t Block::input_size(const size_t which_input) const
-{
- return vector_get((*this)->input_items_sizes, which_input);
-}
-
-size_t Block::output_size(const size_t which_output) const
-{
- return vector_get((*this)->output_items_sizes, which_output);
-}
-
-void Block::set_input_size(const size_t size, const size_t which_input)
-{
- vector_set((*this)->input_items_sizes, size, which_input);
- (*this)->input_signature = gr_make_io_signaturev(-1, -1, (*this)->input_items_sizes);
-}
-
-void Block::set_output_size(const size_t size, const size_t which_output)
-{
- vector_set((*this)->output_items_sizes, size, which_output);
- (*this)->output_signature = gr_make_io_signaturev(-1, -1, (*this)->output_items_sizes);
-}
-
size_t Block::history(const size_t which_input) const
{
return vector_get((*this)->input_history_items, which_input);
diff --git a/lib/element.cpp b/lib/element.cpp
index 3c97675..d73d68b 100644
--- a/lib/element.cpp
+++ b/lib/element.cpp
@@ -14,7 +14,11 @@
// You should have received a copy of the GNU Lesser General Public License
// along with io_sig program. If not, see <http://www.gnu.org/licenses/>.
+#include "element_impl.hpp"
#include <gnuradio/element.hpp>
+#include <boost/detail/atomic_count.hpp>
+
+static boost::detail::atomic_count unique_id_pool(0);
using namespace gnuradio;
@@ -22,3 +26,41 @@ Element::Element(void)
{
//NOP
}
+
+Element::Element(const std::string &name)
+{
+ this->reset(new ElementImpl());
+ (*this)->name = name;
+ (*this)->unique_id = ++unique_id_pool;
+}
+
+long Element::unique_id(void) const
+{
+ return (*this)->unique_id;
+}
+
+std::string Element::name(void) const
+{
+ return (*this)->name;
+}
+
+
+void Element::set_output_signature(gr_io_signature_sptr sig)
+{
+ (*this)->output_signature= sig;
+}
+
+void Element::set_input_signature(gr_io_signature_sptr sig)
+{
+ (*this)->input_signature = sig;
+}
+
+gr_io_signature_sptr Element::input_signature(void) const
+{
+ return (*this)->input_signature;
+}
+
+gr_io_signature_sptr Element::output_signature(void) const
+{
+ return (*this)->output_signature;
+}
diff --git a/lib/gr_block.cpp b/lib/gr_block.cpp
index b5e00a0..2c51f75 100644
--- a/lib/gr_block.cpp
+++ b/lib/gr_block.cpp
@@ -34,32 +34,6 @@ gr_block::gr_block(
this->set_output_signature(output_signature);
}
-void gr_block::set_output_signature(gr_io_signature_sptr sig)
-{
- for (size_t i = 0; i < sig->sizeof_stream_items().size(); i++)
- {
- this->set_output_size(sig->sizeof_stream_items()[i], i);
- }
-}
-
-void gr_block::set_input_signature(gr_io_signature_sptr sig)
-{
- for (size_t i = 0; i < sig->sizeof_stream_items().size(); i++)
- {
- this->set_input_size(sig->sizeof_stream_items()[i], i);
- }
-}
-
-gr_io_signature_sptr gr_block::input_signature(void) const
-{
- return (*this)->input_signature;
-}
-
-gr_io_signature_sptr gr_block::output_signature(void) const
-{
- return (*this)->output_signature;
-}
-
int gr_block::work(
const InputItems &input_items,
const OutputItems &output_items
diff --git a/lib/gr_hier_block2.cpp b/lib/gr_hier_block2.cpp
index 3756b9f..7b61d0f 100644
--- a/lib/gr_hier_block2.cpp
+++ b/lib/gr_hier_block2.cpp
@@ -23,10 +23,19 @@ gr_hier_block2::gr_hier_block2(void)
gr_hier_block2::gr_hier_block2(
const std::string &name,
- gr_io_signature_sptr,
- gr_io_signature_sptr
+ gr_io_signature_sptr input_signature,
+ gr_io_signature_sptr output_signature
):
gnuradio::HierBlock(name)
{
- //NOP
+ this->set_input_signature(input_signature);
+ this->set_output_signature(output_signature);
+}
+
+gr_hier_block2_sptr gr_make_hier_block2(
+ const std::string &name,
+ gr_io_signature_sptr input_signature,
+ gr_io_signature_sptr output_signature
+){
+ return gr_hier_block2_sptr(new gr_hier_block2(name, input_signature, output_signature));
}
diff --git a/lib/gr_top_block.cpp b/lib/gr_top_block.cpp
new file mode 100644
index 0000000..238a643
--- /dev/null
+++ b/lib/gr_top_block.cpp
@@ -0,0 +1,34 @@
+//
+// Copyright 2012 Josh Blum
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program 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 Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with io_sig program. If not, see <http://www.gnu.org/licenses/>.
+
+#include <gr_top_block.h>
+
+gr_top_block::gr_top_block(void):
+ gnuradio::TopBlock()
+{
+ //NOP
+}
+
+gr_top_block::gr_top_block(const std::string &name):
+ gnuradio::TopBlock(name)
+{
+ //NOP
+}
+
+gr_top_block_sptr gr_make_top_block(const std::string &name)
+{
+ return gr_top_block_sptr(new gr_top_block(name));
+}
diff --git a/lib/hier_block.cpp b/lib/hier_block.cpp
index e915a23..c067ab6 100644
--- a/lib/hier_block.cpp
+++ b/lib/hier_block.cpp
@@ -24,10 +24,9 @@ HierBlock::HierBlock(void)
//NOP
}
-HierBlock::HierBlock(const std::string &name)
+HierBlock::HierBlock(const std::string &name):
+ Element(name)
{
- this->reset(new ElementImpl());
- (*this)->name = name;
tsbe::TopologyConfig config;
(*this)->topology = tsbe::Topology(config);
}
diff --git a/lib/top_block.cpp b/lib/top_block.cpp
new file mode 100644
index 0000000..268064e
--- /dev/null
+++ b/lib/top_block.cpp
@@ -0,0 +1,50 @@
+//
+// Copyright 2012 Josh Blum
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program 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 Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with io_sig program. If not, see <http://www.gnu.org/licenses/>.
+
+#include <gnuradio/top_block.hpp>
+
+using namespace gnuradio;
+
+TopBlock::TopBlock(void)
+{
+ //NOP
+}
+
+TopBlock::TopBlock(const std::string &name):
+ HierBlock(name)
+{
+ //TODO
+}
+
+void TopBlock::update(void)
+{
+
+}
+
+void TopBlock::start(void)
+{
+
+}
+
+void TopBlock::stop(void)
+{
+
+}
+
+void TopBlock::wait(void)
+{
+
+}