Agora  1.2.0
Agora project
scrambler.h
Go to the documentation of this file.
1 
5 #ifndef SCRAMBLER_H_
6 #define SCRAMBLER_H_
7 
8 #include <bitset>
9 #include <cstddef>
10 #include <cstdint>
11 #include <vector>
12 
13 namespace AgoraScrambler {
14 // [1, 127] (93)
15 static constexpr uint8_t kScramblerInitState = 0x5D;
16 static constexpr uint8_t kScramblerlength = 127;
17 
18 class Scrambler {
19  public:
20  Scrambler();
21  ~Scrambler() = default;
22 
23  void Scramble(void* scrambled, const void* to_scramble,
24  size_t bytes_to_scramble);
25  void Scramble(void* inout_bytes, size_t bytes_to_scramble);
26  void Descramble(void* descrambled, const void* scrambled,
27  size_t bytes_to_descramble);
28  void Descramble(void* inout_bytes, size_t bytes_to_descramble);
29 
30  private:
49  static void WlanScrambler(void* output_buffer, const void* input_buffer,
50  size_t num_bytes,
51  std::bitset<kScramblerlength>& scram_buffer,
52  std::vector<std::byte>& bit_buffer);
53 
62  static void ConvertBytesToBits(const std::byte* in_byte_buffer,
63  size_t byte_buffer_size,
64  std::byte* out_bit_buffer);
65 
74  static void ConvertBitsToBytes(const std::byte* in_bit_buffer,
75  size_t byte_buffer_size,
76  std::byte* out_byte_buffer);
77 
78  std::bitset<kScramblerlength> scram_buffer_;
79  std::vector<std::byte> bit_buffer_;
80 }; // class Scrambler
81 
82 }; // namespace AgoraScrambler
83 
84 #endif // SCRAMBLER_H_
fmt::v8::detail::byte
byte
Definition: core.h:388
AgoraScrambler::Scrambler::Scrambler
Scrambler()
Definition: scrambler.cc:18
AgoraScrambler::kBitsInByte
static constexpr size_t kBitsInByte
Definition: scrambler.cc:14
AgoraScrambler::Scrambler::WlanScrambler
static void WlanScrambler(void *output_buffer, const void *input_buffer, size_t num_bytes, std::bitset< kScramblerlength > &scram_buffer, std::vector< std::byte > &bit_buffer)
WLAN Scrambler of IEEE 802.11-2012.
Definition: scrambler.cc:60
AgoraScrambler::Scrambler
Definition: scrambler.h:18
AGORA_LOG_TRACE
#define AGORA_LOG_TRACE(...)
Definition: logger.h:92
AgoraScrambler::Scrambler::Scramble
void Scramble(void *scrambled, const void *to_scramble, size_t bytes_to_scramble)
Definition: scrambler.cc:120
AgoraScrambler::Scrambler::scram_buffer_
std::bitset< kScramblerlength > scram_buffer_
Definition: scrambler.h:78
AgoraScrambler::Scrambler::ConvertBytesToBits
static void ConvertBytesToBits(const std::byte *in_byte_buffer, size_t byte_buffer_size, std::byte *out_bit_buffer)
Convert a byte array to a bit array. MSB first.
Definition: scrambler.cc:23
AgoraScrambler::Scrambler::ConvertBitsToBytes
static void ConvertBitsToBytes(const std::byte *in_bit_buffer, size_t byte_buffer_size, std::byte *out_byte_buffer)
Convert a bit array to a byte array. MSB first.
Definition: scrambler.cc:42
AgoraScrambler::kBitsInitArraySize
static constexpr size_t kBitsInitArraySize
Definition: scrambler.cc:15
scrambler.h
Scramble Class and helper functions.
i
for i
Definition: generate_data.m:107
u
Plot Rx waveform for u
Definition: inspect_single_frame.m:108
AgoraScrambler::Scrambler::Descramble
void Descramble(void *descrambled, const void *scrambled, size_t bytes_to_descramble)
Definition: scrambler.cc:131
AgoraScrambler::Scrambler::~Scrambler
~Scrambler()=default
AgoraScrambler::kScramblerlength
static constexpr uint8_t kScramblerlength
Definition: scrambler.h:16
AgoraScrambler::kScramblerInitState
static constexpr uint8_t kScramblerInitState
Definition: scrambler.h:15
AgoraScrambler::kStartingVectorSize
static constexpr size_t kStartingVectorSize
Definition: scrambler.cc:16
ofdmtxrx.x0
x0
Definition: ofdmtxrx.py:399
AgoraScrambler::Scrambler::bit_buffer_
std::vector< std::byte > bit_buffer_
Definition: scrambler.h:79
AgoraScrambler
Definition: scrambler.cc:12