[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r4302 - gnuradio/branches/developers/eb/mb/mblock/src/
From: |
eb |
Subject: |
[Commit-gnuradio] r4302 - gnuradio/branches/developers/eb/mb/mblock/src/lib |
Date: |
Sun, 28 Jan 2007 00:14:26 -0700 (MST) |
Author: eb
Date: 2007-01-28 00:14:26 -0700 (Sun, 28 Jan 2007)
New Revision: 4302
Added:
gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_msg_accepter_smp.cc
gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_msg_accepter_smp.h
Modified:
gnuradio/branches/developers/eb/mb/mblock/src/lib/Makefile.am
gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock.h
gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.cc
gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.h
gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_message.cc
gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_message.h
gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_prims.cc
gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_prims.h
Log:
more mblock work-in-progress
Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/Makefile.am
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/Makefile.am
2007-01-28 05:37:38 UTC (rev 4301)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/Makefile.am
2007-01-28 07:14:26 UTC (rev 4302)
@@ -38,6 +38,7 @@
mb_mblock_impl.cc \
mb_message.cc \
mb_msg_accepter.cc \
+ mb_msg_accepter_smp.cc \
mb_msg_queue.cc \
mb_port.cc \
mb_port_simple.cc \
@@ -73,6 +74,7 @@
mb_connection.h \
mb_endpoint.h \
mb_mblock_impl.h \
+ mb_msg_accepter_smp.h \
mb_port_detail.h \
mb_runtime_impl.h \
qa_mblock.h \
Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock.h
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock.h
2007-01-28 05:37:38 UTC (rev 4301)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock.h
2007-01-28 07:14:26 UTC (rev 4302)
@@ -24,6 +24,7 @@
#include <mb_common.h>
#include <mb_message.h>
#include <mb_port.h>
+#include <boost/enable_shared_from_this.hpp>
/*!
@@ -45,7 +46,8 @@
*
* Subclass this to define your mblocks.
*/
-class mb_mblock : boost::noncopyable
+class mb_mblock : boost::noncopyable,
+ public boost::enable_shared_from_this<mb_mblock>
{
private:
mb_mblock_impl_sptr d_impl; // implementation details
@@ -181,7 +183,15 @@
*
* The traversal stops and returns false if any call to visitor returns
false.
*/
- bool walk_tree(mb_visitor *visitor, const std::string &path="");
+ bool
+ walk_tree(mb_visitor *visitor, const std::string &path="");
+
+
+ //! \implementation
+ // internal use only
+ mb_mblock_impl_sptr
+ impl() const { return d_impl; }
+
};
Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.cc
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.cc
2007-01-28 05:37:38 UTC (rev 4301)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.cc
2007-01-28 07:14:26 UTC (rev 4302)
@@ -29,6 +29,7 @@
#include <mb_port_simple.h>
#include <mb_exception.h>
#include <mb_util.h>
+#include <mb_msg_accepter_smp.h>
static pmt_t s_self = pmt_intern("self");
@@ -222,3 +223,12 @@
return true;
}
+mb_msg_accepter_sptr
+mb_mblock_impl::make_accepter(const std::string port_name)
+{
+ mb_msg_accepter *ma =
+ new mb_msg_accepter_smp(d_mb->shared_from_this(),
+ pmt_intern(port_name));
+
+ return mb_msg_accepter_sptr(ma);
+}
Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.h
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.h
2007-01-28 05:37:38 UTC (rev 4301)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.h
2007-01-28 07:14:26 UTC (rev 4302)
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2006 Free Software Foundation, Inc.
+ * Copyright 2006,2007 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -23,6 +23,7 @@
#include <mb_mblock.h>
#include <mb_connection.h>
+#include <mb_msg_queue.h>
#include <list>
#include <map>
@@ -43,6 +44,8 @@
mb_comp_map_t d_comp_map; // our components
mb_conn_table d_conn_table; // our connections
+ mb_msg_queue d_msgq; // incoming messages for us
+
public:
mb_mblock_impl(mb_mblock *mb);
~mb_mblock_impl();
@@ -136,6 +139,12 @@
bool
walk_tree(mb_visitor *visitor, const std::string &path="");
+ mb_msg_accepter_sptr
+ make_accepter(const std::string port_name);
+
+ mb_msg_queue &
+ msgq() { return d_msgq; }
+
/*
* Our implementation methods
*/
Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_message.cc
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_message.cc
2007-01-28 05:37:38 UTC (rev 4301)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_message.cc
2007-01-28 07:14:26 UTC (rev 4302)
@@ -31,7 +31,8 @@
}
mb_message::mb_message(pmt_t signal, pmt_t data, pmt_t metadata, mb_pri_t
priority)
- : d_signal(signal), d_data(data), d_metadata(metadata), d_priority(priority)
+ : d_signal(signal), d_data(data), d_metadata(metadata), d_priority(priority),
+ d_port_id(PMT_NIL)
{
}
Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_message.h
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_message.h
2007-01-28 05:37:38 UTC (rev 4301)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_message.h
2007-01-28 07:14:26 UTC (rev 4302)
@@ -34,7 +34,7 @@
* \param metadata information about the data
* \param priority urgency
*/
-mb_message_sptr
+mb_message_sptr
mb_make_message(pmt_t signal,
pmt_t data = PMT_NIL,
pmt_t metadata = PMT_NIL,
@@ -46,7 +46,7 @@
pmt_t d_data;
pmt_t d_metadata;
mb_pri_t d_priority;
- // foo d_rcvd_port_id;
+ pmt_t d_port_id; // name of port msg was rcvd on
(symbol)
friend class mb_msg_queue;
@@ -63,7 +63,9 @@
pmt_t data() const { return d_data; }
pmt_t metadata() const { return d_metadata; }
mb_pri_t priority() const { return d_priority; }
- // foo rcvd_port_id const { return d_rcvd_port_id; }
+ pmt_t port_id() const { return d_port_id; }
+
+ void set_port_id(pmt_t port_id){ d_port_id = port_id; }
};
#endif /* INCLUDED_MB_MESSAGE_H */
Added: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_msg_accepter_smp.cc
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_msg_accepter_smp.cc
(rev 0)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_msg_accepter_smp.cc
2007-01-28 07:14:26 UTC (rev 4302)
@@ -0,0 +1,50 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2007 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 this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <mb_msg_accepter_smp.h>
+#include <mb_common.h>
+#include <mb_mblock.h>
+#include <mb_mblock_impl.h>
+#include <mb_message.h>
+
+mb_msg_accepter_smp::mb_msg_accepter_smp(mb_mblock_sptr mblock, pmt_t
port_name)
+ : d_mb(mblock), d_port_name(port_name)
+{
+}
+
+mb_msg_accepter_smp::~mb_msg_accepter_smp()
+{
+ // nop
+}
+
+void
+mb_msg_accepter_smp::operator()(pmt_t signal, pmt_t data,
+ pmt_t metadata, mb_pri_t priority)
+{
+ mb_message_sptr msg = mb_make_message(signal, data, metadata, priority);
+ msg->set_port_id(d_port_name);
+ d_mb->impl()->msgq().insert(msg);
+
+ // FIXME tell runtime that we're ready to run
+}
Added: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_msg_accepter_smp.h
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_msg_accepter_smp.h
(rev 0)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_msg_accepter_smp.h
2007-01-28 07:14:26 UTC (rev 4302)
@@ -0,0 +1,42 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2007 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 this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+#ifndef INCLUDED_MB_MSG_ACCEPTER_SMP_H
+#define INCLUDED_MB_MSG_ACCEPTER_SMP_H
+
+#include <mb_msg_accepter.h>
+
+/*!
+ * \brief Concrete message acceptor that does an mb_msg_queue insertion
+ */
+class mb_msg_accepter_smp : public mb_msg_accepter
+{
+ mb_mblock_sptr d_mb;
+ pmt_t d_port_name;
+
+public:
+ mb_msg_accepter_smp(mb_mblock_sptr mblock, pmt_t port_name);
+ ~mb_msg_accepter_smp();
+
+ void operator()(pmt_t signal, pmt_t data, pmt_t metadata, mb_pri_t priority);
+};
+
+
+#endif /* INCLUDED_MB_MSG_ACCEPTER_SMP_H */
Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_prims.cc
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_prims.cc
2007-01-28 05:37:38 UTC (rev 4301)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_prims.cc
2007-01-28 07:14:26 UTC (rev 4302)
@@ -28,6 +28,8 @@
#include <mb_exception.h>
#include <mb_msg_queue.h>
#include <mb_message.h>
+#include <mb_mblock_impl.h>
+#include <mb_msg_accepter.h>
#include <stdio.h>
static pmt_t s_cs = pmt_intern("cs");
@@ -386,3 +388,32 @@
CPPUNIT_ASSERT(q.get_highest_pri_msg() == 0);
}
+////////////////////////////////////////////////////////////////
+
+void
+qa_mblock_prims::test_make_accepter()
+{
+ // create a block
+ mb_mblock_sptr mb = mb_mblock_sptr(new dp_2());
+
+ // use "internal use only" method...
+ mb_msg_accepter_sptr accepter = mb->impl()->make_accepter("cs");
+
+ // Now push a few messages into it...
+ // signal data metadata pri
+ (*accepter)(PMT_NIL, pmt_from_long(0), PMT_NIL, MB_PRI_BEST + 2);
+ (*accepter)(PMT_NIL, pmt_from_long(1), PMT_NIL, MB_PRI_BEST + 2);
+ (*accepter)(PMT_NIL, pmt_from_long(2), PMT_NIL, MB_PRI_BEST + 2);
+
+ // try to pull them out
+
+ pmt_t cs = pmt_intern("cs");
+
+ mb_message_sptr msg = mb->impl()->msgq().get_highest_pri_msg();
+ CPPUNIT_ASSERT(pmt_eq(cs, msg->port_id())); // confirm that port_id
is set
+ CPPUNIT_ASSERT_EQUAL(0L, pmt_to_long(msg->data())); // and that data is
correct
+
+ CPPUNIT_ASSERT_EQUAL(1L,
pmt_to_long(mb->impl()->msgq().get_highest_pri_msg()->data()));
+ CPPUNIT_ASSERT_EQUAL(2L,
pmt_to_long(mb->impl()->msgq().get_highest_pri_msg()->data()));
+}
+
Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_prims.h
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_prims.h
2007-01-28 05:37:38 UTC (rev 4301)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_prims.h
2007-01-28 07:14:26 UTC (rev 4302)
@@ -32,6 +32,7 @@
CPPUNIT_TEST(test_define_components);
CPPUNIT_TEST(test_connect);
CPPUNIT_TEST(test_msg_queue);
+ CPPUNIT_TEST(test_make_accepter);
CPPUNIT_TEST_SUITE_END();
private:
@@ -39,6 +40,7 @@
void test_define_components();
void test_connect();
void test_msg_queue();
+ void test_make_accepter();
};
#endif /* INCLUDED_QA_MBLOCK_PRIMS_H */
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r4302 - gnuradio/branches/developers/eb/mb/mblock/src/lib,
eb <=