GNU Radio's DVBS2RX Package
gr::dvbs2rx::reed_muller Class Reference

Interleaved (64, 7, 32) Reed-Muller encoder/decoder. More...

#include <reed_muller.h>

Public Member Functions

 reed_muller (euclidean_map_func_ptr p_custom_map=nullptr)
 Construct the Reed-Muller encoder/decoder.
 
 reed_muller (std::vector< uint8_t > &&enabled_codewords, euclidean_map_func_ptr p_custom_map=nullptr)
 Construct the Reed-Muller encoder/decoder for a codeword subset.
 
uint64_t encode (uint8_t in_dataword)
 Encode a given dataword (PLSC) into the corresponding codeword.
 
uint8_t decode (uint64_t hard_dec)
 Decode a binary hard decision into the corresponding dataword.
 
uint8_t decode (const float *soft_dec)
 Decode a real soft decision vector into the corresponding dataword.
 

Static Public Member Functions

static void default_euclidean_map (float *dptr, uint64_t codeword)
 Map codeword to a real vector using 2-PAM.
 

Public Attributes

euclidean_map_func_ptr euclidean_map
 

Detailed Description

Interleaved (64, 7, 32) Reed-Muller encoder/decoder.

This class implements DVB-S2's Reed-Muller (RM) code used by the physical layer signaling (PLS) encoding.

Constructor & Destructor Documentation

◆ reed_muller() [1/2]

gr::dvbs2rx::reed_muller::reed_muller ( euclidean_map_func_ptr  p_custom_map = nullptr)
explicit

Construct the Reed-Muller encoder/decoder.

Parameters
p_custom_mapPointer to a custom mapping function used to map the binary the codewords into real-valued Euclidean-space images. If not defined, method "default_euclidean_map" is used.

◆ reed_muller() [2/2]

gr::dvbs2rx::reed_muller::reed_muller ( std::vector< uint8_t > &&  enabled_codewords,
euclidean_map_func_ptr  p_custom_map = nullptr 
)
explicit

Construct the Reed-Muller encoder/decoder for a codeword subset.

Parameters
enabled_codewordsTemporary vector with the indexes within [0, 128) corresponding to subset of codewords that may appear (according to a priori knowledge) on the incoming signal.
p_custom_mapPointer to a custom mapping function used to map the binary the codewords into real-valued Euclidean-space images. If not defined, method "default_euclidean_map" is used.

Member Function Documentation

◆ decode() [1/2]

uint8_t gr::dvbs2rx::reed_muller::decode ( const float *  soft_dec)

Decode a real soft decision vector into the corresponding dataword.

Parameters
soft_decReceived 64-element soft decision real vector to be decoded.
Returns
Decoded 7-bit dataword.

◆ decode() [2/2]

uint8_t gr::dvbs2rx::reed_muller::decode ( uint64_t  hard_dec)

Decode a binary hard decision into the corresponding dataword.

Parameters
hard_decReceived 64-bit hard decision to be decoded.
Returns
Decoded 7-bit dataword.

◆ default_euclidean_map()

static void gr::dvbs2rx::reed_muller::default_euclidean_map ( float *  dptr,
uint64_t  codeword 
)
static

Map codeword to a real vector using 2-PAM.

Parameters
dptrDestination pointer for the 64 real 2-PAM mapped symbols.
codeword64-bit (64, 7, 32) Reed-Muller codeword to be mapped.
Note
This is the default Euclidean-space mapping if another custom mapping is not provided through the constructor.

◆ encode()

uint64_t gr::dvbs2rx::reed_muller::encode ( uint8_t  in_dataword)

Encode a given dataword (PLSC) into the corresponding codeword.

Parameters
in_dataword7-bit PLSC dataword.
Returns
64-bit interleaved (64, 7, 32) RM codeword.

Member Data Documentation

◆ euclidean_map

euclidean_map_func_ptr gr::dvbs2rx::reed_muller::euclidean_map

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