diff --git a/gr-jay/grc/jay_message_debug.xml b/gr-jay/grc/jay_message_debug.xml new file mode 100644 index 0000000..b0dbf38 --- /dev/null +++ b/gr-jay/grc/jay_message_debug.xml @@ -0,0 +1,21 @@ + + + Message Debug + jay_message_debug + [jay] + import jay + jay.message_debug() + + + control + message + 1 + + + + status + message + 1 + + + diff --git a/gr-jay/include/jay/message_debug.h b/gr-jay/include/jay/message_debug.h new file mode 100644 index 0000000..1b13a1a --- /dev/null +++ b/gr-jay/include/jay/message_debug.h @@ -0,0 +1,56 @@ +/* -*- c++ -*- */ +/* + * Copyright 2019 Jay Arrowfield. + * + * This 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 3, or (at your option) + * any later version. + * + * This software 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 software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + + +#ifndef INCLUDED_JAY_MESSAGE_DEBUG_H +#define INCLUDED_JAY_MESSAGE_DEBUG_H + +#include +#include + +namespace gr { + namespace jay { + + /*! + * \brief <+description of block+> + * \ingroup jay + * + */ + class JAY_API message_debug : virtual public gr::block + { + public: + typedef boost::shared_ptr sptr; + + /*! + * \brief Return a shared_ptr to a new instance of jay::message_debug. + * + * To avoid accidental use of raw pointers, jay::message_debug's + * constructor is in a private implementation + * class. jay::message_debug::make is the public interface for + * creating new instances. + */ + static sptr make(); + }; + + } // namespace jay +} // namespace gr + +#endif /* INCLUDED_JAY_MESSAGE_DEBUG_H */ + diff --git a/gr-jay/lib/message_debug_impl.cc b/gr-jay/lib/message_debug_impl.cc new file mode 100644 index 0000000..1f9e7ea --- /dev/null +++ b/gr-jay/lib/message_debug_impl.cc @@ -0,0 +1,86 @@ +/* -*- c++ -*- */ +/* + * Copyright 2019 Jay Arrowfield. + * + * This 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 3, or (at your option) + * any later version. + * + * This software 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 software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include "message_debug_impl.h" + +namespace gr { + namespace jay { + + message_debug::sptr + message_debug::make() + { + return gnuradio::get_initial_sptr + (new message_debug_impl()); + } + + /* + * The private constructor + */ + message_debug_impl::message_debug_impl() + : gr::block("message_debug", + gr::io_signature::make(0, 0, sizeof(int)), + gr::io_signature::make(0, 0, sizeof(int))) + { + m_msg_port_in = pmt::mp("control"); + m_msg_port_out = pmt::mp("status"); + message_port_register_in(m_msg_port_in); + message_port_register_out(m_msg_port_out); + set_msg_handler(m_msg_port_in, boost::bind(&message_debug_impl::set_msg, this, _1)); + } + + /* + * Our virtual destructor. + */ + message_debug_impl::~message_debug_impl() + { + } + + void + message_debug_impl::forecast (int noutput_items, gr_vector_int &ninput_items_required) + { + ninput_items_required[0] = noutput_items; + } + + int + message_debug_impl::general_work (int noutput_items, + gr_vector_int &ninput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items) + { + const int *in = (const int *) input_items[0]; + int *out = (int *) output_items[0]; + + // Do <+signal processing+> + // Tell runtime system how many input items we consumed on + // each input stream. + consume_each (noutput_items); + + // Tell runtime system how many output items we produced. + return noutput_items; + } + + } /* namespace jay */ +} /* namespace gr */ + diff --git a/gr-jay/lib/message_debug_impl.h b/gr-jay/lib/message_debug_impl.h new file mode 100644 index 0000000..482b089 --- /dev/null +++ b/gr-jay/lib/message_debug_impl.h @@ -0,0 +1,65 @@ +/* -*- c++ -*- */ +/* + * Copyright 2019 Jay Arrowfield. + * + * This 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 3, or (at your option) + * any later version. + * + * This software 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 software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef INCLUDED_JAY_MESSAGE_DEBUG_IMPL_H +#define INCLUDED_JAY_MESSAGE_DEBUG_IMPL_H + +#include + +namespace gr { + namespace jay { + + class message_debug_impl : public message_debug + { + private: + // Nothing to declare in this block. + pmt::pmt_t m_msg_port_in; + pmt::pmt_t m_msg_port_out; + + void set_msg(pmt::pmt_t msg) + { + if (pmt::is_dict(msg)) + { + fprintf(stderr, "Is dictionary\n!"); + } + else + { + fprintf(stderr, "Sym: %s\n", pmt::symbol_to_string(msg).c_str()); + } + } + + public: + message_debug_impl(); + ~message_debug_impl(); + + // Where all the action really happens + void forecast (int noutput_items, gr_vector_int &ninput_items_required); + + int general_work(int noutput_items, + gr_vector_int &ninput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items); + }; + + } // namespace jay +} // namespace gr + +#endif /* INCLUDED_JAY_MESSAGE_DEBUG_IMPL_H */ +