summaryrefslogtreecommitdiff
path: root/gr-digital/include/digital
diff options
context:
space:
mode:
authorJohnathan Corgan <johnathan@corganlabs.com>2013-04-09 12:32:11 -0700
committerJohnathan Corgan <johnathan@corganlabs.com>2013-04-09 12:32:11 -0700
commit8d48040548fcac5e9105fb0e29385dbb3c2c0c19 (patch)
tree4db793bebbbf3d397b8f22d6e5373cafb2e46644 /gr-digital/include/digital
parent0442f56a40c82a67705a108cdbbbedc85a84dc1d (diff)
parentb2c7f058878f7a334fd81bb96d3bd9cd11f27f28 (diff)
Merge remote-tracking branch 'martin/next-ofdmfix' into next
Diffstat (limited to 'gr-digital/include/digital')
-rw-r--r--gr-digital/include/digital/ofdm_frame_equalizer_vcvc.h3
-rw-r--r--gr-digital/include/digital/packet_header_default.h7
-rw-r--r--gr-digital/include/digital/packet_header_ofdm.h39
3 files changed, 34 insertions, 15 deletions
diff --git a/gr-digital/include/digital/ofdm_frame_equalizer_vcvc.h b/gr-digital/include/digital/ofdm_frame_equalizer_vcvc.h
index 9cf24034a8..f8e15fb577 100644
--- a/gr-digital/include/digital/ofdm_frame_equalizer_vcvc.h
+++ b/gr-digital/include/digital/ofdm_frame_equalizer_vcvc.h
@@ -52,7 +52,8 @@ namespace gr {
static sptr make(
ofdm_equalizer_base::sptr equalizer,
const std::string &len_tag_key = "frame_len",
- bool propagate_channel_state=false
+ bool propagate_channel_state=false,
+ int fixed_frame_len=0
);
};
diff --git a/gr-digital/include/digital/packet_header_default.h b/gr-digital/include/digital/packet_header_default.h
index 64804e6d6a..e4c994593f 100644
--- a/gr-digital/include/digital/packet_header_default.h
+++ b/gr-digital/include/digital/packet_header_default.h
@@ -76,7 +76,7 @@ namespace gr {
* If the header length is smaller than 29, bits are simply left out. For this
* reason, they always start with the LSB.
*/
- bool header_formatter(
+ virtual bool header_formatter(
long packet_len,
unsigned char *out,
const std::vector<gr_tag_t> &tags=std::vector<gr_tag_t>()
@@ -85,10 +85,9 @@ namespace gr {
/*!
* \brief Inverse function to header_formatter().
*
- * Reads the bit stream in and writes a corresponding tag into \p tags.
- *
+ * Reads the bit stream in \p header and writes a corresponding tag into \p tags.
*/
- bool header_parser(
+ virtual bool header_parser(
const unsigned char *header,
std::vector<gr_tag_t> &tags);
diff --git a/gr-digital/include/digital/packet_header_ofdm.h b/gr-digital/include/digital/packet_header_ofdm.h
index 50296a9a50..30d6a953cd 100644
--- a/gr-digital/include/digital/packet_header_ofdm.h
+++ b/gr-digital/include/digital/packet_header_ofdm.h
@@ -41,10 +41,11 @@ namespace gr {
packet_header_ofdm(
const std::vector<std::vector<int> > &occupied_carriers,
int n_syms,
- const std::string &len_tag_key="packet_len",
- const std::string &frame_len_tag_key="frame_len",
- const std::string &num_tag_key="packet_num",
- int bits_per_sym=1);
+ const std::string &len_tag_key,
+ const std::string &frame_len_tag_key,
+ const std::string &num_tag_key,
+ int bits_per_header_sym,
+ int bits_per_payload_sym);
~packet_header_ofdm();
/*!
@@ -61,19 +62,37 @@ namespace gr {
const unsigned char *header,
std::vector<gr_tag_t> &tags);
+ /*!
+ * \param occupied_carriers See carrier allocator
+ * \param n_syms The number of OFDM symbols the header should be (usually 1)
+ * \param len_tag_key The tag key used for the packet length (number of bytes)
+ * \param frame_len_tag_key The tag key used for the frame length (number of
+ * OFDM symbols, this is the tag key required for the
+ * frame equalizer etc.)
+ * \param bits_per_header_sym Bits per complex symbol in the header, e.g. 1 if
+ * the header is BPSK modulated, 2 if it's QPSK
+ * modulated etc.
+ * \param bits_per_payload_sym Bits per complex symbol in the payload. This is
+ * required to figure out how many OFDM symbols
+ * are necessary to encode the given number of
+ * bytes.
+ */
static sptr make(
- const std::vector<std::vector<int> > &occupied_carriers,
- int n_syms,
- const std::string &len_tag_key="packet_len",
- const std::string &frame_len_tag_key="frame_len",
- const std::string &num_tag_key="packet_num",
- int bits_per_sym=1);
+ const std::vector<std::vector<int> > &occupied_carriers,
+ int n_syms,
+ const std::string &len_tag_key="packet_len",
+ const std::string &frame_len_tag_key="frame_len",
+ const std::string &num_tag_key="packet_num",
+ int bits_per_header_sym=1,
+ int bits_per_payload_sym=1
+ );
protected:
pmt::pmt_t d_frame_len_tag_key;
const std::vector<std::vector<int> > d_occupied_carriers; //!< Which carriers/symbols carry data
int d_syms_per_set; //!< Helper variable: Total number of elements in d_occupied_carriers
+ int d_bits_per_payload_sym;
};
} // namespace digital