summaryrefslogtreecommitdiff
path: root/gr-trellis/lib/constellation_metrics_cf_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gr-trellis/lib/constellation_metrics_cf_impl.cc')
-rw-r--r--gr-trellis/lib/constellation_metrics_cf_impl.cc100
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 */