1 /* -*- c++ -*- */
2 /*
3 * Copyright 2004,2009,2010,2012,2015 Free Software Foundation, Inc.
4 *
5 * This file is part of GNU Radio
6 *
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)
10 * any later version.
11 *
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.
16 *
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.
21 */
22
23 #ifdef HAVE_CONFIG_H
24 #include "config.h"
25 #endif
26
27 #include "add_const_ff_impl.h"
28 #include <gnuradio/io_signature.h>
29
30 namespace gr {
31 namespace blocks {
32
make(float k)33 add_const_ff::sptr add_const_ff::make(float k)
34 {
35 return gnuradio::get_initial_sptr(new add_const_ff_impl(k));
36 }
37
add_const_ff_impl(float k)38 add_const_ff_impl::add_const_ff_impl(float k)
39 : sync_block("add_const_ff",
40 io_signature::make(1, 1, sizeof(float)),
41 io_signature::make(1, 1, sizeof(float))),
42 d_k(k)
43 {
44 }
45
work(int noutput_items,gr_vector_const_void_star & input_items,gr_vector_void_star & output_items)46 int add_const_ff_impl::work(int noutput_items,
47 gr_vector_const_void_star& input_items,
48 gr_vector_void_star& output_items)
49 {
50 const float* iptr = (const float*)input_items[0];
51 float* optr = (float*)output_items[0];
52
53 int size = noutput_items;
54
55 while (size >= 8) {
56 *optr++ = *iptr++ + d_k;
57 *optr++ = *iptr++ + d_k;
58 *optr++ = *iptr++ + d_k;
59 *optr++ = *iptr++ + d_k;
60 *optr++ = *iptr++ + d_k;
61 *optr++ = *iptr++ + d_k;
62 *optr++ = *iptr++ + d_k;
63 *optr++ = *iptr++ + d_k;
64 size -= 8;
65 }
66
67 while (size-- > 0) {
68 *optr++ = *iptr++ + d_k;
69 }
70
71 return noutput_items;
72 }
73
setup_rpc()74 void add_const_ff_impl::setup_rpc()
75 {
76 #ifdef GR_CTRLPORT
77 add_rpc_variable(rpcbasic_sptr(new rpcbasic_register_get<add_const_ff, float>(
78 alias(),
79 "Constant",
80 &add_const_ff::k,
81 pmt::from_double(-4.29e9),
82 pmt::from_double(4.29e9),
83 pmt::from_double(0),
84 "",
85 "Constant to add",
86 RPC_PRIVLVL_MIN,
87 DISPTIME | DISPOPTCPLX | DISPOPTSTRIP)));
88
89 add_rpc_variable(rpcbasic_sptr(
90 new rpcbasic_register_set<add_const_ff, float>(alias(),
91 "Constant",
92 &add_const_ff::set_k,
93 pmt::from_double(-4.29e9),
94 pmt::from_double(4.29e9),
95 pmt::from_double(0),
96 "",
97 "Constant to add",
98 RPC_PRIVLVL_MIN,
99 DISPNULL)));
100 #endif /* GR_CTRLPORT */
101 }
102
103 } /* namespace blocks */
104 } /* namespace gr */
105