/*---------------------------------------------------------------------------*
* IT++ *
*---------------------------------------------------------------------------*
* Copyright (c) 1995-2004 by Tony Ottosson, Thomas Eriksson, Pål Frenger, *
* Tobias Ringström, and Jonas Samuelsson. *
* *
* Permission to use, copy, modify, and distribute this software and its *
* documentation under the terms of the GNU General Public License is hereby *
* granted. No representations are made about the suitability of this *
* software for any purpose. It is provided "as is" without expressed or *
* implied warranty. See the GNU General Public License for more details. *
*---------------------------------------------------------------------------*/
/*!
\file
\brief Definitions of a Hamming code class
\author Tony Ottosson
1.6
2004/08/17 09:27:23
*/
#ifndef __hamming_h
#define __hamming_h
#include "base/vec.h"
#include "base/mat.h"
namespace itpp {
/*!
\ingroup fec
\brief Binary Hamming codes
*/
class Hamming_Code {
public:
//! Constructor for \c hamming(n,k). n = pow(2,m)-1 and k = pow(2,m)-m-1.
Hamming_Code(short m);
//! Hamming encoder. Will truncate some bits if not \a length = \c integer * \a k.
void encode(const bvec &uncoded_bits, bvec &coded_bits);
//! Hamming encoder. Will truncate some bits if not \a length = \c integer * \a k.
bvec encode(const bvec &uncoded_bits);
//! Hamming decoder. Will truncate some bits if not \a length = \c integer * \a n.
void decode(const bvec &coded_bits, bvec &decoded_bits);
//! Hamming decoder. Will truncate some bits if not \a length = \c integer * \a n.
bvec decode(const bvec &coded_bits);
//! Gets the code length \a n.
short get_n() { return n; };
//! Gets the number of information bits per code word, \a k.
short get_k() { return k; };
//! Gets the parity check matrix for the code.
bmat get_H() { return H; };
//! Gets the generator matrix for the code.
bmat get_G() { return G; };
private:
short n, k;
bmat H, G;
void generate_H(void);
void generate_G(void);
};
} //namespace itpp
#endif // __hamming_h
syntax highlighted by Code2HTML, v. 0.9.1