diff options
Diffstat (limited to 'gr-trellis/lib/constellation_metrics_cf_impl.cc')
-rw-r--r-- | gr-trellis/lib/constellation_metrics_cf_impl.cc | 100 |
1 files changed, 48 insertions, 52 deletions
diff --git a/gr-trellis/lib/constellation_metrics_cf_impl.cc b/gr-trellis/lib/constellation_metrics_cf_impl.cc index 79dbe414bd..6658e0e518 100644 --- a/gr-trellis/lib/constellation_metrics_cf_impl.cc +++ b/gr-trellis/lib/constellation_metrics_cf_impl.cc @@ -31,66 +31,62 @@ #include <iostream> namespace gr { - namespace trellis { +namespace trellis { - constellation_metrics_cf::sptr - constellation_metrics_cf::make(digital::constellation_sptr constellation, - digital::trellis_metric_type_t TYPE) - { - return gnuradio::get_initial_sptr - (new constellation_metrics_cf_impl(constellation, TYPE)); - } - - constellation_metrics_cf_impl::constellation_metrics_cf_impl(digital::constellation_sptr constellation, - digital::trellis_metric_type_t TYPE) - : block("constellation_metrics_cf", - io_signature::make(1, -1, sizeof(gr_complex)), - io_signature::make(1, -1, sizeof(float))), - d_constellation(constellation), - d_TYPE(TYPE), - d_O(constellation->arity()), - d_D(constellation->dimensionality()) - { - set_relative_rate((uint64_t)d_O, (uint64_t)d_D); - set_output_multiple((int)d_O); - } +constellation_metrics_cf::sptr +constellation_metrics_cf::make(digital::constellation_sptr constellation, + digital::trellis_metric_type_t TYPE) +{ + return gnuradio::get_initial_sptr( + new constellation_metrics_cf_impl(constellation, TYPE)); +} - constellation_metrics_cf_impl::~constellation_metrics_cf_impl() - { - } +constellation_metrics_cf_impl::constellation_metrics_cf_impl( + digital::constellation_sptr constellation, digital::trellis_metric_type_t TYPE) + : block("constellation_metrics_cf", + io_signature::make(1, -1, sizeof(gr_complex)), + io_signature::make(1, -1, sizeof(float))), + d_constellation(constellation), + d_TYPE(TYPE), + d_O(constellation->arity()), + d_D(constellation->dimensionality()) +{ + set_relative_rate((uint64_t)d_O, (uint64_t)d_D); + set_output_multiple((int)d_O); +} - void - constellation_metrics_cf_impl::forecast(int noutput_items, - gr_vector_int &ninput_items_required) - { - assert(noutput_items % d_O == 0); +constellation_metrics_cf_impl::~constellation_metrics_cf_impl() {} - unsigned int input_required = d_D * noutput_items / d_O; - unsigned int ninputs = ninput_items_required.size(); - for(unsigned int i = 0; i < ninputs; i++) - ninput_items_required[i] = input_required; - } +void constellation_metrics_cf_impl::forecast(int noutput_items, + gr_vector_int& ninput_items_required) +{ + assert(noutput_items % d_O == 0); - int - constellation_metrics_cf_impl::general_work(int noutput_items, - gr_vector_int &ninput_items, - gr_vector_const_void_star &input_items, - gr_vector_void_star &output_items) - { - unsigned int nstreams = input_items.size(); + unsigned int input_required = d_D * noutput_items / d_O; + unsigned int ninputs = ninput_items_required.size(); + for (unsigned int i = 0; i < ninputs; i++) + ninput_items_required[i] = input_required; +} - for(unsigned int m=0;m<nstreams;m++) { - const gr_complex *in = (gr_complex*)input_items[m]; - float *out = (float*)output_items[m]; +int constellation_metrics_cf_impl::general_work(int noutput_items, + gr_vector_int& ninput_items, + gr_vector_const_void_star& input_items, + gr_vector_void_star& output_items) +{ + unsigned int nstreams = input_items.size(); - for(unsigned int i = 0; i < noutput_items / d_O ; i++) { - d_constellation->calc_metric(&(in[i*d_D]), &(out[i*d_O]), d_TYPE); - } - } + for (unsigned int m = 0; m < nstreams; m++) { + const gr_complex* in = (gr_complex*)input_items[m]; + float* out = (float*)output_items[m]; - consume_each(d_D * noutput_items / d_O); - return noutput_items; + for (unsigned int i = 0; i < noutput_items / d_O; i++) { + d_constellation->calc_metric(&(in[i * d_D]), &(out[i * d_O]), d_TYPE); + } } - } /* namespace trellis */ + consume_each(d_D * noutput_items / d_O); + return noutput_items; +} + +} /* namespace trellis */ } /* namespace gr */ |