00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef INCLUDED_TRELLIS_SISO_F_H
00024 #define INCLUDED_TRELLIS_SISO_F_H
00025
00026 #include "fsm.h"
00027 #include "trellis_siso_type.h"
00028 #include <gr_block.h>
00029
00030 class trellis_siso_f;
00031 typedef boost::shared_ptr<trellis_siso_f> trellis_siso_f_sptr;
00032
00033 trellis_siso_f_sptr trellis_make_siso_f (
00034 const fsm &FSM,
00035 int K,
00036 int S0,
00037 int SK,
00038 bool POSTI,
00039 bool POSTO,
00040 trellis_siso_type_t d_SISO_TYPE
00041 );
00042
00043
00044
00045
00046
00047 class trellis_siso_f : public gr_block
00048 {
00049 fsm d_FSM;
00050 int d_K;
00051 int d_S0;
00052 int d_SK;
00053 bool d_POSTI;
00054 bool d_POSTO;
00055 trellis_siso_type_t d_SISO_TYPE;
00056
00057
00058
00059 friend trellis_siso_f_sptr trellis_make_siso_f (
00060 const fsm &FSM,
00061 int K,
00062 int S0,
00063 int SK,
00064 bool POSTI,
00065 bool POSTO,
00066 trellis_siso_type_t d_SISO_TYPE);
00067
00068
00069 trellis_siso_f (
00070 const fsm &FSM,
00071 int K,
00072 int S0,
00073 int SK,
00074 bool POSTI,
00075 bool POSTO,
00076 trellis_siso_type_t d_SISO_TYPE);
00077
00078
00079 public:
00080 fsm FSM () const { return d_FSM; }
00081 int K () const { return d_K; }
00082 int S0 () const { return d_S0; }
00083 int SK () const { return d_SK; }
00084 bool POSTI () const { return d_POSTI; }
00085 bool POSTO () const { return d_POSTO; }
00086 trellis_siso_type_t SISO_TYPE () const { return d_SISO_TYPE; }
00087 void forecast (int noutput_items,
00088 gr_vector_int &ninput_items_required);
00089 int general_work (int noutput_items,
00090 gr_vector_int &ninput_items,
00091 gr_vector_const_void_star &input_items,
00092 gr_vector_void_star &output_items);
00093 };
00094
00095 #endif