RENEWLab  1.1.0
RENEW project
utils.h
Go to the documentation of this file.
1 /*
2  Copyright (c) 2018-2019, Rice University
3  RENEW OPEN SOURCE LICENSE: http://renew-wireless.org/license
4  Author(s): Rahman Doost-Mohamamdy: doost@rice.edu
5 
6 ---------------------------------------------------------------------
7  Utils functions
8 ---------------------------------------------------------------------
9 */
10 
11 #ifndef UTILS_HEADER
12 #define UTILS_HEADER
13 
14 #include <pthread.h>
15 #include <unistd.h>
16 
17 #include <atomic>
18 #include <chrono>
19 #include <complex>
20 #include <condition_variable>
21 #include <csignal>
22 #include <cstddef>
23 #include <cstdint>
24 #include <cstdlib>
25 #include <cstring>
26 #include <fstream> // std::ifstream
27 #include <iostream>
28 #include <mutex>
29 #include <sstream>
30 #include <string>
31 #include <thread>
32 #include <vector>
33 
34 int pin_thread_to_core(int core_id, pthread_t& thread_to_pin);
35 int pin_to_core(int core_id);
36 
37 class Utils {
38  public:
39  Utils();
40  ~Utils();
41 
42  static std::vector<size_t> strToChannels(const std::string& channel);
43  static std::vector<std::complex<float>> cint16_to_cfloat(
44  const std::vector<std::complex<int16_t>>& in);
45  static std::vector<std::complex<int16_t>> cfloat_to_cint16(
46  const std::vector<std::complex<float>>& in);
47  static std::vector<std::complex<int16_t>> float_to_cint16(
48  const std::vector<std::vector<float>>& in);
49  // static std::vector<std::complex<float>> doubletocfloat(
50  // const std::vector<std::vector<double>>& in);
51  static std::vector<std::complex<float>> uint32tocfloat(
52  const std::vector<uint32_t>& in, const std::string& order);
53  static std::vector<uint32_t> cint16_to_uint32(
54  const std::vector<std::complex<int16_t>>& in, bool conj,
55  const std::string& order);
56  static std::vector<std::vector<size_t>> loadSlots(
57  const std::vector<std::string>& frames, char sym);
58  static void loadDevices(const std::string& filename,
59  std::vector<std::string>& data);
60  static void loadData(const char* filename,
61  std::vector<std::complex<int16_t>>& data, int samples);
62  static void loadData(const char* filename, std::vector<unsigned>& data,
63  int samples);
64  static void loadTDDConfig(const std::string& filename, std::string& jconfig);
65  static std::vector<std::string> split(const std::string& s, char delimiter);
66  static void printVector(std::vector<std::complex<int16_t>>& data);
67 };
68 #endif /* UTILS_HEADER */
pin_thread_to_core
int pin_thread_to_core(int core_id, pthread_t &thread_to_pin)
Definition: utils.cc:18
Utils::printVector
static void printVector(std::vector< std::complex< int16_t >> &data)
Definition: utils.cc:222
Utils::~Utils
~Utils()
Utils::cint16_to_uint32
static std::vector< uint32_t > cint16_to_uint32(const std::vector< std::complex< int16_t >> &in, bool conj, const std::string &order)
Definition: utils.cc:103
channel
Equalize with *known * channel
Definition: berr_perfect.m:49
Utils::Utils
Utils()
data
data
Definition: bits2syms.m:26
pin_to_core
int pin_to_core(int core_id)
Definition: utils.cc:13
Utils
Definition: utils.h:37
Utils::float_to_cint16
static std::vector< std::complex< int16_t > > float_to_cint16(const std::vector< std::vector< float >> &in)
Definition: utils.cc:58
order
Modulation order(2/4/16/64=BSPK/QPSK/16-QAM/64-QAM) TX_SCALE=0.5
Utils::cint16_to_cfloat
static std::vector< std::complex< float > > cint16_to_cfloat(const std::vector< std::complex< int16_t >> &in)
Definition: utils.cc:71
Utils::uint32tocfloat
static std::vector< std::complex< float > > uint32tocfloat(const std::vector< uint32_t > &in, const std::string &order)
Definition: utils.cc:81
samples
end Rx payload processing Extract the payload samples(integral number of OFDM symbols following preamble) payload_vec
Utils::strToChannels
static std::vector< size_t > strToChannels(const std::string &channel)
Definition: utils.cc:29
vector
Maybe you need to transpose bits_matrix before reshaping it to a vector
Definition: syms2bits.m:62
Utils::split
static std::vector< std::string > split(const std::string &s, char delimiter)
Definition: utils.cc:212
AGC_SIM_DEMO.filename
filename
LOGGER #.
Definition: AGC_SIM_DEMO.py:85
Utils::loadSlots
static std::vector< std::vector< size_t > > loadSlots(const std::vector< std::string > &frames, char sym)
Definition: utils.cc:118
Utils::loadTDDConfig
static void loadTDDConfig(const std::string &filename, std::string &jconfig)
Definition: utils.cc:196
Utils::loadDevices
static void loadDevices(const std::string &filename, std::vector< std::string > &data)
Definition: utils.cc:134
Utils::loadData
static void loadData(const char *filename, std::vector< std::complex< int16_t >> &data, int samples)
Definition: utils.cc:171
Utils::cfloat_to_cint16
static std::vector< std::complex< int16_t > > cfloat_to_cint16(const std::vector< std::complex< float >> &in)
Definition: utils.cc:48