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 |