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

PLSC Decoder. More...

#include <pl_signaling.h>

Inheritance diagram for gr::dvbs2rx::plsc_decoder:

Public Member Functions

 plsc_decoder (int debug_level=0)
 
 plsc_decoder (std::vector< uint8_t > &&expected_pls, int debug_level=0)
 
 ~plsc_decoder ()
 
void decode (const gr_complex *bpsk_in, bool coherent=true, bool soft=true)
 Decode the incoming pi/2 BPSK symbols of the PLSC.
 
void get_info (pls_info_t *out) const
 
- Public Member Functions inherited from gr::dvbs2rx::pl_submodule
 pl_submodule (const std::string name, int debug_level)
 Verbose logger.
 

Public Attributes

uint8_t d_plsc
 

Additional Inherited Members

- Protected Attributes inherited from gr::dvbs2rx::pl_submodule
gr::logger_ptr d_logger
 Debug level.
 

Detailed Description

PLSC Decoder.

Decodes a sequence of 64 noisy pi/2 BPSK symbols into the corresponding 7-bit PLS code. Implements the pi/2 BPSK demapping, the PLSC descrambling, and the parsing of the PLSC information.

Constructor & Destructor Documentation

◆ plsc_decoder() [1/2]

gr::dvbs2rx::plsc_decoder::plsc_decoder ( int  debug_level = 0)
explicit

◆ plsc_decoder() [2/2]

gr::dvbs2rx::plsc_decoder::plsc_decoder ( std::vector< uint8_t > &&  expected_pls,
int  debug_level = 0 
)
explicit

◆ ~plsc_decoder()

gr::dvbs2rx::plsc_decoder::~plsc_decoder ( )
inline

Member Function Documentation

◆ decode()

void gr::dvbs2rx::plsc_decoder::decode ( const gr_complex *  bpsk_in,
bool  coherent = true,
bool  soft = true 
)

Decode the incoming pi/2 BPSK symbols of the PLSC.

Parameters
bpsk_in(const gr_complex *) Input pi/2 BPSK symbols, starting from the last SOF symbol and followed by the PLSC symbols (see note 1).
coherent(bool) Whether to use coherent BPSK demapping (the default). When set to false, the decoding uses hard decisions produced through differential demapping of the pi/2 BPSK symbols, even if soft=true (see note 2).
soft(bool) Whether to decode the PLSC dataword using soft pi/2 BPSK decisions instead of hard decisions.
Note
1 - The last SOF symbol is required when coherent=false. In contrast, when coherent=true, the implementation simply skips this symbol. However, note "bpsk_in" must start at the last SOF symbol regardless.
2 - The non-coherent (differential) demapping is only supported with hard decisions because there is negligible performance difference when differential demapping is used to produce soft decisions. On the contrary, based on some experiments, it seems that differential demapping with soft decisions would only be slower, and it would produce a similar (if not worse) performance than differential demapping with hard decisions. Ultimately, the supported parameter combinations are: (coherent=true, soft=false), (coherent=true, soft=true), and (coherent=false, soft=false). With (coherent=false, soft=true), the implementation will silently fall back to differential demapping with hard decisions (coherent=false, soft=false).

◆ get_info()

void gr::dvbs2rx::plsc_decoder::get_info ( pls_info_t out) const
inline

Read the last decoded PLS information

Parameters
out(pls_info_t*) Pointer to a pls_info_t structure where the last decoded information will be written.

Member Data Documentation

◆ d_plsc

uint8_t gr::dvbs2rx::plsc_decoder::d_plsc

Last decoded PLSC


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