diff options
author | Achilleas Anastasopoulos <anastas@umich.edu> | 2014-10-01 18:22:53 -0400 |
---|---|---|
committer | Achilleas Anastasopoulos <anastas@umich.edu> | 2014-10-08 12:46:21 -0400 |
commit | be8e888f80934a884287f0ec9eb62dd0d2b7f5e5 (patch) | |
tree | dc3406eb0a25bb3171458bfded74cfe192a775a5 /gr-trellis/lib | |
parent | 46e9dfed237990da20b5fb054b7fd33b1c152b4a (diff) |
Updated documentation and grc/python examples in gr-trellis.
Removed weird pyhton examples and made them grc files.
Diffstat (limited to 'gr-trellis/lib')
-rw-r--r-- | gr-trellis/lib/encoder_XX_impl.cc.t | 61 | ||||
-rw-r--r-- | gr-trellis/lib/encoder_XX_impl.h.t | 9 |
2 files changed, 45 insertions, 25 deletions
diff --git a/gr-trellis/lib/encoder_XX_impl.cc.t b/gr-trellis/lib/encoder_XX_impl.cc.t index 4b11e3c06d..f2e19929ca 100644 --- a/gr-trellis/lib/encoder_XX_impl.cc.t +++ b/gr-trellis/lib/encoder_XX_impl.cc.t @@ -37,15 +37,24 @@ namespace gr { @BASE_NAME@::make(const fsm &FSM, int ST) { return gnuradio::get_initial_sptr - (new @IMPL_NAME@(FSM,ST)); + (new @IMPL_NAME@(FSM,ST,0,false)); } - @IMPL_NAME@::@IMPL_NAME@(const fsm &FSM, int ST) + @BASE_NAME@::sptr + @BASE_NAME@::make(const fsm &FSM, int ST, int K) + { + return gnuradio::get_initial_sptr + (new @IMPL_NAME@(FSM,ST,K,true)); + } + + @IMPL_NAME@::@IMPL_NAME@(const fsm &FSM, int ST, int K, bool B) : sync_block("@BASE_NAME@", - io_signature::make(1, -1, sizeof(@I_TYPE@)), - io_signature::make(1, -1, sizeof(@O_TYPE@))), + io_signature::make(1, 1, sizeof(@I_TYPE@)), + io_signature::make(1, 1, sizeof(@O_TYPE@))), d_FSM(FSM), - d_ST(ST) + d_ST(ST), + d_K(K), + d_B(B) { } @@ -59,24 +68,32 @@ namespace gr { gr_vector_void_star &output_items) { int ST_tmp = 0; - int nstreams = input_items.size(); - - for(int m=0;m<nstreams;m++) { - const @I_TYPE@ *in = (const @I_TYPE@*)input_items[m]; - @O_TYPE@ *out = (@O_TYPE@ *) output_items[m]; - ST_tmp = d_ST; - // per stream processing - for(int i = 0; i < noutput_items; i++) { - out[i] = (@O_TYPE@)d_FSM.OS()[ST_tmp*d_FSM.I()+in[i]]; // direction of time? - ST_tmp = (int)d_FSM.NS()[ST_tmp*d_FSM.I()+in[i]]; - } - // end per stream processing - } - d_ST = ST_tmp; - - return noutput_items; - } + if (d_B){ // blockwise operation + int nblocks = noutput_items /d_K; + const @I_TYPE@ *in = (const @I_TYPE@*)input_items[0]; + @O_TYPE@ *out = (@O_TYPE@ *) output_items[0]; + for(int n = 0; n < nblocks; n++) { + ST_tmp = d_ST; + for(int i = 0; i < d_K; i++) { + out[n*d_K+i] = (@O_TYPE@)d_FSM.OS()[ST_tmp*d_FSM.I()+in[n*d_K+i]]; + ST_tmp = (int)d_FSM.NS()[ST_tmp*d_FSM.I()+in[n*d_K+i]]; + } + } + return nblocks*d_K; + } // end blockwise operation + else{ // streaming operation + const @I_TYPE@ *in = (const @I_TYPE@*)input_items[0]; + @O_TYPE@ *out = (@O_TYPE@ *) output_items[0]; + ST_tmp = d_ST; + for(int i = 0; i < noutput_items; i++) { + out[i] = (@O_TYPE@)d_FSM.OS()[ST_tmp*d_FSM.I()+in[i]]; + ST_tmp = (int)d_FSM.NS()[ST_tmp*d_FSM.I()+in[i]]; + } + d_ST = ST_tmp; + return noutput_items; + } // end streaming operation + } } /* namespace trellis */ } /* namespace gr */ diff --git a/gr-trellis/lib/encoder_XX_impl.h.t b/gr-trellis/lib/encoder_XX_impl.h.t index d58f9b0a87..69f853d9fe 100644 --- a/gr-trellis/lib/encoder_XX_impl.h.t +++ b/gr-trellis/lib/encoder_XX_impl.h.t @@ -35,17 +35,20 @@ namespace gr { private: fsm d_FSM; int d_ST; + int d_K; + bool d_B; + public: - @IMPL_NAME@(const fsm &FSM, int ST); + @IMPL_NAME@(const fsm &FSM, int ST, int K, bool B); ~@IMPL_NAME@(); fsm FSM() { return d_FSM;; } int ST() { return d_ST; } - + int K() { return d_K; } void set_FSM(fsm &FSM) { d_FSM = FSM; } void set_ST(int ST) { d_ST = ST; } - + void set_K(int K) { d_K = K; } int work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items); |