[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r4398 - gnuradio/branches/developers/eb/mb/mblock/src/
From: |
eb |
Subject: |
[Commit-gnuradio] r4398 - gnuradio/branches/developers/eb/mb/mblock/src/lib |
Date: |
Tue, 6 Feb 2007 15:15:29 -0700 (MST) |
Author: eb
Date: 2007-02-06 15:15:29 -0700 (Tue, 06 Feb 2007)
New Revision: 4398
Modified:
gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock.cc
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_port.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
gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_runtime_single_threaded.cc
gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_prims.cc
gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_send.cc
Log:
Message sends through RELAY ports are now being routed correctly.
Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock.cc
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock.cc
2007-02-06 18:58:05 UTC (rev 4397)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock.cc
2007-02-06 22:15:29 UTC (rev 4398)
@@ -125,3 +125,15 @@
{
return d_impl->fullname();
}
+
+void
+mb_mblock::set_fullname(const std::string name)
+{
+ d_impl->set_fullname(name);
+}
+
+mb_mblock *
+mb_mblock::parent() const
+{
+ return d_impl->mblock_parent();
+}
Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock.h
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock.h
2007-02-06 18:58:05 UTC (rev 4397)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock.h
2007-02-06 22:15:29 UTC (rev 4398)
@@ -179,9 +179,14 @@
public:
virtual ~mb_mblock();
+ void set_fullname(const std::string name);
+
//! Return full name of this block
std::string fullname() const;
+ //! Return the parent of this mblock, or 0 if we're the top-level block.
+ mb_mblock *parent() const;
+
/*!
* \brief Perform a pre-order depth-first traversal of the hierarchy.
*
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-02-06 18:58:05 UTC (rev 4397)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.cc
2007-02-06 22:15:29 UTC (rev 4398)
@@ -51,7 +51,7 @@
////////////////////////////////////////////////////////////////////////
mb_mblock_impl::mb_mblock_impl(mb_mblock *mb)
- : d_mb(mb), d_mb_parent(0), d_fullname("top")
+ : d_mb(mb), d_mb_parent(0), d_fullname("<unknown>")
{
}
@@ -67,13 +67,6 @@
bool conjugated,
mb_port::port_type_t port_type)
{
-#if 0
- if (port_type == mb_port::RELAY)
- throw mbe_not_implemented(d_mb,
- "mb_block_impl::define_port: RELAY ports are not implemented: "
- + port_name);
-#endif
-
if (port_is_defined(port_name))
throw mbe_duplicate_port(d_mb, port_name);
@@ -94,8 +87,6 @@
component->d_impl->d_mb_parent = d_mb; // set component's parent link
d_comp_map[name] = component;
-
- component->d_impl->set_fullname(this->fullname() + "/" + name); // set
hierarchical name
}
void
@@ -235,16 +226,17 @@
return mb_msg_accepter_sptr(ma);
}
-mb_port_sptr
-mb_mblock_impl::lookup_port_on_other_end(const mb_port *port)
+bool
+mb_mblock_impl::lookup_other_endpoint(const mb_port *port, mb_endpoint *ep)
{
mb_conn_iter it;
int which_ep = 0;
if (!d_conn_table.lookup_conn_by_port(port, &it, &which_ep))
- return mb_port_sptr(); // eqv to null pointer
+ return false;
- return it->d_ep[which_ep^1].port();
+ *ep = it->d_ep[which_ep^1];
+ return true;
}
mb_mblock_sptr
@@ -258,3 +250,10 @@
return d_comp_map[comp_name];
}
+
+void
+mb_mblock_impl::set_fullname(const std::string &name)
+{
+ d_fullname = name;
+}
+
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-02-06 18:58:05 UTC (rev 4397)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.h
2007-02-06 22:15:29 UTC (rev 4398)
@@ -150,11 +150,21 @@
//! Return full name of this block
std::string fullname() const { return d_fullname; }
- //! If bound, return port on the other end of the connection, else null.
- mb_port_sptr
- lookup_port_on_other_end(const mb_port *port);
+ //! Set the name of this block
+ void set_fullname(const std::string &name);
+ /*!
+ * \brief If bound, store endpoint from the other end of the connection.
+ *
+ * \param port [in] port the port that we're searching for.
+ * \param ep [out] the other end point from the matching connection.
+ *
+ * \returns true iff there's a matching connection.
+ */
+ bool
+ lookup_other_endpoint(const mb_port *port, mb_endpoint *ep);
+
mb_mblock *
mblock() const { return d_mb; }
@@ -164,6 +174,7 @@
mb_mblock_sptr
component(const std::string &comp_name);
+
/*
* Our implementation methods
*/
@@ -186,8 +197,6 @@
endpoints_are_compatible(const mb_endpoint &ep0,
const mb_endpoint &ep1);
- //! Set the name of this block
- void set_fullname(const std::string &name){ d_fullname = name; }
};
Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port.h
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port.h 2007-02-06
18:58:05 UTC (rev 4397)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port.h 2007-02-06
22:15:29 UTC (rev 4398)
@@ -54,6 +54,8 @@
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 protocol_class() const { return d_protocol_class; }
Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port_simple.cc
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port_simple.cc
2007-02-06 18:58:05 UTC (rev 4397)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port_simple.cc
2007-02-06 22:15:29 UTC (rev 4398)
@@ -28,6 +28,7 @@
#include <mb_exception.h>
#include <mb_mblock.h>
#include <mb_mblock_impl.h>
+#include <assert.h>
mb_port_simple::mb_port_simple(mb_mblock *mblock,
@@ -47,63 +48,82 @@
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 (port_type() == mb_port::RELAY) // Can't send directly to a RELAY port
+ throw mbe_invalid_port_type(mblock(), mblock()->fullname(), port_name());
+
+ mb_msg_accepter_sptr accepter = find_accepter(this);
if (accepter)
(*accepter)(signal, data, metadata, priority);
}
+
mb_msg_accepter_sptr
-mb_port_simple::find_accepter()
+mb_port_simple::find_accepter(mb_port_simple *start)
{
+ mb_port_simple *p = start;
+ mb_port_simple *pp = 0;
+ mb_mblock *context = 0;
+ mb_endpoint peer_ep;
mb_msg_accepter_sptr r;
- mb_mblock *mb = 0;
- switch(port_type()){
+ // Set up initial context.
+
+ switch(p->port_type()){
case mb_port::INTERNAL: // binding is in our name space
- mb = d_mblock;
+ context = p->mblock();
break;
case mb_port::EXTERNAL: // binding is in parent's name space
- mb = d_mblock->impl()->mblock_parent();
+ context = p->mblock()->parent();
break;
- case mb_port::RELAY:
- throw std::logic_error("Can't happen: mb_port_simple::find_accepter send
to relay [1]");
-
default:
- throw std::logic_error("Can't happen: mb_port_simple::find_accepter [2]");
+ throw std::logic_error("Can't happen: mb_port_simple::find_accepter [1]");
}
- // std::cerr << d_mblock->fullname() << ":" << port_name();
- mb_port_sptr peer = mb->impl()->lookup_port_on_other_end(this);
- // std::cerr << "\n@@@ find_accepter: peer = " << peer << std::endl;
- if (!peer){ // not bound, return equivalent of null pointer.
- // std::cerr << std::endl;
- return r;
- }
+ traverse:
+ if (!context->impl()->lookup_other_endpoint(p, &peer_ep))
+ return mb_msg_accepter_sptr(); // not bound
+
+ pp = dynamic_cast<mb_port_simple *>(peer_ep.port().get()); // peer port
+ assert(pp);
- mb_port_simple *ps_peer = 0;
-
- switch (peer->port_type()){
- case mb_port::INTERNAL:
+ switch (pp->port_type()){
+ case mb_port::INTERNAL: // Terminate here.
case mb_port::EXTERNAL:
- // FIXME if we ever instantiate other types of ports, this will need work
- ps_peer = dynamic_cast<mb_port_simple *>(peer.get());
- // std::cerr << " --> " << ps_peer->d_mblock->fullname() << ":" <<
ps_peer->port_name() << std::endl;
- r = ps_peer->make_accepter();
+ r = pp->make_accepter();
// FIXME cache the result
return r;
- case mb_port::RELAY:
- throw mbe_not_implemented(0, "mb_port_simple::find_accepter(RELAY)");
+ case mb_port::RELAY: // Traverse to other side of relay port.
+ if (peer_ep.inside_of_relay_port_p()){
+ // We're on inside of relay port, headed out.
+ p = pp;
+ context = p->mblock()->parent();
+ // Corner case: we're attempting to traverse a relay port on the border
+ // of the top block...
+ if (!context)
+ return mb_msg_accepter_sptr(); // not bound
+
+ goto traverse;
+ }
+ else {
+ // We're on the outside of relay port, headed in.
+ p = pp;
+ context = p->mblock();
+ goto traverse;
+ }
+ break;
+
default:
- throw std::logic_error("Can't happen: mb_port_simple::find_accepter [3]");
+ throw std::logic_error("Can't happen: mb_port_simple::find_accepter [2]");
}
}
+
mb_msg_accepter_sptr
mb_port_simple::make_accepter()
{
Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port_simple.h
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port_simple.h
2007-02-06 18:58:05 UTC (rev 4397)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port_simple.h
2007-02-06 22:15:29 UTC (rev 4398)
@@ -29,8 +29,8 @@
class mb_port_simple : public mb_port
{
protected:
- mb_msg_accepter_sptr
- find_accepter();
+ static mb_msg_accepter_sptr
+ find_accepter(mb_port_simple *start);
mb_msg_accepter_sptr
make_accepter();
Modified:
gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_runtime_single_threaded.cc
===================================================================
---
gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_runtime_single_threaded.cc
2007-02-06 18:58:05 UTC (rev 4397)
+++
gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_runtime_single_threaded.cc
2007-02-06 22:15:29 UTC (rev 4398)
@@ -44,6 +44,7 @@
public:
bool operator()(mb_mblock *mblock, const std::string &path)
{
+ mblock->set_fullname(path);
mblock->init_fsm();
return true;
}
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-02-06 18:58:05 UTC (rev 4397)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_prims.cc
2007-02-06 22:15:29 UTC (rev 4398)
@@ -107,32 +107,16 @@
// define the protocol class
pmt_t pc = mb_make_protocol_class(pmt_intern("cs-protocol"),
- pmt_cons(pmt_intern("start"),
- pmt_cons(pmt_intern("stop"),
- PMT_NIL)),
+ pmt_list2(pmt_intern("start"),
+ pmt_intern("stop")),
PMT_NIL);
// std::cout << "pc = " << pc << '\n';
mb_mblock_sptr mb2 = mb_mblock_sptr(new dp_2());
- // intf = mb2->peer_interface();
- // CPPUNIT_ASSERT_EQUAL(size_t(1), intf.size());
- // CPPUNIT_ASSERT(pmt_eq(s_cs, intf[0]->port_name()));
-
-
// raises pmt_exception because of duplicate port definition of "cs"
CPPUNIT_ASSERT_THROW(mb_mblock_sptr(new dp_3()), mbe_duplicate_port);
-
-#if 0
- try {
- mb_mblock_sptr mb2 = mb_mblock_sptr(new dp_2());
- }
- catch (pmt_exception &e){
- std::cerr << e.msg() << ' ' << e.obj() << '\n';
- }
-#endif
-
}
// ================================================================
@@ -325,13 +309,13 @@
qa_mblock_prims::test_connect()
{
// define the protocol class
- mb_make_protocol_class(pmt_intern("data"), // name
of class
- pmt_cons(pmt_intern("data"), PMT_NIL), // in
- PMT_NIL); // out
+ mb_make_protocol_class(pmt_intern("data"), // name of class
+ pmt_list1(pmt_intern("data")), // in
+ PMT_NIL); // out
- mb_make_protocol_class(pmt_intern("i/o"), // name
of class
- pmt_cons(pmt_intern("in"), PMT_NIL), // in
- pmt_cons(pmt_intern("out"), PMT_NIL)); // out
+ mb_make_protocol_class(pmt_intern("i/o"), // name of class
+ pmt_list1(pmt_intern("in")), // in
+ pmt_list1(pmt_intern("out"))); // out
mb_runtime_sptr rt = mb_make_runtime();
@@ -420,4 +404,3 @@
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_send.cc
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_send.cc
2007-02-06 18:58:05 UTC (rev 4397)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_send.cc
2007-02-06 22:15:29 UTC (rev 4398)
@@ -337,122 +337,59 @@
msg = c0c0->impl()->msgq().get_highest_pri_msg();
CPPUNIT_ASSERT(msg);
- std::cerr << msg->data() << std::endl;
+ //std::cerr << msg->data() << std::endl;
CPPUNIT_ASSERT_EQUAL(s_p2, msg->port_id());
CPPUNIT_ASSERT(pmt_equal(pmt_list3(pmt_intern("top/c1"), s_p1,
pmt_from_long(0)),
msg->data()));
msg = c0c0->impl()->msgq().get_highest_pri_msg();
CPPUNIT_ASSERT(msg);
- std::cerr << msg->data() << std::endl;
+ //std::cerr << msg->data() << std::endl;
CPPUNIT_ASSERT_EQUAL(s_p2, msg->port_id());
CPPUNIT_ASSERT(pmt_equal(pmt_list3(pmt_intern("top/c1"), s_p1,
pmt_from_long(1)),
msg->data()));
-#if 0
- // c1c0 should have received
- // two message from c0c0 via its e1
+ // c1 should have received
+ // two message from c0c0 via its p2
- msg = c1c0->impl()->msgq().get_highest_pri_msg();
+ msg = c1->impl()->msgq().get_highest_pri_msg();
CPPUNIT_ASSERT(msg);
- std::cerr << msg->data() << std::endl;
- CPPUNIT_ASSERT_EQUAL(s_e1, msg->port_id());
- CPPUNIT_ASSERT(pmt_equal(pmt_list3(pmt_intern("top/c0/c0"), s_e1,
pmt_from_long(0)),
+ //std::cerr << msg->data() << std::endl;
+ CPPUNIT_ASSERT_EQUAL(s_p2, msg->port_id());
+ CPPUNIT_ASSERT(pmt_equal(pmt_list3(pmt_intern("top/c0/c0"), s_p1,
pmt_from_long(0)),
msg->data()));
- msg = c1c0->impl()->msgq().get_highest_pri_msg();
+ msg = c1->impl()->msgq().get_highest_pri_msg();
CPPUNIT_ASSERT(msg);
- std::cerr << msg->data() << std::endl;
- CPPUNIT_ASSERT_EQUAL(s_e1, msg->port_id());
- CPPUNIT_ASSERT(pmt_equal(pmt_list3(pmt_intern("top/c0/c0"), s_e1,
pmt_from_long(1)),
+ //std::cerr << msg->data() << std::endl;
+ CPPUNIT_ASSERT_EQUAL(s_p2, msg->port_id());
+ CPPUNIT_ASSERT(pmt_equal(pmt_list3(pmt_intern("top/c0/c0"), s_p1,
pmt_from_long(1)),
msg->data()));
-#endif
-
}
-void
-qa_mblock_send::test_relay_routing_2()
-{
-}
-
-
-#if 0
// ================================================================
// test_relay_routing_2
// ================================================================
-// internal block for test_relay_routing
+// top-level container for test_relay_routing_2
-class rr2 : public mb_mblock
+class rr0_b : public mb_mblock
{
- mb_port_sptr d_e1;
-
public:
- rr2();
- ~rr2();
- void init_fsm();
+ rr0_b();
+ ~rr0_b();
};
-rr2::rr2()
+rr0_b::rr0_b()
{
- d_e1 = define_port("e1", "simple-send", false, mb_port::EXTERNAL);
-}
-
-rr2::~rr2(){}
-
-void
-rr2::init_fsm()
-{
- // send two mesages via e1
- pmt_t our_name = pmt_intern(fullname());
- d_e1->send(s_data, pmt_list3(our_name, s_e1, pmt_from_long(0)));
- d_e1->send(s_data, pmt_list3(our_name, s_e1, pmt_from_long(1)));
-}
-
-// ----------------------------------------------------------------
-
-// intermediate block for test_relay_routing
-
-class rr1 : public mb_mblock
-{
- mb_port_sptr d_r1;
-
-public:
- rr1();
- ~rr1();
-};
-
-rr1::rr1()
-{
- d_r1 = define_port("r1", "simple-send", false, mb_port::RELAY);
-
- define_component("c0", mb_mblock_sptr(new rr2()));
-
- connect("self", "r1", "c0", "e1");
-}
-
-rr1::~rr1(){}
-
-// ----------------------------------------------------------------
-
-// top-level container for test_relay_routing
-
-class rr0 : public mb_mblock
-{
-public:
- rr0();
- ~rr0();
-};
-
-rr0::rr0()
-{
define_component("c0", mb_mblock_sptr(new rr1()));
define_component("c1", mb_mblock_sptr(new rr1()));
- connect("c0", "r1", "c1", "r1");
+ connect("c0", "p1", "c1", "p2");
+ connect("c0", "p2", "c1", "p1");
}
-rr0::~rr0(){}
+rr0_b::~rr0_b(){}
/*
@@ -461,14 +398,12 @@
* which is good, because at the time this is being written, it isn't.
*/
void
-qa_mblock_send::test_relay_routing()
+qa_mblock_send::test_relay_routing_2()
{
- return; // FIXME
-
mb_message_sptr msg;
mb_runtime_sptr rt = mb_make_runtime();
- mb_mblock_sptr top = mb_mblock_sptr(new rr0());
+ mb_mblock_sptr top = mb_mblock_sptr(new rr0_b());
rt->run(top);
// Reach into the guts and see if the messages ended up where they should
have
@@ -480,37 +415,36 @@
mb_mblock_sptr c1c0 = c1->impl()->component("c0");
// c0c0 should have received
- // two message from c1c0 via its e1
+ // two message from c1c0 via its p2
msg = c0c0->impl()->msgq().get_highest_pri_msg();
CPPUNIT_ASSERT(msg);
- std::cerr << msg->data() << std::endl;
- CPPUNIT_ASSERT_EQUAL(s_e1, msg->port_id());
- CPPUNIT_ASSERT(pmt_equal(pmt_list3(pmt_intern("top/c1/c0"), s_e1,
pmt_from_long(0)),
+ // std::cerr << msg->data() << std::endl;
+ CPPUNIT_ASSERT_EQUAL(s_p2, msg->port_id());
+ CPPUNIT_ASSERT(pmt_equal(pmt_list3(pmt_intern("top/c1/c0"), s_p1,
pmt_from_long(0)),
msg->data()));
msg = c0c0->impl()->msgq().get_highest_pri_msg();
CPPUNIT_ASSERT(msg);
- std::cerr << msg->data() << std::endl;
- CPPUNIT_ASSERT_EQUAL(s_e1, msg->port_id());
- CPPUNIT_ASSERT(pmt_equal(pmt_list3(pmt_intern("top/c1/c0"), s_e1,
pmt_from_long(1)),
+ // std::cerr << msg->data() << std::endl;
+ CPPUNIT_ASSERT_EQUAL(s_p2, msg->port_id());
+ CPPUNIT_ASSERT(pmt_equal(pmt_list3(pmt_intern("top/c1/c0"), s_p1,
pmt_from_long(1)),
msg->data()));
// c1c0 should have received
- // two message from c0c0 via its e1
+ // two message from c0c0 via its p2
msg = c1c0->impl()->msgq().get_highest_pri_msg();
CPPUNIT_ASSERT(msg);
- std::cerr << msg->data() << std::endl;
- CPPUNIT_ASSERT_EQUAL(s_e1, msg->port_id());
- CPPUNIT_ASSERT(pmt_equal(pmt_list3(pmt_intern("top/c0/c0"), s_e1,
pmt_from_long(0)),
+ // std::cerr << msg->data() << std::endl;
+ CPPUNIT_ASSERT_EQUAL(s_p2, msg->port_id());
+ CPPUNIT_ASSERT(pmt_equal(pmt_list3(pmt_intern("top/c0/c0"), s_p1,
pmt_from_long(0)),
msg->data()));
msg = c1c0->impl()->msgq().get_highest_pri_msg();
CPPUNIT_ASSERT(msg);
- std::cerr << msg->data() << std::endl;
- CPPUNIT_ASSERT_EQUAL(s_e1, msg->port_id());
- CPPUNIT_ASSERT(pmt_equal(pmt_list3(pmt_intern("top/c0/c0"), s_e1,
pmt_from_long(1)),
+ // std::cerr << msg->data() << std::endl;
+ CPPUNIT_ASSERT_EQUAL(s_p2, msg->port_id());
+ CPPUNIT_ASSERT(pmt_equal(pmt_list3(pmt_intern("top/c0/c0"), s_p1,
pmt_from_long(1)),
msg->data()));
}
-#endif
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r4398 - gnuradio/branches/developers/eb/mb/mblock/src/lib,
eb <=