discuss-gnuradio
[Top][All Lists]
Advanced

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

[Discuss-gnuradio] Message Passing


From: Activecat
Subject: [Discuss-gnuradio] Message Passing
Date: Wed, 14 May 2014 14:11:12 +0800

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

reply via email to

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