[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] [gnuradio] 08/16: fec: added tests for extended_encode
From: |
git |
Subject: |
[Commit-gnuradio] [gnuradio] 08/16: fec: added tests for extended_encoder input/output conversion. |
Date: |
Tue, 21 Jul 2015 19:27:52 +0000 (UTC) |
This is an automated email from the git hooks/post-receive script.
trondeau pushed a commit to branch master
in repository gnuradio.
commit 17194e6ada5eb0313b930e829fbdb40dc2e9ec7e
Author: Johannes Demel <address@hidden>
Date: Mon Jul 20 14:20:23 2015 +0200
fec: added tests for extended_encoder input/output conversion.
---
gr-fec/include/gnuradio/fec/dummy_encoder.h | 2 +-
gr-fec/lib/dummy_encoder_impl.cc | 22 ++++++++++---
gr-fec/lib/dummy_encoder_impl.h | 6 +++-
gr-fec/python/fec/qa_fecapi_dummy.py | 49 ++++++++++++++++++++++++++++-
4 files changed, 72 insertions(+), 7 deletions(-)
diff --git a/gr-fec/include/gnuradio/fec/dummy_encoder.h
b/gr-fec/include/gnuradio/fec/dummy_encoder.h
index 2270d1f..863234e 100644
--- a/gr-fec/include/gnuradio/fec/dummy_encoder.h
+++ b/gr-fec/include/gnuradio/fec/dummy_encoder.h
@@ -52,7 +52,7 @@ namespace gr {
* tagged stream style, this is the maximum allowable
* number of bits per frame.
*/
- static generic_encoder::sptr make(int frame_size);
+ static generic_encoder::sptr make(int frame_size, bool pack = false,
bool packed_bits = false);
/*!
* Sets the uncoded frame size to \p frame_size. If \p
diff --git a/gr-fec/lib/dummy_encoder_impl.cc b/gr-fec/lib/dummy_encoder_impl.cc
index 188b07c..d04ff22 100644
--- a/gr-fec/lib/dummy_encoder_impl.cc
+++ b/gr-fec/lib/dummy_encoder_impl.cc
@@ -34,14 +34,16 @@ namespace gr {
namespace code {
generic_encoder::sptr
- dummy_encoder::make(int frame_size)
+ dummy_encoder::make(int frame_size, bool pack, bool packed_bits)
{
return generic_encoder::sptr
- (new dummy_encoder_impl(frame_size));
+ (new dummy_encoder_impl(frame_size, pack, packed_bits));
}
- dummy_encoder_impl::dummy_encoder_impl(int frame_size)
- : generic_encoder("dummy_encoder")
+ dummy_encoder_impl::dummy_encoder_impl(int frame_size, bool pack, bool
packed_bits)
+ : generic_encoder("dummy_encoder"),
+ d_pack_input(pack),
+ d_packed_bits_output(packed_bits)
{
d_max_frame_size = frame_size;
set_frame_size(frame_size);
@@ -63,6 +65,18 @@ namespace gr {
return d_frame_size;
}
+ const char*
+ dummy_encoder_impl::get_input_conversion()
+ {
+ return d_pack_input ? "pack" : "none";
+ }
+
+ const char*
+ dummy_encoder_impl::get_output_conversion()
+ {
+ return d_packed_bits_output ? "packed_bits" : "none";
+ }
+
bool
dummy_encoder_impl::set_frame_size(unsigned int frame_size)
{
diff --git a/gr-fec/lib/dummy_encoder_impl.h b/gr-fec/lib/dummy_encoder_impl.h
index 7bfb1cd..029cecb 100644
--- a/gr-fec/lib/dummy_encoder_impl.h
+++ b/gr-fec/lib/dummy_encoder_impl.h
@@ -38,12 +38,16 @@ namespace gr {
void generic_work(void *inbuffer, void *outbuffer);
int get_output_size();
int get_input_size();
+ const char* get_input_conversion();
+ const char* get_output_conversion();
+ bool d_pack_input;
+ bool d_packed_bits_output;
unsigned int d_max_frame_size;
unsigned int d_frame_size;
public:
- dummy_encoder_impl(int frame_size);
+ dummy_encoder_impl(int frame_size, bool pack = false, bool packed_bits
= false);
~dummy_encoder_impl();
bool set_frame_size(unsigned int frame_size);
diff --git a/gr-fec/python/fec/qa_fecapi_dummy.py
b/gr-fec/python/fec/qa_fecapi_dummy.py
index a07890f..9471c71 100644
--- a/gr-fec/python/fec/qa_fecapi_dummy.py
+++ b/gr-fec/python/fec/qa_fecapi_dummy.py
@@ -20,9 +20,10 @@
# Boston, MA 02110-1301, USA.
#
-from gnuradio import gr, gr_unittest
+from gnuradio import gr, gr_unittest, blocks
import fec_swig as fec
from _qa_helper import _qa_helper
+import numpy as np
from extended_encoder import extended_encoder
from extended_decoder import extended_decoder
@@ -186,5 +187,51 @@ class test_fecapi_dummy(gr_unittest.TestCase):
self.assertRaises(AttributeError, lambda: extended_decoder(dec,
threading=threading, puncpat="11"))
+ def test_extended_pack_data(self):
+ # test if extended encoder gets correct values for input and output
conversion.
+ n_frames = 10
+ frame_size = 32
+
+ data = np.random.randint(0, 2, n_frames * frame_size)
+ packed_data = np.packbits(data)
+
+ tb = gr.top_block()
+
+ src = blocks.vector_source_b(data)
+ snk0 = blocks.vector_sink_b(1)
+ snk1 = blocks.vector_sink_b(1)
+ snk2 = blocks.vector_sink_b(1)
+ snk3 = blocks.vector_sink_b(1)
+
+ packer = blocks.pack_k_bits_bb(8)
+ tb.connect(src, packer, snk0)
+
+ enc_unpacked = fec.dummy_encoder_make(frame_size, False, False)
+ ext_enc_unp = extended_encoder(enc_unpacked, threading='none',
puncpat='11')
+ tb.connect(src, ext_enc_unp, snk1)
+
+ enc_pack = fec.dummy_encoder_make(frame_size // 8, True, False)
+ ext_enc_pack = extended_encoder(enc_pack, threading='none',
puncpat='11')
+ tb.connect(src, ext_enc_pack, snk2)
+
+ enc_packed_bits = fec.dummy_encoder_make(frame_size // 8, False, True)
+ ext_enc_packed_bits = extended_encoder(enc_packed_bits,
threading='none', puncpat='11')
+ tb.connect(packer, ext_enc_packed_bits, snk3)
+
+ tb.run()
+
+ r0 = snk0.data()
+ r1 = snk1.data()
+ r2 = snk2.data()
+ r3 = snk3.data()
+
+ data = tuple(data)
+ packed_data = tuple(packed_data)
+ self.assertTupleEqual(packed_data, r0)
+ self.assertTupleEqual(data, r1)
+ self.assertTupleEqual(packed_data, r2)
+ self.assertTupleEqual(data, r3)
+
+
if __name__ == '__main__':
gr_unittest.run(test_fecapi_dummy, "test_fecapi_dummy.xml")
- [Commit-gnuradio] [gnuradio] branch master updated (55d8f48 -> cc973de), git, 2015/07/21
- [Commit-gnuradio] [gnuradio] 05/16: fec: extended encoder now appends unpack_k_bits(8) block after encoder to satisfy get_output_conversion() = unpack behaviour, git, 2015/07/21
- [Commit-gnuradio] [gnuradio] 02/16: fec: some initial refactoring for ber_bf, git, 2015/07/21
- [Commit-gnuradio] [gnuradio] 03/16: fec: fixed QA for ber_bf., git, 2015/07/21
- [Commit-gnuradio] [gnuradio] 04/16: fec: code clean-up for block 'ber_bf'., git, 2015/07/21
- [Commit-gnuradio] [gnuradio] 08/16: fec: added tests for extended_encoder input/output conversion.,
git <=
- [Commit-gnuradio] [gnuradio] 15/16: Merge remote-tracking branch 'fewu/crc32_unpack', git, 2015/07/21
- [Commit-gnuradio] [gnuradio] 01/16: updates to waterfall for suchsamples, git, 2015/07/21
- [Commit-gnuradio] [gnuradio] 10/16: Merge remote-tracking branch 'namccart/master' into master_waterfall_pdu, git, 2015/07/21
- [Commit-gnuradio] [gnuradio] 07/16: digital: added an option to the crc32_bb block that adds the unpacked CRC to the bit stream, git, 2015/07/21
- [Commit-gnuradio] [gnuradio] 12/16: qtgui: protect PDU handling waterfall port for wrong data type., git, 2015/07/21
- [Commit-gnuradio] [gnuradio] 09/16: Merge remote-tracking branch 'jdemel/fec/fix-extended_encoder', git, 2015/07/21
- [Commit-gnuradio] [gnuradio] 16/16: Merge branch 'maint', git, 2015/07/21
- [Commit-gnuradio] [gnuradio] 11/16: qtgui: waterfall PDU handling, git, 2015/07/21
- [Commit-gnuradio] [gnuradio] 13/16: qtgui: pdu handler for float waterfall plot., git, 2015/07/21
- [Commit-gnuradio] [gnuradio] 14/16: qtgui: waterfall plots, git, 2015/07/21