summaryrefslogtreecommitdiff
path: root/gr-trellis/lib/encoder_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gr-trellis/lib/encoder_impl.cc')
-rw-r--r--gr-trellis/lib/encoder_impl.cc153
1 files changed, 75 insertions, 78 deletions
diff --git a/gr-trellis/lib/encoder_impl.cc b/gr-trellis/lib/encoder_impl.cc
index ecb0410a5f..28c1db304d 100644
--- a/gr-trellis/lib/encoder_impl.cc
+++ b/gr-trellis/lib/encoder_impl.cc
@@ -29,103 +29,100 @@
#include <iostream>
namespace gr {
- namespace trellis {
+namespace trellis {
- template <class IN_T, class OUT_T>
- typename encoder<IN_T,OUT_T>::sptr
- encoder<IN_T,OUT_T>::make(const fsm &FSM, int ST)
- {
- return gnuradio::get_initial_sptr
- (new encoder_impl<IN_T,OUT_T>(FSM,ST,0,false));
- }
+template <class IN_T, class OUT_T>
+typename encoder<IN_T, OUT_T>::sptr encoder<IN_T, OUT_T>::make(const fsm& FSM, int ST)
+{
+ return gnuradio::get_initial_sptr(new encoder_impl<IN_T, OUT_T>(FSM, ST, 0, false));
+}
- template <class IN_T, class OUT_T>
- typename encoder<IN_T,OUT_T>::sptr
- encoder<IN_T,OUT_T>::make(const fsm &FSM, int ST, int K)
- {
- return gnuradio::get_initial_sptr
- (new encoder_impl<IN_T,OUT_T>(FSM,ST,K,true));
- }
+template <class IN_T, class OUT_T>
+typename encoder<IN_T, OUT_T>::sptr
+encoder<IN_T, OUT_T>::make(const fsm& FSM, int ST, int K)
+{
+ return gnuradio::get_initial_sptr(new encoder_impl<IN_T, OUT_T>(FSM, ST, K, true));
+}
- template <class IN_T, class OUT_T>
- encoder_impl<IN_T,OUT_T>::encoder_impl(const fsm &FSM, int ST, int K, bool B)
+template <class IN_T, class OUT_T>
+encoder_impl<IN_T, OUT_T>::encoder_impl(const fsm& FSM, int ST, int K, bool B)
: sync_block("encoder<IN_T,OUT_T>",
- io_signature::make(1, 1, sizeof(IN_T)),
- io_signature::make(1, 1, sizeof(OUT_T))),
+ io_signature::make(1, 1, sizeof(IN_T)),
+ io_signature::make(1, 1, sizeof(OUT_T))),
d_FSM(FSM),
d_ST(ST),
d_K(K),
d_B(B)
- {
- }
+{
+}
- template <class IN_T, class OUT_T>
- void encoder_impl<IN_T,OUT_T>::set_FSM(const fsm &FSM)
- {
- gr::thread::scoped_lock guard(this->d_setlock);
- d_FSM = FSM;
- }
+template <class IN_T, class OUT_T>
+void encoder_impl<IN_T, OUT_T>::set_FSM(const fsm& FSM)
+{
+ gr::thread::scoped_lock guard(this->d_setlock);
+ d_FSM = FSM;
+}
- template <class IN_T, class OUT_T>
- void encoder_impl<IN_T,OUT_T>::set_ST(int ST)
- {
- gr::thread::scoped_lock guard(this->d_setlock);
- d_ST = ST;
- }
+template <class IN_T, class OUT_T>
+void encoder_impl<IN_T, OUT_T>::set_ST(int ST)
+{
+ gr::thread::scoped_lock guard(this->d_setlock);
+ d_ST = ST;
+}
- template <class IN_T, class OUT_T>
- void encoder_impl<IN_T,OUT_T>::set_K(int K)
- {
- gr::thread::scoped_lock guard(this->d_setlock);
- d_K = K;
- }
+template <class IN_T, class OUT_T>
+void encoder_impl<IN_T, OUT_T>::set_K(int K)
+{
+ gr::thread::scoped_lock guard(this->d_setlock);
+ d_K = K;
+}
- template <class IN_T, class OUT_T>
- encoder_impl<IN_T,OUT_T>::~encoder_impl()
- {
- }
+template <class IN_T, class OUT_T>
+encoder_impl<IN_T, OUT_T>::~encoder_impl()
+{
+}
- template <class IN_T, class OUT_T>
- int
- encoder_impl<IN_T,OUT_T>::work(int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items)
- {
- gr::thread::scoped_lock guard(this->d_setlock);
- int ST_tmp = 0;
+template <class IN_T, class OUT_T>
+int encoder_impl<IN_T, OUT_T>::work(int noutput_items,
+ gr_vector_const_void_star& input_items,
+ gr_vector_void_star& output_items)
+{
+ gr::thread::scoped_lock guard(this->d_setlock);
+ int ST_tmp = 0;
- if (d_B){ // blockwise operation
- int nblocks = noutput_items /d_K;
- const IN_T *in = (const IN_T*)input_items[0];
- OUT_T *out = (OUT_T *) 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] = (OUT_T)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]];
- }
+ if (d_B) { // blockwise operation
+ int nblocks = noutput_items / d_K;
+ const IN_T* in = (const IN_T*)input_items[0];
+ OUT_T* out = (OUT_T*)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] =
+ (OUT_T)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 IN_T *in = (const IN_T*)input_items[0];
- OUT_T *out = (OUT_T *) output_items[0];
+ return nblocks * d_K;
+ } // end blockwise operation
+ else { // streaming operation
+ const IN_T* in = (const IN_T*)input_items[0];
+ OUT_T* out = (OUT_T*)output_items[0];
ST_tmp = d_ST;
- for(int i = 0; i < noutput_items; i++) {
- out[i] = (OUT_T)d_FSM.OS()[ST_tmp*d_FSM.I()+in[i]];
- ST_tmp = (int)d_FSM.NS()[ST_tmp*d_FSM.I()+in[i]];
+ for (int i = 0; i < noutput_items; i++) {
+ out[i] = (OUT_T)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
- }
- template class encoder<std::uint8_t, std::uint8_t>;
- template class encoder<std::uint8_t, std::int16_t>;
- template class encoder<std::uint8_t, std::int32_t>;
- template class encoder<std::int16_t, std::int16_t>;
- template class encoder<std::int16_t, std::int32_t>;
- template class encoder<std::int32_t, std::int32_t>;
+ } // end streaming operation
+}
+template class encoder<std::uint8_t, std::uint8_t>;
+template class encoder<std::uint8_t, std::int16_t>;
+template class encoder<std::uint8_t, std::int32_t>;
+template class encoder<std::int16_t, std::int16_t>;
+template class encoder<std::int16_t, std::int32_t>;
+template class encoder<std::int32_t, std::int32_t>;
- } /* namespace trellis */
+} /* namespace trellis */
} /* namespace gr */