Loading...
Searching...
No Matches
gr::fec::code::ccsds_encoder Class Referenceabstract
GNU Radio C++ Signal Processing Blocks » Error Coding and Decoding

CCSDS Encoding class for convolutional encoding with rate 1/2, K=7, and polynomials [109, 79]. More...

`#include <gnuradio/fec/ccsds_encoder.h>`

## Public Member Functions

bool | set_frame_size (unsigned int frame_size) override=0
double | rate () override=0
Public Member Functions inherited from gr::fec::generic_encoder
virtual void | generic_work (const void *in_buffer, void *out_buffer)=0
int | unique_id ()
std::string | alias ()
virtual int | get_input_size ()=0
virtual int | get_output_size ()=0
virtual const char * | get_input_conversion ()
virtual const char * | get_output_conversion ()
| generic_encoder (void)
| generic_encoder (std::string name)
virtual | ~generic_encoder ()

## Static Public Member Functions

static generic_encoder::sptr | make (int frame_size, int start_state=0, cc_mode_t mode=CC_STREAMING)

## Additional Inherited Members

Public Types inherited from gr::fec::generic_encoder
typedef std::shared_ptr< generic_encoder > | sptr
Public Attributes inherited from gr::fec::generic_encoder
int | my_id
std::string | d_name
Static Public Attributes inherited from gr::fec::generic_encoder
static int | base_unique_id
Protected Attributes inherited from gr::fec::generic_encoder
gr::logger_ptr | d_logger

## Detailed Description

CCSDS Encoding class for convolutional encoding with rate 1/2, K=7, and polynomials [109, 79].

Uses Phil Karn's (KA9Q) implementation of the CCSDS encoder for rate 1/2, K=7, and CC polynomial [109, 79]. These are non-adjustable in this encoder. For an adjustable CC encoder where we can set the rate, constraint length, and polynomial, see gr::fec::code::cc_encoder.

The encoder is set up with a number of bits per frame in the constructor. When not being used in a tagged stream mode, this encoder will only process frames of the length provided here. If used in a tagged stream block, this setting becomes the maximum allowable frame size that the block may process.

The `mode` is a cc_mode_t that specifies how the convolutional encoder will behave and under what conditions.

- 'CC_STREAMING': mode expects an uninterrupted flow of samples into the encoder, and the output stream is continually encoded.

- 'CC_TERMINATED': is a mode designed for packet-based systems. This mode adds rate*(k-1) bits to the output as a way to help flush the decoder.

- 'CC_TAILBITING': is another packet-based method. Instead of adding bits onto the end of the packet, this mode will continue the code between the payloads of packets by pre-initializing the state of the new packet based on the state of the last packet for (k-1) bits.

- 'CC_TRUNCATED': a truncated code always resets the registers to the `start_state` between frames.

A common convolutional encoder uses K=7, Rate=1/2, Polynomials=[109, 79]. This is the Voyager code from NASA:

- 109: b(1101101) --> 1 + x + x^3 + x^4 + x^6
- 79: b(1001111) --> 1 + x^3 + x^4 + x^5 + x^6

## Member Function Documentation

## make()

generic_encoder::sptr gr::fec::code::ccsds_encoder::make | ( | int | frame_size,
|  | int | start_state = 0,
|  | cc_mode_t | mode = CC_STREAMING )

static

Build the CCSDS (rate=1/2, K=7, polys=[109,79] convolutional code FECAPI object.

Parameters

  frame_size | Number of bits per frame. If using in the tagged stream style, this is the maximum allowable number of bits per frame.
  start_state | Initialization state of the shift register.
  mode | cc_mode_t mode of the encoding.

References CC_STREAMING.

## rate()

double gr::fec::code::ccsds_encoder::rate | ( |  | ) |

override pure virtual

Returns the coding rate of this encoder.

Implements gr::fec::generic_encoder.

## set_frame_size()

bool gr::fec::code::ccsds_encoder::set_frame_size | ( | unsigned int | frame_size | ) |

override pure virtual

Sets the uncoded frame size to `frame_size`. If `frame_size` is greater than the value given to the constructor, the frame size will be capped by that initial value and this function will return false. Otherwise, it returns true.

Implements gr::fec::generic_encoder.

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

- ccsds_encoder.h