Several enhancements to gr-trellis and gnuradio-examples/python/channel-coding:
[debian/gnuradio] / gr-trellis / src / lib / fsm.h
1 /* -*- c++ -*- */\r
2 /*\r
3  * Copyright 2002 Free Software Foundation, Inc.\r
4  *\r
5  * This file is part of GNU Radio\r
6  *\r
7  * GNU Radio is free software; you can redistribute it and/or modify\r
8  * it under the terms of the GNU General Public License as published by\r
9  * the Free Software Foundation; either version 2, or (at your option)\r
10  * any later version.\r
11  *\r
12  * GNU Radio is distributed in the hope that it will be useful,\r
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
15  * GNU General Public License for more details.\r
16  *\r
17  * You should have received a copy of the GNU General Public License\r
18  * along with GNU Radio; see the file COPYING.  If not, write to\r
19  * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,\r
20  * Boston, MA 02111-1307, USA.\r
21  */\r
22 \r
23 #ifndef INCLUDED_TRELLIS_FSM_H\r
24 #define INCLUDED_TRELLIS_FSM_H\r
25 \r
26 #include <vector>\r
27 \r
28 /*!\r
29  * \brief  FSM class\r
30  */\r
31 class fsm {\r
32 private:\r
33   int d_I;\r
34   int d_S;\r
35   int d_O;\r
36   std::vector<int> d_NS;\r
37   std::vector<int> d_OS;\r
38   std::vector<int> d_PS;\r
39   std::vector<int> d_PI;\r
40   std::vector<int> d_TMi;\r
41   std::vector<int> d_TMl;\r
42   void generate_PS_PI ();\r
43   void generate_TM ();\r
44   bool find_es(int es);\r
45 public:\r
46   fsm();\r
47   fsm(const fsm &FSM);\r
48   fsm(int I, int S, int O, const std::vector<int> &NS, const std::vector<int> &OS);\r
49   fsm(const char *name);\r
50   fsm(int k, int n, const std::vector<int> &G);\r
51   fsm(int mod_size, int ch_length);\r
52   int I () const { return d_I; }\r
53   int S () const { return d_S; }\r
54   int O () const { return d_O; }\r
55   const std::vector<int> & NS () const { return d_NS; }\r
56   const std::vector<int> & OS () const { return d_OS; }\r
57   const std::vector<int> & PS () const { return d_PS; }\r
58   const std::vector<int> & PI () const { return d_PI; }\r
59   const std::vector<int> & TMi () const { return d_TMi; }\r
60   const std::vector<int> & TMl () const { return d_TMl; }\r
61 };\r
62 \r
63 #endif\r