GNU Radio Manual and C++ API Reference  3.10.9.1
The Free & Open Software Radio Ecosystem
gr::trellis Namespace Reference

Classes

class  constellation_metrics_cf
 Evaluate metrics for use by the Viterbi algorithm. More...
 
class  encoder
 Convolutional encoder. More...
 
class  fsm
 Finite State Machine Specification class. More...
 
class  interleaver
 INTERLEAVER class. More...
 
class  metrics
 Evaluate metrics for use by the Viterbi algorithm. More...
 
class  pccc_decoder_blk
 
class  pccc_decoder_combined_blk
 
class  pccc_encoder
 PCCC encoder. More...
 
class  permutation
 Permutation. More...
 
class  sccc_decoder_blk
 
class  sccc_decoder_combined_blk
 
class  sccc_encoder
 SCCC encoder. More...
 
class  siso_combined_f
 
class  siso_f
 
class  viterbi
 
class  viterbi_combined
 

Typedefs

typedef encoder< std::uint8_t, std::uint8_t > encoder_bb
 
typedef encoder< std::uint8_t, std::int16_t > encoder_bs
 
typedef encoder< std::uint8_t, std::int32_t > encoder_bi
 
typedef encoder< std::int16_t, std::int16_t > encoder_ss
 
typedef encoder< std::int16_t, std::int32_t > encoder_si
 
typedef encoder< std::int32_t, std::int32_t > encoder_ii
 
typedef metrics< std::int16_t > metrics_s
 
typedef metrics< std::int32_t > metrics_i
 
typedef metrics< float > metrics_f
 
typedef metrics< gr_complexmetrics_c
 
typedef pccc_decoder_blk< std::uint8_t > pccc_decoder_b
 
typedef pccc_decoder_blk< std::int16_t > pccc_decoder_s
 
typedef pccc_decoder_blk< std::int32_t > pccc_decoder_i
 
typedef pccc_decoder_combined_blk< float, std::uint8_t > pccc_decoder_combined_fb
 
typedef pccc_decoder_combined_blk< float, std::int16_t > pccc_decoder_combined_fs
 
typedef pccc_decoder_combined_blk< float, std::int32_t > pccc_decoder_combined_fi
 
typedef pccc_decoder_combined_blk< gr_complex, std::uint8_t > pccc_decoder_combined_cb
 
typedef pccc_decoder_combined_blk< gr_complex, std::int16_t > pccc_decoder_combined_cs
 
typedef pccc_decoder_combined_blk< gr_complex, std::int32_t > pccc_decoder_combined_ci
 
typedef pccc_encoder< std::uint8_t, std::uint8_t > pccc_encoder_bb
 
typedef pccc_encoder< std::uint8_t, std::int16_t > pccc_encoder_bs
 
typedef pccc_encoder< std::uint8_t, std::int32_t > pccc_encoder_bi
 
typedef pccc_encoder< std::int16_t, std::int16_t > pccc_encoder_ss
 
typedef pccc_encoder< std::int16_t, std::int32_t > pccc_encoder_si
 
typedef pccc_encoder< std::int32_t, std::int32_t > pccc_encoder_ii
 
typedef sccc_decoder_blk< std::uint8_t > sccc_decoder_b
 
typedef sccc_decoder_blk< std::int16_t > sccc_decoder_s
 
typedef sccc_decoder_blk< std::int32_t > sccc_decoder_i
 
typedef sccc_decoder_combined_blk< float, std::uint8_t > sccc_decoder_combined_fb
 
typedef sccc_decoder_combined_blk< float, std::int16_t > sccc_decoder_combined_fs
 
typedef sccc_decoder_combined_blk< float, std::int32_t > sccc_decoder_combined_fi
 
typedef sccc_decoder_combined_blk< gr_complex, std::uint8_t > sccc_decoder_combined_cb
 
typedef sccc_decoder_combined_blk< gr_complex, std::int16_t > sccc_decoder_combined_cs
 
typedef sccc_decoder_combined_blk< gr_complex, std::int32_t > sccc_decoder_combined_ci
 
typedef sccc_encoder< std::uint8_t, std::uint8_t > sccc_encoder_bb
 
typedef sccc_encoder< std::uint8_t, std::int16_t > sccc_encoder_bs
 
typedef sccc_encoder< std::uint8_t, std::int32_t > sccc_encoder_bi
 
typedef sccc_encoder< std::int16_t, std::int16_t > sccc_encoder_ss
 
typedef sccc_encoder< std::uint8_t, std::int32_t > sccc_encoder_si
 
typedef sccc_encoder< std::int32_t, std::int32_t > sccc_encoder_ii
 
typedef viterbi< std::uint8_t > viterbi_b
 
typedef viterbi< std::int16_t > viterbi_s
 
typedef viterbi< std::int32_t > viterbi_i
 
typedef viterbi_combined< std::int16_t, std::uint8_t > viterbi_combined_sb
 
typedef viterbi_combined< std::int16_t, std::int16_t > viterbi_combined_ss
 
typedef viterbi_combined< std::int16_t, std::int32_t > viterbi_combined_si
 
typedef viterbi_combined< std::int32_t, std::uint8_t > viterbi_combined_ib
 
typedef viterbi_combined< std::int32_t, std::int16_t > viterbi_combined_is
 
typedef viterbi_combined< std::int32_t, std::int32_t > viterbi_combined_ii
 
typedef viterbi_combined< float, std::uint8_t > viterbi_combined_fb
 
typedef viterbi_combined< float, std::int16_t > viterbi_combined_fs
 
typedef viterbi_combined< float, std::int32_t > viterbi_combined_fi
 
typedef viterbi_combined< gr_complex, std::uint8_t > viterbi_combined_cb
 
typedef viterbi_combined< gr_complex, std::int16_t > viterbi_combined_cs
 
typedef viterbi_combined< gr_complex, std::int32_t > viterbi_combined_ci
 

Enumerations

enum  siso_type_t { TRELLIS_MIN_SUM = 200 , TRELLIS_SUM_PRODUCT }
 

Functions

bool dec2base (unsigned int num, int base, std::vector< int > &s)
 change base More...
 
bool dec2bases (unsigned int num, const std::vector< int > &bases, std::vector< int > &s)
 
unsigned int base2dec (const std::vector< int > &s, int base)
 
unsigned int bases2dec (const std::vector< int > &s, const std::vector< int > &bases)
 
template<class T >
void calc_metric (int O, int D, const std::vector< T > &TABLE, const T *input, float *metric, digital::trellis_metric_type_t type)
 
void calc_metric (int O, int D, const std::vector< gr_complex > &TABLE, const gr_complex *input, float *metric, digital::trellis_metric_type_t type)
 
float min (float a, float b)
 
float min_star (float a, float b)
 
template<class T >
void viterbi_algorithm (int I, int S, int O, const std::vector< int > &NS, const std::vector< int > &OS, const std::vector< std::vector< int >> &PS, const std::vector< std::vector< int >> &PI, int K, int S0, int SK, const float *in, T *out)
 
template<class Ti , class To >
void viterbi_algorithm_combined (int I, int S, int O, const std::vector< int > &NS, const std::vector< int > &OS, const std::vector< std::vector< int >> &PS, const std::vector< std::vector< int >> &PI, int K, int S0, int SK, int D, const std::vector< Ti > &TABLE, digital::trellis_metric_type_t TYPE, const Ti *in, To *out)
 
void siso_algorithm (int I, int S, int O, const std::vector< int > &NS, const std::vector< int > &OS, const std::vector< std::vector< int >> &PS, const std::vector< std::vector< int >> &PI, int K, int S0, int SK, bool POSTI, bool POSTO, float(*p2mymin)(float, float), const float *priori, const float *prioro, float *post)
 
template<class T >
void siso_algorithm_combined (int I, int S, int O, const std::vector< int > &NS, const std::vector< int > &OS, const std::vector< std::vector< int >> &PS, const std::vector< std::vector< int >> &PI, int K, int S0, int SK, bool POSTI, bool POSTO, float(*p2mymin)(float, float), int D, const std::vector< T > &TABLE, digital::trellis_metric_type_t TYPE, const float *priori, const T *observations, float *post)
 
template<class T >
void sccc_decoder (const fsm &FSMo, int STo0, int SToK, const fsm &FSMi, int STi0, int STiK, const interleaver &INTERLEAVER, int blocklength, int iterations, float(*p2mymin)(float, float), const float *iprioro, T *data)
 
template<class Ti , class To >
void sccc_decoder_combined (const fsm &FSMo, int STo0, int SToK, const fsm &FSMi, int STi0, int STiK, const interleaver &INTERLEAVER, int blocklength, int iterations, float(*p2mymin)(float, float), int D, const std::vector< Ti > &TABLE, digital::trellis_metric_type_t METRIC_TYPE, float scaling, const Ti *observations, To *data)
 
template<class T >
void pccc_decoder (const fsm &FSM1, int ST10, int ST1K, const fsm &FSM2, int ST20, int ST2K, const interleaver &INTERLEAVER, int blocklength, int iterations, float(*p2mymin)(float, float), const float *cprioro, T *data)
 
template<class Ti , class To >
void pccc_decoder_combined (const fsm &FSM1, int ST10, int ST1K, const fsm &FSM2, int ST20, int ST2K, const interleaver &INTERLEAVER, int blocklength, int iterations, float(*p2mymin)(float, float), int D, const std::vector< Ti > &TABLE, digital::trellis_metric_type_t METRIC_TYPE, float scaling, const Ti *observations, To *data)
 
template<class T >
void SWAP (T &a, T &b)
 
template<class T >
void quicksort_index (std::vector< T > &p, std::vector< int > &index, int left, int right)
 

Typedef Documentation

◆ encoder_bb

typedef encoder<std::uint8_t, std::uint8_t> gr::trellis::encoder_bb

◆ encoder_bi

typedef encoder<std::uint8_t, std::int32_t> gr::trellis::encoder_bi

◆ encoder_bs

typedef encoder<std::uint8_t, std::int16_t> gr::trellis::encoder_bs

◆ encoder_ii

typedef encoder<std::int32_t, std::int32_t> gr::trellis::encoder_ii

◆ encoder_si

typedef encoder<std::int16_t, std::int32_t> gr::trellis::encoder_si

◆ encoder_ss

typedef encoder<std::int16_t, std::int16_t> gr::trellis::encoder_ss

◆ metrics_c

◆ metrics_f

◆ metrics_i

typedef metrics<std::int32_t> gr::trellis::metrics_i

◆ metrics_s

typedef metrics<std::int16_t> gr::trellis::metrics_s

◆ pccc_decoder_b

◆ pccc_decoder_combined_cb

◆ pccc_decoder_combined_ci

◆ pccc_decoder_combined_cs

◆ pccc_decoder_combined_fb

◆ pccc_decoder_combined_fi

◆ pccc_decoder_combined_fs

◆ pccc_decoder_i

◆ pccc_decoder_s

◆ pccc_encoder_bb

typedef pccc_encoder<std::uint8_t, std::uint8_t> gr::trellis::pccc_encoder_bb

◆ pccc_encoder_bi

typedef pccc_encoder<std::uint8_t, std::int32_t> gr::trellis::pccc_encoder_bi

◆ pccc_encoder_bs

typedef pccc_encoder<std::uint8_t, std::int16_t> gr::trellis::pccc_encoder_bs

◆ pccc_encoder_ii

typedef pccc_encoder<std::int32_t, std::int32_t> gr::trellis::pccc_encoder_ii

◆ pccc_encoder_si

typedef pccc_encoder<std::int16_t, std::int32_t> gr::trellis::pccc_encoder_si

◆ pccc_encoder_ss

typedef pccc_encoder<std::int16_t, std::int16_t> gr::trellis::pccc_encoder_ss

◆ sccc_decoder_b

◆ sccc_decoder_combined_cb

◆ sccc_decoder_combined_ci

◆ sccc_decoder_combined_cs

◆ sccc_decoder_combined_fb

◆ sccc_decoder_combined_fi

◆ sccc_decoder_combined_fs

◆ sccc_decoder_i

◆ sccc_decoder_s

◆ sccc_encoder_bb

typedef sccc_encoder<std::uint8_t, std::uint8_t> gr::trellis::sccc_encoder_bb

◆ sccc_encoder_bi

typedef sccc_encoder<std::uint8_t, std::int32_t> gr::trellis::sccc_encoder_bi

◆ sccc_encoder_bs

typedef sccc_encoder<std::uint8_t, std::int16_t> gr::trellis::sccc_encoder_bs

◆ sccc_encoder_ii

typedef sccc_encoder<std::int32_t, std::int32_t> gr::trellis::sccc_encoder_ii

◆ sccc_encoder_si

typedef sccc_encoder<std::uint8_t, std::int32_t> gr::trellis::sccc_encoder_si

◆ sccc_encoder_ss

typedef sccc_encoder<std::int16_t, std::int16_t> gr::trellis::sccc_encoder_ss

◆ viterbi_b

typedef viterbi<std::uint8_t> gr::trellis::viterbi_b

◆ viterbi_combined_cb

◆ viterbi_combined_ci

◆ viterbi_combined_cs

◆ viterbi_combined_fb

typedef viterbi_combined<float, std::uint8_t> gr::trellis::viterbi_combined_fb

◆ viterbi_combined_fi

typedef viterbi_combined<float, std::int32_t> gr::trellis::viterbi_combined_fi

◆ viterbi_combined_fs

typedef viterbi_combined<float, std::int16_t> gr::trellis::viterbi_combined_fs

◆ viterbi_combined_ib

typedef viterbi_combined<std::int32_t, std::uint8_t> gr::trellis::viterbi_combined_ib

◆ viterbi_combined_ii

typedef viterbi_combined<std::int32_t, std::int32_t> gr::trellis::viterbi_combined_ii

◆ viterbi_combined_is

typedef viterbi_combined<std::int32_t, std::int16_t> gr::trellis::viterbi_combined_is

◆ viterbi_combined_sb

typedef viterbi_combined<std::int16_t, std::uint8_t> gr::trellis::viterbi_combined_sb

◆ viterbi_combined_si

typedef viterbi_combined<std::int16_t, std::int32_t> gr::trellis::viterbi_combined_si

◆ viterbi_combined_ss

typedef viterbi_combined<std::int16_t, std::int16_t> gr::trellis::viterbi_combined_ss

◆ viterbi_i

typedef viterbi<std::int32_t> gr::trellis::viterbi_i

◆ viterbi_s

typedef viterbi<std::int16_t> gr::trellis::viterbi_s

Enumeration Type Documentation

◆ siso_type_t

Enumerator
TRELLIS_MIN_SUM 
TRELLIS_SUM_PRODUCT 

Function Documentation

◆ base2dec()

unsigned int gr::trellis::base2dec ( const std::vector< int > &  s,
int  base 
)

◆ bases2dec()

unsigned int gr::trellis::bases2dec ( const std::vector< int > &  s,
const std::vector< int > &  bases 
)

◆ calc_metric() [1/2]

void gr::trellis::calc_metric ( int  O,
int  D,
const std::vector< gr_complex > &  TABLE,
const gr_complex input,
float *  metric,
digital::trellis_metric_type_t  type 
)

◆ calc_metric() [2/2]

template<class T >
void gr::trellis::calc_metric ( int  O,
int  D,
const std::vector< T > &  TABLE,
const T *  input,
float *  metric,
digital::trellis_metric_type_t  type 
)

◆ dec2base()

bool gr::trellis::dec2base ( unsigned int  num,
int  base,
std::vector< int > &  s 
)

change base

◆ dec2bases()

bool gr::trellis::dec2bases ( unsigned int  num,
const std::vector< int > &  bases,
std::vector< int > &  s 
)

◆ min()

float gr::trellis::min ( float  a,
float  b 
)

◆ min_star()

float gr::trellis::min_star ( float  a,
float  b 
)

◆ pccc_decoder()

template<class T >
void gr::trellis::pccc_decoder ( const fsm FSM1,
int  ST10,
int  ST1K,
const fsm FSM2,
int  ST20,
int  ST2K,
const interleaver INTERLEAVER,
int  blocklength,
int  iterations,
float(*)(float, float)  p2mymin,
const float *  cprioro,
T *  data 
)

◆ pccc_decoder_combined()

template<class Ti , class To >
void gr::trellis::pccc_decoder_combined ( const fsm FSM1,
int  ST10,
int  ST1K,
const fsm FSM2,
int  ST20,
int  ST2K,
const interleaver INTERLEAVER,
int  blocklength,
int  iterations,
float(*)(float, float)  p2mymin,
int  D,
const std::vector< Ti > &  TABLE,
digital::trellis_metric_type_t  METRIC_TYPE,
float  scaling,
const Ti *  observations,
To *  data 
)

◆ quicksort_index()

template<class T >
void gr::trellis::quicksort_index ( std::vector< T > &  p,
std::vector< int > &  index,
int  left,
int  right 
)

◆ sccc_decoder()

template<class T >
void gr::trellis::sccc_decoder ( const fsm FSMo,
int  STo0,
int  SToK,
const fsm FSMi,
int  STi0,
int  STiK,
const interleaver INTERLEAVER,
int  blocklength,
int  iterations,
float(*)(float, float)  p2mymin,
const float *  iprioro,
T *  data 
)

◆ sccc_decoder_combined()

template<class Ti , class To >
void gr::trellis::sccc_decoder_combined ( const fsm FSMo,
int  STo0,
int  SToK,
const fsm FSMi,
int  STi0,
int  STiK,
const interleaver INTERLEAVER,
int  blocklength,
int  iterations,
float(*)(float, float)  p2mymin,
int  D,
const std::vector< Ti > &  TABLE,
digital::trellis_metric_type_t  METRIC_TYPE,
float  scaling,
const Ti *  observations,
To *  data 
)

◆ siso_algorithm()

void gr::trellis::siso_algorithm ( int  I,
int  S,
int  O,
const std::vector< int > &  NS,
const std::vector< int > &  OS,
const std::vector< std::vector< int >> &  PS,
const std::vector< std::vector< int >> &  PI,
int  K,
int  S0,
int  SK,
bool  POSTI,
bool  POSTO,
float(*)(float, float)  p2mymin,
const float *  priori,
const float *  prioro,
float *  post 
)

◆ siso_algorithm_combined()

template<class T >
void gr::trellis::siso_algorithm_combined ( int  I,
int  S,
int  O,
const std::vector< int > &  NS,
const std::vector< int > &  OS,
const std::vector< std::vector< int >> &  PS,
const std::vector< std::vector< int >> &  PI,
int  K,
int  S0,
int  SK,
bool  POSTI,
bool  POSTO,
float(*)(float, float)  p2mymin,
int  D,
const std::vector< T > &  TABLE,
digital::trellis_metric_type_t  TYPE,
const float *  priori,
const T *  observations,
float *  post 
)

◆ SWAP()

template<class T >
void gr::trellis::SWAP ( T &  a,
T &  b 
)

◆ viterbi_algorithm()

template<class T >
void gr::trellis::viterbi_algorithm ( int  I,
int  S,
int  O,
const std::vector< int > &  NS,
const std::vector< int > &  OS,
const std::vector< std::vector< int >> &  PS,
const std::vector< std::vector< int >> &  PI,
int  K,
int  S0,
int  SK,
const float *  in,
T *  out 
)

◆ viterbi_algorithm_combined()

template<class Ti , class To >
void gr::trellis::viterbi_algorithm_combined ( int  I,
int  S,
int  O,
const std::vector< int > &  NS,
const std::vector< int > &  OS,
const std::vector< std::vector< int >> &  PS,
const std::vector< std::vector< int >> &  PI,
int  K,
int  S0,
int  SK,
int  D,
const std::vector< Ti > &  TABLE,
digital::trellis_metric_type_t  TYPE,
const Ti *  in,
To *  out 
)