ccsoft  0.0.0
Convolutional codes library with soft decision decoding
ccsoft Namespace Reference

Classes

class  CC_Encoding
 Convolutional encoding class. Supports any k,n with k<n. The input bits of a symbol are clocked simultaneously into the right hand side, or least significant position of the internal registers. Therefore the given polynomial representation of generators should follow the same convention. More...
class  CC_Encoding_base
 Convolutional encoding class. Supports any k,n with k<n. The input bits of a symbol are clocked simultaneously into the right hand side, or least significant position of the internal registers. Therefore the given polynomial representation of generators should follow the same convention. More...
class  CC_Encoding_FA
 Convolutional encoding class. This version uses a fixed array to store registers. The size is given by the N_k template parameter. More...
class  CC_EncodingRegisters_FA
 Convolutional encoding registers class. More...
class  CC_EncodingRegisters_FA< T_Register, 1 >
 Convolutional encoding registers class. Specialized in single register. More...
class  CC_FanoDecoding
 The Fano like Decoding class. Tag is a boolean used as the traversed back indicator. More...
class  CC_FanoDecoding_FA
 The Fano like Decoding class. Tag is a boolean used as the traversed back indicator. This version uses fixed arrays to store registers and forward node+edges pointers. N_k template parameter gives the size of the input symbol (k parameter) and therefore the number of registers. There are (1<<N_k) forward node+edges. More...
class  CC_ReliabilityMatrix
 Reliability Matrix class. Analog data is entered first then the normalization method is called to get the actual reliability data (probabilities). More...
class  NodeEdgeOrdering
 class used for node ordering More...
class  CC_SequentialDecoding
 Convolutional soft-decision sequential decoder generic (virtual) class. This is the public interface. More...
class  CC_SequentialDecoding_FA
 Convolutional soft-decision sequential decoder generic (virtual) class. This is the public interface. This version uses a fixed array to store registers. N_k template parameter gives the size of the input symbol (k parameter) and therefore the number of registers. More...
class  CC_SequentialDecodingInternal
 Convolutional soft-decision sequential decoder generic (virtual) class for algorithm internal use. It is tainted by the type of code tree node+edge tag that is algorithm dependant. It contains the code tree root node and some common methods. More...
class  CC_SequentialDecodingInternal_FA
 Convolutional soft-decision sequential decoder generic (virtual) class for algorithm internal use. It is tainted by the type of code tree node+edge tag that is algorithm dependant. It contains the code tree root node and some common methods. This version uses a fixed array to store forward node+edges pointers. N_k template parameter gives the size of the input symbol (k parameter). There are (1<<N_k) forward node+edges. More...
class  CC_StackDecoding
 The Stack Decoding class with node+edge combination. More...
class  CC_StackDecoding_FA
 The Stack Decoding class with node+edge combination This version uses fixed arrays to store registers and forward node+edges pointers. N_k template parameter gives the size of the input symbol (k parameter) and therefore the number of registers. There are (1<<N_k) forward node+edges. More...
class  CC_TreeEdgeTag_Empty
class  CC_TreeEdge
 An edge of the code tree. More...
class  CC_TreeGraphviz
class  CC_TreeGraphviz_FA
class  CC_TreeNode
 A node in the code tree. More...
class  CC_TreeNodeEdge
 Represents a node and its incoming edge in the code tree. More...
class  CC_TreeNodeEdgeTag_Empty
class  CC_TreeNodeEdge_base
 Represents a node and its incoming edge in the code tree. More...
class  CC_TreeNodeEdge_FA
 Represents a node and its incoming edge in the code tree This version uses a fixed array to store forward node+edges pointers. N_k template parameter gives the size of the input symbol (k parameter). There are (1<<N_k) forward node+edges. More...
class  CCSoft_Exception
 Generic exception class for Convolutional Codes Soft Decoding library. More...

Functions

template<>
void print_register< unsigned char > (const unsigned char &reg, std::ostream &os)
template<>
void print_symbol< unsigned char > (const unsigned char &sym, std::ostream &os)
template<typename T_Register >
void print_register (const T_Register &reg, std::ostream &os)
template<typename T_IOSymbol >
void print_symbol (const T_IOSymbol &sym, std::ostream &os)
std::ostream & operator<< (std::ostream &os, const CC_ReliabilityMatrix &matrix)
template<typename T_NodeEdge >
bool node_edge_pointer_ordering (T_NodeEdge *n1, T_NodeEdge *n2)

Function Documentation

template<typename T_NodeEdge >
bool ccsoft::node_edge_pointer_ordering ( T_NodeEdge *  n1,
T_NodeEdge *  n2 
)
{
    if (n1->get_path_metric() == n2->get_path_metric())
    {
        return n1->get_id() > n2->get_id();
    }
    else
    {
        return n1->get_path_metric() > n2->get_path_metric();
    }
}
std::ostream& ccsoft::operator<< ( std::ostream &  os,
const CC_ReliabilityMatrix &  matrix 
)

Prints a reliability matrix to an output stream

{
    unsigned int nb_rows = matrix.get_nb_symbols();
    unsigned int nb_cols = matrix.get_message_length();

    for (unsigned int ir=0; ir<nb_rows; ir++)
    {
        for (unsigned int ic=0; ic<nb_cols; ic++)
        {
            if (ic > 0)
            {
                os << " ";
            }
            os << std::fixed << std::setw(8) << std::setprecision(6) << matrix(ir, ic);
        }

        os << std::endl;
    }
    
    return os;
}

Here is the call graph for this function:

template<typename T_Register >
void ccsoft::print_register ( const T_Register &  reg,
std::ostream &  os 
)

Print the content of a register in hexadecimal to an output stream

Template Parameters:
T_RegisterType of register
Parameters:
regRegister
osOutput stream
{
    os << std::hex << reg;
    os << std::dec;
}
template<>
void ccsoft::print_register< unsigned char > ( const unsigned char &  reg,
std::ostream &  os 
)

Print the content of a unsigned char register in hexadecimal to an output stream

Parameters:
regRegister
osOutput stream
{
    os << std::hex << (unsigned int) reg;
    os << std::dec;
}
template<typename T_IOSymbol >
void ccsoft::print_symbol ( const T_IOSymbol &  sym,
std::ostream &  os 
)

Print the content of a I/O symbol to an output stream

Template Parameters:
T_IOSymbolType of I/O symbol
Parameters:
symI/O symbol
osOutput stream
{
    os << std::dec << sym;
}
template<>
void ccsoft::print_symbol< unsigned char > ( const unsigned char &  sym,
std::ostream &  os 
)

Print the content of a unsigned char I/O symbol yo an output stream

Parameters:
symI/O symbol
osOutput stream
{
    os << std::dec << (unsigned int) sym;
}
 All Classes Namespaces Files Functions Variables Typedefs Friends Defines