GNU Radio 3.5.3.1 C++ API
trellis_pccc_decoder_combined_fb.h
Go to the documentation of this file.
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 INCLUDED_TRELLIS_PCCC_DECODER_COMBINED_FB_H
26 #define INCLUDED_TRELLIS_PCCC_DECODER_COMBINED_FB_H
27 
28 #include <trellis_api.h>
29 #include "fsm.h"
30 #include "interleaver.h"
31 #include <gr_block.h>
32 #include <vector>
33 #include "calc_metric.h"
34 #include "siso_type.h"
35 
38 
40  const fsm &FSMo, int STo0, int SToK,
41  const fsm &FSMi, int STi0, int STiK,
42  const interleaver &INTERLEAVER,
43  int blocklength,
44  int repetitions,
45  trellis_siso_type_t SISO_TYPE, // perform "min-sum" or "sum-product" combining
46  int D,
47  const std::vector<float> &TABLE,
49  float scaling
50 );
51 
52 
53 /*!
54  * \ingroup coding_blk
55  */
57 {
58  fsm d_FSMo;
59  int d_STo0;
60  int d_SToK;
61  fsm d_FSMi;
62  int d_STi0;
63  int d_STiK;
64  interleaver d_INTERLEAVER;
65  int d_blocklength;
66  int d_repetitions;
67  trellis_siso_type_t d_SISO_TYPE;
68  int d_D;
69  std::vector<float> d_TABLE;
70  trellis_metric_type_t d_METRIC_TYPE;
71  float d_scaling;
72  std::vector<float> d_buffer;
73 
75  const fsm &FSMo, int STo0, int SToK,
76  const fsm &FSMi, int STi0, int STiK,
77  const interleaver &INTERLEAVER,
78  int blocklength,
79  int repetitions,
80  trellis_siso_type_t SISO_TYPE,
81  int D,
82  const std::vector<float> &TABLE,
83  trellis_metric_type_t METRIC_TYPE,
84  float scaling
85  );
86 
88  const fsm &FSMo, int STo0, int SToK,
89  const fsm &FSMi, int STi0, int STiK,
90  const interleaver &INTERLEAVER,
91  int blocklength,
92  int repetitions,
93  trellis_siso_type_t SISO_TYPE,
94  int D,
95  const std::vector<float> &TABLE,
96  trellis_metric_type_t METRIC_TYPE,
97  float scaling
98  );
99 
100 public:
101  fsm FSM1 () const { return d_FSMo; }
102  fsm FSM2 () const { return d_FSMi; }
103  int ST10 () const { return d_STo0; }
104  int ST1K () const { return d_SToK; }
105  int ST20 () const { return d_STi0; }
106  int ST2K () const { return d_STiK; }
107  interleaver INTERLEAVER () const { return d_INTERLEAVER; }
108  int blocklength () const { return d_blocklength; }
109  int repetitions () const { return d_repetitions; }
110  int D () const { return d_D; }
111  std::vector<float> TABLE () const { return d_TABLE; }
112  trellis_metric_type_t METRIC_TYPE () const { return d_METRIC_TYPE; }
113  trellis_siso_type_t SISO_TYPE () const { return d_SISO_TYPE; }
114  float scaling () const { return d_scaling; }
115  void set_scaling (float scaling);
116 
117  void forecast (int noutput_items,
118  gr_vector_int &ninput_items_required);
119  int general_work (int noutput_items,
120  gr_vector_int &ninput_items,
121  gr_vector_const_void_star &input_items,
122  gr_vector_void_star &output_items);
123 };
124 
125 #endif