Interleaved (64, 7, 32) Reed-Muller encoder/decoder.
More...
#include <reed_muller.h>
|
| 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 void | default_euclidean_map (float *dptr, uint64_t codeword) |
| Map codeword to a real vector using 2-PAM.
|
|
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.
◆ reed_muller() [1/2]
Construct the Reed-Muller encoder/decoder.
- Parameters
-
p_custom_map | Pointer 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_codewords | Temporary 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_map | Pointer 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. |
◆ 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_dec | Received 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_dec | Received 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
-
dptr | Destination pointer for the 64 real 2-PAM mapped symbols. |
codeword | 64-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_dataword | 7-bit PLSC dataword. |
- Returns
- 64-bit interleaved (64, 7, 32) RM codeword.
◆ euclidean_map
The documentation for this class was generated from the following file: