// // Copyright 2012 Josh Blum // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program 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 Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with io_sig program. If not, see . #ifndef INCLUDED_GNURADIO_GR_BLOCK_H #define INCLUDED_GNURADIO_GR_BLOCK_H #include #include #include #include #include #include struct GRAS_API gr_block : gnuradio::Block { gr_block(void); gr_block( const std::string &name, gr_io_signature_sptr input_signature, gr_io_signature_sptr output_signature ); template void set_msg_handler(T msg_handler){/*LOL*/} //! implements work -> calls general work int Work( const InputItems &input_items, const OutputItems &output_items ); /*! * \brief compute output items from input items * * \param noutput_items number of output items to write on each output stream * \param ninput_items number of input items available on each input stream * \param input_items vector of pointers to the input items, one entry per input stream * \param output_items vector of pointers to the output items, one entry per output stream * * \returns number of items actually written to each output stream, or -1 on EOF. * It is OK to return a value less than noutput_items. -1 <= return value <= noutput_items * * general_work must call consume or consume_each to indicate how many items * were consumed on each input stream. */ virtual int general_work( int noutput_items, gr_vector_int &ninput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items ); unsigned history(void) const { return gnuradio::Block::history(); } void set_history(unsigned history) { gnuradio::Block::set_history(history); } void set_alignment(const size_t alignment); bool is_unaligned(void); size_t fixed_rate_noutput_to_ninput(const size_t noutput_items); size_t interpolation(void) const; void set_interpolation(const size_t); size_t decimation(void) const; void set_decimation(const size_t); }; typedef boost::shared_ptr gr_block_sptr; #endif /*INCLUDED_GNURADIO_GR_BLOCK_H*/