~ubuntu-branches/ubuntu/trusty/gnuradio/trusty-updates

« back to all changes in this revision

Viewing changes to gr-trellis/src/lib/trellis_metrics_i.cc

  • Committer: Package Import Robot
  • Author(s): A. Maitland Bottoms
  • Date: 2012-02-26 21:26:16 UTC
  • mfrom: (1.1.4)
  • Revision ID: package-import@ubuntu.com-20120226212616-vsfkbi1158xshdql
Tags: 3.5.1-1
* new upstream version, re-packaged from scratch with modern tools
    closes: #642716, #645332, #394849, #616832, #590048, #642580,
    #647018, #557050, #559640, #631863
* CMake build

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* -*- c++ -*- */
2
 
/*
3
 
 * Copyright 2004 Free Software Foundation, Inc.
4
 
 * 
5
 
 * This file is part of GNU Radio
6
 
 * 
7
 
 * GNU Radio is free software; you can redistribute it and/or modify
8
 
 * it under the terms of the GNU General Public License as published by
9
 
 * the Free Software Foundation; either version 3, or (at your option)
10
 
 * any later version.
11
 
 * 
12
 
 * GNU Radio is distributed in the hope that it will be useful,
13
 
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
 
 * GNU General Public License for more details.
16
 
 * 
17
 
 * You should have received a copy of the GNU General Public License
18
 
 * along with GNU Radio; see the file COPYING.  If not, write to
19
 
 * the Free Software Foundation, Inc., 51 Franklin Street,
20
 
 * Boston, MA 02110-1301, USA.
21
 
 */
22
 
 
23
 
// WARNING: this file is machine generated.  Edits will be over written
24
 
 
25
 
#ifndef HAVE_CONFIG_H
26
 
#include "config.h"
27
 
#endif
28
 
 
29
 
#include <trellis_metrics_i.h>
30
 
#include <gr_io_signature.h>
31
 
#include <assert.h>
32
 
#include <stdexcept>
33
 
#include <iostream>
34
 
 
35
 
 
36
 
trellis_metrics_i_sptr
37
 
trellis_make_metrics_i (int O, int D,  const std::vector<int> &TABLE, trellis_metric_type_t TYPE)
38
 
{
39
 
  return trellis_metrics_i_sptr (new trellis_metrics_i (O,D,TABLE,TYPE));
40
 
}
41
 
 
42
 
 
43
 
 
44
 
trellis_metrics_i::trellis_metrics_i (int O, int D,  const std::vector<int> &TABLE, trellis_metric_type_t TYPE)
45
 
  : gr_block ("metrics_i",
46
 
              gr_make_io_signature (1, -1, sizeof (int)),
47
 
              gr_make_io_signature (1, -1, sizeof (float))),
48
 
    d_O (O),
49
 
    d_D (D),
50
 
    d_TYPE (TYPE),
51
 
    d_TABLE (TABLE)
52
 
{
53
 
  set_relative_rate (1.0 * d_O / ((double) d_D));
54
 
  set_output_multiple ((int)d_O);
55
 
}
56
 
 
57
 
void trellis_metrics_i::set_TABLE (const std::vector<int> &table)
58
 
{
59
 
  d_TABLE = table;
60
 
}
61
 
 
62
 
 
63
 
void
64
 
trellis_metrics_i::forecast (int noutput_items, gr_vector_int &ninput_items_required)
65
 
{
66
 
  assert (noutput_items % d_O == 0);
67
 
  int input_required =  d_D * noutput_items / d_O;
68
 
  unsigned ninputs = ninput_items_required.size();
69
 
  for (unsigned int i = 0; i < ninputs; i++)
70
 
    ninput_items_required[i] = input_required;
71
 
}
72
 
 
73
 
 
74
 
 
75
 
int
76
 
trellis_metrics_i::general_work (int noutput_items,
77
 
                                gr_vector_int &ninput_items,
78
 
                                gr_vector_const_void_star &input_items,
79
 
                                gr_vector_void_star &output_items)
80
 
{
81
 
 
82
 
  assert (noutput_items % d_O == 0);
83
 
  assert (input_items.size() == output_items.size());
84
 
  int nstreams = input_items.size();
85
 
 
86
 
for (int m=0;m<nstreams;m++) {
87
 
  const int *in = (int *) input_items[m];
88
 
  float *out = (float *) output_items[m];
89
 
 
90
 
  for (int i = 0; i < noutput_items / d_O ; i++){
91
 
    calc_metric(d_O, d_D, d_TABLE,&(in[i*d_D]),&(out[i*d_O]), d_TYPE);
92
 
  } 
93
 
}
94
 
 
95
 
  consume_each (d_D * noutput_items / d_O);
96
 
  return noutput_items;
97
 
}