3
* Copyright 2008 Free Software Foundation, Inc.
5
* This file is part of GNU Radio
7
* GNU Radio is free software; you can redistribute it and/or modify
8
* it under the terms of the GNU General Public License as published by
9
* the Free Software Foundation; either version 3, or (at your option)
12
* GNU Radio is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
* GNU General Public License for more details.
17
* You should have received a copy of the GNU General Public License
18
* along with GNU Radio; see the file COPYING. If not, write to
19
* the Free Software Foundation, Inc., 51 Franklin Street,
20
* Boston, MA 02110-1301, USA.
28
#include <gr_iqcomp_cc.h>
29
#include <gr_io_signature.h>
32
gr_make_iqcomp_cc (float mu)
34
return gr_iqcomp_cc_sptr (new gr_iqcomp_cc (mu));
37
gr_iqcomp_cc::gr_iqcomp_cc (float mu)
38
: gr_sync_block ("iqcomp_cc",
39
gr_make_io_signature (1, 1, sizeof (gr_complex)),
40
gr_make_io_signature (1, 1, sizeof (gr_complex))),
48
gr_iqcomp_cc::work (int noutput_items,
49
gr_vector_const_void_star &input_items,
50
gr_vector_void_star &output_items)
52
const gr_complex *iptr = (gr_complex *) input_items[0];
53
// gr_complex *optr = (gr_complex *) output_items[0];
55
for(int i = 0 ; i < noutput_items ; i++) {
56
float i_out = iptr[i].real() - iptr[i].imag() * d_wq;
57
float q_out = iptr[i].imag() - iptr[i].real() * d_wi;
58
d_wi += d_mu * q_out * iptr[i].real();
59
d_wq += d_mu * i_out * iptr[i].imag();