|
gr-baz Package
|
00001 /* -*- c++ -*- */ 00002 /* 00003 * Copyright 2007,2013 Free Software Foundation, Inc. 00004 * 00005 * This file is part of GNU Radio 00006 * 00007 * GNU Radio is free software; you can redistribute it and/or modify 00008 * it under the terms of the GNU General Public License as published by 00009 * the Free Software Foundation; either version 3, or (at your option) 00010 * any later version. 00011 * 00012 * GNU Radio is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00015 * GNU General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU General Public License 00018 * along with GNU Radio; see the file COPYING. If not, write to 00019 * the Free Software Foundation, Inc., 51 Franklin Street, 00020 * Boston, MA 02110-1301, USA. 00021 */ 00022 00023 /* 00024 * gr-baz by Balint Seeber (http://spench.net/contact) 00025 * Information, documentation & samples: http://wiki.spench.net/wiki/gr-baz 00026 */ 00027 00028 #ifndef INCLUDED_BAZ_DELAY_H 00029 #define INCLUDED_BAZ_DELAY_H 00030 00031 #include <gr_sync_block.h> 00032 #include <boost/thread.hpp> 00033 00034 class BAZ_API baz_delay; 00035 typedef boost::shared_ptr<baz_delay> baz_delay_sptr; 00036 00037 BAZ_API baz_delay_sptr baz_make_delay (size_t itemsize, int delay); 00038 00039 /*! 00040 * \brief delay the input by a certain number of samples 00041 * \ingroup misc_blk 00042 */ 00043 class BAZ_API baz_delay : public gr_sync_block 00044 { 00045 friend BAZ_API baz_delay_sptr baz_make_delay (size_t itemsize, int delay); 00046 00047 baz_delay (size_t itemsize, int delay); 00048 00049 boost::mutex d_mutex; 00050 size_t d_itemsize; 00051 int d_delay; 00052 unsigned char* d_buffer; 00053 int d_buffer_length; 00054 int d_zero; 00055 int d_buffer_pos; 00056 int d_buffer_use; 00057 00058 public: 00059 int delay () const { return d_delay; } 00060 void set_delay (int delay); 00061 00062 int work (int noutput_items, 00063 gr_vector_const_void_star &input_items, 00064 gr_vector_void_star &output_items); 00065 }; 00066 00067 #endif