<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.16.1" xml:lang="en-US">
  <compounddef id="classgr_1_1digital_1_1header__format__base" kind="class" language="C++" prot="public" abstract="yes">
    <compoundname>gr::digital::header_format_base</compoundname>
    <basecompoundref prot="public" virt="non-virtual">std::enable_shared_from_this&lt; gr::digital::header_format_base &gt;</basecompoundref>
    <derivedcompoundref refid="classgr_1_1digital_1_1header__format__crc" prot="public" virt="non-virtual">gr::digital::header_format_crc</derivedcompoundref>
    <derivedcompoundref refid="classgr_1_1digital_1_1header__format__default" prot="public" virt="non-virtual">gr::digital::header_format_default</derivedcompoundref>
    <includes refid="header__format__base_8h" local="no">gnuradio/digital/header_format_base.h</includes>
    <sectiondef kind="protected-type">
      <memberdef kind="enum" id="classgr_1_1digital_1_1header__format__base_1a75e1a71f4ae157073a8430dcf247a84c" prot="protected" static="no" strong="no">
        <type></type>
        <name>state_t</name>
        <qualifiedname>gr::digital::header_format_base::state_t</qualifiedname>
        <enumvalue id="classgr_1_1digital_1_1header__format__base_1a75e1a71f4ae157073a8430dcf247a84ca16dfc49f94e86da45f2ee72a6fd5545d" prot="protected">
          <name>STATE_SYNC_SEARCH</name>
          <briefdescription>
          </briefdescription>
          <detaileddescription>
          </detaileddescription>
        </enumvalue>
        <enumvalue id="classgr_1_1digital_1_1header__format__base_1a75e1a71f4ae157073a8430dcf247a84caea34dac0667ecb2b45a3984073e237d1" prot="protected">
          <name>STATE_HAVE_SYNC</name>
          <briefdescription>
          </briefdescription>
          <detaileddescription>
          </detaileddescription>
        </enumvalue>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="gr-digital/include/gnuradio/digital/header_format_base.h" line="180" column="5" bodyfile="gr-digital/include/gnuradio/digital/header_format_base.h" bodystart="180" bodyend="180"/>
      </memberdef>
    </sectiondef>
    <sectiondef kind="public-type">
      <memberdef kind="typedef" id="classgr_1_1digital_1_1header__format__base_1a7bbc4a67fea9a607182e964892ab137a" prot="public" static="no">
        <type>std::shared_ptr&lt; <ref refid="classgr_1_1digital_1_1header__format__base_1ac0504f677b7506f9acc2b204f8fbea75" kindref="member">header_format_base</ref> &gt;</type>
        <definition>typedef std::shared_ptr&lt;header_format_base&gt; gr::digital::header_format_base::sptr</definition>
        <argsstring></argsstring>
        <name>sptr</name>
        <qualifiedname>gr::digital::header_format_base::sptr</qualifiedname>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="gr-digital/include/gnuradio/digital/header_format_base.h" line="114" column="29" bodyfile="gr-digital/include/gnuradio/digital/header_format_base.h" bodystart="114" bodyend="-1"/>
      </memberdef>
    </sectiondef>
    <sectiondef kind="protected-attrib">
      <memberdef kind="variable" id="classgr_1_1digital_1_1header__format__base_1a68188f0d090ed7714601cecfa9db8a50" prot="protected" static="no" mutable="no">
        <type><ref refid="classgr_1_1digital_1_1header__format__base_1a75e1a71f4ae157073a8430dcf247a84c" kindref="member">state_t</ref></type>
        <definition>state_t gr::digital::header_format_base::d_state</definition>
        <argsstring></argsstring>
        <name>d_state</name>
        <qualifiedname>gr::digital::header_format_base::d_state</qualifiedname>
        <briefdescription>
<para>state of the state machine </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="gr-digital/include/gnuradio/digital/header_format_base.h" line="182" column="13" bodyfile="gr-digital/include/gnuradio/digital/header_format_base.h" bodystart="182" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="classgr_1_1digital_1_1header__format__base_1a215bc24b277bb10c79308fdf1503e40e" prot="protected" static="no" mutable="no">
        <type><ref refid="classgr_1_1digital_1_1header__buffer" kindref="compound">header_buffer</ref></type>
        <definition>header_buffer gr::digital::header_format_base::d_hdr_reg</definition>
        <argsstring></argsstring>
        <name>d_hdr_reg</name>
        <qualifiedname>gr::digital::header_format_base::d_hdr_reg</qualifiedname>
        <briefdescription>
<para><ref refid="classgr_1_1digital_1_1header__buffer" kindref="compound">header_buffer</ref> object to hold header bits </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="gr-digital/include/gnuradio/digital/header_format_base.h" line="183" column="19" bodyfile="gr-digital/include/gnuradio/digital/header_format_base.h" bodystart="183" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="classgr_1_1digital_1_1header__format__base_1a07a45e28050b53bb8f49e7e6e3c82399" prot="protected" static="no" mutable="no">
        <type><ref refid="namespacepmt_1a94a208b58dc16675b02674c28784d88b" kindref="member">pmt::pmt_t</ref></type>
        <definition>pmt::pmt_t gr::digital::header_format_base::d_info</definition>
        <argsstring></argsstring>
        <name>d_info</name>
        <qualifiedname>gr::digital::header_format_base::d_info</qualifiedname>
        <briefdescription>
<para>info captured from the header </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="gr-digital/include/gnuradio/digital/header_format_base.h" line="184" column="16" bodyfile="gr-digital/include/gnuradio/digital/header_format_base.h" bodystart="184" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="classgr_1_1digital_1_1header__format__base_1a1dbf3bde87823470f48819db89e132d5" prot="protected" static="no" mutable="no">
        <type><ref refid="namespacegr_1a5f54bf3c08623ce6dea7b1cdb2eeada7" kindref="member">gr::logger_ptr</ref></type>
        <definition>gr::logger_ptr gr::digital::header_format_base::d_logger</definition>
        <argsstring></argsstring>
        <name>d_logger</name>
        <qualifiedname>gr::digital::header_format_base::d_logger</qualifiedname>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
<para>Used by blocks to access the logger system. </para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="gr-digital/include/gnuradio/digital/header_format_base.h" line="205" column="20" bodyfile="gr-digital/include/gnuradio/digital/header_format_base.h" bodystart="205" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="classgr_1_1digital_1_1header__format__base_1a0b9d68d2bbe2150a467a1b033c94f0f3" prot="protected" static="no" mutable="no">
        <type><ref refid="namespacegr_1a5f54bf3c08623ce6dea7b1cdb2eeada7" kindref="member">gr::logger_ptr</ref></type>
        <definition>gr::logger_ptr gr::digital::header_format_base::d_debug_logger</definition>
        <argsstring></argsstring>
        <name>d_debug_logger</name>
        <qualifiedname>gr::digital::header_format_base::d_debug_logger</qualifiedname>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="gr-digital/include/gnuradio/digital/header_format_base.h" line="206" column="20" bodyfile="gr-digital/include/gnuradio/digital/header_format_base.h" bodystart="206" bodyend="-1"/>
      </memberdef>
    </sectiondef>
    <sectiondef kind="public-func">
      <memberdef kind="function" id="classgr_1_1digital_1_1header__format__base_1ac0504f677b7506f9acc2b204f8fbea75" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type></type>
        <definition>gr::digital::header_format_base::header_format_base</definition>
        <argsstring>()</argsstring>
        <name>header_format_base</name>
        <qualifiedname>gr::digital::header_format_base::header_format_base</qualifiedname>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="gr-digital/include/gnuradio/digital/header_format_base.h" line="116" column="5"/>
      </memberdef>
      <memberdef kind="function" id="classgr_1_1digital_1_1header__format__base_1ab47c2e30885850d805a9854345b630f5" prot="public" static="no" const="no" explicit="no" inline="no" virt="virtual">
        <type></type>
        <definition>virtual gr::digital::header_format_base::~header_format_base</definition>
        <argsstring>()</argsstring>
        <name>~header_format_base</name>
        <qualifiedname>gr::digital::header_format_base::~header_format_base</qualifiedname>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="gr-digital/include/gnuradio/digital/header_format_base.h" line="117" column="13"/>
      </memberdef>
      <memberdef kind="function" id="classgr_1_1digital_1_1header__format__base_1a5a7b2939707146f2b28d7e91e04103c2" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <type><ref refid="classgr_1_1digital_1_1header__format__base_1a7bbc4a67fea9a607182e964892ab137a" kindref="member">sptr</ref></type>
        <definition>sptr gr::digital::header_format_base::base</definition>
        <argsstring>()</argsstring>
        <name>base</name>
        <qualifiedname>gr::digital::header_format_base::base</qualifiedname>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="gr-digital/include/gnuradio/digital/header_format_base.h" line="119" column="10" bodyfile="gr-digital/include/gnuradio/digital/header_format_base.h" bodystart="119" bodyend="119"/>
      </memberdef>
      <memberdef kind="function" id="classgr_1_1digital_1_1header__format__base_1aba944a279dc29a7ec716f9a7cc36348b" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <type><ref refid="classgr_1_1digital_1_1header__format__base_1a7bbc4a67fea9a607182e964892ab137a" kindref="member">sptr</ref></type>
        <definition>sptr gr::digital::header_format_base::formatter</definition>
        <argsstring>()</argsstring>
        <name>formatter</name>
        <qualifiedname>gr::digital::header_format_base::formatter</qualifiedname>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="gr-digital/include/gnuradio/digital/header_format_base.h" line="120" column="10" bodyfile="gr-digital/include/gnuradio/digital/header_format_base.h" bodystart="120" bodyend="120"/>
      </memberdef>
      <memberdef kind="function" id="classgr_1_1digital_1_1header__format__base_1a474a23d04b7f43dee207cc4a56a433dc" prot="public" static="no" const="no" explicit="no" inline="no" virt="pure-virtual">
        <type>bool</type>
        <definition>virtual bool gr::digital::header_format_base::format</definition>
        <argsstring>(int nbytes_in, const unsigned char *input, pmt::pmt_t &amp;output, pmt::pmt_t &amp;info)=0</argsstring>
        <name>format</name>
        <qualifiedname>gr::digital::header_format_base::format</qualifiedname>
        <reimplementedby refid="classgr_1_1digital_1_1header__format__counter_1a80fb21ca011bd7103edba11b47cc148f">format</reimplementedby>
        <reimplementedby refid="classgr_1_1digital_1_1header__format__crc_1a2b53d888a654b5ffd701f723f33220c1">format</reimplementedby>
        <reimplementedby refid="classgr_1_1digital_1_1header__format__default_1abb0c70a73b247068af2d4e2f8669a6d2">format</reimplementedby>
        <reimplementedby refid="classgr_1_1digital_1_1header__format__ofdm_1afc12ea3d24b19d5edf4865cd164ddf16">format</reimplementedby>
        <param>
          <type>int</type>
          <declname>nbytes_in</declname>
        </param>
        <param>
          <type>const unsigned char *</type>
          <declname>input</declname>
        </param>
        <param>
          <type><ref refid="namespacepmt_1a94a208b58dc16675b02674c28784d88b" kindref="member">pmt::pmt_t</ref> &amp;</type>
          <declname>output</declname>
        </param>
        <param>
          <type><ref refid="namespacepmt_1a94a208b58dc16675b02674c28784d88b" kindref="member">pmt::pmt_t</ref> &amp;</type>
          <declname>info</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
<para>Function to creates a header. The child classes overload this function to format the header in the protocol-specific way.</para>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>nbytes_in</parametername>
</parameternamelist>
<parameterdescription>
<para>The length (in bytes) of the <computeroutput>input</computeroutput> payload </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>input</parametername>
</parameternamelist>
<parameterdescription>
<para>An array of unsigned chars of the packet payload </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>output</parametername>
</parameternamelist>
<parameterdescription>
<para>A pmt::u8vector with the new header prepended onto the input data. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>info</parametername>
</parameternamelist>
<parameterdescription>
<para>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.</para>
</parameterdescription>
</parameteritem>
</parameterlist>
MUST be overloaded. </para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="gr-digital/include/gnuradio/digital/header_format_base.h" line="137" column="18"/>
      </memberdef>
      <memberdef kind="function" id="classgr_1_1digital_1_1header__format__base_1af1eecb5bc63e1186a08f001db78a39ba" prot="public" static="no" const="no" explicit="no" inline="no" virt="pure-virtual">
        <type>bool</type>
        <definition>virtual bool gr::digital::header_format_base::parse</definition>
        <argsstring>(int nbits_in, const unsigned char *input, std::vector&lt; pmt::pmt_t &gt; &amp;info, int &amp;nbits_processed)=0</argsstring>
        <name>parse</name>
        <qualifiedname>gr::digital::header_format_base::parse</qualifiedname>
        <reimplementedby refid="classgr_1_1digital_1_1header__format__crc_1a1a73ba865da3885266cdd8f11a476bf8">parse</reimplementedby>
        <reimplementedby refid="classgr_1_1digital_1_1header__format__default_1a1afa03fb00c304107f6b34b0f7c79737">parse</reimplementedby>
        <reimplementedby refid="classgr_1_1digital_1_1header__format__ofdm_1a285d0e780242aa303b84f3e8b9ac5b8c">parse</reimplementedby>
        <param>
          <type>int</type>
          <declname>nbits_in</declname>
        </param>
        <param>
          <type>const unsigned char *</type>
          <declname>input</declname>
        </param>
        <param>
          <type>std::vector&lt; <ref refid="namespacepmt_1a94a208b58dc16675b02674c28784d88b" kindref="member">pmt::pmt_t</ref> &gt; &amp;</type>
          <declname>info</declname>
        </param>
        <param>
          <type>int &amp;</type>
          <declname>nbits_processed</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
<para>Parses a header. This function is overloaded in the child class, which knows how to convert the incoming hard bits (0&apos;s and 1&apos;s) back into a packet header.</para>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>nbits_in</parametername>
</parameternamelist>
<parameterdescription>
<para>The number of bits in the input array. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>input</parametername>
</parameternamelist>
<parameterdescription>
<para>The input as hard decision bits. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>info</parametername>
</parameternamelist>
<parameterdescription>
<para>A vector of pmt::dicts to hold any meta data or info about the PDU. When parsing the header, the formatter can add info from the header into this dict. Each packet has a single PMT dictionary of info, so the vector length is the number of packets received extracted during one call to this parser function. </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>nbits_processed</parametername>
</parameternamelist>
<parameterdescription>
<para>Number of input bits actually processed; If all goes well, this is nbits_in. A premature return after a bad header could be less than this.</para>
</parameterdescription>
</parameteritem>
</parameterlist>
MUST be overloaded. </para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="gr-digital/include/gnuradio/digital/header_format_base.h" line="162" column="18"/>
      </memberdef>
      <memberdef kind="function" id="classgr_1_1digital_1_1header__format__base_1a2a29bbba93657362cb030dae2ca44fb9" prot="public" static="no" const="yes" explicit="no" inline="no" virt="pure-virtual">
        <type>size_t</type>
        <definition>virtual size_t gr::digital::header_format_base::header_nbits</definition>
        <argsstring>() const =0</argsstring>
        <name>header_nbits</name>
        <qualifiedname>gr::digital::header_format_base::header_nbits</qualifiedname>
        <reimplementedby refid="classgr_1_1digital_1_1header__format__counter_1a0b42ca8eafbbb5589ae061755ea80d1b">header_nbits</reimplementedby>
        <reimplementedby refid="classgr_1_1digital_1_1header__format__crc_1a788e3fb24f9759aa70408fcb518b6444">header_nbits</reimplementedby>
        <reimplementedby refid="classgr_1_1digital_1_1header__format__default_1abac5fd3445e4e40c2339bc89bc151bee">header_nbits</reimplementedby>
        <reimplementedby refid="classgr_1_1digital_1_1header__format__ofdm_1a09aad4c73a264b289de9b4958c16d295">header_nbits</reimplementedby>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
<para>Returns the length of the formatted header in bits. MUST be overloaded. </para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="gr-digital/include/gnuradio/digital/header_format_base.h" line="171" column="20"/>
      </memberdef>
      <memberdef kind="function" id="classgr_1_1digital_1_1header__format__base_1adbde345d805bdd51191d4d19a066c421" prot="public" static="no" const="yes" explicit="no" inline="no" virt="non-virtual">
        <type>size_t</type>
        <definition>size_t gr::digital::header_format_base::header_nbytes</definition>
        <argsstring>() const</argsstring>
        <name>header_nbytes</name>
        <qualifiedname>gr::digital::header_format_base::header_nbytes</qualifiedname>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
<para>Returns the length of the formatted header in bytes. Auto-calculated from the overloaded <ref refid="classgr_1_1digital_1_1header__format__base_1a2a29bbba93657362cb030dae2ca44fb9" kindref="member">header_nbits()</ref>. </para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="gr-digital/include/gnuradio/digital/header_format_base.h" line="177" column="12"/>
      </memberdef>
    </sectiondef>
    <sectiondef kind="protected-func">
      <memberdef kind="function" id="classgr_1_1digital_1_1header__format__base_1aa3e7d6bb51dab765439a53123da36061" prot="protected" static="no" const="no" explicit="no" inline="no" virt="virtual">
        <type>void</type>
        <definition>virtual void gr::digital::header_format_base::enter_search</definition>
        <argsstring>()</argsstring>
        <name>enter_search</name>
        <qualifiedname>gr::digital::header_format_base::enter_search</qualifiedname>
        <briefdescription>
<para>Enter Search state of the state machine to find the access code. </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="gr-digital/include/gnuradio/digital/header_format_base.h" line="187" column="18"/>
      </memberdef>
      <memberdef kind="function" id="classgr_1_1digital_1_1header__format__base_1a404596256ca742f4b3e6c11b001e0490" prot="protected" static="no" const="no" explicit="no" inline="no" virt="virtual">
        <type>void</type>
        <definition>virtual void gr::digital::header_format_base::enter_have_sync</definition>
        <argsstring>()</argsstring>
        <name>enter_have_sync</name>
        <qualifiedname>gr::digital::header_format_base::enter_have_sync</qualifiedname>
        <reimplementedby refid="classgr_1_1digital_1_1header__format__default_1a528d86f908e5d5b15f533ee497a4d21d">enter_have_sync</reimplementedby>
        <briefdescription>
<para>Access code found, start getting the header. </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="gr-digital/include/gnuradio/digital/header_format_base.h" line="190" column="18"/>
      </memberdef>
      <memberdef kind="function" id="classgr_1_1digital_1_1header__format__base_1a9680b0ad5fa7d472dcef59a60ec91b4c" prot="protected" static="no" const="no" explicit="no" inline="no" virt="virtual">
        <type>void</type>
        <definition>virtual void gr::digital::header_format_base::enter_have_header</definition>
        <argsstring>(int payload_len)</argsstring>
        <name>enter_have_header</name>
        <qualifiedname>gr::digital::header_format_base::enter_have_header</qualifiedname>
        <reimplementedby refid="classgr_1_1digital_1_1header__format__default_1a4960602b160b24d8e0687c43e392b718">enter_have_header</reimplementedby>
        <param>
          <type>int</type>
          <declname>payload_len</declname>
        </param>
        <briefdescription>
<para>Header found, setup for pulling in the hard decision bits. </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="gr-digital/include/gnuradio/digital/header_format_base.h" line="193" column="18"/>
      </memberdef>
      <memberdef kind="function" id="classgr_1_1digital_1_1header__format__base_1a1bf6fe4f690b6484ff95b0f3b6facd57" prot="protected" static="no" const="no" explicit="no" inline="no" virt="pure-virtual">
        <type>bool</type>
        <definition>virtual bool gr::digital::header_format_base::header_ok</definition>
        <argsstring>()=0</argsstring>
        <name>header_ok</name>
        <qualifiedname>gr::digital::header_format_base::header_ok</qualifiedname>
        <reimplementedby refid="classgr_1_1digital_1_1header__format__counter_1a8dfff0da84d91fecf25af088df301366">header_ok</reimplementedby>
        <reimplementedby refid="classgr_1_1digital_1_1header__format__crc_1a206f8bbae370fc5282bcbd1a329a2f91">header_ok</reimplementedby>
        <reimplementedby refid="classgr_1_1digital_1_1header__format__default_1ae91bcc5f3306f7f480884b189a99dc1e">header_ok</reimplementedby>
        <briefdescription>
<para>Verify that the header is valid. </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="gr-digital/include/gnuradio/digital/header_format_base.h" line="196" column="18"/>
      </memberdef>
      <memberdef kind="function" id="classgr_1_1digital_1_1header__format__base_1a56f72e4249334964b941a96663221d10" prot="protected" static="no" const="no" explicit="no" inline="no" virt="pure-virtual">
        <type>int</type>
        <definition>virtual int gr::digital::header_format_base::header_payload</definition>
        <argsstring>()=0</argsstring>
        <name>header_payload</name>
        <qualifiedname>gr::digital::header_format_base::header_payload</qualifiedname>
        <reimplementedby refid="classgr_1_1digital_1_1header__format__counter_1ab59c26048aaf48b7c9e28779112be7ac">header_payload</reimplementedby>
        <reimplementedby refid="classgr_1_1digital_1_1header__format__crc_1af4d1ee5238e4b1fc6660b7bd637d7c94">header_payload</reimplementedby>
        <reimplementedby refid="classgr_1_1digital_1_1header__format__default_1a69ee888e0e66a530a78f1cf06eead787">header_payload</reimplementedby>
        <reimplementedby refid="classgr_1_1digital_1_1header__format__ofdm_1a473b4e0f4a2551931d683f21b576a50b">header_payload</reimplementedby>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
<para>Get info from the header; return payload length and package rest of data in d_info dictionary. </para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="gr-digital/include/gnuradio/digital/header_format_base.h" line="201" column="17"/>
      </memberdef>
    </sectiondef>
    <briefdescription>
<para>Base header formatter class. </para>
    </briefdescription>
    <detaileddescription>
<para>Creates a base class that other packet formatters will inherit from. The child classes create and parse protocol-specific headers. To add a new protocol processing class, create a class that inherits from this and overload the necessary functions. The main functions to overload are:</para>
<para><itemizedlist>
<listitem><para><ref refid="classgr_1_1digital_1_1header__format__base_1a474a23d04b7f43dee207cc4a56a433dc" kindref="member">header_format_base::format</ref>: takes in a payload and creates a header from it.</para>
</listitem>
</itemizedlist>
<itemizedlist>
<listitem><para><ref refid="classgr_1_1digital_1_1header__format__base_1af1eecb5bc63e1186a08f001db78a39ba" kindref="member">header_format_base::parse</ref>: receive bits and extract the header info. These are expected to be hard bits (0 or 1) that have either been sliced or gone through an FEC decoder.</para>
</listitem>
</itemizedlist>
<itemizedlist>
<listitem><para><ref refid="classgr_1_1digital_1_1header__format__base_1a2a29bbba93657362cb030dae2ca44fb9" kindref="member">header_format_base::header_nbits</ref>: the number of bits in the full header (including an access code).</para>
</listitem>
</itemizedlist>
<itemizedlist>
<listitem><para><ref refid="classgr_1_1digital_1_1header__format__base_1a1bf6fe4f690b6484ff95b0f3b6facd57" kindref="member">header_format_base::header_ok</ref>: checks to see if the received header is ok. Since the header often specifies the length of the frame to decode next, it is important that this information be correct.</para>
</listitem>
</itemizedlist>
<itemizedlist>
<listitem><para><ref refid="classgr_1_1digital_1_1header__format__base_1a56f72e4249334964b941a96663221d10" kindref="member">header_format_base::header_payload</ref>: unpacks the header register (from the class <ref refid="classgr_1_1digital_1_1header__buffer" kindref="compound">header_buffer</ref>) as a set of bits into its component parts of the header. For example, this may find and extract the frame length field as a 16-bit value and/or flags related to the type of modulation and FEC codes used in the frame&apos;s payload.</para>
</listitem>
</itemizedlist>
Protected functions of this class that the child class should overload include:</para>
<para><itemizedlist>
<listitem><para>enter_search </para>
</listitem>
<listitem><para>enter_have_sync </para>
</listitem>
<listitem><para>enter_have_header</para>
</listitem>
</itemizedlist>
These three function represent the different states of the parsing state machine. Expected behavior is that the protocol has some known word that we are first looking for the identify the start of the frame. The parsing FSM starts in a state to search for the beginning of the header, normally by looking for a known word (i.e., the access code). Then it changes state to read in the full header. We expect that the protocol provides the length of the header for processing, so the parsing looks pulls in the full length of the header. Then it changes state to the &quot;have header&quot; state for checking and processing. The base class provides the basic functionality for this state machine. However, most likely, each child class must manage these states for themselves.</para>
<para>This class is specifically designed to work with packets/frames in the asynchronous PDU architecture of GNU Radio. See the packet_format_async block for formatting the headers onto payloads and packet_parse_b block for parsing headers in a receiver.</para>
<para>The Packet Format block takes in a PDU and uses a formatter class derived from this class to add a header onto the packet. The Packet Format blocks takes in the PDU, unpacks the message, and passes it to a formatter class&apos; format function, which builds a header based on the payload. The header is passed back and emitted from formatter block as a separate output. The async format block, packet_format_async, has two message output ports. The &apos;header&apos; port passes the header out as a PDU and the &apos;payload&apos; passes the payload out as a PDU. The flowgraph can then separately modulate and combine these two pieces in the follow-on processing.</para>
<para>The packet_sync_b block uses the formatter class by calling the &apos;parse&apos; function to parse the received packet headers. This parser block is a sink for the data stream and emits a message from an &apos;info&apos; port that contains an PMT dictionary of the information in the header. The formatter class determines the dictionary keys.</para>
<para>This is the base class for dealing with formatting headers for different protocols and purposes. For other header formatting behaviors, create a child class from here and overload the format, parse, and parsing state machine functions as necessary.</para>
<para><simplesect kind="see"><para><ref refid="classgr_1_1digital_1_1header__format__default" kindref="compound">header_format_default</ref> </para>
</simplesect>
<simplesect kind="see"><para><ref refid="classgr_1_1digital_1_1header__format__counter" kindref="compound">header_format_counter</ref> </para>
</simplesect>
</para>
    </detaileddescription>
    <inheritancegraph>
      <node id="1">
        <label>gr::digital::header_format_base</label>
        <link refid="classgr_1_1digital_1_1header__format__base"/>
        <childnode refid="2" relation="public-inheritance">
        </childnode>
      </node>
      <node id="6">
        <label>gr::digital::header_format_counter</label>
        <link refid="classgr_1_1digital_1_1header__format__counter"/>
        <childnode refid="5" relation="public-inheritance">
        </childnode>
      </node>
      <node id="3">
        <label>gr::digital::header_format_crc</label>
        <link refid="classgr_1_1digital_1_1header__format__crc"/>
        <childnode refid="1" relation="public-inheritance">
        </childnode>
      </node>
      <node id="5">
        <label>gr::digital::header_format_default</label>
        <link refid="classgr_1_1digital_1_1header__format__default"/>
        <childnode refid="1" relation="public-inheritance">
        </childnode>
      </node>
      <node id="4">
        <label>gr::digital::header_format_ofdm</label>
        <link refid="classgr_1_1digital_1_1header__format__ofdm"/>
        <childnode refid="3" relation="public-inheritance">
        </childnode>
      </node>
      <node id="2">
        <label>std::enable_shared_from_this&lt; gr::digital::header_format_base &gt;</label>
      </node>
    </inheritancegraph>
    <collaborationgraph>
      <node id="3">
        <label>gr::digital::header_buffer</label>
        <link refid="classgr_1_1digital_1_1header__buffer"/>
      </node>
      <node id="1">
        <label>gr::digital::header_format_base</label>
        <link refid="classgr_1_1digital_1_1header__format__base"/>
        <childnode refid="2" relation="public-inheritance">
        </childnode>
        <childnode refid="3" relation="usage">
          <edgelabel>d_hdr_reg</edgelabel>
        </childnode>
        <childnode refid="4" relation="usage">
          <edgelabel>d_info</edgelabel>
        </childnode>
        <childnode refid="5" relation="usage">
          <edgelabel>d_debug_logger</edgelabel>
          <edgelabel>d_logger</edgelabel>
        </childnode>
      </node>
      <node id="2">
        <label>std::enable_shared_from_this&lt; gr::digital::header_format_base &gt;</label>
      </node>
      <node id="5">
        <label>std::shared_ptr&lt; logger &gt;</label>
      </node>
      <node id="4">
        <label>std::shared_ptr&lt; pmt_base &gt;</label>
      </node>
    </collaborationgraph>
    <location file="gr-digital/include/gnuradio/digital/header_format_base.h" line="110" column="1" bodyfile="gr-digital/include/gnuradio/digital/header_format_base.h" bodystart="112" bodyend="207"/>
    <listofallmembers>
      <member refid="classgr_1_1digital_1_1header__format__base_1a5a7b2939707146f2b28d7e91e04103c2" prot="public" virt="non-virtual"><scope>gr::digital::header_format_base</scope><name>base</name></member>
      <member refid="classgr_1_1digital_1_1header__format__base_1a0b9d68d2bbe2150a467a1b033c94f0f3" prot="protected" virt="non-virtual"><scope>gr::digital::header_format_base</scope><name>d_debug_logger</name></member>
      <member refid="classgr_1_1digital_1_1header__format__base_1a215bc24b277bb10c79308fdf1503e40e" prot="protected" virt="non-virtual"><scope>gr::digital::header_format_base</scope><name>d_hdr_reg</name></member>
      <member refid="classgr_1_1digital_1_1header__format__base_1a07a45e28050b53bb8f49e7e6e3c82399" prot="protected" virt="non-virtual"><scope>gr::digital::header_format_base</scope><name>d_info</name></member>
      <member refid="classgr_1_1digital_1_1header__format__base_1a1dbf3bde87823470f48819db89e132d5" prot="protected" virt="non-virtual"><scope>gr::digital::header_format_base</scope><name>d_logger</name></member>
      <member refid="classgr_1_1digital_1_1header__format__base_1a68188f0d090ed7714601cecfa9db8a50" prot="protected" virt="non-virtual"><scope>gr::digital::header_format_base</scope><name>d_state</name></member>
      <member refid="classgr_1_1digital_1_1header__format__base_1a9680b0ad5fa7d472dcef59a60ec91b4c" prot="protected" virt="virtual"><scope>gr::digital::header_format_base</scope><name>enter_have_header</name></member>
      <member refid="classgr_1_1digital_1_1header__format__base_1a404596256ca742f4b3e6c11b001e0490" prot="protected" virt="virtual"><scope>gr::digital::header_format_base</scope><name>enter_have_sync</name></member>
      <member refid="classgr_1_1digital_1_1header__format__base_1aa3e7d6bb51dab765439a53123da36061" prot="protected" virt="virtual"><scope>gr::digital::header_format_base</scope><name>enter_search</name></member>
      <member refid="classgr_1_1digital_1_1header__format__base_1a474a23d04b7f43dee207cc4a56a433dc" prot="public" virt="pure-virtual"><scope>gr::digital::header_format_base</scope><name>format</name></member>
      <member refid="classgr_1_1digital_1_1header__format__base_1aba944a279dc29a7ec716f9a7cc36348b" prot="public" virt="non-virtual"><scope>gr::digital::header_format_base</scope><name>formatter</name></member>
      <member refid="classgr_1_1digital_1_1header__format__base_1ac0504f677b7506f9acc2b204f8fbea75" prot="public" virt="non-virtual"><scope>gr::digital::header_format_base</scope><name>header_format_base</name></member>
      <member refid="classgr_1_1digital_1_1header__format__base_1a2a29bbba93657362cb030dae2ca44fb9" prot="public" virt="pure-virtual"><scope>gr::digital::header_format_base</scope><name>header_nbits</name></member>
      <member refid="classgr_1_1digital_1_1header__format__base_1adbde345d805bdd51191d4d19a066c421" prot="public" virt="non-virtual"><scope>gr::digital::header_format_base</scope><name>header_nbytes</name></member>
      <member refid="classgr_1_1digital_1_1header__format__base_1a1bf6fe4f690b6484ff95b0f3b6facd57" prot="protected" virt="pure-virtual"><scope>gr::digital::header_format_base</scope><name>header_ok</name></member>
      <member refid="classgr_1_1digital_1_1header__format__base_1a56f72e4249334964b941a96663221d10" prot="protected" virt="pure-virtual"><scope>gr::digital::header_format_base</scope><name>header_payload</name></member>
      <member refid="classgr_1_1digital_1_1header__format__base_1af1eecb5bc63e1186a08f001db78a39ba" prot="public" virt="pure-virtual"><scope>gr::digital::header_format_base</scope><name>parse</name></member>
      <member refid="classgr_1_1digital_1_1header__format__base_1a7bbc4a67fea9a607182e964892ab137a" prot="public" virt="non-virtual"><scope>gr::digital::header_format_base</scope><name>sptr</name></member>
      <member refid="classgr_1_1digital_1_1header__format__base_1a75e1a71f4ae157073a8430dcf247a84caea34dac0667ecb2b45a3984073e237d1" prot="protected" virt="non-virtual"><scope>gr::digital::header_format_base</scope><name>STATE_HAVE_SYNC</name></member>
      <member refid="classgr_1_1digital_1_1header__format__base_1a75e1a71f4ae157073a8430dcf247a84ca16dfc49f94e86da45f2ee72a6fd5545d" prot="protected" virt="non-virtual"><scope>gr::digital::header_format_base</scope><name>STATE_SYNC_SEARCH</name></member>
      <member refid="classgr_1_1digital_1_1header__format__base_1a75e1a71f4ae157073a8430dcf247a84c" prot="protected" virt="non-virtual"><scope>gr::digital::header_format_base</scope><name>state_t</name></member>
      <member refid="classgr_1_1digital_1_1header__format__base_1ab47c2e30885850d805a9854345b630f5" prot="public" virt="virtual"><scope>gr::digital::header_format_base</scope><name>~header_format_base</name></member>
    </listofallmembers>
  </compounddef>
</doxygen>
