GNU Radio 3.4.2 C++ API
gr_complex_to_xxx.h
Go to the documentation of this file.
00001 /* -*- c++ -*- */
00002 /*
00003  * Copyright 2004 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 #ifndef INCLUDED_GR_COMPLEX_TO_XXX_H
00024 #define INCLUDED_GR_COMPLEX_TO_XXX_H
00025 
00026 #include <gr_sync_block.h>
00027 #include <gr_complex.h>
00028 
00029 class gr_complex_to_float;
00030 class gr_complex_to_real;
00031 class gr_complex_to_imag;
00032 class gr_complex_to_mag;
00033 class gr_complex_to_mag_squared;
00034 class gr_complex_to_arg;
00035 
00036 typedef boost::shared_ptr<gr_complex_to_float> gr_complex_to_float_sptr;
00037 typedef boost::shared_ptr<gr_complex_to_real> gr_complex_to_real_sptr;
00038 typedef boost::shared_ptr<gr_complex_to_imag> gr_complex_to_imag_sptr;
00039 typedef boost::shared_ptr<gr_complex_to_mag> gr_complex_to_mag_sptr;
00040 typedef boost::shared_ptr<gr_complex_to_mag_squared> gr_complex_to_mag_squared_sptr;
00041 typedef boost::shared_ptr<gr_complex_to_arg> gr_complex_to_arg_sptr;
00042 
00043 gr_complex_to_float_sptr gr_make_complex_to_float (unsigned int vlen=1);
00044 gr_complex_to_real_sptr gr_make_complex_to_real (unsigned int vlen=1);
00045 gr_complex_to_imag_sptr gr_make_complex_to_imag (unsigned int vlen=1);
00046 gr_complex_to_mag_sptr gr_make_complex_to_mag (unsigned int vlen=1);
00047 gr_complex_to_mag_squared_sptr gr_make_complex_to_mag_squared (unsigned int vlen=1);
00048 gr_complex_to_arg_sptr gr_make_complex_to_arg (unsigned int vlen=1);
00049 
00050 /*!
00051  * \brief convert a stream of gr_complex to 1 or 2 streams of float
00052  * \ingroup converter_blk
00053  * \param vlen  vector len (default 1)
00054  */
00055 class gr_complex_to_float : public gr_sync_block
00056 {
00057   friend gr_complex_to_float_sptr gr_make_complex_to_float (unsigned int vlen);
00058   gr_complex_to_float (unsigned int vlen);
00059 
00060   unsigned int  d_vlen;
00061 
00062  public:
00063   virtual int work (int noutput_items,
00064                     gr_vector_const_void_star &input_items,
00065                     gr_vector_void_star &output_items);
00066 };
00067 
00068 /*!
00069  * \brief complex in, real out (float)
00070  * \ingroup converter_blk
00071  * \param vlen  vector len (default 1)
00072  */
00073 class gr_complex_to_real : public gr_sync_block
00074 {
00075   friend gr_complex_to_real_sptr gr_make_complex_to_real (unsigned int vlen);
00076   gr_complex_to_real (unsigned int vlen);
00077 
00078   unsigned int  d_vlen;
00079 
00080  public:
00081   virtual int work (int noutput_items,
00082                     gr_vector_const_void_star &input_items,
00083                     gr_vector_void_star &output_items);
00084 };
00085 
00086 /*!
00087  * \brief complex in, imaginary out (float)
00088  * \ingroup converter_blk
00089  * \param vlen  vector len (default 1)
00090  */
00091 class gr_complex_to_imag : public gr_sync_block
00092 {
00093   friend gr_complex_to_imag_sptr gr_make_complex_to_imag (unsigned int vlen);
00094   gr_complex_to_imag (unsigned int vlen);
00095 
00096   unsigned int  d_vlen;
00097 
00098  public:
00099   virtual int work (int noutput_items,
00100                     gr_vector_const_void_star &input_items,
00101                     gr_vector_void_star &output_items);
00102 };
00103 
00104 /*!
00105  * \brief complex in, magnitude out (float)
00106  * \ingroup converter_blk
00107  * \param vlen  vector len (default 1)
00108  */
00109 class gr_complex_to_mag : public gr_sync_block
00110 {
00111   friend gr_complex_to_mag_sptr gr_make_complex_to_mag (unsigned int vlen);
00112   gr_complex_to_mag (unsigned int vlen);
00113 
00114   unsigned int  d_vlen;
00115 
00116  public:
00117   virtual int work (int noutput_items,
00118                     gr_vector_const_void_star &input_items,
00119                     gr_vector_void_star &output_items);
00120 };
00121 
00122 /*!
00123  * \brief complex in, magnitude squared out (float)
00124  * \ingroup converter_blk
00125  * \param vlen  vector len (default 1)
00126  */
00127 class gr_complex_to_mag_squared : public gr_sync_block
00128 {
00129   friend gr_complex_to_mag_squared_sptr gr_make_complex_to_mag_squared (unsigned int vlen);
00130   gr_complex_to_mag_squared (unsigned int vlen);
00131 
00132   unsigned int  d_vlen;
00133 
00134  public:
00135   virtual int work (int noutput_items,
00136                     gr_vector_const_void_star &input_items,
00137                     gr_vector_void_star &output_items);
00138 };
00139 
00140 /*!
00141  * \brief complex in, angle out (float) 
00142  * \ingroup converter_blk
00143  * \param vlen  vector len (default 1)
00144  */
00145 class gr_complex_to_arg : public gr_sync_block
00146 {
00147   friend gr_complex_to_arg_sptr gr_make_complex_to_arg (unsigned int vlen);
00148   gr_complex_to_arg (unsigned int vlen);
00149 
00150   unsigned int  d_vlen;
00151 
00152  public:
00153   virtual int work (int noutput_items,
00154                     gr_vector_const_void_star &input_items,
00155                     gr_vector_void_star &output_items);
00156 };
00157 
00158 #endif /* INCLUDED_GR_COMPLEX_TO_XXX_H */