10#ifndef INCLUDED_DVBS2RX_REED_MULLER_H
11#define INCLUDED_DVBS2RX_REED_MULLER_H
15#include <volk/volk_alloc.hh>
36 std::vector<uint8_t> d_enabled_codewords;
40 volk::vector<float> d_euclidean_img_lut;
42 volk::vector<float> d_dot_prod_buf;
62 explicit reed_muller(euclidean_map_func_ptr p_custom_map =
nullptr);
73 explicit reed_muller(std::vector<uint8_t>&& enabled_codewords,
74 euclidean_map_func_ptr p_custom_map =
nullptr);
90 uint64_t
encode(uint8_t in_dataword);
Interleaved (64, 7, 32) Reed-Muller encoder/decoder.
Definition reed_muller.h:30
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.
static void default_euclidean_map(float *dptr, uint64_t codeword)
Map codeword to a real vector using 2-PAM.
reed_muller(euclidean_map_func_ptr p_custom_map=nullptr)
Construct the Reed-Muller encoder/decoder.
uint8_t decode(const float *soft_dec)
Decode a real soft decision vector into the corresponding dataword.
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.
euclidean_map_func_ptr euclidean_map
Definition reed_muller.h:54
#define DVBS2RX_API
Definition include/gnuradio/dvbs2rx/api.h:19
const unsigned int n_plsc_codewords
Definition pl_defs.h:40
void(* euclidean_map_func_ptr)(float *dptr, uint64_t codeword)
Definition reed_muller.h:21
Fixed-length double-ended queue with contiguous volk-aligned elements.
Definition gr_bch.h:22