[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r4299 - gnuradio/branches/developers/eb/mb/mblock/src/
From: |
eb |
Subject: |
[Commit-gnuradio] r4299 - gnuradio/branches/developers/eb/mb/mblock/src/lib |
Date: |
Sat, 27 Jan 2007 19:27:30 -0700 (MST) |
Author: eb
Date: 2007-01-27 19:27:29 -0700 (Sat, 27 Jan 2007)
New Revision: 4299
Added:
gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_msg_accepter.cc
gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_msg_accepter.h
gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port_simple.cc
gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port_simple.h
Modified:
gnuradio/branches/developers/eb/mb/mblock/src/lib/Makefile.am
gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_common.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.h
gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port.cc
gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port.h
Log:
work-in-progress on mblocks
Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/Makefile.am
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/Makefile.am
2007-01-27 18:39:31 UTC (rev 4298)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/Makefile.am
2007-01-28 02:27:29 UTC (rev 4299)
@@ -37,8 +37,9 @@
mb_mblock.cc \
mb_mblock_impl.cc \
mb_message.cc \
+ mb_msg_accepter.cc \
mb_port.cc \
- mb_port_detail.cc \
+ mb_port_simple.cc \
mb_protocol_class.cc \
mb_runtime.cc \
mb_runtime_impl.cc \
@@ -58,7 +59,9 @@
mb_exception.h \
mb_mblock.h \
mb_message.h \
+ mb_msg_accepter.h \
mb_port.h \
+ mb_port_simple.h \
mb_protocol_class.h \
mb_runtime.h \
mb_util.h
Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_common.h
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_common.h
2007-01-27 18:39:31 UTC (rev 4298)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_common.h
2007-01-28 02:27:29 UTC (rev 4299)
@@ -25,6 +25,7 @@
#include <vector>
#include <stdexcept>
#include <boost/utility.hpp>
+#include <boost/enable_shared_from_this.hpp>
typedef unsigned int mb_pri_t;
@@ -49,5 +50,7 @@
class mb_port_detail;
typedef boost::shared_ptr<mb_port_detail> mb_port_detail_sptr;
+class mb_msg_accepter;
+typedef boost::shared_ptr<mb_msg_accepter> mb_msg_accepter_sptr;
#endif /* INCLUDED_MB_COMMON_H */
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-27 18:39:31 UTC (rev 4298)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.cc
2007-01-28 02:27:29 UTC (rev 4299)
@@ -26,6 +26,7 @@
#include <mb_mblock.h>
#include <mb_protocol_class.h>
#include <mb_port.h>
+#include <mb_port_simple.h>
#include <mb_exception.h>
#include <mb_util.h>
@@ -49,7 +50,7 @@
////////////////////////////////////////////////////////////////////////
mb_mblock_impl::mb_mblock_impl(mb_mblock *mb)
- : d_mb(mb)
+ : d_mb(mb), d_mb_parent(0)
{
}
@@ -66,13 +67,17 @@
mb_port::port_type_t port_type)
{
if (port_type == mb_port::RELAY)
- throw mbe_base(d_mb, "mb_block_impl::define_port: RELAY ports are not
implemented: " + port_name);
+ throw mbe_base(d_mb,
+ "mb_block_impl::define_port: RELAY ports are not implemented: "
+ + port_name);
if (port_is_defined(port_name))
throw mbe_duplicate_port(d_mb, port_name);
- mb_port_sptr p = mb_port_sptr(new mb_port(port_name, protocol_class_name,
- conjugated, port_type));
+ mb_port_sptr p =
+ mb_port_sptr(new mb_port_simple(d_mb,
+ port_name, protocol_class_name,
+ conjugated, port_type));
d_port_map[port_name] = p;
return p;
}
@@ -84,12 +89,15 @@
if (comp_is_defined(name)) // check for duplicate name
throw mbe_duplicate_component(d_mb, name);
+ component->d_impl->d_mb_parent = d_mb; // set component's parent link
d_comp_map[name] = component;
}
void
-mb_mblock_impl::connect(const std::string &comp_name1, const std::string
&port_name1,
- const std::string &comp_name2, const std::string
&port_name2)
+mb_mblock_impl::connect(const std::string &comp_name1,
+ const std::string &port_name1,
+ const std::string &comp_name2,
+ const std::string &port_name2)
{
mb_endpoint ep0 = check_and_resolve_endpoint(comp_name1, port_name1);
mb_endpoint ep1 = check_and_resolve_endpoint(comp_name2, port_name2);
@@ -175,7 +183,7 @@
mb_port_sptr c_port = c_impl->d_port_map[port_name];
- if (c_port->port_type() == mb_port::INTERNAL) // can't "see" a
child's internal ports
+ if (c_port->port_type() == mb_port::INTERNAL) // can't "see" a child's
internal ports
throw mbe_no_such_port(d_mb, mb_util::join_names(comp_name, port_name));
return c_port;
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-27 18:39:31 UTC (rev 4298)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.h
2007-01-28 02:27:29 UTC (rev 4299)
@@ -37,6 +37,7 @@
class mb_mblock_impl : boost::noncopyable
{
mb_mblock *d_mb; // pointer to our associated
mblock
+ mb_mblock *d_mb_parent; // pointer to our parent
mb_port_map_t d_port_map; // our ports
mb_comp_map_t d_comp_map; // our components
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-27 18:39:31 UTC (rev 4298)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_message.h
2007-01-28 02:27:29 UTC (rev 4299)
@@ -41,11 +41,12 @@
mb_pri_t priority = MB_PRI_DEFAULT);
class mb_message {
- pmt_t d_signal;
- pmt_t d_data;
- pmt_t d_metadata;
- mb_pri_t d_priority;
- // foo d_rcvd_port_id;
+ mb_message_sptr d_next; // link field for msg queue
+ pmt_t d_signal;
+ pmt_t d_data;
+ pmt_t d_metadata;
+ mb_pri_t d_priority;
+ // foo d_rcvd_port_id;
friend mb_message_sptr
mb_make_message(pmt_t signal, pmt_t data, pmt_t metadata, mb_pri_t priority);
Added: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_msg_accepter.cc
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_msg_accepter.cc
(rev 0)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_msg_accepter.cc
2007-01-28 02:27:29 UTC (rev 4299)
@@ -0,0 +1,31 @@
+/* -*- 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.h>
+
+mb_msg_accepter::~mb_msg_accepter()
+{
+ // nop
+}
Added: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_msg_accepter.h
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_msg_accepter.h
(rev 0)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_msg_accepter.h
2007-01-28 02:27:29 UTC (rev 4299)
@@ -0,0 +1,39 @@
+/* -*- 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_H
+#define INCLUDED_MB_MSG_ACCEPTER_H
+
+#include <mb_common.h>
+
+/*!
+ * \brief abstract class that accepts messages
+ */
+class mb_msg_accepter {
+public:
+ mb_msg_accepter(){};
+ virtual ~mb_msg_accepter();
+
+ virtual void operator()(pmt_t signal, pmt_t data, pmt_t metadata, mb_pri_t
priority) = 0;
+};
+
+
+
+#endif /* INCLUDED_MB_MSG_ACCEPTER_H */
Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port.cc
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port.cc
2007-01-27 18:39:31 UTC (rev 4298)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port.cc
2007-01-28 02:27:29 UTC (rev 4299)
@@ -27,12 +27,13 @@
#include <mb_port_detail.h>
#include <mb_protocol_class.h>
-mb_port::mb_port(const std::string &port_name,
+mb_port::mb_port(mb_mblock *mblock,
+ const std::string &port_name,
const std::string &protocol_class_name,
bool conjugated,
mb_port::port_type_t port_type)
- : d_detail(mb_port_detail_sptr(new mb_port_detail())),
- d_port_name(port_name), d_conjugated(conjugated), d_port_type(port_type)
+ : d_port_name(port_name), d_conjugated(conjugated), d_port_type(port_type),
+ d_mblock(mblock)
{
pmt_t pc = mb_protocol_class_lookup(pmt_intern(protocol_class_name));
if (pmt_is_null(pc)){
Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port.h
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port.h 2007-01-27
18:39:31 UTC (rev 4298)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port.h 2007-01-28
02:27:29 UTC (rev 4299)
@@ -24,7 +24,7 @@
#include <mb_common.h>
/*!
- * \brief Public port characteristics
+ * \brief Abstract port characteristics
*/
class mb_port : boost::noncopyable
{
@@ -38,20 +38,21 @@
};
private:
- friend class mb_mblock_impl;
- mb_port_detail_sptr d_detail;
std::string d_port_name;
pmt_t d_protocol_class;
bool d_conjugated;
port_type_t d_port_type;
- // private constructor
- mb_port(const std::string &port_name,
- const std::string &protocol_class_name,
- bool conjugated,
- mb_port::port_type_t port_type);
+protected:
+ mb_mblock *d_mblock; // mblock we're defined in
+ // protected constructor
+ mb_port(mb_mblock *mblock,
+ const std::string &port_name,
+ const std::string &protocol_class_name,
+ bool conjugated,
+ mb_port::port_type_t port_type);
public:
std::string port_name() const { return d_port_name; }
@@ -62,7 +63,7 @@
pmt_t incoming_message_set() const;
pmt_t outgoing_message_set() const;
- ~mb_port();
+ virtual ~mb_port();
/*!
* \brief send a message
@@ -72,12 +73,11 @@
* \param metadata optional metadata
* \param priority the urgency at which the message is sent
*/
- void
+ virtual void
send(pmt_t signal,
pmt_t data = PMT_NIL,
pmt_t metadata = PMT_NIL,
- mb_pri_t priority = MB_PRI_DEFAULT);
-
+ mb_pri_t priority = MB_PRI_DEFAULT) = 0;
};
#endif /* INCLUDED_MB_PORT_H */
Added: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port_simple.cc
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port_simple.cc
(rev 0)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port_simple.cc
2007-01-28 02:27:29 UTC (rev 4299)
@@ -0,0 +1,59 @@
+/* -*- 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_port_simple.h>
+#include <mb_msg_accepter.h>
+
+mb_port_simple::mb_port_simple(mb_mblock *mblock,
+ const std::string &port_name,
+ const std::string &protocol_class_name,
+ bool conjugated,
+ mb_port::port_type_t port_type)
+ : mb_port(mblock, port_name, protocol_class_name, conjugated, port_type)
+{
+}
+
+mb_port_simple::~mb_port_simple()
+{
+ // nop
+}
+
+void
+mb_port_simple::send(pmt_t signal, pmt_t data, pmt_t metadata, mb_pri_t
priority)
+{
+ mb_msg_accepter_sptr accepter = find_accepter();
+ if (accepter)
+ (*accepter)(signal, data, metadata, priority);
+}
+
+mb_msg_accepter_sptr
+mb_port_simple::find_accepter()
+{
+ mb_msg_accepter_sptr r;
+
+ // FIXME, actually do the work ;)
+
+ return r;
+}
Added: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port_simple.h
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port_simple.h
(rev 0)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port_simple.h
2007-01-28 02:27:29 UTC (rev 4299)
@@ -0,0 +1,59 @@
+/* -*- 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_PORT_SIMPLE_H
+#define INCLUDED_MB_PORT_SIMPLE_H
+
+#include <mb_port.h>
+
+/*!
+ * \brief Concrete port realization
+ */
+class mb_port_simple : public mb_port
+{
+protected:
+ mb_msg_accepter_sptr
+ find_accepter();
+
+public:
+ mb_port_simple(mb_mblock *mblock,
+ const std::string &port_name,
+ const std::string &protocol_class_name,
+ bool conjugated,
+ mb_port::port_type_t port_type);
+
+ ~mb_port_simple();
+
+ /*!
+ * \brief send a message
+ *
+ * \param signal the event name
+ * \param data optional data
+ * \param metadata optional metadata
+ * \param priority the urgency at which the message is sent
+ */
+ void
+ send(pmt_t signal,
+ pmt_t data = PMT_NIL,
+ pmt_t metadata = PMT_NIL,
+ mb_pri_t priority = MB_PRI_DEFAULT);
+};
+
+#endif /* INCLUDED_MB_PORT_SIMPLE_H */
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r4299 - gnuradio/branches/developers/eb/mb/mblock/src/lib,
eb <=