diff options
author | Johannes Demel <ufcsy@student.kit.edu> | 2015-09-24 19:02:27 +0200 |
---|---|---|
committer | Johannes Demel <ufcsy@student.kit.edu> | 2015-10-07 18:29:14 +0200 |
commit | 13f92e3e953f17735e1ff4d65c00ca2621fd6d99 (patch) | |
tree | e9193544333f4f72e658db77328edf5f859acac2 | |
parent | 8a4904d7f3c5878c42d1c0589e6ef7b1afd4a6be (diff) |
fec: add getter to 'ber_bf' total_errors member, change counter types to long
-rw-r--r-- | gr-fec/include/gnuradio/fec/ber_bf.h | 5 | ||||
-rw-r--r-- | gr-fec/lib/ber_bf_impl.cc | 3 | ||||
-rw-r--r-- | gr-fec/lib/ber_bf_impl.h | 6 |
3 files changed, 11 insertions, 3 deletions
diff --git a/gr-fec/include/gnuradio/fec/ber_bf.h b/gr-fec/include/gnuradio/fec/ber_bf.h index 2aa01c98b0..5128d98d3e 100644 --- a/gr-fec/include/gnuradio/fec/ber_bf.h +++ b/gr-fec/include/gnuradio/fec/ber_bf.h @@ -67,6 +67,11 @@ namespace gr { typedef boost::shared_ptr<ber_bf> sptr; /*! + * Get total number of errors counter value. + */ + virtual long total_errors() = 0; + + /*! * Calculate the BER between two streams of data. * * \param test_mode false for normal streaming mode (default); diff --git a/gr-fec/lib/ber_bf_impl.cc b/gr-fec/lib/ber_bf_impl.cc index 6e3dc85cab..5fd3ef049c 100644 --- a/gr-fec/lib/ber_bf_impl.cc +++ b/gr-fec/lib/ber_bf_impl.cc @@ -96,7 +96,8 @@ namespace gr { % d_total_errors % (d_total * 8) % outbuffer[0]); return 1; } - else if(calculate_log_ber() < d_ber_limit){ + // check for total_errors to prevent early shutdown at high SNR simulations + else if(calculate_log_ber() < d_ber_limit && d_total_errors > 0){ GR_LOG_INFO(d_logger, " Min. BER limit reached"); outbuffer[0] = d_ber_limit; d_total_errors = d_berminerrors + 1; diff --git a/gr-fec/lib/ber_bf_impl.h b/gr-fec/lib/ber_bf_impl.h index 15c747f659..75724a4281 100644 --- a/gr-fec/lib/ber_bf_impl.h +++ b/gr-fec/lib/ber_bf_impl.h @@ -31,8 +31,8 @@ namespace gr { class FEC_API ber_bf_impl : public ber_bf { private: - int d_total_errors; - int d_total; + long d_total_errors; + long d_total; bool d_test_mode; int d_berminerrors; float d_ber_limit; @@ -48,6 +48,8 @@ namespace gr { gr_vector_int& ninput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items); + + long total_errors() {return d_total_errors;}; }; } /* namespace fec */ |