Header formatter that adds the payload bits/symbol format and a packet number counter. More...
#include <gnuradio/digital/header_format_counter.h>
Public Types | |
typedef std::shared_ptr< header_format_counter > | sptr |
Public Types inherited from gr::digital::header_format_default | |
typedef std::shared_ptr< header_format_default > | sptr |
Public Types inherited from gr::digital::header_format_base | |
typedef std::shared_ptr< header_format_base > | sptr |
Public Member Functions | |
header_format_counter (const std::string &access_code, int threshold, int bps) | |
~header_format_counter () override | |
bool | format (int nbytes_in, const unsigned char *input, pmt::pmt_t &output, pmt::pmt_t &info) override |
size_t | header_nbits () const override |
Public Member Functions inherited from gr::digital::header_format_default | |
header_format_default (const std::string &access_code, int threshold, int bps) | |
~header_format_default () override | |
bool | format (int nbytes_in, const unsigned char *input, pmt::pmt_t &output, pmt::pmt_t &info) override |
bool | parse (int nbits_in, const unsigned char *input, std::vector< pmt::pmt_t > &info, int &nbits_processed) override |
size_t | header_nbits () const override |
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 () |
virtual bool | format (int nbytes_in, const unsigned char *input, pmt::pmt_t &output, pmt::pmt_t &info)=0 |
virtual bool | parse (int nbits_in, const unsigned char *input, std::vector< pmt::pmt_t > &info, int &nbits_processed)=0 |
virtual size_t | header_nbits () const =0 |
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 () override |
Verify that the header is valid. More... | |
int | header_payload () override |
Protected Member Functions inherited from gr::digital::header_format_default | |
void | enter_have_sync () override |
Access code found, start getting the header. More... | |
void | enter_have_header (int payload_len) override |
Header found, setup for pulling in the hard decision bits. More... | |
bool | header_ok () override |
Verify that the header is valid. More... | |
int | header_payload () override |
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... | |
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... | |
virtual bool | header_ok ()=0 |
Verify that the header is valid. More... | |
virtual int | header_payload ()=0 |
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 | |
Protected Types inherited from gr::digital::header_format_base | |
enum | state_t { STATE_SYNC_SEARCH , STATE_HAVE_SYNC } |
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:
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.
typedef std::shared_ptr<header_format_counter> gr::digital::header_format_counter::sptr |
gr::digital::header_format_counter::header_format_counter | ( | const std::string & | access_code, |
int | threshold, | ||
int | bps | ||
) |
|
override |
|
overridevirtual |
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 |
nbytes_in | The length (in bytes) of the input payload |
input | An array of unsigned chars of the packet payload |
output | A pmt::u8vector with the new header prepended onto the input data. |
info | A 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. |
Implements gr::digital::header_format_base.
|
overridevirtual |
Returns the length of the formatted header in bits.
Implements gr::digital::header_format_base.
|
overrideprotectedvirtual |
Verify that the header is valid.
Implements gr::digital::header_format_base.
|
overrideprotectedvirtual |
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 |
Implements gr::digital::header_format_base.
|
static |
Factory to create an async packet header formatter; returns an sptr to the object.
access_code | An 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. |
threshold | How many bits can be wrong in the access code and still count as correct. |
bps | The number of bits/second used in the payload's modulator. |
|
protected |
keeps track of the number of packets transmitted