commit-gnuradio
[Top][All Lists]
Advanced

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

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


From: eb
Subject: [Commit-gnuradio] r4302 - gnuradio/branches/developers/eb/mb/mblock/src/lib
Date: Sun, 28 Jan 2007 00:14:26 -0700 (MST)

Author: eb
Date: 2007-01-28 00:14:26 -0700 (Sun, 28 Jan 2007)
New Revision: 4302

Added:
   gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_msg_accepter_smp.cc
   gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_msg_accepter_smp.h
Modified:
   gnuradio/branches/developers/eb/mb/mblock/src/lib/Makefile.am
   gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock.h
   gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.cc
   gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.h
   gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_message.cc
   gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_message.h
   gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_prims.cc
   gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_prims.h
Log:
more mblock work-in-progress

Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/Makefile.am
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/Makefile.am       
2007-01-28 05:37:38 UTC (rev 4301)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/Makefile.am       
2007-01-28 07:14:26 UTC (rev 4302)
@@ -38,6 +38,7 @@
        mb_mblock_impl.cc               \
        mb_message.cc                   \
        mb_msg_accepter.cc              \
+       mb_msg_accepter_smp.cc          \
        mb_msg_queue.cc                 \
        mb_port.cc                      \
        mb_port_simple.cc               \
@@ -73,6 +74,7 @@
        mb_connection.h                 \
        mb_endpoint.h                   \
        mb_mblock_impl.h                \
+       mb_msg_accepter_smp.h           \
        mb_port_detail.h                \
        mb_runtime_impl.h               \
        qa_mblock.h                     \

Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock.h
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock.h       
2007-01-28 05:37:38 UTC (rev 4301)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock.h       
2007-01-28 07:14:26 UTC (rev 4302)
@@ -24,6 +24,7 @@
 #include <mb_common.h>
 #include <mb_message.h>
 #include <mb_port.h>
+#include <boost/enable_shared_from_this.hpp>
 
 
 /*!
@@ -45,7 +46,8 @@
  *
  * Subclass this to define your mblocks.
  */
-class mb_mblock : boost::noncopyable
+class mb_mblock : boost::noncopyable,
+                 public boost::enable_shared_from_this<mb_mblock>
 {
 private:
   mb_mblock_impl_sptr          d_impl;         // implementation details
@@ -181,7 +183,15 @@
    *
    * The traversal stops and returns false if any call to visitor returns 
false.
    */
-  bool walk_tree(mb_visitor *visitor, const std::string &path="");
+  bool
+  walk_tree(mb_visitor *visitor, const std::string &path="");
+
+
+  //! \implementation
+  // internal use only
+  mb_mblock_impl_sptr
+  impl() const { return d_impl; }
+
 };
 
 

Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.cc
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.cc 
2007-01-28 05:37:38 UTC (rev 4301)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.cc 
2007-01-28 07:14:26 UTC (rev 4302)
@@ -29,6 +29,7 @@
 #include <mb_port_simple.h>
 #include <mb_exception.h>
 #include <mb_util.h>
+#include <mb_msg_accepter_smp.h>
 
 
 static pmt_t s_self = pmt_intern("self");
@@ -222,3 +223,12 @@
   return true;
 }
 
+mb_msg_accepter_sptr
+mb_mblock_impl::make_accepter(const std::string port_name)
+{
+  mb_msg_accepter *ma =
+    new mb_msg_accepter_smp(d_mb->shared_from_this(),
+                           pmt_intern(port_name));
+
+  return mb_msg_accepter_sptr(ma);
+}

Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.h
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.h  
2007-01-28 05:37:38 UTC (rev 4301)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.h  
2007-01-28 07:14:26 UTC (rev 4302)
@@ -1,6 +1,6 @@
 /* -*- c++ -*- */
 /*
- * Copyright 2006 Free Software Foundation, Inc.
+ * Copyright 2006,2007 Free Software Foundation, Inc.
  * 
  * This file is part of GNU Radio
  * 
@@ -23,6 +23,7 @@
 
 #include <mb_mblock.h>
 #include <mb_connection.h>
+#include <mb_msg_queue.h>
 #include <list>
 #include <map>
 
@@ -43,6 +44,8 @@
   mb_comp_map_t                        d_comp_map;     // our components
   mb_conn_table                        d_conn_table;   // our connections
 
+  mb_msg_queue                 d_msgq;         // incoming messages for us
+
 public:
   mb_mblock_impl(mb_mblock *mb);
   ~mb_mblock_impl();
@@ -136,6 +139,12 @@
   bool
   walk_tree(mb_visitor *visitor, const std::string &path="");
   
+  mb_msg_accepter_sptr
+  make_accepter(const std::string port_name);
+
+  mb_msg_queue &
+  msgq() { return d_msgq; }
+
   /*
    * Our implementation methods
    */

Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_message.cc
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_message.cc     
2007-01-28 05:37:38 UTC (rev 4301)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_message.cc     
2007-01-28 07:14:26 UTC (rev 4302)
@@ -31,7 +31,8 @@
 }
 
 mb_message::mb_message(pmt_t signal, pmt_t data, pmt_t metadata, mb_pri_t 
priority)
-  : d_signal(signal), d_data(data), d_metadata(metadata), d_priority(priority)
+  : d_signal(signal), d_data(data), d_metadata(metadata), d_priority(priority),
+    d_port_id(PMT_NIL)
 {
 }
 

Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_message.h
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_message.h      
2007-01-28 05:37:38 UTC (rev 4301)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_message.h      
2007-01-28 07:14:26 UTC (rev 4302)
@@ -34,7 +34,7 @@
  * \param metadata     information about the data
  * \param priority     urgency
  */
-mb_message_sptr 
+mb_message_sptr
 mb_make_message(pmt_t signal,
                pmt_t data = PMT_NIL,
                pmt_t metadata = PMT_NIL,
@@ -46,7 +46,7 @@
   pmt_t                  d_data;
   pmt_t                  d_metadata;
   mb_pri_t       d_priority;
-  // foo         d_rcvd_port_id;
+  pmt_t                  d_port_id;            // name of port msg was rcvd on 
(symbol)
 
   friend class mb_msg_queue;
 
@@ -63,7 +63,9 @@
   pmt_t data() const { return d_data; }
   pmt_t metadata() const { return d_metadata; }
   mb_pri_t priority() const { return d_priority; }
-  // foo rcvd_port_id const { return d_rcvd_port_id; }
+  pmt_t port_id() const { return d_port_id; }
+
+  void set_port_id(pmt_t port_id){ d_port_id = port_id; }
 };
 
 #endif /* INCLUDED_MB_MESSAGE_H */

Added: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_msg_accepter_smp.cc
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_msg_accepter_smp.cc    
                        (rev 0)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_msg_accepter_smp.cc    
2007-01-28 07:14:26 UTC (rev 4302)
@@ -0,0 +1,50 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2007 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <mb_msg_accepter_smp.h>
+#include <mb_common.h>
+#include <mb_mblock.h>
+#include <mb_mblock_impl.h>
+#include <mb_message.h>
+
+mb_msg_accepter_smp::mb_msg_accepter_smp(mb_mblock_sptr mblock, pmt_t 
port_name)
+  : d_mb(mblock), d_port_name(port_name)
+{
+}
+
+mb_msg_accepter_smp::~mb_msg_accepter_smp()
+{
+  // nop
+}
+
+void
+mb_msg_accepter_smp::operator()(pmt_t signal, pmt_t data,
+                               pmt_t metadata, mb_pri_t priority)
+{
+  mb_message_sptr msg = mb_make_message(signal, data, metadata, priority);
+  msg->set_port_id(d_port_name);
+  d_mb->impl()->msgq().insert(msg);
+
+  // FIXME tell runtime that we're ready to run
+}

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

Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_prims.cc
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_prims.cc        
2007-01-28 05:37:38 UTC (rev 4301)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_prims.cc        
2007-01-28 07:14:26 UTC (rev 4302)
@@ -28,6 +28,8 @@
 #include <mb_exception.h>
 #include <mb_msg_queue.h>
 #include <mb_message.h>
+#include <mb_mblock_impl.h>
+#include <mb_msg_accepter.h>
 #include <stdio.h>
 
 static pmt_t s_cs = pmt_intern("cs");
@@ -386,3 +388,32 @@
   CPPUNIT_ASSERT(q.get_highest_pri_msg() == 0);
 }
 
+////////////////////////////////////////////////////////////////
+
+void
+qa_mblock_prims::test_make_accepter()
+{
+  // create a block
+  mb_mblock_sptr mb = mb_mblock_sptr(new dp_2());
+
+  // use "internal use only" method...
+  mb_msg_accepter_sptr accepter = mb->impl()->make_accepter("cs");
+
+  // Now push a few messages into it...
+  //          signal       data          metadata     pri
+  (*accepter)(PMT_NIL, pmt_from_long(0), PMT_NIL, MB_PRI_BEST + 2);
+  (*accepter)(PMT_NIL, pmt_from_long(1), PMT_NIL, MB_PRI_BEST + 2);
+  (*accepter)(PMT_NIL, pmt_from_long(2), PMT_NIL, MB_PRI_BEST + 2);
+
+  // try to pull them out
+
+  pmt_t cs = pmt_intern("cs");
+
+  mb_message_sptr msg = mb->impl()->msgq().get_highest_pri_msg();
+  CPPUNIT_ASSERT(pmt_eq(cs, msg->port_id()));        // confirm that port_id 
is set
+  CPPUNIT_ASSERT_EQUAL(0L, pmt_to_long(msg->data())); // and that data is 
correct
+
+  CPPUNIT_ASSERT_EQUAL(1L, 
pmt_to_long(mb->impl()->msgq().get_highest_pri_msg()->data()));
+  CPPUNIT_ASSERT_EQUAL(2L, 
pmt_to_long(mb->impl()->msgq().get_highest_pri_msg()->data()));
+}
+

Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_prims.h
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_prims.h 
2007-01-28 05:37:38 UTC (rev 4301)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_prims.h 
2007-01-28 07:14:26 UTC (rev 4302)
@@ -32,6 +32,7 @@
   CPPUNIT_TEST(test_define_components);
   CPPUNIT_TEST(test_connect);
   CPPUNIT_TEST(test_msg_queue);
+  CPPUNIT_TEST(test_make_accepter);
   CPPUNIT_TEST_SUITE_END();
 
  private:
@@ -39,6 +40,7 @@
   void test_define_components();
   void test_connect();
   void test_msg_queue();
+  void test_make_accepter();
 };
 
 #endif /* INCLUDED_QA_MBLOCK_PRIMS_H */





reply via email to

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