fi
if test $passed != with; then
dnl how and where to find INCLUDES and LA
- mblock_INCLUDES="-I\${abs_top_srcdir}/mblock/src/lib"
+ mblock_INCLUDES="-I\${abs_top_srcdir}/mblock/src/include"
mblock_LA="\${abs_top_builddir}/mblock/src/lib/libmblock.la"
fi
mblock/mblock.pc \
mblock/doc/Makefile \
mblock/src/Makefile \
+ mblock/src/include/Makefile \
+ mblock/src/include/mblock/Makefile \
mblock/src/lib/Makefile \
mblock/src/scheme/Makefile \
mblock/src/scheme/gnuradio/Makefile \
#
-# Copyright 2004,2006 Free Software Foundation, Inc.
+# Copyright 2004,2006,2008 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
# Boston, MA 02110-1301, USA.
#
-SUBDIRS = lib scheme
+SUBDIRS = include lib scheme
--- /dev/null
+#
+# Copyright 2008 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 3, 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
+
+SUBDIRS = mblock
--- /dev/null
+#
+# Copyright 2008 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 3, 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
+
+mbincludedir = $(includedir)/mblock
+
+mbinclude_HEADERS = \
+ common.h \
+ class_registry.h \
+ exception.h \
+ mblock.h \
+ message.h \
+ msg_accepter.h \
+ msg_queue.h \
+ port.h \
+ protocol_class.h \
+ runtime.h \
+ time.h
--- /dev/null
+/* -*- c++ -*- */
+/*
+ * Copyright 2007,2008 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 3, 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_CLASS_REGISTRY_H
+#define INCLUDED_MB_CLASS_REGISTRY_H
+
+#include <mblock/common.h>
+
+//! conceptually, pointer to constructor
+typedef mb_mblock_sptr (*mb_mblock_maker_t)(mb_runtime *runtime,
+ const std::string &instance_name,
+ pmt_t user_arg);
+
+/*
+ * \brief Maintain mapping between mblock class_name and factory (maker)
+ */
+class mb_class_registry : public boost::noncopyable {
+public:
+ static bool register_maker(const std::string &name, mb_mblock_maker_t maker);
+ static bool lookup_maker(const std::string &name, mb_mblock_maker_t *maker);
+};
+
+template<class mblock>
+mb_mblock_sptr mb_mblock_maker(mb_runtime *runtime,
+ const std::string &instance_name,
+ pmt_t user_arg)
+{
+ return mb_mblock_sptr(new mblock(runtime, instance_name, user_arg));
+}
+
+#define REGISTER_MBLOCK_CLASS(name) \
+ bool __RBC__ ## name = mb_class_registry::register_maker(#name, &mb_mblock_maker<name>)
+
+#endif /* INCLUDED_MB_CLASS_REGISTRY_H */
--- /dev/null
+/* -*- c++ -*- */
+/*
+ * Copyright 2006,2007,2008 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 3, 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_COMMON_H
+#define INCLUDED_MB_COMMON_H
+
+#include <pmt.h>
+#include <vector>
+#include <stdexcept>
+#include <boost/utility.hpp>
+#include <boost/enable_shared_from_this.hpp>
+#include <boost/weak_ptr.hpp>
+
+/*
+ * The priority type and valid range
+ */
+typedef unsigned int mb_pri_t;
+static const mb_pri_t MB_PRI_BEST = 0;
+static const mb_pri_t MB_PRI_DEFAULT = 4;
+static const mb_pri_t MB_PRI_WORST = 7;
+static const mb_pri_t MB_NPRI = MB_PRI_WORST + 1; // number of valid priorities
+
+/*!
+ * \brief return true iff priority a is better than priority b
+ */
+inline static bool
+mb_pri_better(mb_pri_t a, mb_pri_t b)
+{
+ return a < b;
+}
+
+/*!
+ * \brief return true iff priority a is worse than priority b
+ */
+inline static bool
+mb_pri_worse(mb_pri_t a, mb_pri_t b)
+{
+ return a > b;
+}
+
+/*!
+ * \brief ensure that pri is valid
+ */
+inline static mb_pri_t
+mb_pri_clamp(mb_pri_t p)
+{
+ return p < MB_NPRI ? p : MB_NPRI - 1;
+}
+
+class mb_runtime;
+typedef boost::shared_ptr<mb_runtime> mb_runtime_sptr;
+
+//class mb_runtime_impl;
+//typedef boost::shared_ptr<mb_runtime_impl> mb_runtime_impl_sptr;
+
+class mb_mblock;
+typedef boost::shared_ptr<mb_mblock> mb_mblock_sptr;
+
+class mb_mblock_impl;
+typedef boost::shared_ptr<mb_mblock_impl> mb_mblock_impl_sptr;
+
+class mb_port;
+typedef boost::shared_ptr<mb_port> mb_port_sptr;
+
+//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;
+
+class mb_message;
+typedef boost::shared_ptr<mb_message> mb_message_sptr;
+
+class mb_msg_queue;
+typedef boost::shared_ptr<mb_msg_queue> mb_msg_queue_sptr;
+
+#endif /* INCLUDED_MB_COMMON_H */
--- /dev/null
+/* -*- c++ -*- */
+/*
+ * Copyright 2006,2008 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 3, 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_EXCEPTION_H
+#define INCLUDED_MB_EXCEPTION_H
+
+#include <stdexcept>
+
+class mb_mblock;
+
+
+class mbe_base : public std::logic_error
+{
+public:
+ mbe_base(mb_mblock *mb, const std::string &msg);
+};
+
+class mbe_not_implemented : public mbe_base
+{
+public:
+ mbe_not_implemented(mb_mblock *mb, const std::string &msg);
+};
+
+class mbe_no_such_class : public mbe_base
+{
+public:
+ mbe_no_such_class(mb_mblock *, const std::string &class_name);
+};
+
+class mbe_no_such_component : public mbe_base
+{
+public:
+ mbe_no_such_component(mb_mblock *, const std::string &component_name);
+};
+
+class mbe_duplicate_component : public mbe_base
+{
+public:
+ mbe_duplicate_component(mb_mblock *, const std::string &component_name);
+};
+
+class mbe_no_such_port : public mbe_base
+{
+public:
+ mbe_no_such_port(mb_mblock *, const std::string &port_name);
+};
+
+
+class mbe_duplicate_port : public mbe_base
+{
+public:
+ mbe_duplicate_port(mb_mblock *, const std::string &port_name);
+};
+
+class mbe_already_connected : public mbe_base
+{
+public:
+ mbe_already_connected(mb_mblock *, const std::string &comp_name,
+ const std::string &port_name);
+};
+
+class mbe_incompatible_ports : public mbe_base
+{
+public:
+ mbe_incompatible_ports(mb_mblock *,
+ const std::string &comp1_name,
+ const std::string &port1_name,
+ const std::string &comp2_name,
+ const std::string &port2_name);
+};
+
+class mbe_invalid_port_type : public mbe_base
+{
+public:
+ mbe_invalid_port_type(mb_mblock *, const std::string &comp_name,
+ const std::string &port_name);
+};
+
+class mbe_mblock_failed : public mbe_base
+{
+public:
+ mbe_mblock_failed(mb_mblock *, const std::string &msg);
+};
+
+
+
+// not derived from mbe_base to simplify try/catch
+class mbe_terminate
+{
+public:
+ mbe_terminate();
+};
+
+// not derived from mbe_base to simplify try/catch
+class mbe_exit
+{
+public:
+ mbe_exit();
+};
+
+#endif /* INCLUDED_MB_EXCEPTION_H */
--- /dev/null
+/* -*- c++ -*- */
+/*
+ * Copyright 2006,2008 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 3, 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_MBLOCK_H
+#define INCLUDED_MB_MBLOCK_H
+
+#include <mblock/common.h>
+#include <mblock/message.h>
+#include <mblock/port.h>
+#include <mblock/time.h>
+
+
+/*!
+ * Abstract class implementing visitor pattern
+ * \ingroup internal
+ */
+class mb_visitor
+{
+public:
+ virtual ~mb_visitor();
+ virtual bool operator()(mb_mblock *mblock) = 0;
+};
+
+// ----------------------------------------------------------------------
+
+/*!
+ * \brief Parent class for all message passing blocks
+ *
+ * Subclass this to define your mblocks.
+ */
+class mb_mblock : boost::noncopyable,
+ public boost::enable_shared_from_this<mb_mblock>
+{
+private:
+ mb_mblock_impl_sptr d_impl; // implementation details
+
+ friend class mb_runtime;
+ friend class mb_mblock_impl;
+ friend class mb_worker;
+
+protected:
+ /*!
+ * \brief mblock constructor.
+ *
+ * Initializing all mblocks in the system is a 3 step procedure.
+ *
+ * The top level mblock's constructor is run. That constructor
+ * (a) registers all of its ports using define_port, (b) registers any
+ * subcomponents it may have via the define_component method, and
+ * then (c) issues connect calls to wire its subcomponents together.
+ *
+ * \param runtime the runtime associated with this mblock
+ * \param instance_name specify the name of this instance
+ * (for debugging, NUMA mapping, etc)
+ * \param user_arg argument passed by user to constructor
+ * (ignored by the mb_mblock base class)
+ */
+ mb_mblock(mb_runtime *runtime, const std::string &instance_name, pmt_t user_arg);
+
+public:
+ /*!
+ * \brief Called by the runtime system to execute the initial
+ * transition of the finite state machine.
+ *
+ * This method is called by the runtime after all blocks are
+ * constructed and before the first message is delivered. Override
+ * this to initialize your finite state machine.
+ */
+ virtual void initial_transition();
+
+protected:
+ /*!
+ * \brief Called by the runtime system when there's a message to handle.
+ *
+ * Override this to define your behavior.
+ *
+ * Do not issue any potentially blocking calls in this method. This
+ * includes things such reads or writes on sockets, pipes or slow
+ * i/o devices.
+ */
+ virtual void handle_message(mb_message_sptr msg);
+
+ /*!
+ * \brief Define a port.
+ *
+ * EXTERNAL and RELAY ports are part of our peer interface.
+ * INTERNAL ports are used to talk to sub-components.
+ *
+ * \param port_name The name of the port (must be unique within this mblock).
+ * \param protocol_class_name The name of the protocol class associated with
+ * this port. It must already be defined.
+ * \param conjugated Are the incoming and outgoing message sets swapped?
+ * \param port_type INTERNAL, EXTERNAL or RELAY.
+ */
+ mb_port_sptr
+ define_port(const std::string &port_name,
+ const std::string &protocol_class_name,
+ bool conjugated,
+ mb_port::port_type_t port_type);
+
+ /*!
+ * \brief Define a subcomponent by name.
+ *
+ * Called within the constructor to tell the system the
+ * names and identities of our sub-component mblocks.
+ *
+ * \param component_name The name of the sub-component (must be unique with this mblock).
+ * \param class_name The class of the instance that is to be created.
+ * \param user_arg The argument to pass to the constructor of the component.
+ */
+ void
+ define_component(const std::string &component_name,
+ const std::string &class_name,
+ pmt_t user_arg = PMT_NIL);
+
+ /*!
+ * \brief connect endpoint_1 to endpoint_2
+ *
+ * \param comp_name1 component on one end of the connection
+ * \param port_name1 the name of the port on comp1
+ * \param comp_name2 component on the other end of the connection
+ * \param port_name2 the name of the port on comp2
+ *
+ * An endpoint is specified by the component's local name (given as
+ * component_name in the call to register_component) and the name of
+ * the port on that component.
+ *
+ * To connect an internal or relay port, use "self" as the component name.
+ */
+ void
+ connect(const std::string &comp_name1, const std::string &port_name1,
+ const std::string &comp_name2, const std::string &port_name2);
+
+ /*!
+ * \brief disconnect endpoint_1 from endpoint_2
+ *
+ * \param comp_name1 component on one end of the connection
+ * \param port_name1 the name of the port on comp1
+ * \param comp_name2 component on the other end of the connection
+ * \param port_name2 the name of the port on comp2
+ *
+ * An endpoint is specified by the component's local name (given as
+ * component_name in the call to register_component) and the name of
+ * the port on that component.
+ *
+ * To disconnect an internal or relay port, use "self" as the component name.
+ */
+ void
+ disconnect(const std::string &comp_name1, const std::string &port_name1,
+ const std::string &comp_name2, const std::string &port_name2);
+
+ /*!
+ * \brief disconnect all connections to specified component
+ * \param component_name component to disconnect
+ */
+ void
+ disconnect_component(const std::string &component_name);
+
+ /*!
+ * \brief disconnect all connections to all components
+ */
+ void
+ disconnect_all();
+
+ /*!
+ * \brief Return number of connections (QA mostly)
+ */
+ int
+ nconnections() const;
+
+ //! Set the class name
+ void set_class_name(const std::string &name);
+
+ /*!
+ * \brief Tell runtime that we are done.
+ *
+ * This method does not return.
+ */
+ void exit();
+
+ /*!
+ * \brief Ask runtime to execute the shutdown procedure for all blocks.
+ *
+ * \param result sets value of \p result output argument of runtime->run(...)
+ *
+ * The runtime first sends a maximum priority %shutdown message to
+ * all blocks. All blocks should handle the %shutdown message,
+ * perform whatever clean up is required, and call this->exit();
+ *
+ * After a period of time (~100ms), any blocks which haven't yet
+ * called this->exit() are sent a maximum priority %halt message.
+ * %halt is detected in main_loop, and this->exit() is called.
+ *
+ * After an additional period of time (~100ms), any blocks which
+ * still haven't yet called this->exit() are sent a SIG<FOO> (TBD)
+ * signal, which will blow them out of any blocking system calls and
+ * raise an mbe_terminate exception. The default top-level
+ * runtime-provided exception handler will call this->exit() to
+ * finish the process.
+ *
+ * runtime->run(...) returns when all blocks have called exit.
+ */
+ void shutdown_all(pmt_t result);
+
+ /*!
+ * \brief main event dispatching loop
+ *
+ * Although it is possible to override this, the default implementation
+ * should work for virtually all cases.
+ */
+ virtual void main_loop();
+
+public:
+ virtual ~mb_mblock();
+
+ //! Return instance name of this block
+ std::string instance_name() const;
+
+ //! Return the class name of this block
+ std::string class_name() const;
+
+ //! Set the instance name of this block.
+ void set_instance_name(const std::string &name);
+
+ //! Return the parent of this mblock, or 0 if we're the top-level block.
+ mb_mblock *parent() const;
+
+ /*!
+ * \brief Schedule a "one shot" timeout.
+ *
+ * \param abs_time the absolute time at which the timeout should fire
+ * \param user_data the data passed in the %timeout message.
+ *
+ * When the timeout fires, a message will be sent to the mblock.
+ *
+ * The message will have port_id = %sys-port, signal = %timeout,
+ * data = user_data, metadata = the handle returned from
+ * schedule_one_shot_timeout, pri = MB_PRI_BEST.
+ *
+ * \returns a handle that can be used in cancel_timeout, and is passed
+ * as the metadata field of the generated %timeout message.
+ *
+ * To cancel a pending timeout, call cancel_timeout.
+ */
+ pmt_t
+ schedule_one_shot_timeout(const mb_time &abs_time, pmt_t user_data);
+
+ /*!
+ * \brief Schedule a periodic timeout.
+ *
+ * \param first_abs_time The absolute time at which the first timeout should fire.
+ * \param delta_time The relative delay between the first and successive timeouts.
+ * \param user_data the data passed in the %timeout message.
+ *
+ * When the timeout fires, a message will be sent to the mblock, and a
+ * new timeout will be scheduled for previous absolute time + delta_time.
+ *
+ * The message will have port_id = %sys-port, signal = %timeout,
+ * data = user_data, metadata = the handle returned from
+ * schedule_one_shot_timeout, pri = MB_PRI_BEST.
+ *
+ * \returns a handle that can be used in cancel_timeout, and is passed
+ * as the metadata field of the generated %timeout message.
+ *
+ * To cancel a pending timeout, call cancel_timeout.
+ */
+ pmt_t
+ schedule_periodic_timeout(const mb_time &first_abs_time,
+ const mb_time &delta_time,
+ pmt_t user_data);
+
+ /*!
+ * \brief Attempt to cancel a pending timeout.
+ *
+ * Note that this only stops a future timeout from firing. It is
+ * possible that a timeout may have already fired and enqueued a
+ * %timeout message, but that that message has not yet been seen by
+ * handle_message.
+ *
+ * \param handle returned from schedule_one_shot_timeout or schedule_periodic_timeout.
+ */
+ void cancel_timeout(pmt_t handle);
+
+ /*!
+ * \brief Perform a pre-order depth-first traversal of the hierarchy.
+ *
+ * The traversal stops and returns false if any call to visitor returns false.
+ */
+ bool
+ walk_tree(mb_visitor *visitor);
+
+
+ //! \implementation
+ // internal use only
+ mb_mblock_impl_sptr
+ impl() const { return d_impl; }
+
+};
+
+
+#endif /* INCLUDED_MB_MBLOCK_H */
--- /dev/null
+/* -*- c++ -*- */
+/*
+ * Copyright 2006,2007,2008 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 3, 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_MESSAGE_H
+#define INCLUDED_MB_MESSAGE_H
+
+#include <mblock/common.h>
+#include <iosfwd>
+
+#define MB_MESSAGE_LOCAL_ALLOCATOR 0 // define to 0 or 1
+
+class mb_message;
+typedef boost::shared_ptr<mb_message> mb_message_sptr;
+
+/*!
+ * \brief construct a message and return boost::shared_ptr
+ *
+ * \param signal identifier of the message
+ * \param data the data to be operated on
+ * \param metadata information about the data
+ * \param priority urgency
+ */
+mb_message_sptr
+mb_make_message(pmt_t signal,
+ pmt_t data = PMT_NIL,
+ pmt_t metadata = PMT_NIL,
+ mb_pri_t priority = MB_PRI_DEFAULT);
+
+class mb_message {
+ 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;
+ pmt_t d_port_id; // name of port msg was rcvd on (symbol)
+
+ friend class mb_msg_queue;
+
+ friend mb_message_sptr
+ mb_make_message(pmt_t signal, pmt_t data, pmt_t metadata, mb_pri_t priority);
+
+ // private constructor
+ mb_message(pmt_t signal, pmt_t data, pmt_t metadata, mb_pri_t priority);
+
+public:
+ ~mb_message();
+
+ pmt_t signal() const { return d_signal; }
+ pmt_t data() const { return d_data; }
+ pmt_t metadata() const { return d_metadata; }
+ mb_pri_t priority() const { return d_priority; }
+ pmt_t port_id() const { return d_port_id; }
+
+ void set_port_id(pmt_t port_id){ d_port_id = port_id; }
+
+#if (MB_MESSAGE_LOCAL_ALLOCATOR)
+ void *operator new(size_t);
+ void operator delete(void *, size_t);
+#endif
+};
+
+std::ostream& operator<<(std::ostream& os, const mb_message &msg);
+
+inline
+std::ostream& operator<<(std::ostream& os, const mb_message_sptr msg)
+{
+ os << *(msg.get());
+ return os;
+}
+
+#endif /* INCLUDED_MB_MESSAGE_H */
--- /dev/null
+/* -*- c++ -*- */
+/*
+ * Copyright 2007,2008 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 3, 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 <mblock/common.h>
+
+/*!
+ * \brief Abstract class that accepts messages
+ *
+ * The mb_port::send method ultimately resolves the (local)
+ * destination of a send to an object of this type. The resulting
+ * object is called to deliver the message.
+ *
+ * Expect derived classes such as these:
+ *
+ * smp : target is visible in this address space
+ * mpi : target is on the other end of an MPI link
+ * ppe->spe : sending from Cell PPE to Cell SPE
+ * spe->ppe : sending from Cell SPE to Cell PPE
+ */
+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 */
--- /dev/null
+/* -*- c++ -*- */
+/*
+ * Copyright 2007,2008 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 3, 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_QUEUE_H
+#define INCLUDED_MB_MSG_QUEUE_H
+
+#include <mblock/common.h>
+#include <omnithread.h>
+#include <mblock/time.h>
+
+/*!
+ * \brief priority queue for mblock messages
+ */
+class mb_msg_queue : boost::noncopyable
+{
+ // When empty both head and tail are zero.
+ struct subq {
+ mb_message_sptr head;
+ mb_message_sptr tail;
+
+ bool empty_p() const { return head == 0; }
+ };
+
+ omni_mutex d_mutex;
+ omni_condition d_not_empty; // reader waits on this
+
+ // FIXME add bitmap to indicate which queues are non-empty.
+ subq d_queue[MB_NPRI];
+
+ mb_message_sptr get_highest_pri_msg_helper();
+
+public:
+ mb_msg_queue();
+ ~mb_msg_queue();
+
+ //! Insert \p msg into priority queue.
+ void insert(mb_message_sptr msg);
+
+ /*
+ * \brief Delete highest pri message from the queue and return it.
+ * Returns equivalent of zero pointer if queue is empty.
+ */
+ mb_message_sptr get_highest_pri_msg_nowait();
+
+ /*
+ * \brief Delete highest pri message from the queue and return it.
+ * If the queue is empty, this call blocks until it can return a message.
+ */
+ mb_message_sptr get_highest_pri_msg();
+
+ /*
+ * \brief Delete highest pri message from the queue and return it.
+ * If the queue is empty, this call blocks until it can return a message
+ * or real-time exceeds the absolute time, abs_time.
+ *
+ * \param abs_time specifies the latest absolute time to wait until.
+ * \sa mb_time::time
+ *
+ * \returns a valid mb_message_sptr, or the equivalent of a zero pointer
+ * if the call timed out while waiting.
+ */
+ mb_message_sptr get_highest_pri_msg_timedwait(const mb_time &abs_time);
+};
+
+#endif /* INCLUDED_MB_MSG_QUEUE_H */
--- /dev/null
+/* -*- c++ -*- */
+/*
+ * Copyright 2006,2008 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 3, 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_H
+#define INCLUDED_MB_PORT_H
+
+#include <mblock/common.h>
+
+/*!
+ * \brief Abstract port characteristics
+ */
+class mb_port : boost::noncopyable
+{
+public:
+
+ //! port classification
+ enum port_type_t {
+ EXTERNAL, //< Externally visible
+ RELAY, //< Externally visible but really connected to a sub-component
+ INTERNAL //< Visible to self only
+ };
+
+private:
+
+ std::string d_port_name;
+ pmt_t d_port_symbol; // the port_name as a pmt symbol
+ pmt_t d_protocol_class;
+ bool d_conjugated;
+ port_type_t d_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);
+
+ mb_mblock *mblock() const { return d_mblock; }
+
+public:
+ std::string port_name() const { return d_port_name; }
+ pmt_t port_symbol() const { return d_port_symbol; }
+ pmt_t protocol_class() const { return d_protocol_class; }
+ bool conjugated() const { return d_conjugated; }
+ port_type_t port_type() const { return d_port_type; }
+
+ pmt_t incoming_message_set() const;
+ pmt_t outgoing_message_set() const;
+
+ virtual ~mb_port();
+
+ /*!
+ * \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
+ */
+ virtual void
+ send(pmt_t signal,
+ pmt_t data = PMT_F,
+ pmt_t metadata = PMT_F,
+ mb_pri_t priority = MB_PRI_DEFAULT) = 0;
+
+ /*
+ * \brief Invalidate any cached peer resolutions
+ * \implementation
+ */
+ virtual void invalidate_cache() = 0;
+};
+
+#endif /* INCLUDED_MB_PORT_H */
--- /dev/null
+/* -*- c++ -*- */
+/*
+ * Copyright 2006,2008 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 3, 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_PROTOCOL_CLASS_H
+#define INCLUDED_MB_PROTOCOL_CLASS_H
+
+#include <mblock/common.h>
+
+/*!
+ * \brief construct a protocol_class
+ *
+ * \param name the name of the class (symbol)
+ * \param incoming incoming message set (list of symbols)
+ * \param outgoing outgoing message set (list of symbols)
+ */
+pmt_t mb_make_protocol_class(pmt_t name, pmt_t incoming, pmt_t outgoing);
+
+// Accessors
+pmt_t mb_protocol_class_name(pmt_t pc); //< return name of protocol class
+pmt_t mb_protocol_class_incoming(pmt_t pc); //< return incoming message set
+pmt_t mb_protocol_class_outgoing(pmt_t pc); //< return outgoing message set
+
+pmt_t mb_protocol_class_lookup(pmt_t name); //< lookup an existing protocol class by name
+
+
+/*!
+ * \brief Initialize one or more protocol class from a serialized description.
+ * Used by machine generated code.
+ */
+class mb_protocol_class_init {
+public:
+ mb_protocol_class_init(const char *data, size_t len);
+};
+
+#endif /* INCLUDED_MB_PROTOCOL_CLASS_H */
--- /dev/null
+/* -*- c++ -*- */
+/*
+ * Copyright 2006,2008 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 3, 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_RUNTIME_H
+#define INCLUDED_MB_RUNTIME_H
+
+#include <mblock/common.h>
+#include <omnithread.h>
+
+/*!
+ * \brief Public constructor (factory) for mb_runtime objects.
+ */
+mb_runtime_sptr mb_make_runtime();
+
+/*!
+ * \brief Abstract runtime support for m-blocks
+ *
+ * There should generally be only a single instance of this class.
+ */
+class mb_runtime : boost::noncopyable,
+ public boost::enable_shared_from_this<mb_runtime>
+{
+protected:
+ mb_mblock_sptr d_top;
+
+public:
+ mb_runtime(){}
+ virtual ~mb_runtime();
+
+ /*!
+ * \brief Construct and run the specified mblock hierarchy.
+ *
+ * This routine turns into the m-block scheduler, and
+ * blocks until the system is shutdown.
+ *
+ * \param name name of the top-level mblock (conventionally "top")
+ * \param class_name The class of the top-level mblock to create.
+ * \param user_arg The argument to pass to the top-level mblock constructor
+ *
+ * \returns true if the system ran successfully.
+ */
+ virtual bool run(const std::string &instance_name,
+ const std::string &class_name,
+ pmt_t user_arg,
+ pmt_t *result = 0) = 0;
+
+ // QA only...
+ mb_mblock_sptr top() { return d_top; }
+};
+
+#endif /* INCLUDED_MB_RUNTIME_H */
--- /dev/null
+/* -*- c++ -*- */
+/*
+ * Copyright 2008 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 3, 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_TIME_H
+#define INCLUDED_MB_TIME_H
+
+#include <omni_time.h>
+typedef omni_time mb_time;
+
+#endif /* INCLUDED_MB_TIME_H */
include $(top_srcdir)/Makefile.common
AM_CPPFLAGS = $(DEFINES) $(OMNITHREAD_INCLUDES) $(PMT_INCLUDES) \
- $(BOOST_CPPFLAGS) $(CPPUNIT_INCLUDES) $(WITH_INCLUDES)
+ $(BOOST_CPPFLAGS) $(CPPUNIT_INCLUDES) $(WITH_INCLUDES) \
+ $(MBLOCK_INCLUDES)
# disable test until we fix ticket:180
# TESTS = test_mblock
$(PMT_LA) \
-lstdc++
-include_HEADERS = \
- mb_class_registry.h \
- mb_common.h \
- mb_exception.h \
+noinst_HEADERS = \
mb_gettid.h \
- mb_mblock.h \
- mb_message.h \
- mb_msg_accepter.h \
mb_msg_accepter_msgq.h \
- mb_msg_queue.h \
- mb_port.h \
mb_port_simple.h \
- mb_protocol_class.h \
- mb_runtime.h \
- mb_time.h \
- mb_util.h
-
-
-noinst_HEADERS = \
+ mb_util.h \
mb_connection.h \
mb_endpoint.h \
mb_mblock_impl.h \
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-#include <mb_runtime.h>
+#include <mblock/runtime.h>
#include <iostream>
int
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
-#include <mb_class_registry.h>
+#include <mblock/class_registry.h>
#include <map>
static std::map<std::string, mb_mblock_maker_t> s_registry;
+++ /dev/null
-/* -*- 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 3, 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_CLASS_REGISTRY_H
-#define INCLUDED_MB_CLASS_REGISTRY_H
-
-#include <mb_common.h>
-
-//! conceptually, pointer to constructor
-typedef mb_mblock_sptr (*mb_mblock_maker_t)(mb_runtime *runtime,
- const std::string &instance_name,
- pmt_t user_arg);
-
-/*
- * \brief Maintain mapping between mblock class_name and factory (maker)
- */
-class mb_class_registry : public boost::noncopyable {
-public:
- static bool register_maker(const std::string &name, mb_mblock_maker_t maker);
- static bool lookup_maker(const std::string &name, mb_mblock_maker_t *maker);
-};
-
-template<class mblock>
-mb_mblock_sptr mb_mblock_maker(mb_runtime *runtime,
- const std::string &instance_name,
- pmt_t user_arg)
-{
- return mb_mblock_sptr(new mblock(runtime, instance_name, user_arg));
-}
-
-#define REGISTER_MBLOCK_CLASS(name) \
- bool __RBC__ ## name = mb_class_registry::register_maker(#name, &mb_mblock_maker<name>)
-
-#endif /* INCLUDED_MB_CLASS_REGISTRY_H */
+++ /dev/null
-/* -*- c++ -*- */
-/*
- * Copyright 2006,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 3, 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_COMMON_H
-#define INCLUDED_MB_COMMON_H
-
-#include <pmt.h>
-#include <vector>
-#include <stdexcept>
-#include <boost/utility.hpp>
-#include <boost/enable_shared_from_this.hpp>
-#include <boost/weak_ptr.hpp>
-
-/*
- * The priority type and valid range
- */
-typedef unsigned int mb_pri_t;
-static const mb_pri_t MB_PRI_BEST = 0;
-static const mb_pri_t MB_PRI_DEFAULT = 4;
-static const mb_pri_t MB_PRI_WORST = 7;
-static const mb_pri_t MB_NPRI = MB_PRI_WORST + 1; // number of valid priorities
-
-/*!
- * \brief return true iff priority a is better than priority b
- */
-inline static bool
-mb_pri_better(mb_pri_t a, mb_pri_t b)
-{
- return a < b;
-}
-
-/*!
- * \brief return true iff priority a is worse than priority b
- */
-inline static bool
-mb_pri_worse(mb_pri_t a, mb_pri_t b)
-{
- return a > b;
-}
-
-/*!
- * \brief ensure that pri is valid
- */
-inline static mb_pri_t
-mb_pri_clamp(mb_pri_t p)
-{
- return p < MB_NPRI ? p : MB_NPRI - 1;
-}
-
-class mb_runtime;
-typedef boost::shared_ptr<mb_runtime> mb_runtime_sptr;
-
-//class mb_runtime_impl;
-//typedef boost::shared_ptr<mb_runtime_impl> mb_runtime_impl_sptr;
-
-class mb_mblock;
-typedef boost::shared_ptr<mb_mblock> mb_mblock_sptr;
-
-class mb_mblock_impl;
-typedef boost::shared_ptr<mb_mblock_impl> mb_mblock_impl_sptr;
-
-class mb_port;
-typedef boost::shared_ptr<mb_port> mb_port_sptr;
-
-//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;
-
-class mb_message;
-typedef boost::shared_ptr<mb_message> mb_message_sptr;
-
-class mb_msg_queue;
-typedef boost::shared_ptr<mb_msg_queue> mb_msg_queue_sptr;
-
-#endif /* INCLUDED_MB_COMMON_H */
/* -*- c++ -*- */
/*
- * Copyright 2006 Free Software Foundation, Inc.
+ * Copyright 2006,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#define INCLUDED_MB_ENDPOINT_H
#include <string>
-#include <mb_port.h>
+#include <mblock/port.h>
/*!
* \brief Endpoint specification for connection
/* -*- c++ -*- */
/*
- * Copyright 2006 Free Software Foundation, Inc.
+ * Copyright 2006,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#include <config.h>
#endif
-#include <mb_exception.h>
-#include <mb_mblock.h>
+#include <mblock/exception.h>
+#include <mblock/mblock.h>
#include <mb_util.h>
+++ /dev/null
-/* -*- c++ -*- */
-/*
- * 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 3, 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_EXCEPTION_H
-#define INCLUDED_MB_EXCEPTION_H
-
-#include <stdexcept>
-
-class mb_mblock;
-
-
-class mbe_base : public std::logic_error
-{
-public:
- mbe_base(mb_mblock *mb, const std::string &msg);
-};
-
-class mbe_not_implemented : public mbe_base
-{
-public:
- mbe_not_implemented(mb_mblock *mb, const std::string &msg);
-};
-
-class mbe_no_such_class : public mbe_base
-{
-public:
- mbe_no_such_class(mb_mblock *, const std::string &class_name);
-};
-
-class mbe_no_such_component : public mbe_base
-{
-public:
- mbe_no_such_component(mb_mblock *, const std::string &component_name);
-};
-
-class mbe_duplicate_component : public mbe_base
-{
-public:
- mbe_duplicate_component(mb_mblock *, const std::string &component_name);
-};
-
-class mbe_no_such_port : public mbe_base
-{
-public:
- mbe_no_such_port(mb_mblock *, const std::string &port_name);
-};
-
-
-class mbe_duplicate_port : public mbe_base
-{
-public:
- mbe_duplicate_port(mb_mblock *, const std::string &port_name);
-};
-
-class mbe_already_connected : public mbe_base
-{
-public:
- mbe_already_connected(mb_mblock *, const std::string &comp_name,
- const std::string &port_name);
-};
-
-class mbe_incompatible_ports : public mbe_base
-{
-public:
- mbe_incompatible_ports(mb_mblock *,
- const std::string &comp1_name,
- const std::string &port1_name,
- const std::string &comp2_name,
- const std::string &port2_name);
-};
-
-class mbe_invalid_port_type : public mbe_base
-{
-public:
- mbe_invalid_port_type(mb_mblock *, const std::string &comp_name,
- const std::string &port_name);
-};
-
-class mbe_mblock_failed : public mbe_base
-{
-public:
- mbe_mblock_failed(mb_mblock *, const std::string &msg);
-};
-
-
-
-// not derived from mbe_base to simplify try/catch
-class mbe_terminate
-{
-public:
- mbe_terminate();
-};
-
-// not derived from mbe_base to simplify try/catch
-class mbe_exit
-{
-public:
- mbe_exit();
-};
-
-#endif /* INCLUDED_MB_EXCEPTION_H */
/* -*- c++ -*- */
/*
- * Copyright 2006 Free Software Foundation, Inc.
+ * Copyright 2006,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#include <config.h>
#endif
-#include <mb_mblock.h>
+#include <mblock/mblock.h>
#include <mb_mblock_impl.h>
-#include <mb_runtime.h>
-#include <mb_exception.h>
+#include <mblock/runtime.h>
+#include <mblock/exception.h>
#include <iostream>
+++ /dev/null
-/* -*- c++ -*- */
-/*
- * 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 3, 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_MBLOCK_H
-#define INCLUDED_MB_MBLOCK_H
-
-#include <mb_common.h>
-#include <mb_message.h>
-#include <mb_port.h>
-#include <mb_time.h>
-
-
-/*!
- * Abstract class implementing visitor pattern
- * \ingroup internal
- */
-class mb_visitor
-{
-public:
- virtual ~mb_visitor();
- virtual bool operator()(mb_mblock *mblock) = 0;
-};
-
-// ----------------------------------------------------------------------
-
-/*!
- * \brief Parent class for all message passing blocks
- *
- * Subclass this to define your mblocks.
- */
-class mb_mblock : boost::noncopyable,
- public boost::enable_shared_from_this<mb_mblock>
-{
-private:
- mb_mblock_impl_sptr d_impl; // implementation details
-
- friend class mb_runtime;
- friend class mb_mblock_impl;
- friend class mb_worker;
-
-protected:
- /*!
- * \brief mblock constructor.
- *
- * Initializing all mblocks in the system is a 3 step procedure.
- *
- * The top level mblock's constructor is run. That constructor
- * (a) registers all of its ports using define_port, (b) registers any
- * subcomponents it may have via the define_component method, and
- * then (c) issues connect calls to wire its subcomponents together.
- *
- * \param runtime the runtime associated with this mblock
- * \param instance_name specify the name of this instance
- * (for debugging, NUMA mapping, etc)
- * \param user_arg argument passed by user to constructor
- * (ignored by the mb_mblock base class)
- */
- mb_mblock(mb_runtime *runtime, const std::string &instance_name, pmt_t user_arg);
-
-public:
- /*!
- * \brief Called by the runtime system to execute the initial
- * transition of the finite state machine.
- *
- * This method is called by the runtime after all blocks are
- * constructed and before the first message is delivered. Override
- * this to initialize your finite state machine.
- */
- virtual void initial_transition();
-
-protected:
- /*!
- * \brief Called by the runtime system when there's a message to handle.
- *
- * Override this to define your behavior.
- *
- * Do not issue any potentially blocking calls in this method. This
- * includes things such reads or writes on sockets, pipes or slow
- * i/o devices.
- */
- virtual void handle_message(mb_message_sptr msg);
-
- /*!
- * \brief Define a port.
- *
- * EXTERNAL and RELAY ports are part of our peer interface.
- * INTERNAL ports are used to talk to sub-components.
- *
- * \param port_name The name of the port (must be unique within this mblock).
- * \param protocol_class_name The name of the protocol class associated with
- * this port. It must already be defined.
- * \param conjugated Are the incoming and outgoing message sets swapped?
- * \param port_type INTERNAL, EXTERNAL or RELAY.
- */
- mb_port_sptr
- define_port(const std::string &port_name,
- const std::string &protocol_class_name,
- bool conjugated,
- mb_port::port_type_t port_type);
-
- /*!
- * \brief Define a subcomponent by name.
- *
- * Called within the constructor to tell the system the
- * names and identities of our sub-component mblocks.
- *
- * \param component_name The name of the sub-component (must be unique with this mblock).
- * \param class_name The class of the instance that is to be created.
- * \param user_arg The argument to pass to the constructor of the component.
- */
- void
- define_component(const std::string &component_name,
- const std::string &class_name,
- pmt_t user_arg = PMT_NIL);
-
- /*!
- * \brief connect endpoint_1 to endpoint_2
- *
- * \param comp_name1 component on one end of the connection
- * \param port_name1 the name of the port on comp1
- * \param comp_name2 component on the other end of the connection
- * \param port_name2 the name of the port on comp2
- *
- * An endpoint is specified by the component's local name (given as
- * component_name in the call to register_component) and the name of
- * the port on that component.
- *
- * To connect an internal or relay port, use "self" as the component name.
- */
- void
- connect(const std::string &comp_name1, const std::string &port_name1,
- const std::string &comp_name2, const std::string &port_name2);
-
- /*!
- * \brief disconnect endpoint_1 from endpoint_2
- *
- * \param comp_name1 component on one end of the connection
- * \param port_name1 the name of the port on comp1
- * \param comp_name2 component on the other end of the connection
- * \param port_name2 the name of the port on comp2
- *
- * An endpoint is specified by the component's local name (given as
- * component_name in the call to register_component) and the name of
- * the port on that component.
- *
- * To disconnect an internal or relay port, use "self" as the component name.
- */
- void
- disconnect(const std::string &comp_name1, const std::string &port_name1,
- const std::string &comp_name2, const std::string &port_name2);
-
- /*!
- * \brief disconnect all connections to specified component
- * \param component_name component to disconnect
- */
- void
- disconnect_component(const std::string &component_name);
-
- /*!
- * \brief disconnect all connections to all components
- */
- void
- disconnect_all();
-
- /*!
- * \brief Return number of connections (QA mostly)
- */
- int
- nconnections() const;
-
- //! Set the class name
- void set_class_name(const std::string &name);
-
- /*!
- * \brief Tell runtime that we are done.
- *
- * This method does not return.
- */
- void exit();
-
- /*!
- * \brief Ask runtime to execute the shutdown procedure for all blocks.
- *
- * \param result sets value of \p result output argument of runtime->run(...)
- *
- * The runtime first sends a maximum priority %shutdown message to
- * all blocks. All blocks should handle the %shutdown message,
- * perform whatever clean up is required, and call this->exit();
- *
- * After a period of time (~100ms), any blocks which haven't yet
- * called this->exit() are sent a maximum priority %halt message.
- * %halt is detected in main_loop, and this->exit() is called.
- *
- * After an additional period of time (~100ms), any blocks which
- * still haven't yet called this->exit() are sent a SIG<FOO> (TBD)
- * signal, which will blow them out of any blocking system calls and
- * raise an mbe_terminate exception. The default top-level
- * runtime-provided exception handler will call this->exit() to
- * finish the process.
- *
- * runtime->run(...) returns when all blocks have called exit.
- */
- void shutdown_all(pmt_t result);
-
- /*!
- * \brief main event dispatching loop
- *
- * Although it is possible to override this, the default implementation
- * should work for virtually all cases.
- */
- virtual void main_loop();
-
-public:
- virtual ~mb_mblock();
-
- //! Return instance name of this block
- std::string instance_name() const;
-
- //! Return the class name of this block
- std::string class_name() const;
-
- //! Set the instance name of this block.
- void set_instance_name(const std::string &name);
-
- //! Return the parent of this mblock, or 0 if we're the top-level block.
- mb_mblock *parent() const;
-
- /*!
- * \brief Schedule a "one shot" timeout.
- *
- * \param abs_time the absolute time at which the timeout should fire
- * \param user_data the data passed in the %timeout message.
- *
- * When the timeout fires, a message will be sent to the mblock.
- *
- * The message will have port_id = %sys-port, signal = %timeout,
- * data = user_data, metadata = the handle returned from
- * schedule_one_shot_timeout, pri = MB_PRI_BEST.
- *
- * \returns a handle that can be used in cancel_timeout, and is passed
- * as the metadata field of the generated %timeout message.
- *
- * To cancel a pending timeout, call cancel_timeout.
- */
- pmt_t
- schedule_one_shot_timeout(const mb_time &abs_time, pmt_t user_data);
-
- /*!
- * \brief Schedule a periodic timeout.
- *
- * \param first_abs_time The absolute time at which the first timeout should fire.
- * \param delta_time The relative delay between the first and successive timeouts.
- * \param user_data the data passed in the %timeout message.
- *
- * When the timeout fires, a message will be sent to the mblock, and a
- * new timeout will be scheduled for previous absolute time + delta_time.
- *
- * The message will have port_id = %sys-port, signal = %timeout,
- * data = user_data, metadata = the handle returned from
- * schedule_one_shot_timeout, pri = MB_PRI_BEST.
- *
- * \returns a handle that can be used in cancel_timeout, and is passed
- * as the metadata field of the generated %timeout message.
- *
- * To cancel a pending timeout, call cancel_timeout.
- */
- pmt_t
- schedule_periodic_timeout(const mb_time &first_abs_time,
- const mb_time &delta_time,
- pmt_t user_data);
-
- /*!
- * \brief Attempt to cancel a pending timeout.
- *
- * Note that this only stops a future timeout from firing. It is
- * possible that a timeout may have already fired and enqueued a
- * %timeout message, but that that message has not yet been seen by
- * handle_message.
- *
- * \param handle returned from schedule_one_shot_timeout or schedule_periodic_timeout.
- */
- void cancel_timeout(pmt_t handle);
-
- /*!
- * \brief Perform a pre-order depth-first traversal of the hierarchy.
- *
- * The traversal stops and returns false if any call to visitor returns false.
- */
- bool
- walk_tree(mb_visitor *visitor);
-
-
- //! \implementation
- // internal use only
- mb_mblock_impl_sptr
- impl() const { return d_impl; }
-
-};
-
-
-#endif /* INCLUDED_MB_MBLOCK_H */
/* -*- c++ -*- */
/*
- * Copyright 2006 Free Software Foundation, Inc.
+ * Copyright 2006,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#include <config.h>
#endif
#include <mb_mblock_impl.h>
-#include <mb_mblock.h>
-#include <mb_protocol_class.h>
-#include <mb_port.h>
+#include <mblock/mblock.h>
+#include <mblock/protocol_class.h>
+#include <mblock/port.h>
#include <mb_port_simple.h>
-#include <mb_exception.h>
+#include <mblock/exception.h>
#include <mb_util.h>
#include <mb_msg_accepter_smp.h>
#include <mbi_runtime_lock.h>
/* -*- c++ -*- */
/*
- * Copyright 2006,2007 Free Software Foundation, Inc.
+ * Copyright 2006,2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#ifndef INCLUDED_MB_MBLOCK_IMPL_H
#define INCLUDED_MB_MBLOCK_IMPL_H
-#include <mb_mblock.h>
+#include <mblock/mblock.h>
#include <mb_runtime_base.h>
#include <mb_connection.h>
-#include <mb_msg_queue.h>
+#include <mblock/msg_queue.h>
#include <list>
#include <map>
/* -*- c++ -*- */
/*
- * Copyright 2006 Free Software Foundation, Inc.
+ * Copyright 2006,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
-#include <mb_message.h>
+#include <mblock/message.h>
#include <stdio.h>
#include <pmt_pool.h>
+++ /dev/null
-/* -*- c++ -*- */
-/*
- * Copyright 2006,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 3, 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_MESSAGE_H
-#define INCLUDED_MB_MESSAGE_H
-
-#include <mb_common.h>
-#include <iosfwd>
-
-#define MB_MESSAGE_LOCAL_ALLOCATOR 0 // define to 0 or 1
-
-class mb_message;
-typedef boost::shared_ptr<mb_message> mb_message_sptr;
-
-/*!
- * \brief construct a message and return boost::shared_ptr
- *
- * \param signal identifier of the message
- * \param data the data to be operated on
- * \param metadata information about the data
- * \param priority urgency
- */
-mb_message_sptr
-mb_make_message(pmt_t signal,
- pmt_t data = PMT_NIL,
- pmt_t metadata = PMT_NIL,
- mb_pri_t priority = MB_PRI_DEFAULT);
-
-class mb_message {
- 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;
- pmt_t d_port_id; // name of port msg was rcvd on (symbol)
-
- friend class mb_msg_queue;
-
- friend mb_message_sptr
- mb_make_message(pmt_t signal, pmt_t data, pmt_t metadata, mb_pri_t priority);
-
- // private constructor
- mb_message(pmt_t signal, pmt_t data, pmt_t metadata, mb_pri_t priority);
-
-public:
- ~mb_message();
-
- pmt_t signal() const { return d_signal; }
- pmt_t data() const { return d_data; }
- pmt_t metadata() const { return d_metadata; }
- mb_pri_t priority() const { return d_priority; }
- pmt_t port_id() const { return d_port_id; }
-
- void set_port_id(pmt_t port_id){ d_port_id = port_id; }
-
-#if (MB_MESSAGE_LOCAL_ALLOCATOR)
- void *operator new(size_t);
- void operator delete(void *, size_t);
-#endif
-};
-
-std::ostream& operator<<(std::ostream& os, const mb_message &msg);
-
-inline
-std::ostream& operator<<(std::ostream& os, const mb_message_sptr msg)
-{
- os << *(msg.get());
- return os;
-}
-
-#endif /* INCLUDED_MB_MESSAGE_H */
#include <config.h>
#endif
-#include <mb_msg_accepter.h>
+#include <mblock/msg_accepter.h>
mb_msg_accepter::~mb_msg_accepter()
{
+++ /dev/null
-/* -*- 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 3, 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
- *
- * The mb_port::send method ultimately resolves the (local)
- * destination of a send to an object of this type. The resulting
- * object is called to deliver the message.
- *
- * Expect derived classes such as these:
- *
- * smp : target is visible in this address space
- * mpi : target is on the other end of an MPI link
- * ppe->spe : sending from Cell PPE to Cell SPE
- * spe->ppe : sending from Cell SPE to Cell PPE
- */
-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 */
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#include <config.h>
#endif
#include <mb_msg_accepter_msgq.h>
-#include <mb_message.h>
+#include <mblock/message.h>
pmt_t s_sys_port = pmt_intern("%sys-port");
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#ifndef INCLUDED_MB_MSG_ACCEPTER_MSGQ_H
#define INCLUDED_MB_MSG_ACCEPTER_MSGQ_H
-#include <mb_msg_accepter.h>
-#include <mb_msg_queue.h>
+#include <mblock/msg_accepter.h>
+#include <mblock/msg_queue.h>
/*!
* \brief Concrete class that accepts messages and inserts them into a message queue.
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#include <config.h>
#endif
#include <mb_msg_accepter_smp.h>
-#include <mb_common.h>
-#include <mb_mblock.h>
+#include <mblock/common.h>
+#include <mblock/mblock.h>
#include <mb_mblock_impl.h>
-#include <mb_message.h>
+#include <mblock/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)
#ifndef INCLUDED_MB_MSG_ACCEPTER_SMP_H
#define INCLUDED_MB_MSG_ACCEPTER_SMP_H
-#include <mb_msg_accepter.h>
+#include <mblock/msg_accepter.h>
/*!
* \brief Concrete message acceptor that does an mb_msg_queue insertion
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
-#include <mb_msg_queue.h>
-#include <mb_message.h>
+#include <mblock/msg_queue.h>
+#include <mblock/message.h>
mb_msg_queue::mb_msg_queue()
+++ /dev/null
-/* -*- 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 3, 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_QUEUE_H
-#define INCLUDED_MB_MSG_QUEUE_H
-
-#include <mb_common.h>
-#include <omnithread.h>
-#include <mb_time.h>
-
-/*!
- * \brief priority queue for mblock messages
- */
-class mb_msg_queue : boost::noncopyable
-{
- // When empty both head and tail are zero.
- struct subq {
- mb_message_sptr head;
- mb_message_sptr tail;
-
- bool empty_p() const { return head == 0; }
- };
-
- omni_mutex d_mutex;
- omni_condition d_not_empty; // reader waits on this
-
- // FIXME add bitmap to indicate which queues are non-empty.
- subq d_queue[MB_NPRI];
-
- mb_message_sptr get_highest_pri_msg_helper();
-
-public:
- mb_msg_queue();
- ~mb_msg_queue();
-
- //! Insert \p msg into priority queue.
- void insert(mb_message_sptr msg);
-
- /*
- * \brief Delete highest pri message from the queue and return it.
- * Returns equivalent of zero pointer if queue is empty.
- */
- mb_message_sptr get_highest_pri_msg_nowait();
-
- /*
- * \brief Delete highest pri message from the queue and return it.
- * If the queue is empty, this call blocks until it can return a message.
- */
- mb_message_sptr get_highest_pri_msg();
-
- /*
- * \brief Delete highest pri message from the queue and return it.
- * If the queue is empty, this call blocks until it can return a message
- * or real-time exceeds the absolute time, abs_time.
- *
- * \param abs_time specifies the latest absolute time to wait until.
- * \sa mb_time::time
- *
- * \returns a valid mb_message_sptr, or the equivalent of a zero pointer
- * if the call timed out while waiting.
- */
- mb_message_sptr get_highest_pri_msg_timedwait(const mb_time &abs_time);
-};
-
-#endif /* INCLUDED_MB_MSG_QUEUE_H */
/* -*- c++ -*- */
/*
- * Copyright 2006 Free Software Foundation, Inc.
+ * Copyright 2006,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#include <config.h>
#endif
-#include <mb_port.h>
-#include <mb_protocol_class.h>
+#include <mblock/port.h>
+#include <mblock/protocol_class.h>
mb_port::mb_port(mb_mblock *mblock,
const std::string &port_name,
+++ /dev/null
-/* -*- c++ -*- */
-/*
- * 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 3, 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_H
-#define INCLUDED_MB_PORT_H
-
-#include <mb_common.h>
-
-/*!
- * \brief Abstract port characteristics
- */
-class mb_port : boost::noncopyable
-{
-public:
-
- //! port classification
- enum port_type_t {
- EXTERNAL, //< Externally visible
- RELAY, //< Externally visible but really connected to a sub-component
- INTERNAL //< Visible to self only
- };
-
-private:
-
- std::string d_port_name;
- pmt_t d_port_symbol; // the port_name as a pmt symbol
- pmt_t d_protocol_class;
- bool d_conjugated;
- port_type_t d_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);
-
- mb_mblock *mblock() const { return d_mblock; }
-
-public:
- std::string port_name() const { return d_port_name; }
- pmt_t port_symbol() const { return d_port_symbol; }
- pmt_t protocol_class() const { return d_protocol_class; }
- bool conjugated() const { return d_conjugated; }
- port_type_t port_type() const { return d_port_type; }
-
- pmt_t incoming_message_set() const;
- pmt_t outgoing_message_set() const;
-
- virtual ~mb_port();
-
- /*!
- * \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
- */
- virtual void
- send(pmt_t signal,
- pmt_t data = PMT_F,
- pmt_t metadata = PMT_F,
- mb_pri_t priority = MB_PRI_DEFAULT) = 0;
-
- /*
- * \brief Invalidate any cached peer resolutions
- * \implementation
- */
- virtual void invalidate_cache() = 0;
-};
-
-#endif /* INCLUDED_MB_PORT_H */
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#endif
#include <mb_port_simple.h>
-#include <mb_msg_accepter.h>
-#include <mb_exception.h>
-#include <mb_mblock.h>
+#include <mblock/msg_accepter.h>
+#include <mblock/exception.h>
+#include <mblock/mblock.h>
#include <mb_mblock_impl.h>
#include <assert.h>
#include <mbi_runtime_lock.h>
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#ifndef INCLUDED_MB_PORT_SIMPLE_H
#define INCLUDED_MB_PORT_SIMPLE_H
-#include <mb_port.h>
+#include <mblock/port.h>
/*!
* \brief Concrete port realization
/* -*- c++ -*- */
/*
- * Copyright 2006 Free Software Foundation, Inc.
+ * Copyright 2006,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#include <config.h>
#endif
-#include <mb_protocol_class.h>
+#include <mblock/protocol_class.h>
#include <iostream>
static pmt_t s_ALL_PROTOCOL_CLASSES = PMT_NIL;
+++ /dev/null
-/* -*- c++ -*- */
-/*
- * 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 3, 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_PROTOCOL_CLASS_H
-#define INCLUDED_MB_PROTOCOL_CLASS_H
-
-#include <mb_common.h>
-
-/*!
- * \brief construct a protocol_class
- *
- * \param name the name of the class (symbol)
- * \param incoming incoming message set (list of symbols)
- * \param outgoing outgoing message set (list of symbols)
- */
-pmt_t mb_make_protocol_class(pmt_t name, pmt_t incoming, pmt_t outgoing);
-
-// Accessors
-pmt_t mb_protocol_class_name(pmt_t pc); //< return name of protocol class
-pmt_t mb_protocol_class_incoming(pmt_t pc); //< return incoming message set
-pmt_t mb_protocol_class_outgoing(pmt_t pc); //< return outgoing message set
-
-pmt_t mb_protocol_class_lookup(pmt_t name); //< lookup an existing protocol class by name
-
-
-/*!
- * \brief Initialize one or more protocol class from a serialized description.
- * Used by machine generated code.
- */
-class mb_protocol_class_init {
-public:
- mb_protocol_class_init(const char *data, size_t len);
-};
-
-#endif /* INCLUDED_MB_PROTOCOL_CLASS_H */
/* -*- c++ -*- */
/*
- * Copyright 2006 Free Software Foundation, Inc.
+ * Copyright 2006,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#include <config.h>
#endif
-#include <mb_runtime.h>
+#include <mblock/runtime.h>
#include <mb_runtime_thread_per_block.h>
mb_runtime_sptr
+++ /dev/null
-/* -*- c++ -*- */
-/*
- * 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 3, 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_RUNTIME_H
-#define INCLUDED_MB_RUNTIME_H
-
-#include <mb_common.h>
-#include <omnithread.h>
-
-/*!
- * \brief Public constructor (factory) for mb_runtime objects.
- */
-mb_runtime_sptr mb_make_runtime();
-
-/*!
- * \brief Abstract runtime support for m-blocks
- *
- * There should generally be only a single instance of this class.
- */
-class mb_runtime : boost::noncopyable,
- public boost::enable_shared_from_this<mb_runtime>
-{
-protected:
- mb_mblock_sptr d_top;
-
-public:
- mb_runtime(){}
- virtual ~mb_runtime();
-
- /*!
- * \brief Construct and run the specified mblock hierarchy.
- *
- * This routine turns into the m-block scheduler, and
- * blocks until the system is shutdown.
- *
- * \param name name of the top-level mblock (conventionally "top")
- * \param class_name The class of the top-level mblock to create.
- * \param user_arg The argument to pass to the top-level mblock constructor
- *
- * \returns true if the system ran successfully.
- */
- virtual bool run(const std::string &instance_name,
- const std::string &class_name,
- pmt_t user_arg,
- pmt_t *result = 0) = 0;
-
- // QA only...
- mb_mblock_sptr top() { return d_top; }
-};
-
-#endif /* INCLUDED_MB_RUNTIME_H */
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#ifndef INCLUDED_MB_RUNTIME_BASE_H
#define INCLUDED_MB_RUNTIME_BASE_H
-#include <mb_runtime.h>
+#include <mblock/runtime.h>
#include <omnithread.h>
-#include <mb_time.h>
+#include <mblock/time.h>
/*
* \brief This is the runtime class used by the implementation.
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#include <config.h>
#endif
#include <mb_runtime_nop.h>
-#include <mb_mblock.h>
-#include <mb_class_registry.h>
-#include <mb_exception.h>
+#include <mblock/mblock.h>
+#include <mblock/class_registry.h>
+#include <mblock/exception.h>
mb_runtime_sptr
mb_make_runtime_nop()
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#include <config.h>
#endif
#include <mb_runtime_thread_per_block.h>
-#include <mb_mblock.h>
+#include <mblock/mblock.h>
#include <mb_mblock_impl.h>
-#include <mb_class_registry.h>
-#include <mb_exception.h>
+#include <mblock/class_registry.h>
+#include <mblock/exception.h>
#include <mb_worker.h>
#include <omnithread.h>
#include <iostream>
#include <mb_runtime_base.h>
#include <mb_worker.h>
-#include <mb_msg_queue.h>
+#include <mblock/msg_queue.h>
#include <mb_timer_queue.h>
/*!
+++ /dev/null
-/* -*- c++ -*- */
-/*
- * Copyright 2008 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 3, 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_TIME_H
-#define INCLUDED_MB_TIME_H
-
-#include <omni_time.h>
-typedef omni_time mb_time;
-
-#endif /* INCLUDED_MB_TIME_H */
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#ifndef INCLUDED_MB_TIMER_QUEUE_H
#define INCLUDED_MB_TIMER_QUEUE_H
-#include <mb_time.h>
+#include <mblock/time.h>
#include <vector>
#include <queue>
#include <pmt.h>
-#include <mb_msg_accepter.h>
+#include <mblock/msg_accepter.h>
class mb_timeout {
public:
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#endif
#include <mb_worker.h>
#include <mb_runtime_thread_per_block.h>
-#include <mb_exception.h>
-#include <mb_mblock.h>
+#include <mblock/exception.h>
+#include <mblock/mblock.h>
#include <mb_gettid.h>
-#include <mb_msg_accepter.h>
+#include <mblock/msg_accepter.h>
#include <iostream>
#ifdef HAVE_SCHED_H
#include <sched.h>
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#define INCLUDED_MB_WORKER_H
#include <omnithread.h>
-#include <mb_common.h>
-#include <mb_class_registry.h>
+#include <mblock/common.h>
+#include <mblock/class_registry.h>
class mb_worker;
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#ifndef INCLUDED_MBI_RUNTIME_LOCK_H
#define INCLUDED_MBI_RUNTIME_LOCK_H
-#include <mb_runtime.h>
+#include <mblock/runtime.h>
#include <mb_mblock_impl.h>
#include <boost/utility.hpp>
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
-#include <mb_mblock.h>
-#include <mb_protocol_class.h>
-#include <mb_message.h>
-#include <mb_class_registry.h>
+#include <mblock/mblock.h>
+#include <mblock/protocol_class.h>
+#include <mblock/message.h>
+#include <mblock/class_registry.h>
#include <iostream>
#include <sstream>
#include <bitset>
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
-#include <mb_mblock.h>
-#include <mb_protocol_class.h>
-#include <mb_message.h>
-#include <mb_class_registry.h>
+#include <mblock/mblock.h>
+#include <mblock/protocol_class.h>
+#include <mblock/message.h>
+#include <mblock/class_registry.h>
#include <iostream>
#include <sstream>
#include <bitset>
/* -*- c++ -*- */
/*
- * Copyright 2006,2007 Free Software Foundation, Inc.
+ * Copyright 2006,2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#include <qa_mblock_prims.h>
#include <cppunit/TestAssert.h>
-#include <mb_mblock.h>
-#include <mb_runtime.h>
-#include <mb_protocol_class.h>
-#include <mb_exception.h>
-#include <mb_msg_queue.h>
-#include <mb_message.h>
+#include <mblock/mblock.h>
+#include <mblock/runtime.h>
+#include <mblock/protocol_class.h>
+#include <mblock/exception.h>
+#include <mblock/msg_queue.h>
+#include <mblock/message.h>
#include <mb_mblock_impl.h>
-#include <mb_msg_accepter.h>
-#include <mb_class_registry.h>
+#include <mblock/msg_accepter.h>
+#include <mblock/class_registry.h>
#include <stdio.h>
static pmt_t s_cs = pmt_intern("cs");
/* -*- c++ -*- */
/*
- * Copyright 2006,2007 Free Software Foundation, Inc.
+ * Copyright 2006,2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#include <qa_mblock_send.h>
#include <cppunit/TestAssert.h>
-#include <mb_mblock.h>
-#include <mb_runtime.h>
+#include <mblock/mblock.h>
+#include <mblock/runtime.h>
#include <mb_runtime_nop.h> // QA only
-#include <mb_protocol_class.h>
-#include <mb_exception.h>
-#include <mb_msg_queue.h>
-#include <mb_message.h>
+#include <mblock/protocol_class.h>
+#include <mblock/exception.h>
+#include <mblock/msg_queue.h>
+#include <mblock/message.h>
#include <mb_mblock_impl.h>
-#include <mb_msg_accepter.h>
-#include <mb_class_registry.h>
+#include <mblock/msg_accepter.h>
+#include <mblock/class_registry.h>
#include <stdio.h>
static pmt_t s_data = pmt_intern("data");
/* -*- c++ -*- */
/*
- * Copyright 2006,2007 Free Software Foundation, Inc.
+ * Copyright 2006,2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#include <qa_mblock_sys.h>
#include <cppunit/TestAssert.h>
-#include <mb_mblock.h>
-#include <mb_runtime.h>
+#include <mblock/mblock.h>
+#include <mblock/runtime.h>
#include <mb_runtime_nop.h> // QA only
-#include <mb_protocol_class.h>
-#include <mb_exception.h>
-#include <mb_msg_queue.h>
-#include <mb_message.h>
+#include <mblock/protocol_class.h>
+#include <mblock/exception.h>
+#include <mblock/msg_queue.h>
+#include <mblock/message.h>
#include <mb_mblock_impl.h>
-#include <mb_msg_accepter.h>
-#include <mb_class_registry.h>
+#include <mblock/msg_accepter.h>
+#include <mblock/class_registry.h>
#include <stdio.h>
#include <string.h>
#include <iostream>
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#endif
#include <qa_timeouts.h>
#include <cppunit/TestAssert.h>
-#include <mb_mblock.h>
-#include <mb_runtime.h>
-#include <mb_protocol_class.h>
-#include <mb_message.h>
-#include <mb_msg_accepter.h>
-#include <mb_class_registry.h>
+#include <mblock/mblock.h>
+#include <mblock/runtime.h>
+#include <mblock/protocol_class.h>
+#include <mblock/message.h>
+#include <mblock/msg_accepter.h>
+#include <mblock/class_registry.h>
#include <mb_timer_queue.h>
#include <string.h>
#include <iostream>
!#
;; -*-scheme-*-
;;
-;; Copyright 2007 Free Software Foundation, Inc.
+;; Copyright 2007,2008 Free Software Foundation, Inc.
;;
;; This file is part of GNU Radio
;;
(format o-port "// protocol-classes: ~{~a ~}~%" (map car protocol-classes))
(format o-port "//~%")
- (format o-port "#include <mb_protocol_class.h>~%")
+ (format o-port "#include <mblock/protocol_class.h>~%")
(format o-port "#include <unistd.h>~%")
(format o-port
"static const char~%protocol_class_init_data[~d] = {~% "
AM_CPPFLAGS = \
$(DEFINES) $(OMNITHREAD_INCLUDES) $(PMT_INCLUDES) $(MBLOCK_INCLUDES) \
$(USRP_INCLUDES) $(USRP_INBAND_INCLUDES) $(BOOST_CPPFLAGS) \
- $(CPPUNIT_INCLUDES) $(WITH_INCLUDES)
+ $(CPPUNIT_INCLUDES) $(WITH_INCLUDES) -I$(top_srcdir)/mblock/src/lib
bin_PROGRAMS =
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#include <iostream>
#include <usrp_inband_usb_packet.h>
-#include <mb_class_registry.h>
+#include <mblock/class_registry.h>
#include <vector>
#include <usrp_usb_interface.h>
#include <fstream>
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#include <config.h>
#endif
-#include <mb_mblock.h>
-#include <mb_runtime.h>
+#include <mblock/mblock.h>
+#include <mblock/runtime.h>
#include <mb_runtime_nop.h> // QA only
-#include <mb_protocol_class.h>
-#include <mb_exception.h>
-#include <mb_msg_queue.h>
-#include <mb_message.h>
+#include <mblock/protocol_class.h>
+#include <mblock/exception.h>
+#include <mblock/msg_queue.h>
+#include <mblock/message.h>
#include <mb_mblock_impl.h>
-#include <mb_msg_accepter.h>
-#include <mb_class_registry.h>
+#include <mblock/msg_accepter.h>
+#include <mblock/class_registry.h>
#include <pmt.h>
#include <stdio.h>
#include <string.h>
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#include <config.h>
#endif
-#include <mb_mblock.h>
-#include <mb_runtime.h>
+#include <mblock/mblock.h>
+#include <mblock/runtime.h>
#include <mb_runtime_nop.h> // QA only
-#include <mb_protocol_class.h>
-#include <mb_exception.h>
-#include <mb_msg_queue.h>
-#include <mb_message.h>
+#include <mblock/protocol_class.h>
+#include <mblock/exception.h>
+#include <mblock/msg_queue.h>
+#include <mblock/message.h>
#include <mb_mblock_impl.h>
-#include <mb_msg_accepter.h>
-#include <mb_class_registry.h>
+#include <mblock/msg_accepter.h>
+#include <mblock/class_registry.h>
#include <pmt.h>
#include <stdio.h>
#include <string.h>
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#include <config.h>
#endif
-#include <mb_mblock.h>
-#include <mb_runtime.h>
-#include <mb_protocol_class.h>
-#include <mb_exception.h>
-#include <mb_msg_queue.h>
-#include <mb_message.h>
-#include <mb_msg_accepter.h>
-#include <mb_class_registry.h>
+#include <mblock/mblock.h>
+#include <mblock/runtime.h>
+#include <mblock/protocol_class.h>
+#include <mblock/exception.h>
+#include <mblock/msg_queue.h>
+#include <mblock/message.h>
+#include <mblock/msg_accepter.h>
+#include <mblock/class_registry.h>
#include <pmt.h>
#include <stdio.h>
#include <string.h>
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#include <config.h>
#endif
-#include <mb_mblock.h>
-#include <mb_runtime.h>
-#include <mb_protocol_class.h>
-#include <mb_exception.h>
-#include <mb_msg_queue.h>
-#include <mb_message.h>
-#include <mb_msg_accepter.h>
-#include <mb_class_registry.h>
+#include <mblock/mblock.h>
+#include <mblock/runtime.h>
+#include <mblock/protocol_class.h>
+#include <mblock/exception.h>
+#include <mblock/msg_queue.h>
+#include <mblock/message.h>
+#include <mblock/msg_accepter.h>
+#include <mblock/class_registry.h>
#include <pmt.h>
#include <stdio.h>
#include <string.h>
#include <config.h>
#endif
-#include <mb_mblock.h>
-#include <mb_runtime.h>
-#include <mb_protocol_class.h>
-#include <mb_exception.h>
-#include <mb_msg_queue.h>
-#include <mb_message.h>
+#include <mblock/mblock.h>
+#include <mblock/runtime.h>
+#include <mblock/protocol_class.h>
+#include <mblock/exception.h>
+#include <mblock/msg_queue.h>
+#include <mblock/message.h>
//#include <mb_mblock_impl.h>
-#include <mb_msg_accepter.h>
-#include <mb_class_registry.h>
+#include <mblock/msg_accepter.h>
+#include <mblock/class_registry.h>
#include <pmt.h>
#include <stdio.h>
#include <string.h>
#include <config.h>
#endif
-#include <mb_mblock.h>
-#include <mb_runtime.h>
-#include <mb_protocol_class.h>
-#include <mb_exception.h>
-#include <mb_msg_queue.h>
-#include <mb_message.h>
-#include <mb_msg_accepter.h>
-#include <mb_class_registry.h>
+#include <mblock/mblock.h>
+#include <mblock/runtime.h>
+#include <mblock/protocol_class.h>
+#include <mblock/exception.h>
+#include <mblock/msg_queue.h>
+#include <mblock/message.h>
+#include <mblock/msg_accepter.h>
+#include <mblock/class_registry.h>
#include <pmt.h>
#include <stdio.h>
#include <string.h>
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#include <config.h>
#endif
-#include <mb_mblock.h>
-#include <mb_runtime.h>
-#include <mb_protocol_class.h>
-#include <mb_exception.h>
-#include <mb_msg_queue.h>
-#include <mb_message.h>
-#include <mb_msg_accepter.h>
-#include <mb_class_registry.h>
+#include <mblock/mblock.h>
+#include <mblock/runtime.h>
+#include <mblock/protocol_class.h>
+#include <mblock/exception.h>
+#include <mblock/msg_queue.h>
+#include <mblock/message.h>
+#include <mblock/msg_accepter.h>
+#include <mblock/class_registry.h>
#include <pmt.h>
#include <stdio.h>
#include <string.h>
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#include <config.h>
#endif
-#include <mb_mblock.h>
-#include <mb_runtime.h>
-#include <mb_protocol_class.h>
-#include <mb_exception.h>
-#include <mb_msg_queue.h>
-#include <mb_message.h>
-#include <mb_msg_accepter.h>
-#include <mb_class_registry.h>
+#include <mblock/mblock.h>
+#include <mblock/runtime.h>
+#include <mblock/protocol_class.h>
+#include <mblock/exception.h>
+#include <mblock/msg_queue.h>
+#include <mblock/message.h>
+#include <mblock/msg_accepter.h>
+#include <mblock/class_registry.h>
#include <pmt.h>
#include <stdio.h>
#include <string.h>
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#include <config.h>
#endif
-#include <mb_mblock.h>
-#include <mb_runtime.h>
-#include <mb_protocol_class.h>
-#include <mb_exception.h>
-#include <mb_msg_queue.h>
-#include <mb_message.h>
-#include <mb_msg_accepter.h>
-#include <mb_class_registry.h>
+#include <mblock/mblock.h>
+#include <mblock/runtime.h>
+#include <mblock/protocol_class.h>
+#include <mblock/exception.h>
+#include <mblock/msg_queue.h>
+#include <mblock/message.h>
+#include <mblock/msg_accepter.h>
+#include <mblock/class_registry.h>
#include <pmt.h>
#include <stdio.h>
#include <string.h>
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#include <cppunit/TestAssert.h>
#include <stdio.h>
#include <usrp_server.h>
-#include <mb_mblock.h>
-#include <mb_runtime.h>
-#include <mb_protocol_class.h>
-#include <mb_class_registry.h>
+#include <mblock/mblock.h>
+#include <mblock/runtime.h>
+#include <mblock/protocol_class.h>
+#include <mblock/class_registry.h>
#include <vector>
#include <iostream>
#include <pmt.h>
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#define INCLUDED_USRP_INBAND_USB_PACKET_H_
#include <usrp_bytesex.h>
-#include <mb_mblock.h>
+#include <mblock/mblock.h>
#include <pmt.h>
#include <iostream>
#include <iostream>
#include <vector>
#include <usb.h>
-#include <mb_class_registry.h>
+#include <mblock/class_registry.h>
#include <usrp_inband_usb_packet.h>
#include <fpga_regs_common.h>
#include <stdio.h>
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#ifndef INCLUDED_USRP_RX_H
#define INCLUDED_USRP_RX_H
-#include <mb_mblock.h>
+#include <mblock/mblock.h>
#include <fstream>
class usrp_standard_rx;
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#include <iostream>
#include <vector>
#include <usb.h>
-#include <mb_class_registry.h>
+#include <mblock/class_registry.h>
#include <usrp_inband_usb_packet.h>
#include <fpga_regs_common.h>
#include "usrp_standard.h"
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#ifndef INCLUDED_USRP_RX_STUB_H
#define INCLUDED_USRP_RX_STUB_H
-#include <mb_mblock.h>
+#include <mblock/mblock.h>
#include <vector>
#include "usrp_standard.h"
#include <ui_nco.h>
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#include <usrp_server.h>
#include <iostream>
#include <usrp_inband_usb_packet.h>
-#include <mb_class_registry.h>
+#include <mblock/class_registry.h>
#include <vector>
#include <usrp_usb_interface.h>
#include <string.h>
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#ifndef INCLUDED_USRP_SERVER_H
#define INCLUDED_USRP_SERVER_H
-#include <mb_mblock.h>
+#include <mblock/mblock.h>
#include <vector>
#include <queue>
#include <fstream>
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#include <usrp_tx.h>
#include <iostream>
#include <usb.h>
-#include <mb_class_registry.h>
+#include <mblock/class_registry.h>
#include <usrp_inband_usb_packet.h>
#include <fpga_regs_common.h>
#include <usrp_standard.h>
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#ifndef INCLUDED_USRP_TX_H
#define INCLUDED_USRP_TX_H
-#include <mb_mblock.h>
+#include <mblock/mblock.h>
#include <fstream>
class usrp_standard_tx;
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#include <iostream>
#include <vector>
#include <usb.h>
-#include <mb_class_registry.h>
+#include <mblock/class_registry.h>
#include <usrp_tx_stub.h>
#include <usrp_inband_usb_packet.h>
#include <fpga_regs_common.h>
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#ifndef INCLUDED_USRP_TX_STUB_H
#define INCLUDED_USRP_TX_STUB_H
-#include <mb_mblock.h>
+#include <mblock/mblock.h>
#include <vector>
#include "usrp_standard.h"
#include <fstream>
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2008 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
#include <iostream>
#include <vector>
#include <usb.h>
-#include <mb_class_registry.h>
+#include <mblock/class_registry.h>
#include <usrp_inband_usb_packet.h>
#include <fpga_regs_common.h>
#include "usrp_rx.h"
#ifndef INCLUDED_USRP_USB_INTERFACE_H
#define INCLUDED_USRP_USB_INTERFACE_H
-#include <mb_mblock.h>
+#include <mblock/mblock.h>
#include <vector>
#include "usrp_standard.h"