RENEWLab  1.1.0
RENEW project
BaseRadioSet.h
Go to the documentation of this file.
1 #include <SoapySDR/Device.hpp>
2 #include <chrono>
3 #include <complex>
4 #include <csignal>
5 #include <cstddef>
6 #include <cstdint>
7 #include <cstdlib>
8 #include <fstream>
9 #include <iostream>
10 #include <string>
11 
12 #include "config.h"
13 
14 class Radio;
15 
16 class BaseRadioSet {
17  public:
19  ~BaseRadioSet(void);
20  void radioTx(const void* const* buffs);
21  void radioRx(void* const* buffs);
22  int radioTx(size_t radio_id, size_t cell_id, const void* const* buffs,
23  int flags, long long& frameTime);
24  int radioRx(size_t radio_id, size_t cell_id, void* const* buffs,
25  long long& frameTime);
26  int radioRx(size_t radio_id, size_t cell_id, void* const* buffs, int numSamps,
27  long long& frameTime);
28  void radioStart(void);
29  void radioStop(void);
30  bool getRadioNotFound() { return radioNotFound; }
31 
32  private:
33  // use for create pthread
36  std::atomic_ulong* thread_count;
37  size_t tid;
38  size_t cell;
39  };
40  void init(BaseRadioContext* context);
41  void configure(BaseRadioContext* context);
42 
43  static void* init_launch(void* in_context);
44  static void* configure_launch(void* in_context);
45 
46  void radioTrigger(void);
47  void sync_delays(size_t cellIdx);
48  SoapySDR::Device* baseRadio(size_t cellId);
49  void collectCSI(bool&);
50  void dciqCalibrationProc(size_t);
51  void readSensors(void);
52 
54  std::vector<SoapySDR::Device*> hubs;
55  std::vector<std::vector<Radio*>> bsRadios; // [cell, iris]
57 };
iris_py.type
type
Definition: iris_py.py:333
Sounder::Hdf5Reader::ReadFrame
Event_data ReadFrame(Event_data event, int *offset)
Definition: hdf5_reader.cc:88
pin_thread_to_core
int pin_thread_to_core(int core_id, pthread_t &thread_to_pin)
Definition: utils.cc:18
Radio.h
w
w
Definition: berr_perfect.m:45
kDsDimsNum
static constexpr size_t kDsDimsNum
Definition: macros.h:15
Config::n_bs_sdrs_agg_
std::vector< size_t > n_bs_sdrs_agg_
Definition: config.h:338
Config::bs_channel
const std::string & bs_channel(void) const
Definition: config.h:104
BaseRadioSet::init
void init(BaseRadioContext *context)
Definition: BaseRadioSet.cc:356
Config::cl_rx_thread_num_
size_t cl_rx_thread_num_
Definition: config.h:407
Config::beam_sweep_
bool beam_sweep_
Definition: config.h:335
Config::imbalance_cal_en
bool imbalance_cal_en(void) const
Definition: config.h:61
Config::num_cells_
size_t num_cells_
Definition: config.h:318
Config::isDlData
bool isDlData(int, int)
Definition: config.cc:896
Config::trace_file_
std::string trace_file_
Definition: config.h:361
BaseRadioSet::BaseRadioContext::cell
size_t cell
Definition: BaseRadioSet.h:38
extract_pilots_data.seq
seq
Definition: extract_pilots_data.py:53
kMaxSupportedCPSize
static size_t kMaxSupportedCPSize
Definition: config.cc:23
Config::ul_tx_td_data_files_
std::vector< std::string > ul_tx_td_data_files_
Definition: config.h:399
Config::slot_per_frame_
size_t slot_per_frame_
Definition: config.h:304
Consts::kNumMappedSubcarriers_80211
static constexpr size_t kNumMappedSubcarriers_80211
Definition: constants.h:5
CommsLib::correlate_avx
static std::vector< std::complex< float > > correlate_avx(std::vector< std::complex< float >> const &f, std::vector< std::complex< float >> const &g)
CommsLib::correlate_avx_s
static std::vector< float > correlate_avx_s(std::vector< float > const &f, std::vector< float > const &g)
length
num clusters if length(angcTx)
Sounder::Hdf5Lib::group_name_
H5std_string group_name_
Definition: hdf5_lib.h:60
Config::cl_data_mod
const std::string & cl_data_mod(void) const
Definition: config.h:110
CommsLib::find_beacon
static int find_beacon(const std::vector< std::complex< float >> &iq)
Definition: comms-lib.cc:114
Config::pilot_sc
std::vector< std::complex< float > > & pilot_sc(void)
Definition: config.h:195
Config::cl_rxgain_vec_
std::vector< std::vector< double > > cl_rxgain_vec_
Definition: config.h:398
MUFFT_FORWARD
#define MUFFT_FORWARD
The forward FFT transform.
Definition: fft.h:43
dciqMinimize
static void dciqMinimize(SoapySDR::Device *targetDev, SoapySDR::Device *refDev, int direction, size_t channel, double rxCenterTone, double txCenterTone)
Definition: BaseRadioSet-calibrate.cc:210
ClientRadioSet::radioTx
int radioTx(size_t radio_id, const void *const *buffs, int numSamps, int flags, long long &frameTime)
Definition: ClientRadioSet.cc:351
Packet::frame_id
uint32_t frame_id
Definition: macros.h:53
json
nlohmann::json json
Definition: config.cc:18
CommsLib::measureTone
static float measureTone(std::vector< std::complex< float >> const &, std::vector< float > const &, double, double, size_t, const size_t delta=10)
Definition: comms-lib.cc:317
Sounder::Hdf5Reader::Hdf5Reader
Hdf5Reader(Config *in_cfg, moodycamel::ConcurrentQueue< Event_data > &msg_queue, SampleBuffer *tx_buffer, size_t thread_id, int core, size_t queue_size, bool wait_signal=true)
Definition: hdf5_reader.cc:18
Config::hub_ids
const std::vector< std::string > & hub_ids(void) const
Definition: config.h:222
Config::sample_cal_en_
bool sample_cal_en_
Definition: config.h:359
Config::running_
std::atomic< bool > running_
Definition: config.h:404
Sounder::Hdf5Reader::core_alloc_
int core_alloc_
Definition: hdf5_reader.h:60
Config::dl_slot_per_frame_
size_t dl_slot_per_frame_
Definition: config.h:308
iris_py.args
args
Definition: iris_py.py:349
Config::beacon_size
int beacon_size(void) const
Definition: config.h:53
BaseRadioSet::sync_delays
void sync_delays(size_t cellIdx)
Definition: BaseRadioSet.cc:431
N
Modulation order N
Definition: mod_demod.m:14
Config::calib_frames
const std::vector< std::vector< std::string > > & calib_frames(void) const
Definition: config.h:122
Sounder::Hdf5Lib::file_
H5::H5File * file_
Definition: hdf5_lib.h:61
hdf5_lib.h
matplotlibcpp::plot
bool plot(const std::vector< Numeric > &x, const std::vector< Numeric > &y, const std::map< std::string, std::string > &keywords)
Definition: matplotlibcpp.h:388
Config::beacon_ch_
size_t beacon_ch_
Definition: config.h:334
Config::ul_slots_
std::vector< std::vector< size_t > > ul_slots_
Definition: config.h:353
CommsLib::auto_corr_mult_avx
static std::vector< std::complex< float > > auto_corr_mult_avx(std::vector< std::complex< float >> const &f, const int dly, const bool conj=true)
Config::tx_advance_
std::vector< int > tx_advance_
Definition: config.h:376
Event_data
Definition: macros.h:62
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
Config::ul_slot_per_frame_
size_t ul_slot_per_frame_
Definition: config.h:307
Config::neg_beacon_ci16_
std::vector< std::complex< int16_t > > neg_beacon_ci16_
Definition: config.h:330
Config::tx_advance
int tx_advance(size_t id) const
Definition: config.h:96
Config::getPacketDataLength
size_t getPacketDataLength() const
Definition: config.h:258
kMinSupportedFFTSize
static size_t kMinSupportedFFTSize
Definition: config.cc:22
Config::cl_dl_slots
const std::vector< std::vector< size_t > > & cl_dl_slots(void) const
Definition: config.h:153
__attribute__
__attribute__((visibility("default"))) Config *Config_new(char *filename
Radio::deactivateXmit
void deactivateXmit(void)
Definition: Radio.cc:174
BaseRadioSet::readSensors
void readSensors(void)
Definition: BaseRadioSet.cc:450
Config::symbol_data_subcarrier_num_
size_t symbol_data_subcarrier_num_
Definition: config.h:298
logger.h
Logging macros that can be optimized out by the compiler.
Config::~Config
~Config()
Definition: config.cc:832
Config::rx_gain
const std::vector< double > & rx_gain(void) const
Definition: config.h:233
BaseRadioSet::getRadioNotFound
bool getRadioNotFound()
Definition: BaseRadioSet.h:30
Config::samps_per_slot_
size_t samps_per_slot_
Definition: config.h:301
Consts::gold_code
static constexpr int gold_code[127]
Definition: constants.h:60
Sounder::Hdf5Lib::dataset_str_
std::vector< std::string > dataset_str_
Definition: hdf5_lib.h:64
ClientRadioSet::ClientRadioContext
Definition: ClientRadioSet.h:25
Config::getUlSlotIndex
int getUlSlotIndex(int, int)
Definition: config.cc:854
Config::bs_present_
bool bs_present_
Definition: config.h:285
Config::fft_size
size_t fft_size(void) const
Definition: config.h:75
max
abs(tx_vecs_iris max()
CommsLib::LTE_ZADOFF_CHU
@ LTE_ZADOFF_CHU
Definition: comms-lib.h:49
Sounder::Hdf5Lib::readDataset
std::vector< short > readDataset(std::string dataset_name, std::array< hsize_t, kDsDimsNum > target_id, std::array< hsize_t, kDsDimsNum > read_dim)
Definition: hdf5_lib.cc:229
extract_pilots_data.sf_start
sf_start
Definition: extract_pilots_data.py:58
Sounder::Hdf5Lib::prop_list_
std::vector< H5::DSetCreatPropList > prop_list_
Definition: hdf5_lib.h:65
CommsLib::hannWindowFunction
static std::vector< float > hannWindowFunction(size_t)
Definition: comms-lib.cc:272
DataGenerator::GenerateData
void GenerateData(const std::string &directory)
Definition: data_generator.cc:16
BaseRadioSet::configure
void configure(BaseRadioContext *context)
Definition: BaseRadioSet.cc:403
Config::getCoreCount
unsigned getCoreCount()
Definition: config.cc:904
Config::num_bs_antennas_all_
size_t num_bs_antennas_all_
Definition: config.h:340
real
data real()
Sounder::Hdf5Lib::hdf5_name_
H5std_string hdf5_name_
Definition: hdf5_lib.h:59
lts_corr
lts_corr
Definition: ofdm_mimo.m:207
channel
Equalize with *known * channel
Definition: berr_perfect.m:49
Config::ul_data_frame_num_
size_t ul_data_frame_num_
Definition: config.h:347
Sounder::Hdf5Reader::Start
void Start(void)
Definition: hdf5_reader.cc:39
storepath
char * storepath
Definition: config.cc:914
Config::dl_slot_per_frame
size_t dl_slot_per_frame(void) const
Definition: config.h:89
Config::cl_ul_slots
const std::vector< std::vector< size_t > > & cl_ul_slots(void) const
Definition: config.h:150
json
nlohmann::json json
Definition: BaseRadioSet.cc:23
data
data
Definition: bits2syms.m:26
computeAbs
static double computeAbs(std::complex< double > x)
Definition: comms-lib.h:34
Config::bw_filter_
double bw_filter_
Definition: config.h:294
Config::tx_scale_
float tx_scale_
Definition: config.h:309
Config::pilot_seq_
std::string pilot_seq_
Definition: config.h:310
Config::num_bs_sdrs_all
size_t num_bs_sdrs_all(void) const
Definition: config.h:28
Event_data::ant_id
int ant_id
Definition: macros.h:67
im
im
Definition: iris_py.m:127
Config::cl_agc_en_
bool cl_agc_en_
Definition: config.h:374
ClientRadioSet::init_launch
static void * init_launch(void *in_context)
Definition: ClientRadioSet.cc:233
Consts::sts_seq
static constexpr std::complex< float > sts_seq[64]
Definition: constants.h:8
Config::pilot_sym_t_
std::vector< std::vector< float > > pilot_sym_t_
Definition: config.h:384
macros.h
Sounder::Hdf5Reader::DoReading
void DoReading(void)
Definition: hdf5_reader.cc:135
Config::ul_tx_td_data_files
const std::vector< std::string > & ul_tx_td_data_files(void) const
Definition: config.h:162
json
nlohmann::json json
Definition: ClientRadioSet.cc:23
Config::rate_
double rate_
Definition: config.h:291
zeros
np, 1 zeros()
Sounder::Hdf5Lib::closeDataset
void closeDataset()
Definition: hdf5_lib.cc:130
Config::getNumBsSdrs
size_t getNumBsSdrs()
Definition: config.cc:793
Config::data_ind_
std::vector< size_t > data_ind_
Definition: config.h:377
Config::txdata_time_dom_
std::vector< std::vector< std::complex< int16_t > > > txdata_time_dom_
Definition: config.h:388
matplotlibcpp::legend
void legend()
Definition: matplotlibcpp.h:1261
Config::bs_hw_framer_
bool bs_hw_framer_
Definition: config.h:344
CommsLib::FFT
static std::vector< std::complex< float > > FFT(const std::vector< std::complex< float >> &, int)
Definition: comms-lib.cc:435
Radio::deactivateRecv
void deactivateRecv(void)
Definition: Radio.cc:151
Config::beacon_ant
size_t beacon_ant(void) const
Definition: config.h:72
Config::getNumAntennas
size_t getNumAntennas()
Definition: config.cc:763
Sounder::Hdf5Reader::id_
size_t id_
Definition: hdf5_reader.h:55
CommsLib::findLTS
static int findLTS(const std::vector< std::complex< float >> &iq, int seqLen)
Definition: comms-lib.cc:28
matplotlibcpp::figure_size
void figure_size(size_t w, size_t h)
Definition: matplotlibcpp.h:1238
ofdmtxrx.x3
x3
Definition: ofdmtxrx.py:360
CommsLib::LTS_SEQ
@ LTS_SEQ
Definition: comms-lib.h:47
CommsLib::magnitudeFFT
static std::vector< float > magnitudeFFT(std::vector< std::complex< float >> const &, std::vector< float > const &, size_t)
Definition: comms-lib.cc:244
Sounder::Hdf5Reader::~Hdf5Reader
~Hdf5Reader()
Definition: hdf5_reader.cc:35
Radio::dev
SoapySDR::Device * dev
Definition: Radio.h:14
Config::num_cells
size_t num_cells(void) const
Definition: config.h:47
Config::recorder_thread_num_
size_t recorder_thread_num_
Definition: config.h:408
CommsLib::QPSK
@ QPSK
Definition: comms-lib.h:55
Config::single_gain_
bool single_gain_
Definition: config.h:355
CommsLib::findTone
static T findTone(std::vector< T > const &, double, double, size_t, const size_t delta=10)
Definition: comms-lib.cc:299
kThreadTermination
@ kThreadTermination
Definition: macros.h:41
Config::freq_
double freq_
Definition: config.h:289
Config::cal_tx_gain
const std::vector< double > & cal_tx_gain(void) const
Definition: config.h:236
CommsLib::QAM16
@ QAM16
Definition: comms-lib.h:55
Config::ul_data_frame_num
size_t ul_data_frame_num(void) const
Definition: config.h:64
Config::noise_slot_per_frame_
size_t noise_slot_per_frame_
Definition: config.h:306
Sounder::Hdf5Reader::thread_
std::thread thread_
Definition: hdf5_reader.h:53
Config::slot_samp_size_
size_t slot_samp_size_
Definition: config.h:300
Sounder::Hdf5Reader::DispatchWork
bool DispatchWork(Event_data event)
Definition: hdf5_reader.cc:68
Sounder::Hdf5Reader::config_
Config * config_
Definition: hdf5_reader.h:52
CommsLib::correlate_avx_si
static std::vector< int16_t > correlate_avx_si(std::vector< int16_t > const &f, std::vector< int16_t > const &g)
Sounder::Hdf5Reader::packet_data_length_
size_t packet_data_length_
Definition: hdf5_reader.h:56
CommsLib::HADAMARD
@ HADAMARD
Definition: comms-lib.h:52
len
end len
Definition: iris_py.m:214
Config::pilot_sc_
std::vector< std::complex< float > > pilot_sc_
Definition: config.h:382
Sounder::Hdf5Lib::dims_
std::vector< std::array< hsize_t, kDsDimsNum > > dims_
Definition: hdf5_lib.h:68
Config::ofdm_symbol_size_
size_t ofdm_symbol_size_
Definition: config.h:297
BaseRadioSet::_cfg
Config * _cfg
Definition: BaseRadioSet.h:53
padding
Leftover from zero padding
Definition: ofdm_mimo.m:131
Config::pilot
const std::vector< uint32_t > & pilot(void) const
Definition: config.h:178
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
ClientRadioSet::radioRx
int radioRx(size_t radio_id, void *const *buffs, int numSamps, long long &frameTime)
Definition: ClientRadioSet.cc:329
Sounder::Hdf5Lib::openDataset
void openDataset()
Definition: hdf5_lib.cc:86
kPilotSubcarrierSpacing
static constexpr size_t kPilotSubcarrierSpacing
Definition: comms-lib.h:31
Config::isPilot
bool isPilot(int, int)
Definition: config.cc:872
Config::ul_data_slot_present_
bool ul_data_slot_present_
Definition: config.h:312
Config::dl_data_frame_num
size_t dl_data_frame_num(void) const
Definition: config.h:67
plt_simp.pilot
pilot
Definition: plt_simp.py:99
Config::cl_ul_slots_
std::vector< std::vector< size_t > > cl_ul_slots_
Definition: config.h:394
Config::beacon_radio_
size_t beacon_radio_
Definition: config.h:333
Config::coeffs
const std::vector< uint32_t > & coeffs(void) const
Definition: config.h:175
BaseRadioSet::hubs
std::vector< SoapySDR::Device * > hubs
Definition: BaseRadioSet.h:54
Radio
Definition: Radio.h:12
ofdmtxrx.x2
x2
Definition: ofdmtxrx.py:358
utils.h
Config::cl_sdr_ch
size_t cl_sdr_ch(void) const
Definition: config.h:97
Config::cal_ref_sdr_id
size_t cal_ref_sdr_id(void) const
Definition: config.h:121
Config::getFrameDurationSec
double getFrameDurationSec() const
Return the frame duration in seconds.
Definition: config.h:263
ClientRadioSet::_cfg
Config * _cfg
Definition: ClientRadioSet.h:33
SampleBuffer::buffer
std::vector< char > buffer
Definition: macros.h:48
Config::cl_txgain_vec_
std::vector< std::vector< double > > cl_txgain_vec_
Definition: config.h:397
data_generator.h
Implementation file for the Data generator class to generate binary files as inputs to Agora,...
Config::coeffs_
std::vector< uint32_t > coeffs_
Definition: config.h:378
Config::pilot_
std::vector< uint32_t > pilot_
Definition: config.h:381
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
SISO_OFDM.title
title
Definition: SISO_OFDM.py:105
ClientRadioSet::radioNotFound
bool radioNotFound
Definition: ClientRadioSet.h:35
setIQBalance
static void setIQBalance(SoapySDR::Device *dev, int direction, size_t channel, int gcorr, int iqcorr)
Definition: BaseRadioSet-calibrate.cc:199
Config::radio_rf_freq
double radio_rf_freq(void) const
Definition: config.h:57
step
Take Construct known pilot matrix to use i next step
Definition: ofdm_mimo.m:279
TIME_DELTA
#define TIME_DELTA
Definition: macros.h:31
BaseRadioSet::BaseRadioSet
BaseRadioSet(Config *cfg)
Definition: BaseRadioSet.cc:25
Config::postfix_
size_t postfix_
Definition: config.h:303
Config::beacon
const std::vector< uint32_t > & beacon(void) const
Definition: config.h:185
CommsLib::getSequence
static std::vector< std::vector< float > > getSequence(size_t type, size_t seq_len=0)
Definition: comms-lib.cc:516
Config::cl_rxgain_vec
const std::vector< std::vector< double > > & cl_rxgain_vec(void) const
Definition: config.h:182
mufft_free_plan_1d
void mufft_free_plan_1d(mufft_plan_1d *plan)
Free a previously allocated 1D FFT plan.
MLPD_WARN
#define MLPD_WARN(...)
Definition: logger.h:59
Sounder::Hdf5Reader::event_queue_
moodycamel::ConcurrentQueue< Event_data > event_queue_
Definition: hdf5_reader.h:49
Config::imbalance_cal_en_
bool imbalance_cal_en_
Definition: config.h:360
Sounder::Hdf5Lib::ds_name_id
std::map< std::string, size_t > ds_name_id
Definition: hdf5_lib.h:72
bs_only
char bool bs_only
Definition: config.cc:915
Config::Config
Config(const std::string &, const std::string &, const bool, const bool)
Definition: config.cc:25
Config::postfix
int postfix(void) const
Definition: config.h:52
ClientRadioSet::radios
std::vector< Radio * > radios
Definition: ClientRadioSet.h:34
Sounder::Hdf5Reader::tx_buffer_
SampleBuffer * tx_buffer_
Definition: hdf5_reader.h:51
freeRadios
static void freeRadios(std::vector< Radio * > &radios)
Definition: ClientRadioSet.cc:27
CommsLib::LTS_SEQ_F
@ LTS_SEQ_F
Definition: comms-lib.h:48
g
Author(s) pyhton object array This array decribes Iris board or a collection of Iris boards that belong to the same entity E g
Definition: iris_py.m:3
Event_data::node_type
NodeType node_type
Definition: macros.h:64
Sounder::Hdf5Reader::fp
std::vector< FILE * > fp
Definition: hdf5_reader.h:72
BaseRadioSet::radioStop
void radioStop(void)
Definition: BaseRadioSet.cc:471
Config::pilot_ci16_
std::vector< std::complex< int16_t > > pilot_ci16_
Definition: config.h:379
Sounder::Hdf5Lib::~Hdf5Lib
~Hdf5Lib()
Definition: hdf5_lib.cc:28
ClientRadioSet::ClientRadioContext::tid
size_t tid
Definition: ClientRadioSet.h:28
matplotlibcpp::xlim
void xlim(Numeric left, Numeric right)
Definition: matplotlibcpp.h:1288
Utils::uint32tocfloat
static std::vector< std::complex< float > > uint32tocfloat(const std::vector< uint32_t > &in, const std::string &order)
Definition: utils.cc:81
min
MAX_TX_LEN, 2^20 min()
Config::pilot_slot_per_frame_
size_t pilot_slot_per_frame_
Definition: config.h:305
initAGC
static void initAGC(SoapySDR::Device *dev, Config *cfg)
Definition: ClientRadioSet.cc:361
Sounder::Hdf5Lib::write_attribute
void write_attribute(const char name[], double val)
Definition: hdf5_lib.cc:279
Config::core_alloc_
bool core_alloc_
Definition: config.h:405
ClientRadioSet::triggers
int triggers(int i)
Definition: ClientRadioSet.cc:327
BaseRadioSet::BaseRadioContext::thread_count
std::atomic_ulong * thread_count
Definition: BaseRadioSet.h:36
Config::samps_per_slot
size_t samps_per_slot(void) const
Definition: config.h:35
Consts::prime
static constexpr size_t prime[309]
Definition: constants.h:31
j
for j
Definition: ofdm_mimo.m:301
Config::frames
const std::vector< std::string > & frames(void) const
Definition: config.h:202
Packet::slot_id
uint32_t slot_id
Definition: macros.h:54
MUFFT_INVERSE
#define MUFFT_INVERSE
The inverse FFT transform.
Definition: fft.h:45
BaseRadioSet::baseRadio
SoapySDR::Device * baseRadio(size_t cellId)
Definition: BaseRadioSet.cc:424
Config::cl_sdr_ids
const std::vector< std::string > & cl_sdr_ids(void) const
Definition: config.h:156
comms-lib.h
CommsLib::find_pilot_seq
static size_t find_pilot_seq(const std::vector< std::complex< float >> &iq, const std::vector< std::complex< float >> &pilot, size_t seqLen)
Definition: comms-lib.cc:87
Config::hub_ids_
std::vector< std::string > hub_ids_
Definition: config.h:325
h
h
Definition: berr_perfect.m:36
Config::loadDLData
void loadDLData(const std::string &)
Definition: config.cc:688
Config::beacon_ci16_
std::vector< std::complex< int16_t > > beacon_ci16_
Definition: config.h:329
Config::max_frame
size_t max_frame(void) const
Definition: config.h:63
Sounder::Hdf5Lib::datasets_
std::vector< H5::DataSet * > datasets_
Definition: hdf5_lib.h:67
CommsLib::STS_SEQ
@ STS_SEQ
Definition: comms-lib.h:46
Packet
Definition: macros.h:52
Sounder::Hdf5Lib::extendDataset
bool extendDataset(std::string dataset_name, size_t prim_dim_size)
Definition: hdf5_lib.cc:157
i
for i
Definition: rl_ofdm_calib.m:121
Sounder::Hdf5Lib::group_
H5::Group group_
Definition: hdf5_lib.h:62
BaseRadioSet::collectCSI
void collectCSI(bool &)
Definition: BaseRadioSet-calibrate.cc:493
Config::isUlData
bool isUlData(int, int)
Definition: config.cc:888
Sounder::Hdf5Lib::createDataset
int createDataset(std::string dataset_name, std::array< hsize_t, kDsDimsNum > tot_dims, std::array< hsize_t, kDsDimsNum > chunk_dims)
Definition: hdf5_lib.cc:43
Config::ul_tx_fd_data_files_
std::vector< std::string > ul_tx_fd_data_files_
Definition: config.h:400
MLPD_ERROR
#define MLPD_ERROR(...)
Definition: logger.h:50
kPrintDataSetInfo
static constexpr bool kPrintDataSetInfo
Definition: hdf5_lib.cc:17
Config::beacon_size_
int beacon_size_
Definition: config.h:331
Config::getMaxNumAntennas
size_t getMaxNumAntennas()
Definition: config.cc:773
kFpgaTxRamSize
static size_t kFpgaTxRamSize
Definition: config.cc:20
CommsLib::hadamard2
static int hadamard2(int i, int j)
Definition: comms-lib.h:107
CommsLib::getPilotScValue
static std::vector< std::complex< float > > getPilotScValue(size_t fftSize, size_t DataScNum, size_t PilotScOffset=kDefaultPilotScOffset)
Definition: comms-lib.cc:359
Config::pilot_slots_
std::vector< std::vector< size_t > > pilot_slots_
Definition: config.h:350
Config::nco_
double nco_
Definition: config.h:290
Config::reader_thread_num_
size_t reader_thread_num_
Definition: config.h:409
client_only
char bool bool client_only
Definition: config.cc:916
mufft_alloc
void * mufft_alloc(size_t size)
Allocate aligned storage suitable for muFFT. Must be freed with mufft_free.
Sounder::Hdf5Reader::msg_queue_
moodycamel::ConcurrentQueue< Event_data > & msg_queue_
Definition: hdf5_reader.h:48
Config::isNoise
bool isNoise(int, int)
Definition: config.cc:880
BaseRadioSet::BaseRadioContext::tid
size_t tid
Definition: BaseRadioSet.h:37
kDsExtendStep
static constexpr int kDsExtendStep
Definition: hdf5_lib.cc:18
Sounder
Definition: hdf5_lib.cc:20
Config::pilot_cf32_
std::vector< std::complex< float > > pilot_cf32_
Definition: config.h:380
Utils::strToChannels
static std::vector< size_t > strToChannels(const std::string &channel)
Definition: utils.cc:29
Config::pilot_sc_ind_
std::vector< size_t > pilot_sc_ind_
Definition: config.h:383
sched_id
sched_id
Definition: rl_ofdm_calib.m:78
Config::dl_txdata_freq_dom_
std::vector< std::vector< std::complex< float > > > dl_txdata_freq_dom_
Definition: config.h:389
Sounder::Hdf5Reader::condition_
std::condition_variable condition_
Definition: hdf5_reader.h:70
Config::num_cl_sdrs_
size_t num_cl_sdrs_
Definition: config.h:370
Config::max_tx_gain_ue_
size_t max_tx_gain_ue_
Definition: config.h:369
Config::sample_cal_en
bool sample_cal_en(void) const
Definition: config.h:62
Config::frames_
std::vector< std::string > frames_
Definition: config.h:342
x1
Upsample x1
Definition: getRxVec.m:171
Config::loadULData
void loadULData(const std::string &)
Definition: config.cc:613
Config::getNoiseSlotIndex
int getNoiseSlotIndex(int, int)
Definition: config.cc:845
CommsLib::find_max_abs
static float find_max_abs(const std::vector< std::complex< float >> &in)
Definition: comms-lib.cc:233
Config::num_cl_antennas_
size_t num_cl_antennas_
Definition: config.h:372
Config::dl_tx_td_data_files_
std::vector< std::string > dl_tx_td_data_files_
Definition: config.h:401
ofdmtxrx.x0
x0
Definition: ofdmtxrx.py:354
Sounder::Hdf5Lib::dataspace_
std::vector< H5::DataSpace > dataspace_
Definition: hdf5_lib.h:66
CommsLib::GOLD_IFFT
@ GOLD_IFFT
Definition: comms-lib.h:51
Config::dl_slots_
std::vector< std::vector< size_t > > dl_slots_
Definition: config.h:354
Event_data::event_type
SchedulerEventType event_type
Definition: macros.h:63
BaseRadioSet::radioRx
void radioRx(void *const *buffs)
Definition: BaseRadioSet.cc:519
Config::dl_tx_fd_data_files_
std::vector< std::string > dl_tx_fd_data_files_
Definition: config.h:402
computePower
static double computePower(std::complex< double > x)
Definition: comms-lib.h:38
Config::cl_sdr_ch_
size_t cl_sdr_ch_
Definition: config.h:371
Config::internal_measurement
bool internal_measurement(void) const
Definition: config.h:117
kUseUHD
static constexpr bool kUseUHD
Definition: macros.h:10
Config::cal_tx_gain_
std::vector< double > cal_tx_gain_
Definition: config.h:358
Sounder::Hdf5Lib::max_prim_dim_size
hsize_t max_prim_dim_size
Definition: hdf5_lib.h:70
Config::rx_gain_
std::vector< double > rx_gain_
Definition: config.h:357
Config::internal_measurement_
bool internal_measurement_
Definition: config.h:363
now
if USE_HUB Using chains of different size requires some internal calibration on the BS This functionality will be added later For now
Definition: rl_ofdm_mimo.m:72
Config::cl_pilot_slots_
std::vector< std::vector< size_t > > cl_pilot_slots_
Definition: config.h:393
sc
for sc
Definition: rl_ofdm_mimo.m:341
Config::calib_frames_
std::vector< std::vector< std::string > > calib_frames_
Definition: config.h:362
CommsLib::csign
static std::vector< std::complex< float > > csign(const std::vector< std::complex< float >> &iq)
Definition: comms-lib.cc:209
RX_THREAD_NUM
#define RX_THREAD_NUM
Definition: macros.h:28
cfg
return cfg
Definition: config.cc:918
Config::symbol_data_subcarrier_num
size_t symbol_data_subcarrier_num(void) const
Definition: config.h:77
Config::beam_sweep
bool beam_sweep(void) const
Definition: config.h:70
BaseRadioSet::radioNotFound
bool radioNotFound
Definition: BaseRadioSet.h:56
mufft_plan_1d
struct mufft_plan_1d mufft_plan_1d
Opaque type representing a 1D FFT.
Definition: fft.h:77
Config::guard_mult_
size_t guard_mult_
Definition: config.h:319
Consts::kFftSize_80211
static constexpr size_t kFftSize_80211
Definition: constants.h:4
ClientRadioSet.h
Config::cl_dl_slots_
std::vector< std::vector< size_t > > cl_dl_slots_
Definition: config.h:395
find_lts.iq
iq
Definition: find_lts.py:149
BaseRadioSet::radioStart
void radioStart(void)
Definition: BaseRadioSet.cc:446
Packet::ant_id
uint32_t ant_id
Definition: macros.h:56
Config::getTotNumAntennas
size_t getTotNumAntennas()
Definition: config.cc:807
Config
Definition: config.h:20
Config::dl_data_slot_present_
bool dl_data_slot_present_
Definition: config.h:313
vector
Maybe you need to transpose bits_matrix before reshaping it to a vector
Definition: syms2bits.m:62
DataGenerator::cfg_
Config * cfg_
Definition: data_generator.h:22
AGC_SIM_DEMO.filename
filename
LOGGER #.
Definition: AGC_SIM_DEMO.py:85
BaseRadioSet::BaseRadioContext::brs
BaseRadioSet * brs
Definition: BaseRadioSet.h:35
MLPD_TRACE
#define MLPD_TRACE(...)
Definition: logger.h:97
mufft_execute_plan_1d
void mufft_execute_plan_1d(mufft_plan_1d *plan, void *output, const void *input)
Executes a 1D FFT plan.
RECORDER_THREAD_NUM
#define RECORDER_THREAD_NUM
Definition: macros.h:27
constants.h
BaseRadioSet::BaseRadioContext
Definition: BaseRadioSet.h:34
CommsLib::windowFunctionPower
static double windowFunctionPower(std::vector< float > const &)
Definition: comms-lib.cc:288
Sounder::Hdf5Lib::removeDataset
void removeDataset(std::string dataset_name)
Definition: hdf5_lib.cc:120
Sounder::Hdf5Reader::running_
bool running_
Definition: hdf5_reader.h:71
ClientRadioSet::ClientRadioContext::crs
ClientRadioSet * crs
Definition: ClientRadioSet.h:26
Config::symbol_per_slot
size_t symbol_per_slot(void) const
Definition: config.h:37
Config::prefix
int prefix(void) const
Definition: config.h:51
Config::radio_rf_freq_
double radio_rf_freq_
Definition: config.h:293
Config::cp_size
size_t cp_size(void) const
Definition: config.h:76
Config::slot_per_frame
size_t slot_per_frame(void) const
Definition: config.h:36
CommsLib::QAM64
@ QAM64
Definition: comms-lib.h:55
Config::getClientId
int getClientId(int, int)
Definition: config.cc:834
Config::num_cl_sdrs
size_t num_cl_sdrs(void) const
Definition: config.h:32
kMaxSupportedFFTSize
static size_t kMaxSupportedFFTSize
Definition: config.cc:21
Config::bs_sdr_ch_
size_t bs_sdr_ch_
Definition: config.h:323
adjustCalibrationGains
static void adjustCalibrationGains(std::vector< SoapySDR::Device * > rxDevs, SoapySDR::Device *txDev, size_t channel, double fftBin)
Definition: BaseRadioSet-calibrate.cc:33
Utils::loadSlots
static std::vector< std::vector< size_t > > loadSlots(const std::vector< std::string > &frames, char sym)
Definition: utils.cc:118
Config::bs_rx_thread_num_
size_t bs_rx_thread_num_
Definition: config.h:406
Config::dl_txdata_time_dom_
std::vector< std::vector< std::complex< int16_t > > > dl_txdata_time_dom_
Definition: config.h:390
Config::noise_slots_
std::vector< std::vector< size_t > > noise_slots_
Definition: config.h:351
Config::rate
double rate(void) const
Definition: config.h:95
kClient
@ kClient
Definition: macros.h:44
CommsLib::IFFT
static std::vector< std::complex< float > > IFFT(const std::vector< std::complex< float >> &, int, float scale=0.5, bool normalize=true)
Definition: comms-lib.cc:404
Config::cl_txgain_vec
const std::vector< std::vector< double > > & cl_txgain_vec(void) const
Definition: config.h:179
BaseRadioSet::radioTx
void radioTx(const void *const *buffs)
Definition: BaseRadioSet.cc:485
Sounder::Hdf5Reader::Finalize
void Finalize()
Definition: hdf5_reader.cc:57
Config::pilot_sc_ind
std::vector< size_t > & pilot_sc_ind(void)
Definition: config.h:198
Config::symbol_per_slot_
size_t symbol_per_slot_
Definition: config.h:299
BaseRadioSet
Definition: BaseRadioSet.h:16
matplotlibcpp::save
void save(const std::string &filename)
Definition: matplotlibcpp.h:1632
Config::cl_data_mod_
std::string cl_data_mod_
Definition: config.h:315
ClientRadioSet::init
void init(ClientRadioContext *context)
Definition: ClientRadioSet.cc:240
Utils::loadTDDConfig
static void loadTDDConfig(const std::string &filename, std::string &jconfig)
Definition: utils.cc:196
Config::tx_gain
const std::vector< double > & tx_gain(void) const
Definition: config.h:230
assert
assert(length(ue_param.id)==n_ue)
Sounder::Hdf5Reader::sync_
std::mutex sync_
Definition: hdf5_reader.h:69
Config::num_bs_sdrs_all_
size_t num_bs_sdrs_all_
Definition: config.h:339
CommsLib::getDataSc
static std::vector< size_t > getDataSc(size_t fftSize, size_t DataScNum, size_t PilotScOffset=kDefaultPilotScOffset)
Definition: comms-lib.cc:324
ClientRadioSet::~ClientRadioSet
~ClientRadioSet(void)
Definition: ClientRadioSet.cc:301
snoopSamples
static std::vector< std::complex< float > > snoopSamples(SoapySDR::Device *dev, size_t channel, size_t readSize)
Definition: BaseRadioSet-calibrate.cc:23
Config::ul_slot_per_frame
size_t ul_slot_per_frame(void) const
Definition: config.h:86
Config::cl_sdr_ids_
std::vector< std::string > cl_sdr_ids_
Definition: config.h:368
peak
normalized correlation position of the last peak[~, max_idx]
Definition: rl_ofdm_calib.m:139
Sounder::Hdf5Lib::Hdf5Lib
Hdf5Lib(H5std_string file_name, H5std_string group_name)
Definition: hdf5_lib.cc:21
Packet::data
short data[]
Definition: macros.h:57
Config::gold_cf32_
std::vector< std::complex< float > > gold_cf32_
Definition: config.h:327
Config::dl_data_frame_num_
size_t dl_data_frame_num_
Definition: config.h:348
config.h
Config::data_ind
const std::vector< size_t > & data_ind(void) const
Definition: config.h:172
ClientRadioSet::ClientRadioSet
ClientRadioSet(Config *cfg)
Definition: ClientRadioSet.cc:31
MLPD_INFO
#define MLPD_INFO(...)
Definition: logger.h:68
Config::client_present_
bool client_present_
Definition: config.h:286
CommsLib::find_beacon_avx
static int find_beacon_avx(const std::vector< std::complex< float >> &iq, const std::vector< std::complex< float >> &seq)
kBS
@ kBS
Definition: macros.h:44
CommsLib::abs2_avx
static std::vector< float > abs2_avx(std::vector< std::complex< float >> const &f)
Config::prefix_
size_t prefix_
Definition: config.h:302
CommsLib::modulate
static std::vector< std::complex< float > > modulate(std::vector< uint8_t >, int)
Definition: comms-lib.cc:454
Config::bs_sdr_ch
size_t bs_sdr_ch(void) const
Definition: config.h:98
Config::n_bs_antennas_
std::vector< size_t > n_bs_antennas_
Definition: config.h:337
Event_data::frame_id
int frame_id
Definition: macros.h:65
Config::cl_channel
const std::string & cl_channel(void) const
Definition: config.h:106
BaseRadioSet::init_launch
static void * init_launch(void *in_context)
Definition: BaseRadioSet.cc:350
Config::fft_size_
size_t fft_size_
Definition: config.h:295
Config::data_mod
const std::string & data_mod(void) const
Definition: config.h:109
Config::txdata_freq_dom_
std::vector< std::vector< std::complex< float > > > txdata_freq_dom_
Definition: config.h:387
iris_py.float
float
Definition: iris_py.py:339
txgain
ue_sdr_params txgain
Definition: rl_ofdm_mimo.m:196
Config::tx_gain_
std::vector< double > tx_gain_
Definition: config.h:356
matplotlibcpp::ylim
void ylim(Numeric left, Numeric right)
Definition: matplotlibcpp.h:1271
Config::cl_channel_
std::string cl_channel_
Definition: config.h:373
x
sample frequency in MHz x
Definition: getRxVec.m:86
BaseRadioSet.h
SampleBuffer
Definition: macros.h:47
CommsLib::complex_mult_avx
static std::vector< std::complex< float > > complex_mult_avx(std::vector< std::complex< float >> const &f, std::vector< std::complex< float >> const &g, const bool conj)
MUFFT_FLAG_CPU_ANY
#define MUFFT_FLAG_CPU_ANY
muFFT will use any SIMD instruction set it can if supported by the CPU.
Definition: fft.h:51
Config::max_frame_
size_t max_frame_
Definition: config.h:346
Config::data_mod_
std::string data_mod_
Definition: config.h:314
BaseRadioSet::bsRadios
std::vector< std::vector< Radio * > > bsRadios
Definition: BaseRadioSet.h:55
Config::bs_channel_
std::string bs_channel_
Definition: config.h:341
ClientRadioSet::radioStop
void radioStop(void)
Definition: ClientRadioSet.cc:303
BaseRadioSet::configure_launch
static void * configure_launch(void *in_context)
Definition: BaseRadioSet.cc:397
CommsLib::getNullSc
static std::vector< size_t > getNullSc(size_t fftSize, size_t DataScNum)
Definition: comms-lib.cc:344
Config::frame_mode_
std::string frame_mode_
Definition: config.h:343
kTaskRead
@ kTaskRead
Definition: macros.h:40
CommsLib::convolve
static std::vector< T > convolve(std::vector< T > const &f, std::vector< T > const &g)
Definition: comms-lib.h:85
Event_data::offset
int offset
Definition: macros.h:69
Config::beacon_ant_
size_t beacon_ant_
Definition: config.h:332
Config::bs_sdr_ids
const std::vector< std::vector< std::string > > & bs_sdr_ids(void) const
Definition: config.h:206
mufft_create_plan_1d_c2c
mufft_plan_1d * mufft_create_plan_1d_c2c(unsigned N, int direction, unsigned flags)
Create a plan for a 1D complex-to-complex inverse or forward FFT.
cf
Plot Tx constellation cf
Definition: mod_demod.m:27
SETTLE_TIME_MS
#define SETTLE_TIME_MS
Definition: macros.h:32
Config::pilot_sym_f_
std::vector< std::vector< float > > pilot_sym_f_
Definition: config.h:385
Config::getNumRecordedSdrs
size_t getNumRecordedSdrs()
Definition: config.cc:817
Config::cal_ref_sdr_id_
size_t cal_ref_sdr_id_
Definition: config.h:365
Config::cl_agc_gain_init_
int cl_agc_gain_init_
Definition: config.h:375
Config::bs_sdr_ids_
std::vector< std::vector< std::string > > bs_sdr_ids_
Definition: config.h:324
AGC_SIM_DEMO.num_samps
int num_samps
Definition: AGC_SIM_DEMO.py:72
Config::n_bs_sdrs
std::vector< size_t > & n_bs_sdrs(void)
Definition: config.h:142
hdf5_reader.h
Config::frame_mode
const std::string & frame_mode(void) const
Definition: config.h:103
error
otherwise error('Invalid MOD_ORDER(%d)! Must be in[2, 4, 16, 64]\n', MOD_ORDER)
Config::hw_framer_
bool hw_framer_
Definition: config.h:345
Config::n_bs_sdrs_
std::vector< size_t > n_bs_sdrs_
Definition: config.h:336
mufft_free
void mufft_free(void *ptr)
Free previously allocated storage obtained from mufft_alloc or mufft_calloc.
ClientRadioSet::ClientRadioContext::thread_count
std::atomic_ulong * thread_count
Definition: ClientRadioSet.h:27
Sounder::Hdf5Lib::closeFile
void closeFile()
Definition: hdf5_lib.cc:35
BaseRadioSet::radioTrigger
void radioTrigger(void)
Definition: BaseRadioSet.cc:439
Config::dl_tx_td_data_files
const std::vector< std::string > & dl_tx_td_data_files(void) const
Definition: config.h:168
Config::cl_frames
const std::vector< std::string > & cl_frames(void) const
Definition: config.h:144
BaseRadioSet::dciqCalibrationProc
void dciqCalibrationProc(size_t)
Definition: BaseRadioSet-calibrate.cc:345
Config::calib_ids_
std::vector< std::string > calib_ids_
Definition: config.h:326
Config::getDlSlotIndex
int getDlSlotIndex(int, int)
Definition: config.cc:864
Sounder::Hdf5Reader::wait_signal_
bool wait_signal_
Definition: hdf5_reader.h:68
CommsLib::LTE_ZADOFF_CHU_F
@ LTE_ZADOFF_CHU_F
Definition: comms-lib.h:50
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
Sounder::Hdf5Lib::target_prim_dim_size
hsize_t target_prim_dim_size
Definition: hdf5_lib.h:69
Config::cp_size_
size_t cp_size_
Definition: config.h:296
Config::ref_node_enable_
bool ref_node_enable_
Definition: config.h:364
CommsLib::getPilotScIndex
static std::vector< size_t > getPilotScIndex(size_t fftSize, size_t DataScNum, size_t PilotScOffset=kDefaultPilotScOffset)
Definition: comms-lib.cc:385
Config::hw_framer
bool hw_framer(void) const
Definition: config.h:50
Sounder::Hdf5Reader::Stop
void Stop(void)
Definition: hdf5_reader.cc:51
Sounder::Hdf5Lib::writeDataset
herr_t writeDataset(std::string dataset_name, std::array< hsize_t, kDsDimsNum > target_id, std::array< hsize_t, kDsDimsNum > wrt_dim, short *wrt_data)
Definition: hdf5_lib.cc:177
Consts::lts_seq
static constexpr std::complex< float > lts_seq[64]
Definition: constants.h:20
Radio::drain_buffers
void drain_buffers(std::vector< void * > buffs, int symSamp)
Definition: Radio.cc:76
ofdmtxrx.mod_order
int mod_order
Definition: ofdmtxrx.py:352
Config::cl_frames_
std::vector< std::string > cl_frames_
Definition: config.h:392
BaseRadioSet::~BaseRadioSet
~BaseRadioSet(void)
Definition: BaseRadioSet.cc:340
Config::beacon_
std::vector< uint32_t > beacon_
Definition: config.h:328