Skip to content

Commit ead5872

Browse files
cmrinconwillcode
authored andcommitted
max_gain parameter added to agc constructors
Signed-off-by: cmrincon <[email protected]>
1 parent c36e9ab commit ead5872

23 files changed

+74
-54
lines changed

gr-analog/grc/analog_agc2_xx.block.yml

+2-4
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,7 @@ outputs:
4242
templates:
4343
imports: from gnuradio import analog
4444
make: |-
45-
analog.agc2_${type.fcn}(${attack_rate}, ${decay_rate}, ${reference}, ${gain})
46-
self.${id}.set_max_gain(${max_gain})
45+
analog.agc2_${type.fcn}(${attack_rate}, ${decay_rate}, ${reference}, ${gain}, ${max_gain})
4746
callbacks:
4847
- set_attack_rate(${attack_rate})
4948
- set_decay_rate(${decay_rate})
@@ -55,8 +54,7 @@ cpp_templates:
5554
includes: ['#include <gnuradio/analog/agc2_${type.fcn}.h>']
5655
declarations: 'analog::agc2_${type.fcn}::sptr ${id};'
5756
make: |-
58-
this->${id} = analog::agc2_${type.fcn}::make(${attack_rate}, ${decay_rate}, ${reference}, ${gain});
59-
this->${id}->set_max_gain(${max_gain});
57+
this->${id} = analog::agc2_${type.fcn}::make(${attack_rate}, ${decay_rate}, ${reference}, ${gain}, ${max_gain});
6058
callbacks:
6159
- set_attack_rate(${attack_rate})
6260
- set_decay_rate(${decay_rate})

gr-analog/grc/analog_agc3_xx.block.yml

+2-4
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,7 @@ outputs:
4646
templates:
4747
imports: from gnuradio import analog
4848
make: |-
49-
analog.agc3_${type.fcn}(${attack_rate}, ${decay_rate}, ${reference}, ${gain}, ${iir_update_decim})
50-
self.${id}.set_max_gain(${max_gain})
49+
analog.agc3_${type.fcn}(${attack_rate}, ${decay_rate}, ${reference}, ${gain}, ${iir_update_decim}, ${max_gain})
5150
callbacks:
5251
- set_attack_rate(${attack_rate})
5352
- set_decay_rate(${decay_rate})
@@ -59,8 +58,7 @@ cpp_templates:
5958
includes: ['#include <gnuradio/analog/agc3_${type.fcn}.h>']
6059
declarations: 'analog::agc3_${type.fcn}::sptr ${id};'
6160
make: |-
62-
this->${id} = analog::agc3_${type.fcn}::make(${attack_rate}, ${decay_rate}, ${reference}, ${gain}, ${iir_update_decim});
63-
this->${id}->set_max_gain(${max_gain});
61+
this->${id} = analog::agc3_${type.fcn}::make(${attack_rate}, ${decay_rate}, ${reference}, ${gain}, ${iir_update_decim}, ${max_gain});
6462
callbacks:
6563
- set_attack_rate(${attack_rate})
6664
- set_decay_rate(${decay_rate})

gr-analog/grc/analog_agc_xx.block.yml

+2-4
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,7 @@ outputs:
3838
templates:
3939
imports: from gnuradio import analog
4040
make: |-
41-
analog.agc_${type.fcn}(${rate}, ${reference}, ${gain})
42-
self.${id}.set_max_gain(${max_gain})
41+
analog.agc_${type.fcn}(${rate}, ${reference}, ${gain}, ${max_gain})
4342
callbacks:
4443
- set_rate(${rate})
4544
- set_reference(${reference})
@@ -50,8 +49,7 @@ cpp_templates:
5049
includes: ['#include <gnuradio/analog/agc_${type.fcn}.h>']
5150
declarations: 'analog::agc_${type.fcn}::sptr ${id};'
5251
make: |-
53-
this->${id} = analog::agc_${type.fcn}::make(${rate}, ${reference}, ${gain});
54-
this->${id}->set_max_gain(${max_gain});
52+
this->${id} = analog::agc_${type.fcn}::make(${rate}, ${reference}, ${gain}, ${max_gain});
5553
callbacks:
5654
- set_rate(${rate})
5755
- set_reference(${reference})

gr-analog/include/gnuradio/analog/agc2_cc.h

+3-1
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,13 @@ class ANALOG_API agc2_cc : virtual public sync_block
3939
* \param decay_rate the update rate of the loop when in decay mode.
4040
* \param reference reference value to adjust signal power to.
4141
* \param gain initial gain value.
42+
* \param max_gain maximum gain value (0 for unlimited).
4243
*/
4344
static sptr make(float attack_rate = 1e-1,
4445
float decay_rate = 1e-2,
4546
float reference = 1.0,
46-
float gain = 1.0);
47+
float gain = 1.0,
48+
float max_gain = 0.0);
4749

4850
virtual float attack_rate() const = 0;
4951
virtual float decay_rate() const = 0;

gr-analog/include/gnuradio/analog/agc2_ff.h

+3-1
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,13 @@ class ANALOG_API agc2_ff : virtual public sync_block
3939
* \param decay_rate the update rate of the loop when in decay mode.
4040
* \param reference reference value to adjust signal power to.
4141
* \param gain initial gain value.
42+
* \param max_gain maximum gain value (0 for unlimited).
4243
*/
4344
static sptr make(float attack_rate = 1e-1,
4445
float decay_rate = 1e-2,
4546
float reference = 1.0,
46-
float gain = 1.0);
47+
float gain = 1.0,
48+
float max_gain = 0.0);
4749

4850
virtual float attack_rate() const = 0;
4951
virtual float decay_rate() const = 0;

gr-analog/include/gnuradio/analog/agc3_cc.h

+3-1
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,14 @@ class ANALOG_API agc3_cc : virtual public sync_block
4444
* \param gain initial gain value.
4545
* \param iir_update_decim stride by this number of samples before
4646
* computing an IIR gain update
47+
* \param max_gain maximum gain value (0 for unlimited).
4748
*/
4849
static sptr make(float attack_rate = 1e-1,
4950
float decay_rate = 1e-2,
5051
float reference = 1.0,
5152
float gain = 1.0,
52-
int iir_update_decim = 1);
53+
int iir_update_decim = 1,
54+
float max_gain = 0.0);
5355

5456
virtual float attack_rate() const = 0;
5557
virtual float decay_rate() const = 0;

gr-analog/include/gnuradio/analog/agc_cc.h

+5-1
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,12 @@ class ANALOG_API agc_cc : virtual public sync_block
3737
* \param rate the update rate of the loop.
3838
* \param reference reference value to adjust signal power to.
3939
* \param gain initial gain value.
40+
* \param max_gain maximum gain value (0 for unlimited).
4041
*/
41-
static sptr make(float rate = 1e-4, float reference = 1.0, float gain = 1.0);
42+
static sptr make(float rate = 1e-4,
43+
float reference = 1.0,
44+
float gain = 1.0,
45+
float max_gain = 0.0);
4246

4347
virtual float rate() const = 0;
4448
virtual float reference() const = 0;

gr-analog/include/gnuradio/analog/agc_ff.h

+5-1
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,12 @@ class ANALOG_API agc_ff : virtual public sync_block
3737
* \param rate the update rate of the loop.
3838
* \param reference reference value to adjust signal power to.
3939
* \param gain initial gain value.
40+
* \param max_gain maximum gain value (0 for unlimited).
4041
*/
41-
static sptr make(float rate = 1e-4, float reference = 1.0, float gain = 1.0);
42+
static sptr make(float rate = 1e-4,
43+
float reference = 1.0,
44+
float gain = 1.0,
45+
float max_gain = 0.0);
4246

4347
virtual float rate() const = 0;
4448
virtual float reference() const = 0;

gr-analog/lib/agc2_cc_impl.cc

+6-8
Original file line numberDiff line numberDiff line change
@@ -19,21 +19,19 @@
1919
namespace gr {
2020
namespace analog {
2121

22-
agc2_cc::sptr
23-
agc2_cc::make(float attack_rate, float decay_rate, float reference, float gain)
22+
agc2_cc::sptr agc2_cc::make(
23+
float attack_rate, float decay_rate, float reference, float gain, float max_gain)
2424
{
2525
return gnuradio::make_block_sptr<agc2_cc_impl>(
26-
attack_rate, decay_rate, reference, gain);
26+
attack_rate, decay_rate, reference, gain, max_gain);
2727
}
2828

29-
agc2_cc_impl::agc2_cc_impl(float attack_rate,
30-
float decay_rate,
31-
float reference,
32-
float gain)
29+
agc2_cc_impl::agc2_cc_impl(
30+
float attack_rate, float decay_rate, float reference, float gain, float max_gain)
3331
: sync_block("agc2_cc",
3432
io_signature::make(1, 1, sizeof(gr_complex)),
3533
io_signature::make(1, 1, sizeof(gr_complex))),
36-
kernel::agc2_cc(attack_rate, decay_rate, reference, gain, 65536)
34+
kernel::agc2_cc(attack_rate, decay_rate, reference, gain, max_gain)
3735
{
3836
const int alignment_multiple = volk_get_alignment() / sizeof(gr_complex);
3937
set_alignment(std::max(1, alignment_multiple));

gr-analog/lib/agc2_cc_impl.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ class agc2_cc_impl : public agc2_cc, kernel::agc2_cc
2222
agc2_cc_impl(float attack_rate = 1e-1,
2323
float decay_rate = 1e-2,
2424
float reference = 1.0,
25-
float gain = 1.0);
25+
float gain = 1.0,
26+
float max_gain = 0.0);
2627
~agc2_cc_impl() override;
2728

2829
float attack_rate() const override { return kernel::agc2_cc::attack_rate(); }

gr-analog/lib/agc2_ff_impl.cc

+6-8
Original file line numberDiff line numberDiff line change
@@ -18,23 +18,21 @@
1818
namespace gr {
1919
namespace analog {
2020

21-
agc2_ff::sptr
22-
agc2_ff::make(float attack_rate, float decay_rate, float reference, float gain)
21+
agc2_ff::sptr agc2_ff::make(
22+
float attack_rate, float decay_rate, float reference, float gain, float max_gain)
2323
{
2424
return gnuradio::make_block_sptr<agc2_ff_impl>(
25-
attack_rate, decay_rate, reference, gain);
25+
attack_rate, decay_rate, reference, gain, max_gain);
2626
}
2727

2828
agc2_ff_impl::~agc2_ff_impl() {}
2929

30-
agc2_ff_impl::agc2_ff_impl(float attack_rate,
31-
float decay_rate,
32-
float reference,
33-
float gain)
30+
agc2_ff_impl::agc2_ff_impl(
31+
float attack_rate, float decay_rate, float reference, float gain, float max_gain)
3432
: sync_block("agc2_ff",
3533
io_signature::make(1, 1, sizeof(float)),
3634
io_signature::make(1, 1, sizeof(float))),
37-
kernel::agc2_ff(attack_rate, decay_rate, reference, gain, 65536)
35+
kernel::agc2_ff(attack_rate, decay_rate, reference, gain, max_gain)
3836
{
3937
}
4038

gr-analog/lib/agc2_ff_impl.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ class agc2_ff_impl : public agc2_ff, kernel::agc2_ff
2222
agc2_ff_impl(float attack_rate = 1e-1,
2323
float decay_rate = 1e-2,
2424
float reference = 1.0,
25-
float gain = 1.0);
25+
float gain = 1.0,
26+
float max_gain = 0.0);
2627
~agc2_ff_impl() override;
2728

2829
float attack_rate() const override { return kernel::agc2_ff::attack_rate(); }

gr-analog/lib/agc3_cc_impl.cc

+5-3
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ agc3_cc::sptr agc3_cc::make(float attack_rate,
2626
float decay_rate,
2727
float reference,
2828
float gain,
29-
int iir_update_decim)
29+
int iir_update_decim,
30+
float max_gain)
3031
{
3132
return gnuradio::make_block_sptr<agc3_cc_impl>(
3233
attack_rate, decay_rate, reference, gain, iir_update_decim);
@@ -36,7 +37,8 @@ agc3_cc_impl::agc3_cc_impl(float attack_rate,
3637
float decay_rate,
3738
float reference,
3839
float gain,
39-
int iir_update_decim)
40+
int iir_update_decim,
41+
float max_gain)
4042
: sync_block("agc3_cc",
4143
io_signature::make(1, 1, sizeof(gr_complex)),
4244
io_signature::make(1, 1, sizeof(gr_complex))),
@@ -46,7 +48,7 @@ agc3_cc_impl::agc3_cc_impl(float attack_rate,
4648
set_attack_rate(attack_rate);
4749
set_decay_rate(decay_rate);
4850
set_gain(gain);
49-
set_max_gain(65536);
51+
set_max_gain(max_gain);
5052
test_and_log_value_domain(iir_update_decim, "input power sampling stride");
5153
d_iir_update_decim = iir_update_decim;
5254
set_output_multiple(iir_update_decim * 4);

gr-analog/lib/agc3_cc_impl.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ class agc3_cc_impl : public agc3_cc
2323
float decay_rate = 1e-2,
2424
float reference = 1.0,
2525
float gain = 1.0,
26-
int iir_update_decim = 1);
26+
int iir_update_decim = 1,
27+
float max_gain = 0.0);
2728
~agc3_cc_impl() override;
2829

2930
float attack_rate() const override;

gr-analog/lib/agc_cc_impl.cc

+4-4
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,16 @@
1919
namespace gr {
2020
namespace analog {
2121

22-
agc_cc::sptr agc_cc::make(float rate, float reference, float gain)
22+
agc_cc::sptr agc_cc::make(float rate, float reference, float gain, float max_gain)
2323
{
24-
return gnuradio::make_block_sptr<agc_cc_impl>(rate, reference, gain);
24+
return gnuradio::make_block_sptr<agc_cc_impl>(rate, reference, gain, max_gain);
2525
}
2626

27-
agc_cc_impl::agc_cc_impl(float rate, float reference, float gain)
27+
agc_cc_impl::agc_cc_impl(float rate, float reference, float gain, float max_gain)
2828
: sync_block("agc_cc",
2929
io_signature::make(1, 1, sizeof(gr_complex)),
3030
io_signature::make(1, 1, sizeof(gr_complex))),
31-
kernel::agc_cc(rate, reference, gain, 65536)
31+
kernel::agc_cc(rate, reference, gain, max_gain)
3232
{
3333
const int alignment_multiple = volk_get_alignment() / sizeof(gr_complex);
3434
set_alignment(std::max(1, alignment_multiple));

gr-analog/lib/agc_cc_impl.h

+4-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,10 @@ namespace analog {
1919
class agc_cc_impl : public agc_cc, kernel::agc_cc
2020
{
2121
public:
22-
agc_cc_impl(float rate = 1e-4, float reference = 1.0, float gain = 1.0);
22+
agc_cc_impl(float rate = 1e-4,
23+
float reference = 1.0,
24+
float gain = 1.0,
25+
float max_gain = 0.0);
2326
~agc_cc_impl() override;
2427

2528
float rate() const override { return kernel::agc_cc::rate(); }

gr-analog/lib/agc_ff_impl.cc

+4-4
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,16 @@
1818
namespace gr {
1919
namespace analog {
2020

21-
agc_ff::sptr agc_ff::make(float rate, float reference, float gain)
21+
agc_ff::sptr agc_ff::make(float rate, float reference, float gain, float max_gain)
2222
{
23-
return gnuradio::make_block_sptr<agc_ff_impl>(rate, reference, gain);
23+
return gnuradio::make_block_sptr<agc_ff_impl>(rate, reference, gain, max_gain);
2424
}
2525

26-
agc_ff_impl::agc_ff_impl(float rate, float reference, float gain)
26+
agc_ff_impl::agc_ff_impl(float rate, float reference, float gain, float max_gain)
2727
: sync_block("agc_ff",
2828
io_signature::make(1, 1, sizeof(float)),
2929
io_signature::make(1, 1, sizeof(float))),
30-
kernel::agc_ff(rate, reference, gain, 65536)
30+
kernel::agc_ff(rate, reference, gain, max_gain)
3131
{
3232
}
3333

gr-analog/lib/agc_ff_impl.h

+4-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,10 @@ namespace analog {
1919
class agc_ff_impl : public agc_ff, kernel::agc_ff
2020
{
2121
public:
22-
agc_ff_impl(float rate = 1e-4, float reference = 1.0, float gain = 1.0);
22+
agc_ff_impl(float rate = 1e-4,
23+
float reference = 1.0,
24+
float gain = 1.0,
25+
float max_gain = 0.0);
2326
~agc_ff_impl() override;
2427

2528
float rate() const override { return kernel::agc_ff::rate(); }

gr-analog/python/analog/bindings/agc2_cc_python.cc

+2-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
/* BINDTOOL_GEN_AUTOMATIC(0) */
1515
/* BINDTOOL_USE_PYGCCXML(0) */
1616
/* BINDTOOL_HEADER_FILE(agc2_cc.h) */
17-
/* BINDTOOL_HEADER_FILE_HASH(2b5f9a8e9b8b290d5d48493dbfb651cd) */
17+
/* BINDTOOL_HEADER_FILE_HASH(884743560bcaeddd51319b06f3a0674b) */
1818
/***********************************************************************************/
1919

2020
#include <pybind11/complex.h>
@@ -44,6 +44,7 @@ void bind_agc2_cc(py::module& m)
4444
py::arg("decay_rate") = 0.01,
4545
py::arg("reference") = 1.,
4646
py::arg("gain") = 1.,
47+
py::arg("max_gain") = 0.,
4748
D(agc2_cc, make))
4849

4950

gr-analog/python/analog/bindings/agc2_ff_python.cc

+2-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
/* BINDTOOL_GEN_AUTOMATIC(0) */
1515
/* BINDTOOL_USE_PYGCCXML(0) */
1616
/* BINDTOOL_HEADER_FILE(agc2_ff.h) */
17-
/* BINDTOOL_HEADER_FILE_HASH(9109f8c396a1a49bea1306f6edd36ea7) */
17+
/* BINDTOOL_HEADER_FILE_HASH(5e1d2da6d6800f26f91c43aa7829628e) */
1818
/***********************************************************************************/
1919

2020
#include <pybind11/complex.h>
@@ -44,6 +44,7 @@ void bind_agc2_ff(py::module& m)
4444
py::arg("decay_rate") = 0.01,
4545
py::arg("reference") = 1.,
4646
py::arg("gain") = 1.,
47+
py::arg("max_gain") = 0.,
4748
D(agc2_ff, make))
4849

4950

gr-analog/python/analog/bindings/agc3_cc_python.cc

+2-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
/* BINDTOOL_GEN_AUTOMATIC(0) */
1515
/* BINDTOOL_USE_PYGCCXML(0) */
1616
/* BINDTOOL_HEADER_FILE(agc3_cc.h) */
17-
/* BINDTOOL_HEADER_FILE_HASH(a3249a33ccef3b89642aa41df853772e) */
17+
/* BINDTOOL_HEADER_FILE_HASH(12cadbccb30acab3c1f27d0f05454c2b) */
1818
/***********************************************************************************/
1919

2020
#include <pybind11/complex.h>
@@ -45,6 +45,7 @@ void bind_agc3_cc(py::module& m)
4545
py::arg("reference") = 1.,
4646
py::arg("gain") = 1.,
4747
py::arg("iir_update_decim") = 1,
48+
py::arg("max_gain") = 0.,
4849
D(agc3_cc, make))
4950

5051

gr-analog/python/analog/bindings/agc_cc_python.cc

+2-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
/* BINDTOOL_GEN_AUTOMATIC(0) */
1515
/* BINDTOOL_USE_PYGCCXML(0) */
1616
/* BINDTOOL_HEADER_FILE(agc_cc.h) */
17-
/* BINDTOOL_HEADER_FILE_HASH(5c6f25a10209aa7d146e36b5aef27010) */
17+
/* BINDTOOL_HEADER_FILE_HASH(75e609d34c4d8fb4bb17373ed70befc3) */
1818
/***********************************************************************************/
1919

2020
#include <pybind11/complex.h>
@@ -43,6 +43,7 @@ void bind_agc_cc(py::module& m)
4343
py::arg("rate") = 1.0E-4,
4444
py::arg("reference") = 1.,
4545
py::arg("gain") = 1.,
46+
py::arg("max_gain") = 0.,
4647
D(agc_cc, make))
4748

4849

0 commit comments

Comments
 (0)