gr::fec::code::ccsds_encoder
gr::fec::generic_encoder
gnuradio/fec/ccsds_encoder.h
generic_encoder::sptr static generic_encoder::sptr gr::fec::code::ccsds_encoder::make (int frame_size, int start_state=0, cc_mode_t mode=CC_STREAMING) make gr::fec::code::ccsds_encoder::make int frame_size int start_state 0 cc_mode_t mode CC_STREAMING

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

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.

bool bool gr::fec::code::ccsds_encoder::set_frame_size (unsigned int frame_size) override=0 set_frame_size gr::fec::code::ccsds_encoder::set_frame_size set_frame_size unsigned int frame_size

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.

double double gr::fec::code::ccsds_encoder::rate () override=0 rate gr::fec::code::ccsds_encoder::rate rate

Returns the coding rate of this encoder.

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

gr::fec::code::ccsds_encoder
gr::fec::generic_encoder
gr::fec::code::ccsds_encoder
gr::fec::generic_encoder
d_logger
d_name
std::basic_string< Char >
std::shared_ptr< logger >
std::string
- gr::fec::code::ccsds_encoder
  alias
- gr::fec::code::ccsds_encoder
  base_unique_id
- gr::fec::code::ccsds_encoder
  d_logger
- gr::fec::code::ccsds_encoder
  d_name
- gr::fec::code::ccsds_encoder
  generic_encoder
- gr::fec::code::ccsds_encoder
  generic_encoder
- gr::fec::code::ccsds_encoder
  generic_work
- gr::fec::code::ccsds_encoder
  get_input_conversion
- gr::fec::code::ccsds_encoder
  get_input_size
- gr::fec::code::ccsds_encoder
  get_output_conversion
- gr::fec::code::ccsds_encoder
  get_output_size
- gr::fec::code::ccsds_encoder
  make
- gr::fec::code::ccsds_encoder
  my_id
- gr::fec::code::ccsds_encoder
  rate
- gr::fec::code::ccsds_encoder
  set_frame_size
- gr::fec::code::ccsds_encoder
  sptr
- gr::fec::code::ccsds_encoder
  unique_id
- gr::fec::code::ccsds_encoder
  ~generic_encoder