Dear gurus,

I am learning gnuradio Message Passing feature, but couldn't get desirable
result.
The Message seems published successfully, but not subscribed by the Message
receiver.
How to correct the error ..?

The message sender block:

    // constructor
        message_source1_impl::message_source1_impl()
          : gr::sync_block("message_source1",
                  gr::io_signature::make(0, 0, 0),
                  gr::io_signature::make( 1, 1, sizeof(int)) )
        {
            message_port_register_out( pmt::mp("print") );
        }

        // send_message1
        void
        message_source1_impl::send_message1()
        {
            std::cout << "message_source1_impl::send_message():  invoked"
<< std::endl;
            pmt::pmt_t str0 = pmt::string_to_symbol( std::string("Welcome
2014"));
            message_port_pub( pmt::mp("print"), str0 );
        }

        // work
        int
        message_source1_impl::work(int noutput_items,
                  gr_vector_const_void_star &input_items,
                  gr_vector_void_star &output_items)
        {
            int *out = (int *) output_items[0];
            for (int i=0; i < noutput_items; i++)
                out[i] = (i+1) * (i+1);

            send_message1();
            return noutput_items;
        }



The message receiver block:

    // constructor
        message_sink1_impl::message_sink1_impl()
          : gr::sync_block("message_sink1",
                  gr::io_signature::make(0, 0, 0),
                  gr::io_signature::make( 1, 1, sizeof(int)) )
        {
            message_port_register_in( pmt::mp("print") );
            set_msg_handler( pmt::mp("print"), boost::bind(
&message_sink1_impl::handler1, this, _1 ) );
        }

        // message handler
        void
        message_sink1_impl::handler1( pmt::pmt_t myMessage )
        {
            std::cout << "message_sink1_impl::handler1():  invoked" <<
std::endl;
            pmt::print( myMessage );
        }

        // work
        int
        message_sink1_impl::work(int noutput_items,
                  gr_vector_const_void_star &input_items,
                  gr_vector_void_star &output_items)
        {
            int *out = (int *) output_items[0];
            for (int i=0; i < noutput_items; i++)
                out[i] = i+1;

            return noutput_items;
        }



Flow graph execution output:
    Executing: "/home/mmkk/gnuradio/gr-activecat/apps/top_block.py"
    message_source1_impl::send_message():  invoked
    message_source1_impl::send_message():  invoked
    message_source1_impl::send_message():  invoked
    message_source1_impl::send_message():  invoked
    message_source1_impl::send_message():  invoked
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to