GNU Radio Manual and C++ API Reference  3.8.1.0
The Free & Open Software Radio Ecosystem
gr::digital::header_format_counter Class Reference

Header formatter that adds the payload bits/symbol format and a packet number counter. More...

#include <gnuradio/digital/header_format_counter.h>

Public Member Functions

 header_format_counter (const std::string &access_code, int threshold, int bps)
 
virtual ~header_format_counter ()
 
virtual bool format (int nbytes_in, const unsigned char *input, pmt::pmt_t &output, pmt::pmt_t &info)
 
virtual size_t header_nbits () const
 
- Public Member Functions inherited from gr::digital::header_format_default
 header_format_default (const std::string &access_code, int threshold, int bps)
 
virtual ~header_format_default ()
 
virtual bool parse (int nbits_in, const unsigned char *input, std::vector< pmt::pmt_t > &info, int &nbits_processed)
 
bool set_access_code (const std::string &access_code)
 
unsigned long long access_code () const
 
void set_threshold (unsigned int thresh=0)
 
unsigned int threshold () const
 
- Public Member Functions inherited from gr::digital::header_format_base
 header_format_base ()
 
virtual ~header_format_base ()
 
sptr base ()
 
sptr formatter ()
 
size_t header_nbytes () const
 

Static Public Member Functions

static sptr make (const std::string &access_code, int threshold, int bps)
 
- Static Public Member Functions inherited from gr::digital::header_format_default
static sptr make (const std::string &access_code, int threshold, int bps=1)
 

Protected Member Functions

bool header_ok ()
 Verify that the header is valid. More...
 
int header_payload ()
 
- Protected Member Functions inherited from gr::digital::header_format_default
virtual void enter_have_sync ()
 Access code found, start getting the header. More...
 
virtual void enter_have_header (int payload_len)
 Header found, setup for pulling in the hard decision bits. More...
 
- Protected Member Functions inherited from gr::digital::header_format_base
virtual void enter_search ()
 Enter Search state of the state machine to find the access code. More...
 

Protected Attributes

uint16_t d_counter
 keeps track of the number of packets transmitted More...
 
- Protected Attributes inherited from gr::digital::header_format_default
uint64_t d_access_code
 register to hold the access code More...
 
size_t d_access_code_len
 length in bits of the access code More...
 
uint16_t d_bps
 bits/sec of payload modulation More...
 
unsigned long long d_data_reg
 used to look for access_code More...
 
unsigned long long d_mask
 
unsigned int d_threshold
 how many bits may be wrong in sync vector More...
 
int d_pkt_len
 Length of the packet to put into the output buffer. More...
 
int d_pkt_count
 Number of bytes bits already received. More...
 
int d_nbits
 num bits processed since reset More...
 
- Protected Attributes inherited from gr::digital::header_format_base
state_t d_state
 state of the state machine More...
 
header_buffer d_hdr_reg
 header_buffer object to hold header bits More...
 
pmt::pmt_t d_info
 info captured from the header More...
 
gr::logger_ptr d_logger
 
gr::logger_ptr d_debug_logger
 

Additional Inherited Members

- Public Types inherited from gr::digital::header_format_base
typedef boost::shared_ptr< header_format_basesptr
 
- Protected Types inherited from gr::digital::header_format_base
enum  state_t { STATE_SYNC_SEARCH, STATE_HAVE_SYNC }
 

Detailed Description

Header formatter that adds the payload bits/symbol format and a packet number counter.

Child class of header_format_default. This version adds two fields to the header:

  • bps (16 bits): bits/symbol used when modulating the payload.
  • count (16 bits): a counter for the packet number.

Like the default packet formatter, the length is encoded as a 16-bit value repeated twice. The full packet looks like:

  | access code | hdr | payload |

Where the access code is <= 64 bits and hdr is:

  |  0 -- 15 | 16 -- 31 |
  | pkt len  | pkt len  |
  | bits/sym | counter  |

The access code and header are formatted for network byte order.

See also
header_format_default

Constructor & Destructor Documentation

◆ header_format_counter()

gr::digital::header_format_counter::header_format_counter ( const std::string &  access_code,
int  threshold,
int  bps 
)

◆ ~header_format_counter()

virtual gr::digital::header_format_counter::~header_format_counter ( )
virtual

Member Function Documentation

◆ format()

virtual bool gr::digital::header_format_counter::format ( int  nbytes_in,
const unsigned char *  input,
pmt::pmt_t output,
pmt::pmt_t info 
)
virtual

Creates a header from the access code and packet length to build an output packet in the form:

  | access code | pkt len | pkt len | bps | counter |
Parameters
nbytes_inThe length (in bytes) of the input payload
inputAn array of unsigned chars of the packet payload
outputA pmt::u8vector with the new header prepended onto the input data.
infoA pmt::dict containing meta data and info about the PDU (generally from the metadata portion of the input PDU). Data can be extracted from this for the header formatting or inserted.

Reimplemented from gr::digital::header_format_default.

◆ header_nbits()

virtual size_t gr::digital::header_format_counter::header_nbits ( ) const
virtual

Returns the length of the formatted header in bits.

Reimplemented from gr::digital::header_format_default.

◆ header_ok()

bool gr::digital::header_format_counter::header_ok ( )
protectedvirtual

Verify that the header is valid.

Reimplemented from gr::digital::header_format_default.

◆ header_payload()

int gr::digital::header_format_counter::header_payload ( )
protectedvirtual

Get info from the header; return payload length and package rest of data in d_info dictionary.

Extracts the header of the form:

  | access code | pkt len | pkt len | bps | counter | payload |

Reimplemented from gr::digital::header_format_default.

◆ make()

static sptr gr::digital::header_format_counter::make ( const std::string &  access_code,
int  threshold,
int  bps 
)
static

Factory to create an async packet header formatter; returns an sptr to the object.

Parameters
access_codeAn access code that is used to find and synchronize the start of a packet. Used in the parser and in other blocks like a corr_est block that helps trigger the receiver. Can be up to 64-bits long.
thresholdHow many bits can be wrong in the access code and still count as correct.
bpsThe number of bits/second used in the payload's modulator.

Member Data Documentation

◆ d_counter

uint16_t gr::digital::header_format_counter::d_counter
protected

keeps track of the number of packets transmitted


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