Statistics
| Branch: | Tag: | Revision:

root / gr-trellis / src / lib / trellis_pccc_decoder_X.h.t @ 71c0f14a

History | View | Annotate | Download (2.8 kB)

1 96a174f1 Achilleas Anastasopoulos
/* -*- c++ -*- */
2 96a174f1 Achilleas Anastasopoulos
/*
3 96a174f1 Achilleas Anastasopoulos
 * Copyright 2004 Free Software Foundation, Inc.
4 96a174f1 Achilleas Anastasopoulos
 * 
5 96a174f1 Achilleas Anastasopoulos
 * This file is part of GNU Radio
6 96a174f1 Achilleas Anastasopoulos
 * 
7 96a174f1 Achilleas Anastasopoulos
 * GNU Radio is free software; you can redistribute it and/or modify
8 96a174f1 Achilleas Anastasopoulos
 * it under the terms of the GNU General Public License as published by
9 96a174f1 Achilleas Anastasopoulos
 * the Free Software Foundation; either version 3, or (at your option)
10 96a174f1 Achilleas Anastasopoulos
 * any later version.
11 96a174f1 Achilleas Anastasopoulos
 * 
12 96a174f1 Achilleas Anastasopoulos
 * GNU Radio is distributed in the hope that it will be useful,
13 96a174f1 Achilleas Anastasopoulos
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 96a174f1 Achilleas Anastasopoulos
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 96a174f1 Achilleas Anastasopoulos
 * GNU General Public License for more details.
16 96a174f1 Achilleas Anastasopoulos
 * 
17 96a174f1 Achilleas Anastasopoulos
 * You should have received a copy of the GNU General Public License
18 96a174f1 Achilleas Anastasopoulos
 * along with GNU Radio; see the file COPYING.  If not, write to
19 96a174f1 Achilleas Anastasopoulos
 * the Free Software Foundation, Inc., 51 Franklin Street,
20 96a174f1 Achilleas Anastasopoulos
 * Boston, MA 02110-1301, USA.
21 96a174f1 Achilleas Anastasopoulos
 */
22 96a174f1 Achilleas Anastasopoulos
23 96a174f1 Achilleas Anastasopoulos
// @WARNING@
24 96a174f1 Achilleas Anastasopoulos
25 96a174f1 Achilleas Anastasopoulos
#ifndef @GUARD_NAME@
26 96a174f1 Achilleas Anastasopoulos
#define @GUARD_NAME@
27 96a174f1 Achilleas Anastasopoulos
28 17ef212c Josh Blum
#include <trellis_api.h>
29 96a174f1 Achilleas Anastasopoulos
#include "fsm.h"
30 96a174f1 Achilleas Anastasopoulos
#include "interleaver.h"
31 96a174f1 Achilleas Anastasopoulos
#include <gr_block.h>
32 96a174f1 Achilleas Anastasopoulos
#include <vector>
33 96a174f1 Achilleas Anastasopoulos
#include "siso_type.h"
34 96a174f1 Achilleas Anastasopoulos
35 96a174f1 Achilleas Anastasopoulos
class @NAME@;
36 96a174f1 Achilleas Anastasopoulos
typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
37 96a174f1 Achilleas Anastasopoulos
38 17ef212c Josh Blum
TRELLIS_API @SPTR_NAME@ trellis_make_@BASE_NAME@ (
39 96a174f1 Achilleas Anastasopoulos
  const fsm &FSM1, int ST10, int ST1K,
40 96a174f1 Achilleas Anastasopoulos
  const fsm &FSM2, int ST20, int ST2K,
41 96a174f1 Achilleas Anastasopoulos
  const interleaver &INTERLEAVER,
42 96a174f1 Achilleas Anastasopoulos
  int blocklength,
43 96a174f1 Achilleas Anastasopoulos
  int repetitions,
44 96a174f1 Achilleas Anastasopoulos
  trellis_siso_type_t SISO_TYPE // perform "min-sum" or "sum-product" combining 
45 96a174f1 Achilleas Anastasopoulos
);
46 96a174f1 Achilleas Anastasopoulos
47 96a174f1 Achilleas Anastasopoulos
48 96a174f1 Achilleas Anastasopoulos
/*!
49 96a174f1 Achilleas Anastasopoulos
 *  \ingroup coding_blk
50 96a174f1 Achilleas Anastasopoulos
 */
51 17ef212c Josh Blum
class TRELLIS_API @NAME@ : public gr_block
52 96a174f1 Achilleas Anastasopoulos
{
53 96a174f1 Achilleas Anastasopoulos
  fsm d_FSM1;
54 96a174f1 Achilleas Anastasopoulos
  int d_ST10;
55 96a174f1 Achilleas Anastasopoulos
  int d_ST1K;
56 50b82d2e Tom Rondeau
  fsm d_FSM2;
57 96a174f1 Achilleas Anastasopoulos
  int d_ST20;
58 96a174f1 Achilleas Anastasopoulos
  int d_ST2K;
59 96a174f1 Achilleas Anastasopoulos
  interleaver d_INTERLEAVER;
60 96a174f1 Achilleas Anastasopoulos
  int d_blocklength;
61 96a174f1 Achilleas Anastasopoulos
  int d_repetitions;
62 96a174f1 Achilleas Anastasopoulos
  trellis_siso_type_t d_SISO_TYPE;
63 96a174f1 Achilleas Anastasopoulos
  std::vector<float> d_buffer;
64 96a174f1 Achilleas Anastasopoulos
65 17ef212c Josh Blum
  friend TRELLIS_API @SPTR_NAME@ trellis_make_@BASE_NAME@ (
66 96a174f1 Achilleas Anastasopoulos
    const fsm &FSM1, int ST10, int ST1K,
67 96a174f1 Achilleas Anastasopoulos
    const fsm &FSM2, int ST20, int ST2K,
68 96a174f1 Achilleas Anastasopoulos
    const interleaver &INTERLEAVER,
69 96a174f1 Achilleas Anastasopoulos
    int blocklength,
70 96a174f1 Achilleas Anastasopoulos
    int repetitions,
71 96a174f1 Achilleas Anastasopoulos
    trellis_siso_type_t SISO_TYPE
72 96a174f1 Achilleas Anastasopoulos
  );
73 96a174f1 Achilleas Anastasopoulos
74 96a174f1 Achilleas Anastasopoulos
  @NAME@ (
75 96a174f1 Achilleas Anastasopoulos
    const fsm &FSM1, int ST10, int ST1K,
76 96a174f1 Achilleas Anastasopoulos
    const fsm &FSM2, int ST20, int ST2K,
77 96a174f1 Achilleas Anastasopoulos
    const interleaver &INTERLEAVER,
78 96a174f1 Achilleas Anastasopoulos
    int blocklength,
79 96a174f1 Achilleas Anastasopoulos
    int repetitions,
80 96a174f1 Achilleas Anastasopoulos
    trellis_siso_type_t SISO_TYPE 
81 96a174f1 Achilleas Anastasopoulos
  );
82 96a174f1 Achilleas Anastasopoulos
83 96a174f1 Achilleas Anastasopoulos
public:
84 96a174f1 Achilleas Anastasopoulos
  fsm FSM1 () const { return d_FSM1; }
85 96a174f1 Achilleas Anastasopoulos
  fsm FSM2 () const { return d_FSM2; }
86 96a174f1 Achilleas Anastasopoulos
  int ST10 () const { return d_ST10; }
87 96a174f1 Achilleas Anastasopoulos
  int ST1K () const { return d_ST1K; }
88 96a174f1 Achilleas Anastasopoulos
  int ST20 () const { return d_ST20; }
89 96a174f1 Achilleas Anastasopoulos
  int ST2K () const { return d_ST2K; }
90 96a174f1 Achilleas Anastasopoulos
  interleaver INTERLEAVER () const { return d_INTERLEAVER; }
91 96a174f1 Achilleas Anastasopoulos
  int blocklength () const { return d_blocklength; }
92 96a174f1 Achilleas Anastasopoulos
  int repetitions () const { return d_repetitions; }
93 96a174f1 Achilleas Anastasopoulos
  trellis_siso_type_t SISO_TYPE () const { return d_SISO_TYPE; }
94 96a174f1 Achilleas Anastasopoulos
95 96a174f1 Achilleas Anastasopoulos
  void forecast (int noutput_items,
96 96a174f1 Achilleas Anastasopoulos
                 gr_vector_int &ninput_items_required);
97 96a174f1 Achilleas Anastasopoulos
  int general_work (int noutput_items,
98 96a174f1 Achilleas Anastasopoulos
                    gr_vector_int &ninput_items,
99 96a174f1 Achilleas Anastasopoulos
                    gr_vector_const_void_star &input_items,
100 96a174f1 Achilleas Anastasopoulos
                    gr_vector_void_star &output_items);
101 96a174f1 Achilleas Anastasopoulos
};
102 96a174f1 Achilleas Anastasopoulos
103 96a174f1 Achilleas Anastasopoulos
#endif