From: jcorgan Date: Sat, 20 Dec 2008 20:54:52 +0000 (+0000) Subject: Move mblock library include files into separate library. Updates to usrp in-band... X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=66dca69648e7fa8fbdd2973f77224ad34198d9a5;hp=8d3704c5af29ef15e3a4490049d2fd6d917bc6d8;p=debian%2Fgnuradio Move mblock library include files into separate library. Updates to usrp in-band code to accommodate. Tested with out-of-tree mblock application builds. Trunk passes distcheck. git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@10144 221aa14e-8319-0410-a670-987f0aec2ac5 --- diff --git a/config/grc_mblock.m4 b/config/grc_mblock.m4 index e262f25b..e3ae1817 100644 --- a/config/grc_mblock.m4 +++ b/config/grc_mblock.m4 @@ -36,7 +36,7 @@ AC_DEFUN([GRC_MBLOCK],[ 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 @@ -45,6 +45,8 @@ AC_DEFUN([GRC_MBLOCK],[ 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 \ diff --git a/mblock/src/Makefile.am b/mblock/src/Makefile.am index 52f60f47..60995c97 100644 --- a/mblock/src/Makefile.am +++ b/mblock/src/Makefile.am @@ -1,5 +1,5 @@ # -# Copyright 2004,2006 Free Software Foundation, Inc. +# Copyright 2004,2006,2008 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -19,4 +19,4 @@ # Boston, MA 02110-1301, USA. # -SUBDIRS = lib scheme +SUBDIRS = include lib scheme diff --git a/mblock/src/include/Makefile.am b/mblock/src/include/Makefile.am new file mode 100644 index 00000000..d5672989 --- /dev/null +++ b/mblock/src/include/Makefile.am @@ -0,0 +1,24 @@ +# +# 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 diff --git a/mblock/src/include/mblock/Makefile.am b/mblock/src/include/mblock/Makefile.am new file mode 100644 index 00000000..e36215aa --- /dev/null +++ b/mblock/src/include/mblock/Makefile.am @@ -0,0 +1,37 @@ +# +# 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 diff --git a/mblock/src/include/mblock/class_registry.h b/mblock/src/include/mblock/class_registry.h new file mode 100644 index 00000000..b94a7cbc --- /dev/null +++ b/mblock/src/include/mblock/class_registry.h @@ -0,0 +1,51 @@ +/* -*- 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 + +//! 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 +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) + +#endif /* INCLUDED_MB_CLASS_REGISTRY_H */ diff --git a/mblock/src/include/mblock/common.h b/mblock/src/include/mblock/common.h new file mode 100644 index 00000000..2507d053 --- /dev/null +++ b/mblock/src/include/mblock/common.h @@ -0,0 +1,94 @@ +/* -*- 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 +#include +#include +#include +#include +#include + +/* + * 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_sptr; + +//class mb_runtime_impl; +//typedef boost::shared_ptr mb_runtime_impl_sptr; + +class mb_mblock; +typedef boost::shared_ptr mb_mblock_sptr; + +class mb_mblock_impl; +typedef boost::shared_ptr mb_mblock_impl_sptr; + +class mb_port; +typedef boost::shared_ptr mb_port_sptr; + +//class mb_port_detail; +//typedef boost::shared_ptr mb_port_detail_sptr; + +class mb_msg_accepter; +typedef boost::shared_ptr mb_msg_accepter_sptr; + +class mb_message; +typedef boost::shared_ptr mb_message_sptr; + +class mb_msg_queue; +typedef boost::shared_ptr mb_msg_queue_sptr; + +#endif /* INCLUDED_MB_COMMON_H */ diff --git a/mblock/src/include/mblock/exception.h b/mblock/src/include/mblock/exception.h new file mode 100644 index 00000000..6cc45665 --- /dev/null +++ b/mblock/src/include/mblock/exception.h @@ -0,0 +1,118 @@ +/* -*- 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 + +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 */ diff --git a/mblock/src/include/mblock/mblock.h b/mblock/src/include/mblock/mblock.h new file mode 100644 index 00000000..14517ffc --- /dev/null +++ b/mblock/src/include/mblock/mblock.h @@ -0,0 +1,318 @@ +/* -*- 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 +#include +#include +#include + + +/*! + * 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 +{ +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 (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 */ diff --git a/mblock/src/include/mblock/message.h b/mblock/src/include/mblock/message.h new file mode 100644 index 00000000..8fbee2ff --- /dev/null +++ b/mblock/src/include/mblock/message.h @@ -0,0 +1,88 @@ +/* -*- 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 +#include + +#define MB_MESSAGE_LOCAL_ALLOCATOR 0 // define to 0 or 1 + +class mb_message; +typedef boost::shared_ptr 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 */ diff --git a/mblock/src/include/mblock/msg_accepter.h b/mblock/src/include/mblock/msg_accepter.h new file mode 100644 index 00000000..69be1311 --- /dev/null +++ b/mblock/src/include/mblock/msg_accepter.h @@ -0,0 +1,48 @@ +/* -*- 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 + +/*! + * \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 */ diff --git a/mblock/src/include/mblock/msg_queue.h b/mblock/src/include/mblock/msg_queue.h new file mode 100644 index 00000000..31ff65a5 --- /dev/null +++ b/mblock/src/include/mblock/msg_queue.h @@ -0,0 +1,82 @@ +/* -*- 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 +#include +#include + +/*! + * \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 */ diff --git a/mblock/src/include/mblock/port.h b/mblock/src/include/mblock/port.h new file mode 100644 index 00000000..892a1dd9 --- /dev/null +++ b/mblock/src/include/mblock/port.h @@ -0,0 +1,93 @@ +/* -*- 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 + +/*! + * \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 */ diff --git a/mblock/src/include/mblock/protocol_class.h b/mblock/src/include/mblock/protocol_class.h new file mode 100644 index 00000000..33c5d711 --- /dev/null +++ b/mblock/src/include/mblock/protocol_class.h @@ -0,0 +1,52 @@ +/* -*- 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 + +/*! + * \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 */ diff --git a/mblock/src/include/mblock/runtime.h b/mblock/src/include/mblock/runtime.h new file mode 100644 index 00000000..4236e346 --- /dev/null +++ b/mblock/src/include/mblock/runtime.h @@ -0,0 +1,68 @@ +/* -*- 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 +#include + +/*! + * \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 +{ +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 */ diff --git a/mblock/src/include/mblock/time.h b/mblock/src/include/mblock/time.h new file mode 100644 index 00000000..cba6be78 --- /dev/null +++ b/mblock/src/include/mblock/time.h @@ -0,0 +1,27 @@ +/* -*- 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 +typedef omni_time mb_time; + +#endif /* INCLUDED_MB_TIME_H */ diff --git a/mblock/src/lib/Makefile.am b/mblock/src/lib/Makefile.am index e8e5f59a..269c8ae2 100644 --- a/mblock/src/lib/Makefile.am +++ b/mblock/src/lib/Makefile.am @@ -22,7 +22,8 @@ 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 @@ -75,25 +76,11 @@ libmblock_la_LIBADD = \ $(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 \ diff --git a/mblock/src/lib/benchmark_send.cc b/mblock/src/lib/benchmark_send.cc index 7b8f7cb7..fe873a69 100644 --- a/mblock/src/lib/benchmark_send.cc +++ b/mblock/src/lib/benchmark_send.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -19,7 +19,7 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#include +#include #include int diff --git a/mblock/src/lib/mb_class_registry.cc b/mblock/src/lib/mb_class_registry.cc index 77cec8de..7ccee296 100644 --- a/mblock/src/lib/mb_class_registry.cc +++ b/mblock/src/lib/mb_class_registry.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -22,7 +22,7 @@ #ifdef HAVE_CONFIG_H #include #endif -#include +#include #include static std::map s_registry; diff --git a/mblock/src/lib/mb_class_registry.h b/mblock/src/lib/mb_class_registry.h deleted file mode 100644 index 713cc1e2..00000000 --- a/mblock/src/lib/mb_class_registry.h +++ /dev/null @@ -1,51 +0,0 @@ -/* -*- 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 - -//! 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 -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) - -#endif /* INCLUDED_MB_CLASS_REGISTRY_H */ diff --git a/mblock/src/lib/mb_common.h b/mblock/src/lib/mb_common.h deleted file mode 100644 index 1f78d5a4..00000000 --- a/mblock/src/lib/mb_common.h +++ /dev/null @@ -1,94 +0,0 @@ -/* -*- 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 -#include -#include -#include -#include -#include - -/* - * 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_sptr; - -//class mb_runtime_impl; -//typedef boost::shared_ptr mb_runtime_impl_sptr; - -class mb_mblock; -typedef boost::shared_ptr mb_mblock_sptr; - -class mb_mblock_impl; -typedef boost::shared_ptr mb_mblock_impl_sptr; - -class mb_port; -typedef boost::shared_ptr mb_port_sptr; - -//class mb_port_detail; -//typedef boost::shared_ptr mb_port_detail_sptr; - -class mb_msg_accepter; -typedef boost::shared_ptr mb_msg_accepter_sptr; - -class mb_message; -typedef boost::shared_ptr mb_message_sptr; - -class mb_msg_queue; -typedef boost::shared_ptr mb_msg_queue_sptr; - -#endif /* INCLUDED_MB_COMMON_H */ diff --git a/mblock/src/lib/mb_endpoint.h b/mblock/src/lib/mb_endpoint.h index db55b3f4..aae376a5 100644 --- a/mblock/src/lib/mb_endpoint.h +++ b/mblock/src/lib/mb_endpoint.h @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2006 Free Software Foundation, Inc. + * Copyright 2006,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -23,7 +23,7 @@ #define INCLUDED_MB_ENDPOINT_H #include -#include +#include /*! * \brief Endpoint specification for connection diff --git a/mblock/src/lib/mb_exception.cc b/mblock/src/lib/mb_exception.cc index 3c08a01d..81013184 100644 --- a/mblock/src/lib/mb_exception.cc +++ b/mblock/src/lib/mb_exception.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2006 Free Software Foundation, Inc. + * Copyright 2006,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -23,8 +23,8 @@ #include #endif -#include -#include +#include +#include #include diff --git a/mblock/src/lib/mb_exception.h b/mblock/src/lib/mb_exception.h deleted file mode 100644 index 837e49f4..00000000 --- a/mblock/src/lib/mb_exception.h +++ /dev/null @@ -1,118 +0,0 @@ -/* -*- 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 - -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 */ diff --git a/mblock/src/lib/mb_mblock.cc b/mblock/src/lib/mb_mblock.cc index 38d216ad..b2f76362 100644 --- a/mblock/src/lib/mb_mblock.cc +++ b/mblock/src/lib/mb_mblock.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2006 Free Software Foundation, Inc. + * Copyright 2006,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -23,10 +23,10 @@ #include #endif -#include +#include #include -#include -#include +#include +#include #include diff --git a/mblock/src/lib/mb_mblock.h b/mblock/src/lib/mb_mblock.h deleted file mode 100644 index 146e2800..00000000 --- a/mblock/src/lib/mb_mblock.h +++ /dev/null @@ -1,318 +0,0 @@ -/* -*- 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 -#include -#include -#include - - -/*! - * 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 -{ -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 (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 */ diff --git a/mblock/src/lib/mb_mblock_impl.cc b/mblock/src/lib/mb_mblock_impl.cc index 90868cf4..e11b0089 100644 --- a/mblock/src/lib/mb_mblock_impl.cc +++ b/mblock/src/lib/mb_mblock_impl.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2006 Free Software Foundation, Inc. + * Copyright 2006,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -23,11 +23,11 @@ #include #endif #include -#include -#include -#include +#include +#include +#include #include -#include +#include #include #include #include diff --git a/mblock/src/lib/mb_mblock_impl.h b/mblock/src/lib/mb_mblock_impl.h index 374ee8fe..ed8059b0 100644 --- a/mblock/src/lib/mb_mblock_impl.h +++ b/mblock/src/lib/mb_mblock_impl.h @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2006,2007 Free Software Foundation, Inc. + * Copyright 2006,2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -21,10 +21,10 @@ #ifndef INCLUDED_MB_MBLOCK_IMPL_H #define INCLUDED_MB_MBLOCK_IMPL_H -#include +#include #include #include -#include +#include #include #include diff --git a/mblock/src/lib/mb_message.cc b/mblock/src/lib/mb_message.cc index ce98a931..664e369f 100644 --- a/mblock/src/lib/mb_message.cc +++ b/mblock/src/lib/mb_message.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2006 Free Software Foundation, Inc. + * Copyright 2006,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -22,7 +22,7 @@ #ifdef HAVE_CONFIG_H #include #endif -#include +#include #include #include diff --git a/mblock/src/lib/mb_message.h b/mblock/src/lib/mb_message.h deleted file mode 100644 index f5e46553..00000000 --- a/mblock/src/lib/mb_message.h +++ /dev/null @@ -1,88 +0,0 @@ -/* -*- 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 -#include - -#define MB_MESSAGE_LOCAL_ALLOCATOR 0 // define to 0 or 1 - -class mb_message; -typedef boost::shared_ptr 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 */ diff --git a/mblock/src/lib/mb_msg_accepter.cc b/mblock/src/lib/mb_msg_accepter.cc index 001b1f11..88b92394 100644 --- a/mblock/src/lib/mb_msg_accepter.cc +++ b/mblock/src/lib/mb_msg_accepter.cc @@ -23,7 +23,7 @@ #include #endif -#include +#include mb_msg_accepter::~mb_msg_accepter() { diff --git a/mblock/src/lib/mb_msg_accepter.h b/mblock/src/lib/mb_msg_accepter.h deleted file mode 100644 index 254b3b04..00000000 --- a/mblock/src/lib/mb_msg_accepter.h +++ /dev/null @@ -1,48 +0,0 @@ -/* -*- 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 - -/*! - * \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 */ diff --git a/mblock/src/lib/mb_msg_accepter_msgq.cc b/mblock/src/lib/mb_msg_accepter_msgq.cc index 8220dbfe..fb97914e 100644 --- a/mblock/src/lib/mb_msg_accepter_msgq.cc +++ b/mblock/src/lib/mb_msg_accepter_msgq.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -23,7 +23,7 @@ #include #endif #include -#include +#include pmt_t s_sys_port = pmt_intern("%sys-port"); diff --git a/mblock/src/lib/mb_msg_accepter_msgq.h b/mblock/src/lib/mb_msg_accepter_msgq.h index 1436e8c0..6c743bb4 100644 --- a/mblock/src/lib/mb_msg_accepter_msgq.h +++ b/mblock/src/lib/mb_msg_accepter_msgq.h @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -21,8 +21,8 @@ #ifndef INCLUDED_MB_MSG_ACCEPTER_MSGQ_H #define INCLUDED_MB_MSG_ACCEPTER_MSGQ_H -#include -#include +#include +#include /*! * \brief Concrete class that accepts messages and inserts them into a message queue. diff --git a/mblock/src/lib/mb_msg_accepter_smp.cc b/mblock/src/lib/mb_msg_accepter_smp.cc index ac3b4cfd..3b392a8c 100644 --- a/mblock/src/lib/mb_msg_accepter_smp.cc +++ b/mblock/src/lib/mb_msg_accepter_smp.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -23,10 +23,10 @@ #include #endif #include -#include -#include +#include +#include #include -#include +#include mb_msg_accepter_smp::mb_msg_accepter_smp(mb_mblock_sptr mblock, pmt_t port_name) : d_mb(mblock), d_port_name(port_name) diff --git a/mblock/src/lib/mb_msg_accepter_smp.h b/mblock/src/lib/mb_msg_accepter_smp.h index 39eedf8f..0e0cd7c6 100644 --- a/mblock/src/lib/mb_msg_accepter_smp.h +++ b/mblock/src/lib/mb_msg_accepter_smp.h @@ -21,7 +21,7 @@ #ifndef INCLUDED_MB_MSG_ACCEPTER_SMP_H #define INCLUDED_MB_MSG_ACCEPTER_SMP_H -#include +#include /*! * \brief Concrete message acceptor that does an mb_msg_queue insertion diff --git a/mblock/src/lib/mb_msg_queue.cc b/mblock/src/lib/mb_msg_queue.cc index c5dd72fb..c68c5fd6 100644 --- a/mblock/src/lib/mb_msg_queue.cc +++ b/mblock/src/lib/mb_msg_queue.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -22,8 +22,8 @@ #ifdef HAVE_CONFIG_H #include #endif -#include -#include +#include +#include mb_msg_queue::mb_msg_queue() diff --git a/mblock/src/lib/mb_msg_queue.h b/mblock/src/lib/mb_msg_queue.h deleted file mode 100644 index a1cd43f1..00000000 --- a/mblock/src/lib/mb_msg_queue.h +++ /dev/null @@ -1,82 +0,0 @@ -/* -*- 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 -#include -#include - -/*! - * \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 */ diff --git a/mblock/src/lib/mb_port.cc b/mblock/src/lib/mb_port.cc index 959e89c7..a13f49f2 100644 --- a/mblock/src/lib/mb_port.cc +++ b/mblock/src/lib/mb_port.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2006 Free Software Foundation, Inc. + * Copyright 2006,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -23,8 +23,8 @@ #include #endif -#include -#include +#include +#include mb_port::mb_port(mb_mblock *mblock, const std::string &port_name, diff --git a/mblock/src/lib/mb_port.h b/mblock/src/lib/mb_port.h deleted file mode 100644 index 0e9898bc..00000000 --- a/mblock/src/lib/mb_port.h +++ /dev/null @@ -1,93 +0,0 @@ -/* -*- 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 - -/*! - * \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 */ diff --git a/mblock/src/lib/mb_port_simple.cc b/mblock/src/lib/mb_port_simple.cc index 24a01b56..1b4b35cb 100644 --- a/mblock/src/lib/mb_port_simple.cc +++ b/mblock/src/lib/mb_port_simple.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -24,9 +24,9 @@ #endif #include -#include -#include -#include +#include +#include +#include #include #include #include diff --git a/mblock/src/lib/mb_port_simple.h b/mblock/src/lib/mb_port_simple.h index db9e226e..3041239a 100644 --- a/mblock/src/lib/mb_port_simple.h +++ b/mblock/src/lib/mb_port_simple.h @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -21,7 +21,7 @@ #ifndef INCLUDED_MB_PORT_SIMPLE_H #define INCLUDED_MB_PORT_SIMPLE_H -#include +#include /*! * \brief Concrete port realization diff --git a/mblock/src/lib/mb_protocol_class.cc b/mblock/src/lib/mb_protocol_class.cc index fb1f6531..f076909e 100644 --- a/mblock/src/lib/mb_protocol_class.cc +++ b/mblock/src/lib/mb_protocol_class.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2006 Free Software Foundation, Inc. + * Copyright 2006,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -23,7 +23,7 @@ #include #endif -#include +#include #include static pmt_t s_ALL_PROTOCOL_CLASSES = PMT_NIL; diff --git a/mblock/src/lib/mb_protocol_class.h b/mblock/src/lib/mb_protocol_class.h deleted file mode 100644 index 7a1d9afb..00000000 --- a/mblock/src/lib/mb_protocol_class.h +++ /dev/null @@ -1,52 +0,0 @@ -/* -*- 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 - -/*! - * \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 */ diff --git a/mblock/src/lib/mb_runtime.cc b/mblock/src/lib/mb_runtime.cc index 56ae2869..57a05c41 100644 --- a/mblock/src/lib/mb_runtime.cc +++ b/mblock/src/lib/mb_runtime.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2006 Free Software Foundation, Inc. + * Copyright 2006,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -23,7 +23,7 @@ #include #endif -#include +#include #include mb_runtime_sptr diff --git a/mblock/src/lib/mb_runtime.h b/mblock/src/lib/mb_runtime.h deleted file mode 100644 index 1c9ebcab..00000000 --- a/mblock/src/lib/mb_runtime.h +++ /dev/null @@ -1,68 +0,0 @@ -/* -*- 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 -#include - -/*! - * \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 -{ -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 */ diff --git a/mblock/src/lib/mb_runtime_base.cc b/mblock/src/lib/mb_runtime_base.cc index c10c3168..1dea4d46 100644 --- a/mblock/src/lib/mb_runtime_base.cc +++ b/mblock/src/lib/mb_runtime_base.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * diff --git a/mblock/src/lib/mb_runtime_base.h b/mblock/src/lib/mb_runtime_base.h index 4872bd81..019662bc 100644 --- a/mblock/src/lib/mb_runtime_base.h +++ b/mblock/src/lib/mb_runtime_base.h @@ -22,9 +22,9 @@ #ifndef INCLUDED_MB_RUNTIME_BASE_H #define INCLUDED_MB_RUNTIME_BASE_H -#include +#include #include -#include +#include /* * \brief This is the runtime class used by the implementation. diff --git a/mblock/src/lib/mb_runtime_nop.cc b/mblock/src/lib/mb_runtime_nop.cc index 78bc0a1a..603d5add 100644 --- a/mblock/src/lib/mb_runtime_nop.cc +++ b/mblock/src/lib/mb_runtime_nop.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -23,9 +23,9 @@ #include #endif #include -#include -#include -#include +#include +#include +#include mb_runtime_sptr mb_make_runtime_nop() diff --git a/mblock/src/lib/mb_runtime_thread_per_block.cc b/mblock/src/lib/mb_runtime_thread_per_block.cc index f1e4d10a..d12014a1 100644 --- a/mblock/src/lib/mb_runtime_thread_per_block.cc +++ b/mblock/src/lib/mb_runtime_thread_per_block.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -23,10 +23,10 @@ #include #endif #include -#include +#include #include -#include -#include +#include +#include #include #include #include diff --git a/mblock/src/lib/mb_runtime_thread_per_block.h b/mblock/src/lib/mb_runtime_thread_per_block.h index ed2dc046..ef962911 100644 --- a/mblock/src/lib/mb_runtime_thread_per_block.h +++ b/mblock/src/lib/mb_runtime_thread_per_block.h @@ -23,7 +23,7 @@ #include #include -#include +#include #include /*! diff --git a/mblock/src/lib/mb_time.h b/mblock/src/lib/mb_time.h deleted file mode 100644 index cba6be78..00000000 --- a/mblock/src/lib/mb_time.h +++ /dev/null @@ -1,27 +0,0 @@ -/* -*- 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 -typedef omni_time mb_time; - -#endif /* INCLUDED_MB_TIME_H */ diff --git a/mblock/src/lib/mb_timer_queue.h b/mblock/src/lib/mb_timer_queue.h index 208e37d5..e8b8e1b6 100644 --- a/mblock/src/lib/mb_timer_queue.h +++ b/mblock/src/lib/mb_timer_queue.h @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -22,11 +22,11 @@ #ifndef INCLUDED_MB_TIMER_QUEUE_H #define INCLUDED_MB_TIMER_QUEUE_H -#include +#include #include #include #include -#include +#include class mb_timeout { public: diff --git a/mblock/src/lib/mb_worker.cc b/mblock/src/lib/mb_worker.cc index 4ac161e9..e7ac6a9b 100644 --- a/mblock/src/lib/mb_worker.cc +++ b/mblock/src/lib/mb_worker.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -24,10 +24,10 @@ #endif #include #include -#include -#include +#include +#include #include -#include +#include #include #ifdef HAVE_SCHED_H #include diff --git a/mblock/src/lib/mb_worker.h b/mblock/src/lib/mb_worker.h index d5937144..b840ae55 100644 --- a/mblock/src/lib/mb_worker.h +++ b/mblock/src/lib/mb_worker.h @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -23,8 +23,8 @@ #define INCLUDED_MB_WORKER_H #include -#include -#include +#include +#include class mb_worker; diff --git a/mblock/src/lib/mbi_runtime_lock.h b/mblock/src/lib/mbi_runtime_lock.h index a4dec76f..020cd733 100644 --- a/mblock/src/lib/mbi_runtime_lock.h +++ b/mblock/src/lib/mbi_runtime_lock.h @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -22,7 +22,7 @@ #ifndef INCLUDED_MBI_RUNTIME_LOCK_H #define INCLUDED_MBI_RUNTIME_LOCK_H -#include +#include #include #include diff --git a/mblock/src/lib/qa_bitset.cc b/mblock/src/lib/qa_bitset.cc index 85f388fc..bc42ac8b 100644 --- a/mblock/src/lib/qa_bitset.cc +++ b/mblock/src/lib/qa_bitset.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -22,10 +22,10 @@ #ifdef HAVE_CONFIG_H #include #endif -#include -#include -#include -#include +#include +#include +#include +#include #include #include #include diff --git a/mblock/src/lib/qa_disconnect.cc b/mblock/src/lib/qa_disconnect.cc index ff263da8..e098e8b2 100644 --- a/mblock/src/lib/qa_disconnect.cc +++ b/mblock/src/lib/qa_disconnect.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -22,10 +22,10 @@ #ifdef HAVE_CONFIG_H #include #endif -#include -#include -#include -#include +#include +#include +#include +#include #include #include #include diff --git a/mblock/src/lib/qa_mblock_prims.cc b/mblock/src/lib/qa_mblock_prims.cc index 6802986f..2eed3afd 100644 --- a/mblock/src/lib/qa_mblock_prims.cc +++ b/mblock/src/lib/qa_mblock_prims.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2006,2007 Free Software Foundation, Inc. + * Copyright 2006,2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -26,15 +26,15 @@ #include #include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include -#include -#include +#include +#include #include static pmt_t s_cs = pmt_intern("cs"); diff --git a/mblock/src/lib/qa_mblock_send.cc b/mblock/src/lib/qa_mblock_send.cc index b9db971c..114dbdc4 100644 --- a/mblock/src/lib/qa_mblock_send.cc +++ b/mblock/src/lib/qa_mblock_send.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2006,2007 Free Software Foundation, Inc. + * Copyright 2006,2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -26,16 +26,16 @@ #include #include -#include -#include +#include +#include #include // QA only -#include -#include -#include -#include +#include +#include +#include +#include #include -#include -#include +#include +#include #include static pmt_t s_data = pmt_intern("data"); diff --git a/mblock/src/lib/qa_mblock_sys.cc b/mblock/src/lib/qa_mblock_sys.cc index 5991b7ff..58e48f71 100644 --- a/mblock/src/lib/qa_mblock_sys.cc +++ b/mblock/src/lib/qa_mblock_sys.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2006,2007 Free Software Foundation, Inc. + * Copyright 2006,2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -26,16 +26,16 @@ #include #include -#include -#include +#include +#include #include // QA only -#include -#include -#include -#include +#include +#include +#include +#include #include -#include -#include +#include +#include #include #include #include diff --git a/mblock/src/lib/qa_timeouts.cc b/mblock/src/lib/qa_timeouts.cc index 4f1eb46e..2505635c 100644 --- a/mblock/src/lib/qa_timeouts.cc +++ b/mblock/src/lib/qa_timeouts.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -24,12 +24,12 @@ #endif #include #include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include #include #include diff --git a/mblock/src/scheme/gnuradio/compile-mbh.scm b/mblock/src/scheme/gnuradio/compile-mbh.scm index a16e14c5..30085340 100755 --- a/mblock/src/scheme/gnuradio/compile-mbh.scm +++ b/mblock/src/scheme/gnuradio/compile-mbh.scm @@ -3,7 +3,7 @@ !# ;; -*-scheme-*- ;; -;; Copyright 2007 Free Software Foundation, Inc. +;; Copyright 2007,2008 Free Software Foundation, Inc. ;; ;; This file is part of GNU Radio ;; @@ -180,7 +180,7 @@ (format o-port "// protocol-classes: ~{~a ~}~%" (map car protocol-classes)) (format o-port "//~%") - (format o-port "#include ~%") + (format o-port "#include ~%") (format o-port "#include ~%") (format o-port "static const char~%protocol_class_init_data[~d] = {~% " diff --git a/usrp/host/apps-inband/Makefile.am b/usrp/host/apps-inband/Makefile.am index 663a861e..0a44d811 100644 --- a/usrp/host/apps-inband/Makefile.am +++ b/usrp/host/apps-inband/Makefile.am @@ -24,7 +24,7 @@ include $(top_srcdir)/Makefile.common 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 = diff --git a/usrp/host/apps-inband/read_packets.cc b/usrp/host/apps-inband/read_packets.cc index 3d112d98..24a1e88b 100644 --- a/usrp/host/apps-inband/read_packets.cc +++ b/usrp/host/apps-inband/read_packets.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -25,7 +25,7 @@ #include #include -#include +#include #include #include #include diff --git a/usrp/host/apps-inband/test_usrp_inband_2rx.cc b/usrp/host/apps-inband/test_usrp_inband_2rx.cc index da8d7271..c210f196 100644 --- a/usrp/host/apps-inband/test_usrp_inband_2rx.cc +++ b/usrp/host/apps-inband/test_usrp_inband_2rx.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -23,16 +23,16 @@ #include #endif -#include -#include +#include +#include #include // QA only -#include -#include -#include -#include +#include +#include +#include +#include #include -#include -#include +#include +#include #include #include #include diff --git a/usrp/host/apps-inband/test_usrp_inband_2tx.cc b/usrp/host/apps-inband/test_usrp_inband_2tx.cc index 942f6df0..caa78033 100644 --- a/usrp/host/apps-inband/test_usrp_inband_2tx.cc +++ b/usrp/host/apps-inband/test_usrp_inband_2tx.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -23,16 +23,16 @@ #include #endif -#include -#include +#include +#include #include // QA only -#include -#include -#include -#include +#include +#include +#include +#include #include -#include -#include +#include +#include #include #include #include diff --git a/usrp/host/apps-inband/test_usrp_inband_overrun.cc b/usrp/host/apps-inband/test_usrp_inband_overrun.cc index 107668b8..cd0fa525 100644 --- a/usrp/host/apps-inband/test_usrp_inband_overrun.cc +++ b/usrp/host/apps-inband/test_usrp_inband_overrun.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -23,14 +23,14 @@ #include #endif -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include diff --git a/usrp/host/apps-inband/test_usrp_inband_ping.cc b/usrp/host/apps-inband/test_usrp_inband_ping.cc index 6b1347cc..d779c9a6 100644 --- a/usrp/host/apps-inband/test_usrp_inband_ping.cc +++ b/usrp/host/apps-inband/test_usrp_inband_ping.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -23,14 +23,14 @@ #include #endif -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include diff --git a/usrp/host/apps-inband/test_usrp_inband_registers.cc b/usrp/host/apps-inband/test_usrp_inband_registers.cc index a1d9cc14..d9bd2db1 100644 --- a/usrp/host/apps-inband/test_usrp_inband_registers.cc +++ b/usrp/host/apps-inband/test_usrp_inband_registers.cc @@ -23,15 +23,15 @@ #include #endif -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include //#include -#include -#include +#include +#include #include #include #include diff --git a/usrp/host/apps-inband/test_usrp_inband_rx.cc b/usrp/host/apps-inband/test_usrp_inband_rx.cc index cff2aa72..dcb87a7c 100644 --- a/usrp/host/apps-inband/test_usrp_inband_rx.cc +++ b/usrp/host/apps-inband/test_usrp_inband_rx.cc @@ -23,14 +23,14 @@ #include #endif -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include diff --git a/usrp/host/apps-inband/test_usrp_inband_timestamps.cc b/usrp/host/apps-inband/test_usrp_inband_timestamps.cc index 43d0c46a..3b874d1a 100644 --- a/usrp/host/apps-inband/test_usrp_inband_timestamps.cc +++ b/usrp/host/apps-inband/test_usrp_inband_timestamps.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -23,14 +23,14 @@ #include #endif -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include diff --git a/usrp/host/apps-inband/test_usrp_inband_tx.cc b/usrp/host/apps-inband/test_usrp_inband_tx.cc index 9cdb92c2..7ce38c2e 100644 --- a/usrp/host/apps-inband/test_usrp_inband_tx.cc +++ b/usrp/host/apps-inband/test_usrp_inband_tx.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -23,14 +23,14 @@ #include #endif -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include diff --git a/usrp/host/apps-inband/test_usrp_inband_underrun.cc b/usrp/host/apps-inband/test_usrp_inband_underrun.cc index e9f85d31..11babb04 100644 --- a/usrp/host/apps-inband/test_usrp_inband_underrun.cc +++ b/usrp/host/apps-inband/test_usrp_inband_underrun.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -23,14 +23,14 @@ #include #endif -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include diff --git a/usrp/host/lib/inband/qa_inband_usrp_server.cc b/usrp/host/lib/inband/qa_inband_usrp_server.cc index e457e8d6..c6641839 100644 --- a/usrp/host/lib/inband/qa_inband_usrp_server.cc +++ b/usrp/host/lib/inband/qa_inband_usrp_server.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -28,10 +28,10 @@ #include #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include #include #include diff --git a/usrp/host/lib/inband/usrp_inband_usb_packet.h b/usrp/host/lib/inband/usrp_inband_usb_packet.h index 8f59d1b6..6f1a3feb 100644 --- a/usrp/host/lib/inband/usrp_inband_usb_packet.h +++ b/usrp/host/lib/inband/usrp_inband_usb_packet.h @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -23,7 +23,7 @@ #define INCLUDED_USRP_INBAND_USB_PACKET_H_ #include -#include +#include #include #include diff --git a/usrp/host/lib/inband/usrp_rx.cc b/usrp/host/lib/inband/usrp_rx.cc index b1f9f7b9..45d41bed 100644 --- a/usrp/host/lib/inband/usrp_rx.cc +++ b/usrp/host/lib/inband/usrp_rx.cc @@ -29,7 +29,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/usrp/host/lib/inband/usrp_rx.h b/usrp/host/lib/inband/usrp_rx.h index 10104bd6..9496b27d 100644 --- a/usrp/host/lib/inband/usrp_rx.h +++ b/usrp/host/lib/inband/usrp_rx.h @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -21,7 +21,7 @@ #ifndef INCLUDED_USRP_RX_H #define INCLUDED_USRP_RX_H -#include +#include #include class usrp_standard_rx; diff --git a/usrp/host/lib/inband/usrp_rx_stub.cc b/usrp/host/lib/inband/usrp_rx_stub.cc index 8be70953..e5c454d2 100644 --- a/usrp/host/lib/inband/usrp_rx_stub.cc +++ b/usrp/host/lib/inband/usrp_rx_stub.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -28,7 +28,7 @@ #include #include #include -#include +#include #include #include #include "usrp_standard.h" diff --git a/usrp/host/lib/inband/usrp_rx_stub.h b/usrp/host/lib/inband/usrp_rx_stub.h index 9cf308a9..238b4568 100644 --- a/usrp/host/lib/inband/usrp_rx_stub.h +++ b/usrp/host/lib/inband/usrp_rx_stub.h @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -21,7 +21,7 @@ #ifndef INCLUDED_USRP_RX_STUB_H #define INCLUDED_USRP_RX_STUB_H -#include +#include #include #include "usrp_standard.h" #include diff --git a/usrp/host/lib/inband/usrp_server.cc b/usrp/host/lib/inband/usrp_server.cc index 9f92e2af..ac263630 100644 --- a/usrp/host/lib/inband/usrp_server.cc +++ b/usrp/host/lib/inband/usrp_server.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -25,7 +25,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/usrp/host/lib/inband/usrp_server.h b/usrp/host/lib/inband/usrp_server.h index 09c82faa..dd1825d5 100644 --- a/usrp/host/lib/inband/usrp_server.h +++ b/usrp/host/lib/inband/usrp_server.h @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -21,7 +21,7 @@ #ifndef INCLUDED_USRP_SERVER_H #define INCLUDED_USRP_SERVER_H -#include +#include #include #include #include diff --git a/usrp/host/lib/inband/usrp_tx.cc b/usrp/host/lib/inband/usrp_tx.cc index 5c0a8c30..cf7976bc 100644 --- a/usrp/host/lib/inband/usrp_tx.cc +++ b/usrp/host/lib/inband/usrp_tx.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -26,7 +26,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/usrp/host/lib/inband/usrp_tx.h b/usrp/host/lib/inband/usrp_tx.h index 546a26af..823d5cea 100644 --- a/usrp/host/lib/inband/usrp_tx.h +++ b/usrp/host/lib/inband/usrp_tx.h @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -21,7 +21,7 @@ #ifndef INCLUDED_USRP_TX_H #define INCLUDED_USRP_TX_H -#include +#include #include class usrp_standard_tx; diff --git a/usrp/host/lib/inband/usrp_tx_stub.cc b/usrp/host/lib/inband/usrp_tx_stub.cc index 8d47f815..c78b1a7b 100644 --- a/usrp/host/lib/inband/usrp_tx_stub.cc +++ b/usrp/host/lib/inband/usrp_tx_stub.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -26,7 +26,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/usrp/host/lib/inband/usrp_tx_stub.h b/usrp/host/lib/inband/usrp_tx_stub.h index 52294bee..b81037ad 100644 --- a/usrp/host/lib/inband/usrp_tx_stub.h +++ b/usrp/host/lib/inband/usrp_tx_stub.h @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -21,7 +21,7 @@ #ifndef INCLUDED_USRP_TX_STUB_H #define INCLUDED_USRP_TX_STUB_H -#include +#include #include #include "usrp_standard.h" #include diff --git a/usrp/host/lib/inband/usrp_usb_interface.cc b/usrp/host/lib/inband/usrp_usb_interface.cc index 51b6d464..c69eb0b0 100644 --- a/usrp/host/lib/inband/usrp_usb_interface.cc +++ b/usrp/host/lib/inband/usrp_usb_interface.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2007 Free Software Foundation, Inc. + * Copyright 2007,2008 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -28,7 +28,7 @@ #include #include #include -#include +#include #include #include #include "usrp_rx.h" diff --git a/usrp/host/lib/inband/usrp_usb_interface.h b/usrp/host/lib/inband/usrp_usb_interface.h index 6c2c1576..5151f155 100644 --- a/usrp/host/lib/inband/usrp_usb_interface.h +++ b/usrp/host/lib/inband/usrp_usb_interface.h @@ -21,7 +21,7 @@ #ifndef INCLUDED_USRP_USB_INTERFACE_H #define INCLUDED_USRP_USB_INTERFACE_H -#include +#include #include #include "usrp_standard.h"