commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] r4299 - gnuradio/branches/developers/eb/mb/mblock/src/


From: eb
Subject: [Commit-gnuradio] r4299 - gnuradio/branches/developers/eb/mb/mblock/src/lib
Date: Sat, 27 Jan 2007 19:27:30 -0700 (MST)

Author: eb
Date: 2007-01-27 19:27:29 -0700 (Sat, 27 Jan 2007)
New Revision: 4299

Added:
   gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_msg_accepter.cc
   gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_msg_accepter.h
   gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port_simple.cc
   gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port_simple.h
Modified:
   gnuradio/branches/developers/eb/mb/mblock/src/lib/Makefile.am
   gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_common.h
   gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.cc
   gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.h
   gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_message.h
   gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port.cc
   gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port.h
Log:
work-in-progress on mblocks

Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/Makefile.am
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/Makefile.am       
2007-01-27 18:39:31 UTC (rev 4298)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/Makefile.am       
2007-01-28 02:27:29 UTC (rev 4299)
@@ -37,8 +37,9 @@
        mb_mblock.cc                    \
        mb_mblock_impl.cc               \
        mb_message.cc                   \
+       mb_msg_accepter.cc              \
        mb_port.cc                      \
-       mb_port_detail.cc               \
+       mb_port_simple.cc               \
        mb_protocol_class.cc            \
        mb_runtime.cc                   \
        mb_runtime_impl.cc              \
@@ -58,7 +59,9 @@
        mb_exception.h                  \
        mb_mblock.h                     \
        mb_message.h                    \
+       mb_msg_accepter.h               \
        mb_port.h                       \
+       mb_port_simple.h                \
        mb_protocol_class.h             \
        mb_runtime.h                    \
        mb_util.h                       

Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_common.h
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_common.h       
2007-01-27 18:39:31 UTC (rev 4298)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_common.h       
2007-01-28 02:27:29 UTC (rev 4299)
@@ -25,6 +25,7 @@
 #include <vector>
 #include <stdexcept>
 #include <boost/utility.hpp>
+#include <boost/enable_shared_from_this.hpp>
 
 
 typedef unsigned int   mb_pri_t;
@@ -49,5 +50,7 @@
 class mb_port_detail;
 typedef boost::shared_ptr<mb_port_detail> mb_port_detail_sptr;
 
+class mb_msg_accepter;
+typedef boost::shared_ptr<mb_msg_accepter> mb_msg_accepter_sptr;
 
 #endif /* INCLUDED_MB_COMMON_H */

Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.cc
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.cc 
2007-01-27 18:39:31 UTC (rev 4298)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.cc 
2007-01-28 02:27:29 UTC (rev 4299)
@@ -26,6 +26,7 @@
 #include <mb_mblock.h>
 #include <mb_protocol_class.h>
 #include <mb_port.h>
+#include <mb_port_simple.h>
 #include <mb_exception.h>
 #include <mb_util.h>
 
@@ -49,7 +50,7 @@
 ////////////////////////////////////////////////////////////////////////
 
 mb_mblock_impl::mb_mblock_impl(mb_mblock *mb)
-  : d_mb(mb)
+  : d_mb(mb), d_mb_parent(0)
 {
 }
 
@@ -66,13 +67,17 @@
                            mb_port::port_type_t port_type)
 {
   if (port_type == mb_port::RELAY)
-    throw mbe_base(d_mb, "mb_block_impl::define_port: RELAY ports are not 
implemented: " + port_name);
+    throw mbe_base(d_mb,
+            "mb_block_impl::define_port: RELAY ports are not implemented: "
+            + port_name);
   
   if (port_is_defined(port_name))
     throw mbe_duplicate_port(d_mb, port_name);
 
-  mb_port_sptr p = mb_port_sptr(new mb_port(port_name, protocol_class_name,
-                                           conjugated, port_type));
+  mb_port_sptr p =
+    mb_port_sptr(new mb_port_simple(d_mb,
+                                   port_name, protocol_class_name,
+                                   conjugated, port_type));
   d_port_map[port_name] = p;
   return p;
 }
@@ -84,12 +89,15 @@
   if (comp_is_defined(name))   // check for duplicate name
     throw mbe_duplicate_component(d_mb, name);
 
+  component->d_impl->d_mb_parent = d_mb;    // set component's parent link
   d_comp_map[name] = component;
 }
 
 void
-mb_mblock_impl::connect(const std::string &comp_name1, const std::string 
&port_name1,
-                       const std::string &comp_name2, const std::string 
&port_name2)
+mb_mblock_impl::connect(const std::string &comp_name1,
+                       const std::string &port_name1,
+                       const std::string &comp_name2,
+                       const std::string &port_name2)
 {
   mb_endpoint  ep0 = check_and_resolve_endpoint(comp_name1, port_name1);
   mb_endpoint  ep1 = check_and_resolve_endpoint(comp_name2, port_name2);
@@ -175,7 +183,7 @@
 
     mb_port_sptr c_port = c_impl->d_port_map[port_name];
 
-    if (c_port->port_type() == mb_port::INTERNAL)            // can't "see" a 
child's internal ports
+    if (c_port->port_type() == mb_port::INTERNAL) // can't "see" a child's 
internal ports
       throw mbe_no_such_port(d_mb, mb_util::join_names(comp_name, port_name));
 
     return c_port;

Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.h
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.h  
2007-01-27 18:39:31 UTC (rev 4298)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.h  
2007-01-28 02:27:29 UTC (rev 4299)
@@ -37,6 +37,7 @@
 class mb_mblock_impl : boost::noncopyable
 {
   mb_mblock                   *d_mb;           // pointer to our associated 
mblock
+  mb_mblock                   *d_mb_parent;    // pointer to our parent
 
   mb_port_map_t                        d_port_map;     // our ports
   mb_comp_map_t                        d_comp_map;     // our components

Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_message.h
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_message.h      
2007-01-27 18:39:31 UTC (rev 4298)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_message.h      
2007-01-28 02:27:29 UTC (rev 4299)
@@ -41,11 +41,12 @@
                mb_pri_t priority = MB_PRI_DEFAULT);
 
 class mb_message {
-  pmt_t                d_signal;
-  pmt_t                d_data;
-  pmt_t                d_metadata;
-  mb_pri_t     d_priority;
-  // foo       d_rcvd_port_id;
+  mb_message_sptr d_next;              // link field for msg queue
+  pmt_t                  d_signal;
+  pmt_t                  d_data;
+  pmt_t                  d_metadata;
+  mb_pri_t       d_priority;
+  // foo         d_rcvd_port_id;
 
   friend mb_message_sptr
   mb_make_message(pmt_t signal, pmt_t data, pmt_t metadata, mb_pri_t priority);

Added: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_msg_accepter.cc
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_msg_accepter.cc        
                        (rev 0)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_msg_accepter.cc        
2007-01-28 02:27:29 UTC (rev 4299)
@@ -0,0 +1,31 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2007 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <mb_msg_accepter.h>
+
+mb_msg_accepter::~mb_msg_accepter()
+{
+  // nop
+}

Added: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_msg_accepter.h
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_msg_accepter.h         
                (rev 0)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_msg_accepter.h 
2007-01-28 02:27:29 UTC (rev 4299)
@@ -0,0 +1,39 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2007 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+#ifndef INCLUDED_MB_MSG_ACCEPTER_H
+#define INCLUDED_MB_MSG_ACCEPTER_H
+
+#include <mb_common.h>
+
+/*!
+ * \brief abstract class that accepts messages
+ */
+class mb_msg_accepter {
+public:
+  mb_msg_accepter(){};
+  virtual ~mb_msg_accepter();
+
+  virtual void operator()(pmt_t signal, pmt_t data, pmt_t metadata, mb_pri_t 
priority) = 0;
+};
+
+
+
+#endif /* INCLUDED_MB_MSG_ACCEPTER_H */

Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port.cc
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port.cc        
2007-01-27 18:39:31 UTC (rev 4298)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port.cc        
2007-01-28 02:27:29 UTC (rev 4299)
@@ -27,12 +27,13 @@
 #include <mb_port_detail.h>
 #include <mb_protocol_class.h>
 
-mb_port::mb_port(const std::string &port_name,
+mb_port::mb_port(mb_mblock *mblock,
+                const std::string &port_name,
                 const std::string &protocol_class_name,
                 bool conjugated,
                 mb_port::port_type_t port_type)
-  : d_detail(mb_port_detail_sptr(new mb_port_detail())),
-    d_port_name(port_name), d_conjugated(conjugated), d_port_type(port_type)
+  : d_port_name(port_name), d_conjugated(conjugated), d_port_type(port_type),
+    d_mblock(mblock)
 {
   pmt_t pc = mb_protocol_class_lookup(pmt_intern(protocol_class_name));
   if (pmt_is_null(pc)){

Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port.h
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port.h 2007-01-27 
18:39:31 UTC (rev 4298)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port.h 2007-01-28 
02:27:29 UTC (rev 4299)
@@ -24,7 +24,7 @@
 #include <mb_common.h>
 
 /*!
- * \brief Public port characteristics
+ * \brief Abstract port characteristics
  */
 class mb_port : boost::noncopyable
 {
@@ -38,20 +38,21 @@
   };
 
 private:
-  friend class mb_mblock_impl;
 
-  mb_port_detail_sptr   d_detail;
   std::string          d_port_name;
   pmt_t                        d_protocol_class;
   bool                 d_conjugated;
   port_type_t          d_port_type;
 
-  // private constructor
-  mb_port(const std::string &port_name,
-               const std::string &protocol_class_name,
-               bool conjugated,
-               mb_port::port_type_t port_type);
+protected:
+  mb_mblock           *d_mblock;  // mblock we're defined in
 
+  // protected constructor
+  mb_port(mb_mblock *mblock,
+         const std::string &port_name,
+         const std::string &protocol_class_name,
+         bool conjugated,
+         mb_port::port_type_t port_type);
 
 public:
   std::string  port_name() const { return d_port_name; }
@@ -62,7 +63,7 @@
   pmt_t                incoming_message_set() const;
   pmt_t                outgoing_message_set() const;
 
-  ~mb_port();
+  virtual ~mb_port();
 
   /*!
    * \brief send a message
@@ -72,12 +73,11 @@
    * \param metadata   optional metadata
    * \param priority   the urgency at which the message is sent
    */
-  void
+  virtual void
   send(pmt_t signal,
        pmt_t data = PMT_NIL,
        pmt_t metadata = PMT_NIL,
-       mb_pri_t priority = MB_PRI_DEFAULT);
-
+       mb_pri_t priority = MB_PRI_DEFAULT) = 0;
 };
 
 #endif /* INCLUDED_MB_PORT_H */

Added: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port_simple.cc
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port_simple.cc         
                (rev 0)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port_simple.cc 
2007-01-28 02:27:29 UTC (rev 4299)
@@ -0,0 +1,59 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2007 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <mb_port_simple.h>
+#include <mb_msg_accepter.h>
+
+mb_port_simple::mb_port_simple(mb_mblock *mblock,
+                              const std::string &port_name,
+                              const std::string &protocol_class_name,
+                              bool conjugated,
+                              mb_port::port_type_t port_type)
+  : mb_port(mblock, port_name, protocol_class_name, conjugated, port_type)
+{
+}
+
+mb_port_simple::~mb_port_simple()
+{
+  // nop
+}
+
+void
+mb_port_simple::send(pmt_t signal, pmt_t data, pmt_t metadata, mb_pri_t 
priority)
+{
+  mb_msg_accepter_sptr  accepter = find_accepter();
+  if (accepter)
+    (*accepter)(signal, data, metadata, priority);
+}
+
+mb_msg_accepter_sptr
+mb_port_simple::find_accepter()
+{
+  mb_msg_accepter_sptr r;
+
+  // FIXME, actually do the work ;)
+
+  return r;
+}

Added: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port_simple.h
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port_simple.h          
                (rev 0)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port_simple.h  
2007-01-28 02:27:29 UTC (rev 4299)
@@ -0,0 +1,59 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2007 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+#ifndef INCLUDED_MB_PORT_SIMPLE_H
+#define INCLUDED_MB_PORT_SIMPLE_H
+
+#include <mb_port.h>
+
+/*!
+ * \brief Concrete port realization
+ */
+class mb_port_simple : public mb_port
+{
+protected:
+  mb_msg_accepter_sptr
+  find_accepter();
+
+public:
+  mb_port_simple(mb_mblock *mblock,
+                const std::string &port_name,
+                const std::string &protocol_class_name,
+                bool conjugated,
+                mb_port::port_type_t port_type);
+
+  ~mb_port_simple();
+
+  /*!
+   * \brief send a message
+   *
+   * \param signal     the event name
+   * \param data       optional data
+   * \param metadata   optional metadata
+   * \param priority   the urgency at which the message is sent
+   */
+  void
+  send(pmt_t signal,
+       pmt_t data = PMT_NIL,
+       pmt_t metadata = PMT_NIL,
+       mb_pri_t priority = MB_PRI_DEFAULT);
+};
+
+#endif /* INCLUDED_MB_PORT_SIMPLE_H */





reply via email to

[Prev in Thread] Current Thread [Next in Thread]