diff options
Diffstat (limited to 'grc/src/grc_gnuradio/blks2/error_rate.py')
-rw-r--r-- | grc/src/grc_gnuradio/blks2/error_rate.py | 45 |
1 files changed, 22 insertions, 23 deletions
diff --git a/grc/src/grc_gnuradio/blks2/error_rate.py b/grc/src/grc_gnuradio/blks2/error_rate.py index eb09940cb..9b2df58ef 100644 --- a/grc/src/grc_gnuradio/blks2/error_rate.py +++ b/grc/src/grc_gnuradio/blks2/error_rate.py @@ -1,22 +1,22 @@ # Copyright 2008 Free Software Foundation, Inc. -# +# # This file is part of GNU Radio -# +# # GNU Radio is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3, or (at your option) # any later version. -# +# # GNU Radio is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with GNU Radio; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 51 Franklin Street, # Boston, MA 02110-1301, USA. -# +# default_win_size = 1000 @@ -31,7 +31,7 @@ class input_watcher(_threading.Thread): """ Read samples from the message queue and hand them to the callback. """ - + def __init__(self, msgq, callback): self._msgq = msgq self._callback = callback @@ -39,7 +39,7 @@ class input_watcher(_threading.Thread): self.setDaemon(1) self.keep_running = True self.start() - + def run(self): r = '' while True: @@ -49,27 +49,27 @@ class input_watcher(_threading.Thread): s = r + msg.to_string() i = (nitems-nitems%2)*itemsize r = s[i:] - s = s[:i] + s = s[:i] samples = numpy.fromstring(s, numpy.int8) - self._callback(samples) - + self._callback(samples) + class error_rate(gr.hier_block2): """ Sample the incoming data streams (byte) and calculate the bit or symbol error rate. Write the running rate to the output data stream (float). """ - - def __init__(self, type='BER', win_size=default_win_size, bits_per_symbol=2): - """! + + def __init__(self, type='BER', win_size=default_win_size, bits_per_symbol=2): + """ Error rate constructor. @param type a string 'BER' or 'SER' @param win_size the number of samples to calculate over @param bits_per_symbol the number of information bits per symbol (BER only) - """ + """ #init gr.hier_block2.__init__( - self, 'error_rate', - gr.io_signature(2, 2, gr.sizeof_char), + self, 'error_rate', + gr.io_signature(2, 2, gr.sizeof_char), gr.io_signature(1, 1, gr.sizeof_float), ) assert type in ('BER', 'SER') @@ -95,12 +95,12 @@ class error_rate(gr.hier_block2): self.connect((self, 0), (inter, 0)) self.connect((self, 1), (inter, 1)) self.connect(inter, msg_sink) - + def _handler_ber(self, samples): num = len(samples)/2 arr = numpy.zeros(num, numpy.float32) for i in range(num): - old_err = self._err_array[self._err_index] + old_err = self._err_array[self._err_index] #record error self._err_array[self._err_index] = _1s_counts[samples[i*2] ^ samples[i*2 + 1]] self._num_errs = self._num_errs + self._err_array[self._err_index] - old_err @@ -111,13 +111,13 @@ class error_rate(gr.hier_block2): arr[i] = float(self._num_errs)/float(self._num_samps*self._bits_per_symbol) #write message msg = gr.message_from_string(arr.tostring(), 0, gr.sizeof_float, num) - self._msgq_source.insert_tail(msg) - + self._msgq_source.insert_tail(msg) + def _handler_ser(self, samples): num = len(samples)/2 arr = numpy.zeros(num, numpy.float32) for i in range(num): - old_err = self._err_array[self._err_index] + old_err = self._err_array[self._err_index] #record error ref = samples[i*2] res = samples[i*2 + 1] @@ -134,5 +134,4 @@ class error_rate(gr.hier_block2): arr[i] = float(self._num_errs)/float(self._num_samps) #write message msg = gr.message_from_string(arr.tostring(), 0, gr.sizeof_float, num) - self._msgq_source.insert_tail(msg) - + self._msgq_source.insert_tail(msg) |