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_COMBINED_F_H
00024 #define INCLUDED_TRELLIS_SISO_COMBINED_F_H
00025
00026 #include "fsm.h"
00027 #include "trellis_siso_type.h"
00028 #include "trellis_calc_metric.h"
00029 #include <gr_block.h>
00030
00031 class trellis_siso_combined_f;
00032 typedef boost::shared_ptr<trellis_siso_combined_f> trellis_siso_combined_f_sptr;
00033
00034 trellis_siso_combined_f_sptr trellis_make_siso_combined_f (
00035 const fsm &FSM,
00036 int K,
00037 int S0,
00038 int SK,
00039 bool POSTI,
00040 bool POSTO,
00041 trellis_siso_type_t d_SISO_TYPE,
00042 int D,
00043 const std::vector<float> &TABLE,
00044 trellis_metric_type_t TYPE
00045 );
00046
00047
00048
00049
00050 class trellis_siso_combined_f : public gr_block
00051 {
00052 fsm d_FSM;
00053 int d_K;
00054 int d_S0;
00055 int d_SK;
00056 bool d_POSTI;
00057 bool d_POSTO;
00058 trellis_siso_type_t d_SISO_TYPE;
00059 int d_D;
00060 std::vector<float> d_TABLE;
00061 trellis_metric_type_t d_TYPE;
00062
00063
00064
00065 friend trellis_siso_combined_f_sptr trellis_make_siso_combined_f (
00066 const fsm &FSM,
00067 int K,
00068 int S0,
00069 int SK,
00070 bool POSTI,
00071 bool POSTO,
00072 trellis_siso_type_t d_SISO_TYPE,
00073 int D,
00074 const std::vector<float> &TABLE,
00075 trellis_metric_type_t TYPE);
00076
00077
00078 trellis_siso_combined_f (
00079 const fsm &FSM,
00080 int K,
00081 int S0,
00082 int SK,
00083 bool POSTI,
00084 bool POSTO,
00085 trellis_siso_type_t d_SISO_TYPE,
00086 int D,
00087 const std::vector<float> &TABLE,
00088 trellis_metric_type_t TYPE);
00089
00090
00091 public:
00092 fsm FSM () const { return d_FSM; }
00093 int K () const { return d_K; }
00094 int S0 () const { return d_S0; }
00095 int SK () const { return d_SK; }
00096 bool POSTI () const { return d_POSTI; }
00097 bool POSTO () const { return d_POSTO; }
00098 trellis_siso_type_t SISO_TYPE () const { return d_SISO_TYPE; }
00099 int D () const { return d_D; }
00100 std::vector<float> TABLE () const { return d_TABLE; }
00101 trellis_metric_type_t TYPE () const { return d_TYPE; }
00102 void forecast (int noutput_items,
00103 gr_vector_int &ninput_items_required);
00104 int general_work (int noutput_items,
00105 gr_vector_int &ninput_items,
00106 gr_vector_const_void_star &input_items,
00107 gr_vector_void_star &output_items);
00108 };
00109
00110 #endif