itpp::CRC_Code Class Reference
Communications Module » Forward Error Correcting Codes

Cyclic Redundancy Check Codes. More...

`#include <itpp/comm/crc.h>`

## Public Member Functions

| CRC_Code ()
| Default Constructor.
| CRC_Code (const std::string &code)
| Set CRC code to one of the standardpolynomials using the string value.
void | set_generator (const bvec &poly)
| Set an arbitary polynomial in bvec form. Start with highest order terms.
void | set_code (const std::string &code)
| Set CRC code to one of the standardpolynomials using the string value.
void | parity (const bvec &in_bits, bvec &out) const
| Calulate the parity bits.
bool | check_parity (const bvec &coded_bits) const
| Return true if parity checks OK otherwise flase.
void | encode (const bvec &in_bits, bvec &out) const
| Calculate and add parity to the in_bits.
bvec | encode (const bvec &in_bits) const
| Returns the in_bits vector with parity added.
bool | decode (const bvec &coded_bits, bvec &out) const
| Return true if parity checks OK otherwise flase. Also returns the message part in out.
bool | decode (bvec &bits) const
| Return true if parity checks OK otherwise flase. Also returns the message part in bits.

## Detailed Description

Cyclic Redundancy Check Codes.

This class will add the CRC bits after each input word. With b(i) denoting the i-th input bit and p(i) the i-th parity check bit, the order of the outbut bits will be:

[b(1), b(2), ..., b(k), p(1), p(2), ..., p(n-k)]

When the WCDMA CRC polynomials are used, this class will reverse the order of the parity check bits in order to comply to the WCDMA standard. Thus for the polynomials WCDMA-8, WCDMA-12, WCDMA-16, and WCDMA-24 the output will be:

[b(1), b(2), ..., b(k), p(n-k), ..., p(2), p(1)]

Usage:

CRC_Code crc(string("CRC-4"));
bvec bits = randb(10), coded_bits, decoded_bits;
bool error;
coded_bits = crc.encode(bits);
error = crc.decode(rec_bits, decoded_bits);
itpp::Array
General array class.
Definition array.h:105
itpp::CRC_Code
Cyclic Redundancy Check Codes.
Definition crc.h:65
itpp::randb
bin randb(void)
Generates a random bit (equally likely 0s and 1s)
Definition random.h:793

Definition at line 64 of file crc.h.

## Constructor & Destructor Documentation

## CRC_Code() [1/2]

itpp::CRC_Code::CRC_Code | ( |  | ) |

inline

Default Constructor.

Definition at line 69 of file crc.h.

## CRC_Code() [2/2]

itpp::CRC_Code::CRC_Code | ( | const std::string & | code | ) |

inline

Set CRC code to one of the standardpolynomials using the string value.

Parameters

  code | Possible values: CRC-4, CRC-7, CRC-8, CRC-12, CRC-24, CRC-32, CCITT-4, CCITT-5, CCITT-6, CCITT-16, CCITT-32, WCDMA-8, WCDMA-12, WCDMA-16, WCDMA-24, ATM-8, ANSI-16, SDLC-16

Definition at line 78 of file crc.h.

## Member Function Documentation

## set_generator()

void itpp::CRC_Code::set_generator | ( | const bvec & | poly | ) |

Set an arbitary polynomial in bvec form. Start with highest order terms.

Definition at line 37 of file crc.cpp.

References it_assert, and itpp::poly().

Referenced by set_code().

## set_code()

void itpp::CRC_Code::set_code | ( | const std::string & | code | ) |

Set CRC code to one of the standardpolynomials using the string value.

Definition at line 70 of file crc.cpp.

References it_assert, itpp::poly(), set_generator(), and itpp::Array< T >::size().

## parity()

void itpp::CRC_Code::parity | ( | const bvec & | in_bits,
|  | bvec & | out
| ) |  | const

Calulate the parity bits.

Definition at line 87 of file crc.cpp.

References itpp::concat(), itpp::reverse(), itpp::Array< T >::size(), and itpp::zeros_b().

Referenced by encode().

## check_parity()

bool itpp::CRC_Code::check_parity | ( | const bvec & | coded_bits | ) | const

Return true if parity checks OK otherwise flase.

Definition at line 106 of file crc.cpp.

References itpp::concat(), itpp::Array< T >::left(), itpp::reverse(), itpp::Array< T >::right(), itpp::Array< T >::size(), and itpp::zeros_b().

Referenced by decode(), and decode().

## encode() [1/2]

void itpp::CRC_Code::encode | ( | const bvec & | in_bits,
|  | bvec & | out
| ) |  | const

Calculate and add parity to the in_bits.

Definition at line 130 of file crc.cpp.

References itpp::concat(), and parity().

Referenced by encode().

## encode() [2/2]

bvec itpp::CRC_Code::encode | ( | const bvec & | in_bits | ) | const

Returns the in_bits vector with parity added.

Definition at line 137 of file crc.cpp.

References encode().

## decode() [1/2]

bool itpp::CRC_Code::decode | ( | const bvec & | coded_bits,
|  | bvec & | out
| ) |  | const

Return true if parity checks OK otherwise flase. Also returns the message part in out.

Definition at line 144 of file crc.cpp.

References check_parity(), and itpp::Array< T >::size().

## decode() [2/2]

bool itpp::CRC_Code::decode | ( | bvec & | bits | ) | const

Return true if parity checks OK otherwise flase. Also returns the message part in bits.

Definition at line 154 of file crc.cpp.

References check_parity().

The documentation for this class was generated from the following files:

- itpp/comm/crc.h
- itpp/comm/crc.cpp

Generated on Mon Jun 10 2024 11:49:34 for IT++ by Doxygen 1.9.8