diff options
author | Marcus Müller <mmueller@gnuradio.org> | 2019-10-05 22:11:29 +0200 |
---|---|---|
committer | Martin Braun <martin.braun@ettus.com> | 2020-01-02 18:06:50 -0800 |
commit | 32fdc512104cbbf5ab7d5e6d083e7843bca0e36b (patch) | |
tree | 98fc27f3741ec7776af8868a4309eadcff763138 /gr-blocks/lib/message_strobe_random_impl.cc | |
parent | 69a9ecf48971a352ddb1308efc4314b2dd79bd55 (diff) |
message_strobe_random: replace boost::random with C++11
Diffstat (limited to 'gr-blocks/lib/message_strobe_random_impl.cc')
-rw-r--r-- | gr-blocks/lib/message_strobe_random_impl.cc | 53 |
1 files changed, 25 insertions, 28 deletions
diff --git a/gr-blocks/lib/message_strobe_random_impl.cc b/gr-blocks/lib/message_strobe_random_impl.cc index fa7dcf9ae5..a719dc8829 100644 --- a/gr-blocks/lib/message_strobe_random_impl.cc +++ b/gr-blocks/lib/message_strobe_random_impl.cc @@ -49,17 +49,17 @@ message_strobe_random_impl::message_strobe_random_impl( : block("message_strobe_random", io_signature::make(0, 0, 0), io_signature::make(0, 0, 0)), - d_finished(false), + d_rng(), d_mean_ms(mean_ms), d_std_ms(std_ms), d_dist(dist), + pd(d_mean_ms), + nd(d_mean_ms, d_std_ms), + ud(d_mean_ms - d_std_ms, d_mean_ms + d_std_ms), + d_finished(false), d_msg(msg), - d_rng(), d_port(pmt::mp("strobe")) { - // allocate RNGs - update_dist(); - // set up ports message_port_register_out(d_port); d_thread = boost::shared_ptr<gr::thread::thread>( @@ -70,42 +70,39 @@ message_strobe_random_impl::message_strobe_random_impl( boost::bind(&message_strobe_random_impl::set_msg, this, _1)); } +void message_strobe_random_impl::set_mean(float mean_ms) +{ + d_mean_ms = mean_ms; + pd = std::poisson_distribution<>(d_mean_ms); + nd = std::normal_distribution<>(d_mean_ms, d_std_ms); + ud = std::uniform_real_distribution<>(d_mean_ms - d_std_ms, d_mean_ms + d_std_ms); +} + +float message_strobe_random_impl::mean() const { return d_mean_ms; } + +void message_strobe_random_impl::set_std(float std_ms) +{ + d_std_ms = std_ms; + nd = std::normal_distribution<>(d_mean_ms, d_std_ms); + ud = std::uniform_real_distribution<>(d_mean_ms - d_std_ms, d_mean_ms + d_std_ms); +} + long message_strobe_random_impl::next_delay() { switch (d_dist) { case STROBE_POISSON: // return d_variate_poisson->operator()(); - return static_cast<long>(d_variate_poisson->operator()()); + return static_cast<long>(pd(d_rng)); case STROBE_GAUSSIAN: - return static_cast<long>(d_variate_normal->operator()()); + return static_cast<long>(nd(d_rng)); case STROBE_UNIFORM: - return static_cast<long>(d_variate_uniform->operator()()); + return static_cast<long>(ud(d_rng)); default: throw std::runtime_error( "message_strobe_random_impl::d_distribution is very unhappy with you"); } } -void message_strobe_random_impl::update_dist() -{ - boost::poisson_distribution<> pd(d_mean_ms); - d_variate_poisson = boost::shared_ptr< - boost::variate_generator<boost::mt19937, boost::poisson_distribution<>>>( - new boost::variate_generator<boost::mt19937, boost::poisson_distribution<>>(d_rng, - pd)); - - boost::normal_distribution<> nd(d_mean_ms, d_std_ms); - d_variate_normal = boost::shared_ptr< - boost::variate_generator<boost::mt19937, boost::normal_distribution<>>>( - new boost::variate_generator<boost::mt19937, boost::normal_distribution<>>(d_rng, - nd)); - - boost::uniform_real<> ud(d_mean_ms - d_std_ms, d_mean_ms + d_std_ms); - d_variate_uniform = boost::shared_ptr< - boost::variate_generator<boost::mt19937, boost::uniform_real<>>>( - new boost::variate_generator<boost::mt19937, boost::uniform_real<>>(d_rng, ud)); -} - message_strobe_random_impl::~message_strobe_random_impl() { |