fun_ofdm  1.0
802.11a Physical Layer for USRP
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Macros Pages
fun::interleaver Class Reference

The interleaver class. More...

#include <interleaver.h>

Static Public Member Functions

static std::vector< unsigned char > interleave (std::vector< unsigned char > data)
 interleaves the data More...
 
static std::vector< unsigned char > deinterleave (std::vector< unsigned char > data)
 deinterleaves the data More...
 

Detailed Description

The interleaver class.

The interleaver class performs interleaving as described in section 17.3.5.6 of the 802.11a-1999 standard. The Interleaver class contains two static functions: interleave and deinterleave and thus doesn't need a constructor. However, it does use the BitInterleave struct as a helper for these two functions.

Definition at line 31 of file interleaver.h.

Member Function Documentation

std::vector< unsigned char > fun::interleaver::deinterleave ( std::vector< unsigned char >  data)
static

deinterleaves the data

Parameters
dataVector of data to be deinterleaved
Returns
Vector of deinterleaved data

Definition at line 28 of file interleaver.cpp.

References fun::BitInterleave::fill().

Referenced by fun::ppdu::decode_data(), and fun::ppdu::decode_header().

29  {
30  std::vector<unsigned int> deinterleave_map;
31  BitInterleave(48, 1).fill(deinterleave_map, true);
32 
33  std::vector<unsigned char>data_deinterleaved(data.size());
34  for(int s = 0; s < data.size(); s += deinterleave_map.size())
35  for(int t = 0; t < deinterleave_map.size(); t++)
36  data_deinterleaved[s + deinterleave_map[t]] = data[s + t];
37  return data_deinterleaved;
38  }
std::vector< unsigned char > fun::interleaver::interleave ( std::vector< unsigned char >  data)
static

interleaves the data

Parameters
dataVector of data to be interleaved
Returns
Vector of interleaved data

Definition at line 15 of file interleaver.cpp.

References fun::BitInterleave::fill().

Referenced by fun::ppdu::encode_data(), and fun::ppdu::encoder_header().

16  {
17  std::vector<unsigned int> interleave_map;
18  BitInterleave(48, 1).fill(interleave_map, false);
19 
20  std::vector<unsigned char> data_interleaved(data.size());
21  for(int x = 0; x < data.size(); x += interleave_map.size())
22  for(int y = 0; y < interleave_map.size(); y++)
23  data_interleaved[x + interleave_map[y]] = data[x + y];
24  return data_interleaved;
25  }

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