commit-gnuradio
[Top][All Lists]
Advanced

[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")



reply via email to

[Prev in Thread] Current Thread [Next in Thread]