Agora  1.2.0
Agora project
config.h
Go to the documentation of this file.
1 // Copyright (c) 2018-2020, Rice University
2 // RENEW OPEN SOURCE LICENSE: http://renew-wireless.org/license
3 
10 #ifndef CONFIG_H_
11 #define CONFIG_H_
12 
13 #include <atomic>
14 #include <cstddef>
15 #include <string>
16 #include <vector>
17 
18 #include "common_typedef_sdk.h"
19 #include "framestats.h"
20 #include "ldpc_config.h"
21 #include "memory_manage.h"
22 #include "nlohmann/json.hpp"
23 #include "symbols.h"
24 #include "utils.h"
25 
26 class Config {
27  public:
28  static constexpr bool kDebugRecipCal = false;
29  // Constructor
30  explicit Config(std::string jsonfilename);
31  ~Config();
32 
33  inline void Running(bool value) { this->running_.store(value); }
34  inline bool Running() const { return this->running_.load(); }
35  inline size_t BsAntNum() const { return this->bs_ant_num_; }
36  inline void BsAntNum(size_t n_bs_ant) { this->bs_ant_num_ = n_bs_ant; }
37 
38  // Inline accessors (basic types)
39  inline size_t BfAntNum() const { return this->bf_ant_num_; }
40  inline size_t UeNum() const { return this->ue_num_; }
41  inline size_t UeAntNum() const { return this->ue_ant_num_; }
42  inline size_t UeAntOffset() const { return this->ue_ant_offset_; }
43  inline size_t UeAntTotal() const { return this->ue_ant_total_; }
44 
45  inline size_t OfdmCaNum() const { return this->ofdm_ca_num_; }
46  inline size_t CpLen() const { return this->cp_len_; }
47  inline size_t OfdmDataNum() const { return this->ofdm_data_num_; }
48  inline size_t OfdmDataStart() const { return this->ofdm_data_start_; }
49 
50  inline size_t OfdmDataStop() const { return this->ofdm_data_stop_; }
51  inline size_t OfdmPilotSpacing() const { return this->ofdm_pilot_spacing_; }
52 
53  inline bool HwFramer() const { return this->hw_framer_; }
54  inline bool UeHwFramer() const { return this->ue_hw_framer_; }
55  inline size_t UeResyncPeriod() const { return this->ue_resync_period_; }
56  inline double FreqGhz() const { return this->freq_ghz_; };
57  inline double Freq() const { return this->freq_; }
58  inline double Rate() const { return this->rate_; }
59  inline double Nco() const { return this->nco_; }
60 
61  inline double RadioRfFreq() const { return this->radio_rf_freq_; }
62  inline double BwFilter() const { return this->bw_filter_; }
63  inline bool SingleGain() const { return this->single_gain_; }
64  inline double TxGainA() const { return this->tx_gain_a_; }
65  inline double RxGainA() const { return this->rx_gain_a_; }
66  inline double TxGainB() const { return this->tx_gain_b_; }
67  inline double RxGainB() const { return this->rx_gain_b_; }
68  inline double CalibTxGainA() const { return this->calib_tx_gain_a_; }
69  inline double CalibTxGainB() const { return this->calib_tx_gain_b_; }
70  inline double ClientTxGainA(size_t id) const {
71  return this->client_tx_gain_a_.at(id);
72  }
73  inline double ClientRxGainA(size_t id) const {
74  return this->client_rx_gain_a_.at(id);
75  }
76  inline double ClientTxGainB(size_t id) const {
77  return this->client_tx_gain_b_.at(id);
78  }
79  inline double ClientRxGainB(size_t id) const {
80  return this->client_rx_gain_b_.at(id);
81  }
82  inline const std::vector<double>& ClientTxGainA() const {
83  return this->client_tx_gain_a_;
84  }
85  inline const std::vector<double>& ClientRxGainA() const {
86  return this->client_rx_gain_a_;
87  }
88  inline const std::vector<double>& ClientTxGainB() const {
89  return this->client_tx_gain_b_;
90  }
91  inline const std::vector<double>& ClientRxGainB() const {
92  return this->client_rx_gain_b_;
93  }
94  inline size_t NumCells() const { return this->num_cells_; }
95  inline size_t NumRadios() const { return this->num_radios_; }
96  inline size_t InitCalibRepeat() const { return this->init_calib_repeat_; }
97 
98  inline size_t NumChannels() const { return this->num_channels_; }
99  inline size_t NumUeChannels() const { return this->num_ue_channels_; }
100  inline size_t RefAnt(size_t id) const { return this->ref_ant_.at(id); }
101  inline size_t RefRadio(size_t id) const { return this->ref_radio_.at(id); }
102  inline size_t BeaconAnt() const { return this->beacon_ant_; }
103  inline size_t BeaconLen() const { return this->beacon_len_; }
104 
105  inline bool Beamsweep() const { return this->beamsweep_; }
106  inline bool SampleCalEn() const { return this->sample_cal_en_; }
107  inline bool ImbalanceCalEn() const { return this->imbalance_cal_en_; }
108  inline size_t BeamformingAlgo() const { return this->beamforming_algo_; }
109  inline std::string Beamforming() const { return this->beamforming_str_; }
110  inline bool ExternalRefNode(size_t id) const {
111  return this->external_ref_node_.at(id);
112  }
113  inline std::string Channel() const { return this->channel_; }
114  inline std::string UeChannel() const { return this->ue_channel_; }
115 
116  // Groups for Downlink Recip Cal
117  // Returns antenna number for rec cal dl symbol
118  // Assumes that there are the same number of dl cal symbols in each frame
119  inline size_t RecipCalDlAnt(size_t frame_id, size_t dl_cal_symbol) const {
120  assert(GetSymbolType(dl_cal_symbol) == SymbolType::kCalDL);
121  const size_t dl_cal_offset = (frame_id * frame_.NumDLCalSyms()) +
122  frame_.GetDLCalSymbolIdx(dl_cal_symbol);
123 
124  const size_t tx_ant = dl_cal_offset % bf_ant_num_;
125 
126  if (kDebugRecipCal) {
127  std::printf("RecipCalDlAnt (Frame %zu, Symbol %zu) tx antenna %zu\n",
128  frame_id, dl_cal_symbol, tx_ant);
129  }
130  return (tx_ant);
131  };
132 
133  inline size_t ModifyRecCalIndex(size_t previous_index,
134  int mod_value = 0) const {
135  return (previous_index + mod_value) % kFrameWnd;
136  }
137 
138  inline size_t RecipCalIndex(size_t frame_id) const {
139  const size_t frame_cal_idx = frame_id / RecipCalFrameCnt();
140  return ModifyRecCalIndex(frame_cal_idx);
141  }
142 
143  // Returns the cal index if ant tx dl cal pilots this frame
144  // SIZE_MAX otherwise
145  inline size_t RecipCalUlRxIndex(size_t frame_id, size_t ant) const {
146  const size_t num_frames_for_full_cal = RecipCalFrameCnt();
147  const size_t num_cal_per_idx = frame_.NumDLCalSyms();
148  const size_t cal_offset = (frame_id % num_frames_for_full_cal);
149  const size_t tx_ant_start = cal_offset * num_cal_per_idx;
150  const size_t tx_ant_end = tx_ant_start + (num_cal_per_idx - 1);
151 
152  size_t cal_ind;
153  if ((ant >= tx_ant_start) && (ant <= tx_ant_end)) {
154  cal_ind = RecipCalIndex(frame_id);
155  } else {
156  cal_ind = SIZE_MAX;
157  }
158 
159  if (kDebugRecipCal) {
160  std::printf(
161  "RecipCalUlRxIndex (Frame %zu, Antenna %zu) index %zu - Start %zu, "
162  "End %zu, full %zu\n",
163  frame_id, ant, cal_ind, tx_ant_start, tx_ant_end,
164  num_frames_for_full_cal);
165  }
166  return (cal_ind);
167  };
168 
169  // Returns the number of frames to obtain a full set of RecipCal data
170  // assumes that bf_ant_num_ % frame_.NumDLCalSyms() == 0
171  inline size_t RecipCalFrameCnt() const {
172  if ((frame_.IsRecCalEnabled() == false) || (frame_.NumDLCalSyms() == 0)) {
173  return 0;
174  } else {
175  assert((bf_ant_num_ % frame_.NumDLCalSyms()) == 0);
176  return bf_ant_num_ / frame_.NumDLCalSyms();
177  }
178  }
179 
180  inline size_t CoreOffset() const { return this->core_offset_; }
181  inline size_t WorkerThreadNum() const { return this->worker_thread_num_; }
182  inline size_t SocketThreadNum() const { return this->socket_thread_num_; }
183  inline size_t UeCoreOffset() const { return this->ue_core_offset_; }
184  inline size_t UeWorkerThreadNum() const {
185  return this->ue_worker_thread_num_;
186  }
187  inline size_t UeSocketThreadNum() const {
188  return this->ue_socket_thread_num_;
189  }
190 
191  inline size_t FftThreadNum() const { return this->fft_thread_num_; }
192  inline size_t DemulThreadNum() const { return this->demul_thread_num_; }
193  inline size_t DecodeThreadNum() const { return this->decode_thread_num_; }
194  inline size_t BeamThreadNum() const { return this->beam_thread_num_; }
195  inline size_t DemulBlockSize() const { return this->demul_block_size_; }
196 
197  inline size_t DemulEventsPerSymbol() const {
198  return this->demul_events_per_symbol_;
199  }
200  inline size_t BeamBlockSize() const { return this->beam_block_size_; }
201  inline size_t BeamBatchSize() const { return this->beam_batch_size_; }
202  inline size_t BeamEventsPerSymbol() const {
203  return this->beam_events_per_symbol_;
204  }
205  inline size_t FftBlockSize() const { return this->fft_block_size_; }
206 
207  inline size_t EncodeBlockSize() const { return this->encode_block_size_; }
208  inline bool FreqOrthogonalPilot() const {
209  return this->freq_orthogonal_pilot_;
210  }
211  inline size_t OfdmTxZeroPrefix() const { return this->ofdm_tx_zero_prefix_; }
212  inline size_t OfdmTxZeroPostfix() const {
213  return this->ofdm_tx_zero_postfix_;
214  }
215  inline size_t OfdmRxZeroPrefixBs() const {
216  return this->ofdm_rx_zero_prefix_bs_;
217  }
218 
219  inline size_t OfdmRxZeroPrefixCalUl() const {
220  return this->ofdm_rx_zero_prefix_cal_ul_;
221  }
222  void OfdmRxZeroPrefixCalUl(size_t prefix) {
223  this->ofdm_rx_zero_prefix_cal_ul_ = prefix;
224  }
225  inline size_t OfdmRxZeroPrefixCalDl() const {
226  return this->ofdm_rx_zero_prefix_cal_dl_;
227  }
228  void OfdmRxZeroPrefixCalDl(const size_t prefix) {
229  this->ofdm_rx_zero_prefix_cal_dl_ = prefix;
230  }
231  inline size_t OfdmRxZeroPrefixClient() const {
232  return this->ofdm_rx_zero_prefix_client_;
233  }
234  inline size_t SampsPerSymbol() const { return this->samps_per_symbol_; }
235  inline size_t SampsPerFrame() const {
236  return this->frame_.NumTotalSyms() * this->samps_per_symbol_;
237  }
238  inline size_t PacketLength() const { return this->packet_length_; }
239 
240  inline float Scale() const { return this->scale_; }
241  inline bool BigstationMode() const { return this->bigstation_mode_; }
242  inline size_t DlPacketLength() const { return this->dl_packet_length_; }
243  inline std::string Modulation(Direction dir) const {
244  return dir == Direction::kUplink ? this->ul_modulation_
245  : this->dl_modulation_;
246  }
247  inline size_t ModOrderBits(Direction dir) const {
248  return dir == Direction::kUplink ? this->ul_mod_order_bits_
249  : this->dl_mod_order_bits_;
250  }
251  inline size_t NumBytesPerCb(Direction dir) const {
252  return dir == Direction::kUplink ? this->ul_num_bytes_per_cb_
253  : this->dl_num_bytes_per_cb_;
254  }
255  inline size_t NumPaddingBytesPerCb(Direction dir) const {
258  }
259  inline size_t MacDataBytesNumPerframe(Direction dir) const {
262  }
263  inline size_t MacBytesNumPerframe(Direction dir) const {
264  return dir == Direction::kUplink ? this->ul_mac_bytes_num_perframe_
266  }
267 
268  inline size_t MacPacketLength(Direction dir) const {
269  return dir == Direction::kUplink ? this->ul_mac_packet_length_
270  : this->dl_mac_packet_length_;
271  }
272  inline size_t MacPayloadMaxLength(Direction dir) const {
273  return dir == Direction::kUplink ? this->ul_mac_data_length_max_
274  : this->dl_mac_data_length_max_;
275  }
276  inline size_t MacPacketsPerframe(Direction dir) const {
277  return dir == Direction::kUplink ? this->ul_mac_packets_perframe_
278  : this->dl_mac_packets_perframe_;
279  }
280  inline const LDPCconfig& LdpcConfig(Direction dir) const {
281  return dir == Direction::kUplink ? this->ul_ldpc_config_
282  : this->dl_ldpc_config_;
283  }
285  return dir == Direction::kUplink ? this->ul_mod_table_
286  : this->dl_mod_table_;
287  }
288  inline const nlohmann::json& MCSParams(Direction dir) const {
289  return dir == Direction::kUplink ? this->ul_mcs_params_
290  : this->dl_mcs_params_;
291  }
292  inline size_t SubcarrierPerCodeBlock(Direction dir) const {
293  return this->LdpcConfig(dir).NumCbCodewLen() / this->ModOrderBits(dir);
294  }
295 
296  inline bool ScrambleEnabled() const { return this->scramble_enabled_; }
297 
298  inline std::string UeServerAddr() const { return this->ue_server_addr_; }
299  inline std::string BsServerAddr() const { return this->bs_server_addr_; }
300 
301  inline std::string UeRruAddr() const { return this->ue_rru_addr_; }
302  inline std::string BsRruAddr() const { return this->bs_rru_addr_; }
303 
304  inline int BsServerPort() const { return this->bs_server_port_; }
305  inline int BsRruPort() const { return this->bs_rru_port_; }
306  inline int UeServerPort() const { return this->ue_server_port_; }
307  inline int UeRruPort() const { return this->ue_rru_port_; }
308 
309  inline size_t FramesToTest() const { return this->frames_to_test_; }
310  inline float NoiseLevel() const { return this->noise_level_; }
311  inline bool FftInRru() const { return this->fft_in_rru_; }
312 
313  inline uint16_t DpdkNumPorts() const { return this->dpdk_num_ports_; }
314  inline uint16_t DpdkPortOffset() const { return this->dpdk_port_offset_; }
315 
316  inline const std::string& DpdkMacAddrs() const {
317  return this->dpdk_mac_addrs_;
318  }
319 
320  inline size_t BsMacRxPort() const { return this->bs_mac_rx_port_; }
321  inline size_t BsMacTxPort() const { return this->bs_mac_tx_port_; }
322 
323  inline size_t UeMacRxPort() const { return this->ue_mac_rx_port_; }
324  inline size_t UeMacTxPort() const { return this->ue_mac_tx_port_; }
325 
326  inline const std::string& LogListenerAddr() const {
327  return this->log_listener_addr_;
328  }
329 
330  inline size_t LogListenerPort() const { return this->log_listener_port_; }
331 
332  /* Inline accessors (complex types) */
333  inline const std::vector<int>& ClTxAdvance() const {
334  return this->cl_tx_advance_;
335  }
336  inline const std::vector<float>& ClCorrScale() const {
337  return this->cl_corr_scale_;
338  }
339 
340  inline const FrameStats& Frame() const { return this->frame_; }
341  inline const std::vector<std::complex<float>>& PilotCf32() const {
342  return this->pilot_cf32_;
343  };
344  inline const std::vector<std::complex<float>>& GoldCf32() const {
345  return this->gold_cf32_;
346  };
347  inline const std::vector<uint32_t>& Coeffs() const { return this->coeffs_; };
348 
349  inline const std::vector<uint32_t>& Pilot() const { return this->pilot_; };
350  inline const std::vector<uint32_t>& Beacon() const { return this->beacon_; };
351  // inline const complex_float *pilots (void ) const { return this->pilots_; };
352  inline const complex_float* PilotsSgn() const { return this->pilots_sgn_; };
353  inline const std::vector<std::complex<float>>& CommonPilot() const {
354  return this->common_pilot_;
355  };
356  inline const std::vector<std::string>& RadioId() const {
357  return this->radio_id_;
358  };
359  inline const std::vector<std::string>& HubId() const {
360  return this->hub_id_;
361  };
362  inline const std::vector<std::string>& UeRadioId() const {
363  return this->ue_radio_id_;
364  };
365  inline const std::vector<std::string>& UeRadioName() const {
366  return this->ue_radio_name_;
367  };
368  inline const std::vector<size_t>& CellId() const { return this->cell_id_; }
369 
370  // non-const (can modify)
372  return this->ue_specific_pilot_;
373  };
375  return this->ue_specific_pilot_t_;
376  };
377  inline std::vector<std::complex<int16_t>>& PilotCi16() {
378  return this->pilot_ci16_;
379  };
380  inline std::vector<std::complex<int16_t>>& BeaconCi16() {
381  return this->beacon_ci16_;
382  };
383 
384  inline Table<int8_t>& DlBits() { return this->dl_bits_; }
385  inline Table<int8_t>& UlBits() { return this->ul_bits_; }
386  inline Table<int8_t>& DlModBits() { return this->dl_mod_bits_; }
387  inline Table<int8_t>& UlModBits() { return this->ul_mod_bits_; }
388  inline Table<complex_float>& UlIqF() { return this->ul_iq_f_; }
389  inline Table<complex_float>& DlIqF() { return this->dl_iq_f_; }
390  inline Table<std::complex<int16_t>>& UlIqT() { return this->ul_iq_t_; }
391  inline Table<std::complex<int16_t>>& DlIqT() { return this->dl_iq_t_; }
392 
393  // Public functions
394  void GenData();
395  void UpdateUlMCS(const nlohmann::json& mcs);
396  void UpdateDlMCS(const nlohmann::json& mcs);
397 
399  size_t GetSymbolId(size_t input_id) const;
400 
401  bool IsBeacon(size_t /*frame_id*/, size_t /*symbol_id*/) const;
402  bool IsPilot(size_t /*unused*/, size_t /*symbol_id*/) const;
403  bool IsDlPilot(size_t /*unused*/, size_t /*symbol_id*/) const;
404  bool IsCalDlPilot(size_t /*unused*/, size_t /*symbol_id*/) const;
405  bool IsCalUlPilot(size_t /*unused*/, size_t /*symbol_id*/) const;
406  bool IsDownlink(size_t /*frame_id*/, size_t /*symbol_id*/) const;
407  bool IsUplink(size_t /*unused*/, size_t /*symbol_id*/) const;
408 
409  /* Public functions that do not meet coding standard format */
411  SymbolType GetSymbolType(size_t symbol_id) const;
412 
415  inline size_t GetTotalDataSymbolIdx(size_t frame_id, size_t symbol_id) const {
416  return ((frame_id % kFrameWnd) * this->frame_.NumDataSyms() + symbol_id);
417  }
418 
421  inline size_t GetTotalDataSymbolIdxUl(size_t frame_id,
422  size_t symbol_idx_ul) const {
423  return ((frame_id % kFrameWnd) * this->frame_.NumULSyms() + symbol_idx_ul);
424  }
425 
428  inline size_t GetTotalDataSymbolIdxDl(size_t frame_id,
429  size_t symbol_idx_dl) const {
430  return ((frame_id % kFrameWnd) * this->frame_.NumDLSyms() + symbol_idx_dl);
431  }
432 
433  //Returns Beacon+Dl symbol index
434  inline size_t GetBeaconDlIdx(size_t symbol_id) const {
435  size_t symbol_idx = SIZE_MAX;
436  const auto type = GetSymbolType(symbol_id);
437  if (type == SymbolType::kBeacon) {
438  symbol_idx = Frame().GetBeaconSymbolIdx(symbol_id);
439  } else if (type == SymbolType::kDL) {
440  symbol_idx = Frame().GetDLSymbolIdx(symbol_id) + Frame().NumBeaconSyms();
441  } else {
442  throw std::runtime_error("Invalid BS Beacon or DL symbol id " +
443  std::to_string(symbol_id));
444  }
445  return symbol_idx;
446  }
447 
448  //Returns Pilot+Ul symbol index
449  inline size_t GetPilotUlIdx(size_t symbol_id) const {
450  size_t symbol_idx = SIZE_MAX;
451  const auto type = GetSymbolType(symbol_id);
452  if (type == SymbolType::kPilot) {
453  symbol_idx = Frame().GetPilotSymbolIdx(symbol_id);
454  } else if (type == SymbolType::kUL) {
455  symbol_idx = Frame().GetULSymbolIdx(symbol_id) + Frame().NumPilotSyms();
456  } else {
457  throw std::runtime_error("Invalid Ue Pilot or UL symbol id " +
458  std::to_string(symbol_id));
459  }
460  return symbol_idx;
461  }
462 
464  inline double GetFrameDurationSec() const {
465  return ((this->frame_.NumTotalSyms() * this->samps_per_symbol_) /
466  this->rate_);
467  }
468 
472  size_t frame_id, size_t symbol_id) const {
473  size_t frame_slot = frame_id % kFrameWnd;
474  size_t symbol_offset = (frame_slot * this->frame_.NumULSyms()) +
475  this->frame_.GetULSymbolIdx(symbol_id);
476  return data_buffers[symbol_offset];
477  }
478 
481  inline size_t GetBeamScId(size_t sc_id) const {
482  return this->freq_orthogonal_pilot_ ? sc_id - (sc_id % ue_num_) : sc_id;
483  }
484 
487  size_t frame_id, size_t sc_id) const {
488  size_t frame_slot = frame_id % kFrameWnd;
489  return &calib_buffer[frame_slot][sc_id * bs_ant_num_];
490  }
491 
493  inline int8_t* GetMacBits(Table<int8_t>& info_bits, Direction dir,
494  size_t frame_id, size_t symbol_id, size_t ue_id,
495  size_t cb_id) const {
496  size_t mac_bytes_perframe;
497  size_t num_bytes_per_cb;
498  size_t mac_packet_length;
499  if (dir == Direction::kDownlink) {
500  mac_bytes_perframe = this->dl_mac_bytes_num_perframe_;
501  num_bytes_per_cb = this->dl_num_bytes_per_cb_;
502  mac_packet_length = this->dl_mac_packet_length_;
503  } else {
504  mac_bytes_perframe = ul_mac_bytes_num_perframe_;
505  num_bytes_per_cb = this->ul_num_bytes_per_cb_;
506  mac_packet_length = this->ul_mac_packet_length_;
507  }
508  return &info_bits[ue_id][(frame_id % kFrameWnd) * mac_bytes_perframe +
509  symbol_id * mac_packet_length +
510  cb_id * num_bytes_per_cb];
511  }
512 
514  inline int8_t* GetInfoBits(Table<int8_t>& info_bits, Direction dir,
515  size_t symbol_id, size_t ue_id,
516  size_t cb_id) const {
517  size_t num_bytes_per_cb;
518  size_t num_blocks_in_symbol;
519  if (dir == Direction::kDownlink) {
520  num_bytes_per_cb = this->dl_num_bytes_per_cb_;
521  num_blocks_in_symbol = this->dl_ldpc_config_.NumBlocksInSymbol();
522  } else {
523  num_bytes_per_cb = this->ul_num_bytes_per_cb_;
524  num_blocks_in_symbol = this->ul_ldpc_config_.NumBlocksInSymbol();
525  }
526  return &info_bits[symbol_id][Roundup<64>(num_bytes_per_cb) *
527  (num_blocks_in_symbol * ue_id + cb_id)];
528  }
529 
531  inline int8_t* GetModBitsBuf(Table<int8_t>& mod_bits_buffer, Direction dir,
532  size_t frame_id, size_t symbol_id, size_t ue_id,
533  size_t sc_id) const {
534  size_t total_data_symbol_id;
535  size_t ofdm_data_num;
536  if (dir == Direction::kDownlink) {
537  total_data_symbol_id = GetTotalDataSymbolIdxDl(frame_id, symbol_id);
538  ofdm_data_num = GetOFDMDataNum();
539  } else {
540  total_data_symbol_id = GetTotalDataSymbolIdxUl(frame_id, symbol_id);
541  ofdm_data_num = this->ofdm_data_num_;
542  }
543 
544  return &mod_bits_buffer[total_data_symbol_id]
545  [Roundup<64>(ofdm_data_num) * ue_id + sc_id];
546  }
547 
548  // Returns the number of pilot subcarriers in downlink symbols used for
549  // phase tracking
550  inline size_t GetOFDMPilotNum() const {
552  }
553 
554  inline size_t GetOFDMDataNum() const {
555  return ofdm_data_num_ - GetOFDMPilotNum();
556  }
557 
558  inline size_t GetOFDMDataIndex(size_t sc_id) const {
559  return symbol_data_id_.at(sc_id);
560  }
561 
562  inline bool IsDataSubcarrier(size_t sc_id) const {
563  return symbol_map_.at(sc_id) == SubcarrierType::kData;
564  }
565  inline const std::string& ConfigFilename() const { return config_filename_; }
566  inline const std::string& TraceFilename() const { return trace_file_; }
567  inline const std::string& Timestamp() const { return timestamp_; }
568  inline const std::vector<std::string>& UlTxFreqDataFiles(void) const {
569  return ul_tx_f_data_files_;
570  }
571 
572  private:
573  void Print() const;
574  nlohmann::json Parse(const nlohmann::json& in_json,
575  const std::string& json_handle);
576  void DumpMcsInfo();
577 
578  /* Class constants */
579  inline static const size_t kDefaultSymbolNumPerFrame = 70;
580  inline static const size_t kDefaultPilotSymPerFrame = 8;
581  inline static const size_t kDefaultULSymPerFrame = 30;
582  inline static const size_t kDefaultULSymStart = 9;
583  inline static const size_t kDefaultDLSymPerFrame = 30;
584  inline static const size_t kDefaultDLSymStart = 40;
585 
586  // Number of code blocks per OFDM symbol
587  // Temporarily set to 1
588  // TODO: This number should independent of OFDM symbols
589  static constexpr size_t kCbPerSymbol = 1;
590 
591  /* Private class variables */
592  const double freq_ghz_; // RDTSC frequency in GHz
593 
594  size_t bs_ant_num_; // Total number of BS antennas
595  size_t bf_ant_num_; // Number of antennas used in beamforming
596 
597  // The count of ues an instance is responsable for
598  size_t ue_num_;
599  // The count of ue antennas an instance is responsable for
600  size_t ue_ant_num_;
601 
602  // Total number of us antennas in this experiment including the ones
603  // instantiated on other runs/machines.
605  // The offset into the number total ue antennas this instantiation is
606  // responsible for.
608 
609  // The total number of OFDM subcarriers, which is a power of two
610  size_t ofdm_ca_num_;
611 
612  // The number of cyclic prefix IQ samples. These are taken from the tail of
613  // the time-domain OFDM samples and prepended to the beginning.
614  size_t cp_len_;
615 
616  // The number of OFDM subcarriers that are non-zero in the frequency domain
618 
619  // The index of the first non-zero OFDM subcarrier (in the frequency domain)
620  // in block of ofdm_ca_num_ subcarriers.
622 
623  // The index of the last non-zero OFDM subcarrier (in the frequency domain)
624  // in block of ofdm_ca_num_ subcarriers.
626 
628 
629  std::string ul_modulation_; // Modulation order as a string, e.g., "16QAM"
630  size_t
631  ul_mod_order_; // Modulation order (e.g., 4: QPSK, 16: 16QAM, 64: 64QAM)
632  size_t
633  ul_mod_order_bits_; // Number of binary bits used for a modulation order
634  std::string dl_modulation_;
637 
638  // Modulation lookup table for mapping binary bits to constellation points
641 
642  LDPCconfig ul_ldpc_config_; // Uplink LDPC parameters
643  LDPCconfig dl_ldpc_config_; // Downlink LDPC parameters
644  nlohmann::json ul_mcs_params_; // Uplink Modulation and Coding (MCS)
645  nlohmann::json dl_mcs_params_; // Downlink Modulation and Coding (MCS)
647 
648  // A class that holds the frame configuration the id contains letters
649  // representing the symbol types in the frame (e.g., 'P' for pilot symbols,
650  // 'U' for uplink data symbols)
652 
653  std::atomic<bool> running_;
654 
655  size_t dl_packet_length_; // HAS_TIME & END_BURST, fixme
656 
657  std::vector<SubcarrierType> symbol_map_;
658  std::vector<size_t> symbol_data_id_;
659 
668 
669  std::vector<std::complex<float>> gold_cf32_;
670  std::vector<std::complex<int16_t>> beacon_ci16_;
671  std::vector<uint32_t> coeffs_;
672  std::vector<std::complex<int16_t>> pilot_ci16_;
673  std::vector<std::complex<float>> pilot_cf32_;
674  std::vector<uint32_t> pilot_;
675  std::vector<uint32_t> beacon_;
680  std::vector<std::complex<float>> common_pilot_;
681 
682  std::vector<double> client_gain_tx_a_;
683  std::vector<double> client_gain_tx_b_;
684  std::vector<double> client_gain_rx_a_;
685  std::vector<double> client_gain_rx_b_;
686 
687  std::vector<std::string> radio_id_;
688  std::vector<std::string> hub_id_;
689  std::vector<std::string> ue_radio_id_;
690  std::vector<std::string> ue_radio_name_;
691  std::vector<size_t> ref_radio_;
692  std::vector<size_t> ref_ant_;
693  std::vector<size_t> cell_id_;
694 
695  // Controls whether the synchronization and frame time keeping is done
696  // in hardware or software
697  // true: use hardware correlator; false: use software corrleator
701 
702  double freq_;
703  double rate_;
704  double nco_;
706  double bw_filter_;
708  double tx_gain_a_;
709  double rx_gain_a_;
710  double tx_gain_b_;
711  double rx_gain_b_;
714  std::vector<double> client_tx_gain_a_;
715  std::vector<double> client_rx_gain_a_;
716  std::vector<double> client_tx_gain_b_;
717  std::vector<double> client_rx_gain_b_;
718 
719  size_t num_cells_;
720  size_t num_radios_;
723  size_t beacon_ant_;
724  size_t beacon_len_;
730  std::string beamforming_str_;
731  std::vector<bool> external_ref_node_;
732  std::string channel_;
733  std::string ue_channel_;
734 
735  size_t core_offset_;
742 
746 
747  // Number of OFDM data subcarriers handled in one demodulation event
749  size_t demul_events_per_symbol_; // Derived from demul_block_size
750 
751  // Number of OFDM data subcarriers handled in one doZF function call
753 
754  // Number of doZF function call handled in on event
756  size_t beam_events_per_symbol_; // Derived from beam_block_size
757 
758  // Number of antennas handled in one FFT event
760 
761  // Number of code blocks handled in one encode event
763 
765 
766  // The number of zero IQ samples prepended to a time-domain symbol (i.e.,
767  // before the cyclic prefix) before transmission. Its value depends on
768  // over-the-air and RF delays, and is currently calculated by manual tuning.
770 
771  // The number of zero IQ samples appended to a time-domain symbol before
772  // transmission. Its value depends on over-the-air and RF delays, and is
773  // currently calculated by manual tuning.
775 
776  // The number of IQ samples to skip from the beginning of symbol received by
777  // Agora on the uplink at the base station. Due to over-the-air and RF
778  // delays, this can be different from (prefix + cp_len_), and is currently
779  // calculated by manual tuning.
781 
784 
785  // The number of IQ samples to skip from the beginning of symbol received by
786  // Agora on the downlink at the client. Due to over-the-air and RF
787  // delays, this can be different from (prefix + cp_len_), and is currently
788  // calculated by manual tuning.
790 
791  // The total number of IQ samples in one physical layer time-domain packet
792  // received or sent by Agora
794 
795  // The number of bytes in one physical layer time-domain packet received or
796  // sent by Agora. This includes Agora's packet header, but not the
797  // Ethernet/IP/UDP headers.
799 
800  std::vector<int> cl_tx_advance_;
801  std::vector<float> cl_corr_scale_;
802 
803  float scale_; // Scaling factor for all transmit symbols
804 
805  bool bigstation_mode_; // If true, use pipeline-parallel scheduling
806  bool correct_phase_shift_; // If true, do phase shift correction
807 
808  // The total number of uncoded uplink data bytes in each OFDM symbol
810 
811  // The total number of uplink MAC payload data bytes in each Frame
813 
814  // The total number of uplink MAC packet bytes in each Frame
816 
817  // The length (in bytes) of a uplink MAC packet including the header
819 
820  // The length (in bytes) of a uplink MAC packet payload (data)
822 
823  // The total number of uncoded downlink data bytes in each OFDM symbol
825 
826  // The total number of downlink MAC payload data bytes in each Frame
828 
829  // The total number of downlink MAC packet bytes in each Frame
831 
832  // The length (in bytes) of a downlink MAC packet including the header
834 
835  // The length (in bytes) of a downlink MAC packet payload (data)
837 
838  // The total number of downlink mac packets sent/received in each frame
840 
841  // The total number of uplink mac packets sent/received in each frame
843 
844  // IP address of the machine running the baseband processing for UE
845  std::string ue_server_addr_;
846 
847  // IP address of the machine running the baseband processing for BS
848  std::string bs_server_addr_;
849 
850  // IP address of the base station RRU, RRU emulator (sender),
851  // or channel simulator
852  std::string bs_rru_addr_;
853 
854  // IP address of the Ue RRU, RRU emulator (sender), or channel simulator
855  // could be multiple addresses
856  std::string ue_rru_addr_;
857 
858  // IP address of the data source/sink server communicating with MAC (BS/UE)
859  std::string mac_remote_addr_;
860 
861  // IP address of the listening server for runtime stats log
862  std::string log_listener_addr_;
863 
864  int bs_server_port_; // Base UDP port used by BS to receive data
865 
866  // Base RRU/channel simulator UDP port used by BS to transmit downlink data
868 
869  int ue_server_port_; // Base UDP port used by UEs to receive data
870 
871  // Base RRU/channel simulator UDP port used by UEs to transmit uplink data
873 
874  // Number of NIC ports used for DPDK
875  uint16_t dpdk_num_ports_;
876 
877  // Offset of the first NIC port used by Agora's DPDK mode
879 
880  // MAC addresses of NIC ports separated by ';'
881  std::string dpdk_mac_addrs_;
882 
883  // Port ID at BaseStation MAC layer side
886 
887  // Port ID at Client MAC layer side
890 
891  // Port ID at log listening server
893 
894  // Number of frames_ sent by sender during testing = number of frames_
895  // processed by Agora before exiting.
897 
898  // Size of tranport block given by upper layer
900 
902 
903  // Number of bytes per code block
906 
907  // Number of padding bytes per code block
910 
911  bool fft_in_rru_; // If true, the RRU does FFT instead of Agora
912  const std::string config_filename_;
913  std::string trace_file_;
914  std::string timestamp_;
915  std::vector<std::string> ul_tx_f_data_files_;
916 };
917 #endif /* CONFIG_HPP_ */
FrameStats::NumPilotSyms
size_t NumPilotSyms() const
Definition: framestats.cc:91
kShortIdLen
static constexpr size_t kShortIdLen
Definition: config.cc:30
Config::UeWorkerThreadNum
size_t UeWorkerThreadNum() const
Definition: config.h:184
FrameStats::GetBeaconSymbolLast
size_t GetBeaconSymbolLast() const
Definition: framestats.h:61
Utils::Cfloat32ToUint32
static std::vector< uint32_t > Cfloat32ToUint32(const std::vector< std::complex< float >> &in, bool conj, const std::string &order)
Definition: utils.cc:291
Config::ue_server_addr_
std::string ue_server_addr_
Definition: config.h:845
Config::IsDownlink
bool IsDownlink(size_t, size_t) const
Definition: config.cc:1546
Config::DecodeThreadNum
size_t DecodeThreadNum() const
Definition: config.h:193
Config::dpdk_mac_addrs_
std::string dpdk_mac_addrs_
Definition: config.h:881
CommsLib::IFFT
static MKL_LONG IFFT(std::vector< std::complex< float >> &in_out, int fft_size, bool normalize=true)
Definition: comms-lib.cc:410
Config::num_cells_
size_t num_cells_
Definition: config.h:719
Config::trace_file_
std::string trace_file_
Definition: config.h:913
Config::SocketThreadNum
size_t SocketThreadNum() const
Definition: config.h:182
Config::ue_worker_thread_num_
size_t ue_worker_thread_num_
Definition: config.h:744
kDlDataFilePrefix
static const std::string kDlDataFilePrefix
Definition: config.cc:38
fmt::v8::detail::byte
byte
Definition: core.h:388
Config::GenData
void GenData()
Definition: config.cc:908
Config::UeSpecificPilotT
Table< std::complex< int16_t > > & UeSpecificPilotT()
Definition: config.h:374
Config::ul_mac_packets_perframe_
size_t ul_mac_packets_perframe_
Definition: config.h:842
FrameStats::GetDLSymbolIdx
size_t GetDLSymbolIdx(size_t symbol_number) const
Definition: framestats.cc:152
FrameStats::NumDLCalSyms
size_t NumDLCalSyms() const
Definition: framestats.cc:79
Config::GetBeamScId
size_t GetBeamScId(size_t sc_id) const
Definition: config.h:481
Config::Running
void Running(bool value)
Definition: config.h:33
FrameStats::FrameIdentifier
const std::string & FrameIdentifier() const
Definition: framestats.h:70
kMacUserLocalPort
static constexpr size_t kMacUserLocalPort
Definition: symbols.h:320
Config::ul_tx_f_data_files_
std::vector< std::string > ul_tx_f_data_files_
Definition: config.h:915
Config::fft_in_rru_
bool fft_in_rru_
Definition: config.h:911
Config::UeAntNum
size_t UeAntNum() const
Definition: config.h:41
Config::GetCalibBuffer
complex_float * GetCalibBuffer(Table< complex_float > &calib_buffer, size_t frame_id, size_t sc_id) const
Get the calibration buffer for this frame and subcarrier ID.
Definition: config.h:486
Table::Calloc
void Calloc(size_t dim1, size_t dim2, Agora_memory::Alignment_t alignment)
Definition: memory_manage.h:45
kOutputUlScData
static constexpr bool kOutputUlScData
Definition: symbols.h:359
Config::Freq
double Freq() const
Definition: config.h:57
Config::symbol_data_id_
std::vector< size_t > symbol_data_id_
Definition: config.h:658
FrameStats::IsRecCalEnabled
bool IsRecCalEnabled() const
Definition: framestats.cc:97
Config::ul_bits_
Table< int8_t > ul_bits_
Definition: config.h:661
complex_float
Definition: test_transpose.cc:22
Config::OfdmRxZeroPrefixCalUl
void OfdmRxZeroPrefixCalUl(size_t prefix)
Definition: config.h:222
Config::sample_cal_en_
bool sample_cal_en_
Definition: config.h:727
Config::running_
std::atomic< bool > running_
Definition: config.h:653
Config::Scale
float Scale() const
Definition: config.h:240
SymbolType::kCalDL
@ kCalDL
Config::UpdateDlMCS
void UpdateDlMCS(const nlohmann::json &mcs)
Definition: config.cc:814
Config::cell_id_
std::vector< size_t > cell_id_
Definition: config.h:693
LDPCconfig::MaxDecoderIter
int16_t MaxDecoderIter() const
Definition: ldpc_config.h:48
Config::UeSocketThreadNum
size_t UeSocketThreadNum() const
Definition: config.h:187
Config::SampsPerSymbol
size_t SampsPerSymbol() const
Definition: config.h:234
fmt::v8::printf
auto printf(const S &fmt, const T &... args) -> int
Definition: printf.h:631
Config::cl_corr_scale_
std::vector< float > cl_corr_scale_
Definition: config.h:801
Config::Rate
double Rate() const
Definition: config.h:58
FrameStats::GetDLCalSymbolIdx
size_t GetDLCalSymbolIdx(size_t symbol_number) const
Definition: framestats.cc:164
FreeBuffer1d
static void FreeBuffer1d(T **buffer)
Definition: memory_manage.h:116
kMacBaseRemotePort
static constexpr size_t kMacBaseRemotePort
Definition: symbols.h:328
Config::UeChannel
std::string UeChannel() const
Definition: config.h:114
Config::bf_ant_num_
size_t bf_ant_num_
Definition: config.h:595
Config::RadioId
const std::vector< std::string > & RadioId() const
Definition: config.h:356
Config::NumChannels
size_t NumChannels() const
Definition: config.h:98
FrameStats::NumBeaconSyms
size_t NumBeaconSyms() const
Definition: framestats.cc:87
kExperimentFilepath
static const std::string kExperimentFilepath
Definition: config.cc:34
Config::UlBits
Table< int8_t > & UlBits()
Definition: config.h:385
Config::MacPacketsPerframe
size_t MacPacketsPerframe(Direction dir) const
Definition: config.h:276
LdpcEncodeHelper
static void LdpcEncodeHelper(size_t base_graph, size_t zc, size_t nRows, int8_t *encoded_buffer, int8_t *parity_buffer, const int8_t *input_buffer)
Definition: utils_ldpc.h:195
FrameStats::GetPilotSymbol
size_t GetPilotSymbol(size_t location) const
Definition: framestats.cc:122
kUse12BitIQ
static constexpr bool kUse12BitIQ
Definition: symbols.h:178
Config::dl_iq_t_
Table< std::complex< int16_t > > dl_iq_t_
Definition: config.h:666
Config::OfdmTxZeroPrefix
size_t OfdmTxZeroPrefix() const
Definition: config.h:211
Config::CoreOffset
size_t CoreOffset() const
Definition: config.h:180
Config::ClientTxGainA
double ClientTxGainA(size_t id) const
Definition: config.h:70
framestats.h
Class defination for frame tracking.
Config::~Config
~Config()
Definition: config.cc:1451
Config::ofdm_tx_zero_postfix_
size_t ofdm_tx_zero_postfix_
Definition: config.h:774
Config::scale_
float scale_
Definition: config.h:803
Config::ue_rru_port_
int ue_rru_port_
Definition: config.h:872
Config::UeRadioName
const std::vector< std::string > & UeRadioName() const
Definition: config.h:365
Config::ofdm_data_stop_
size_t ofdm_data_stop_
Definition: config.h:625
Config::GetTotalDataSymbolIdxUl
size_t GetTotalDataSymbolIdxUl(size_t frame_id, size_t symbol_idx_ul) const
Definition: config.h:421
Direction
Direction
Definition: symbols.h:39
Config::OfdmTxZeroPostfix
size_t OfdmTxZeroPostfix() const
Definition: config.h:212
SymbolType::kPilot
@ kPilot
Config::bs_rru_addr_
std::string bs_rru_addr_
Definition: config.h:852
Config::CpLen
size_t CpLen() const
Definition: config.h:46
Config::HubId
const std::vector< std::string > & HubId() const
Definition: config.h:359
Config::OfdmRxZeroPrefixBs
size_t OfdmRxZeroPrefixBs() const
Definition: config.h:215
LdpcNumEncodedBits
static size_t LdpcNumEncodedBits(size_t base_graph, size_t zc, size_t nRows)
Definition: utils_ldpc.h:159
Catch::Generators::value
GeneratorWrapper< T > value(T &&value)
Definition: catch.hpp:3999
Config::freq_orthogonal_pilot_
bool freq_orthogonal_pilot_
Definition: config.h:764
Config::ul_iq_f_
Table< complex_float > ul_iq_f_
Definition: config.h:665
SubcarrierType::kDMRS
@ kDMRS
Config::RecipCalFrameCnt
size_t RecipCalFrameCnt() const
Definition: config.h:171
Config::bs_ant_num_
size_t bs_ant_num_
Definition: config.h:594
Config::GetInfoBits
int8_t * GetInfoBits(Table< int8_t > &info_bits, Direction dir, size_t symbol_id, size_t ue_id, size_t cb_id) const
Get info bits for this symbol, user and code block ID.
Definition: config.h:514
kFrameWnd
static constexpr size_t kFrameWnd
Definition: symbols.h:18
unused
#define unused(x)
Definition: utils.h:14
modulation.h
Config::bs_server_port_
int bs_server_port_
Definition: config.h:864
Config::GetOFDMDataNum
size_t GetOFDMDataNum() const
Definition: config.h:554
Agora_memory::PaddedAlignedAlloc
void * PaddedAlignedAlloc(Alignment_t alignment, size_t size)
Definition: memory_manage.cc:15
Config::NoiseLevel
float NoiseLevel() const
Definition: config.h:310
Config::pilots_sgn_
complex_float * pilots_sgn_
Definition: config.h:677
Config::ue_radio_id_
std::vector< std::string > ue_radio_id_
Definition: config.h:689
Config::symbol_map_
std::vector< SubcarrierType > symbol_map_
Definition: config.h:657
Config::BeamThreadNum
size_t BeamThreadNum() const
Definition: config.h:194
LDPCconfig::NumRows
size_t NumRows() const
Definition: ldpc_config.h:52
Config::ul_mac_bytes_num_perframe_
size_t ul_mac_bytes_num_perframe_
Definition: config.h:815
Config::bw_filter_
double bw_filter_
Definition: config.h:706
Config::client_gain_tx_b_
std::vector< double > client_gain_tx_b_
Definition: config.h:683
Config::UeResyncPeriod
size_t UeResyncPeriod() const
Definition: config.h:55
Config::UeRadioId
const std::vector< std::string > & UeRadioId() const
Definition: config.h:362
Config::tx_gain_a_
double tx_gain_a_
Definition: config.h:708
FrameStats::GetULSymbolIdx
size_t GetULSymbolIdx(size_t symbol_number) const
Definition: framestats.cc:156
Config::ul_mod_table_
Table< complex_float > ul_mod_table_
Definition: config.h:639
Config::OfdmRxZeroPrefixCalUl
size_t OfdmRxZeroPrefixCalUl() const
Definition: config.h:219
memory_manage.h
Config::dl_mac_bytes_num_perframe_
size_t dl_mac_bytes_num_perframe_
Definition: config.h:830
Config::kDefaultPilotSymPerFrame
static const size_t kDefaultPilotSymPerFrame
Definition: config.h:580
Config::bs_rru_port_
int bs_rru_port_
Definition: config.h:867
Config::noise_level_
float noise_level_
Definition: config.h:901
Config::common_pilot_
std::vector< std::complex< float > > common_pilot_
Definition: config.h:680
Config::BsAntNum
size_t BsAntNum() const
Definition: config.h:35
Config::MacDataBytesNumPerframe
size_t MacDataBytesNumPerframe(Direction dir) const
Definition: config.h:259
BitsToBytes
static size_t BitsToBytes(size_t n_bits)
Definition: utils_ldpc.h:124
Config::dl_mcs_params_
nlohmann::json dl_mcs_params_
Definition: config.h:645
Config::client_gain_rx_b_
std::vector< double > client_gain_rx_b_
Definition: config.h:685
Config::dl_num_bytes_per_cb_
size_t dl_num_bytes_per_cb_
Definition: config.h:905
Config::rate_
double rate_
Definition: config.h:703
Config::SubcarrierPerCodeBlock
size_t SubcarrierPerCodeBlock(Direction dir) const
Definition: config.h:292
kMaxSupportedZc
static constexpr size_t kMaxSupportedZc
Definition: config.cc:29
Config::Beacon
const std::vector< uint32_t > & Beacon() const
Definition: config.h:350
CommsLib::FindMaxAbs
static float FindMaxAbs(const complex_float *in, size_t len)
Definition: comms-lib.cc:135
fclose
fclose(fileID)
CommsLib::kStsSeq
@ kStsSeq
Definition: comms-lib.h:32
Config::RxGainB
double RxGainB() const
Definition: config.h:67
Config::ul_mod_order_
size_t ul_mod_order_
Definition: config.h:631
Utils::LoadTddConfig
static void LoadTddConfig(const std::string &filename, std::string &jconfig)
Definition: utils.cc:380
AGORA_LOG_ERROR
#define AGORA_LOG_ERROR(...)
Definition: logger.h:39
TOSTRING
#define TOSTRING(x)
Definition: symbols.h:14
kTransposeBlockSize
static constexpr size_t kTransposeBlockSize
Definition: symbols.h:340
Config::GetBeaconDlIdx
size_t GetBeaconDlIdx(size_t symbol_id) const
Definition: config.h:434
Config::client_gain_tx_a_
std::vector< double > client_gain_tx_a_
Definition: config.h:682
Config::GetOFDMPilotNum
size_t GetOFDMPilotNum() const
Definition: config.h:550
Config::beamforming_str_
std::string beamforming_str_
Definition: config.h:730
Config::BwFilter
double BwFilter() const
Definition: config.h:62
kMacBaseLocalPort
static constexpr size_t kMacBaseLocalPort
Definition: symbols.h:332
Direction::kUplink
@ kUplink
Config::UeMacRxPort
size_t UeMacRxPort() const
Definition: config.h:323
Config::DumpMcsInfo
void DumpMcsInfo()
Definition: config.cc:881
Config::RefRadio
size_t RefRadio(size_t id) const
Definition: config.h:101
Config::Frame
const FrameStats & Frame() const
Definition: config.h:340
Config::ref_ant_
std::vector< size_t > ref_ant_
Definition: config.h:692
Config::client_gain_rx_a_
std::vector< double > client_gain_rx_a_
Definition: config.h:684
Config::RadioRfFreq
double RadioRfFreq() const
Definition: config.h:61
Config::UeServerPort
int UeServerPort() const
Definition: config.h:306
Config::ofdm_pilot_spacing_
size_t ofdm_pilot_spacing_
Definition: config.h:627
Config::tx_gain_b_
double tx_gain_b_
Definition: config.h:710
Config::ofdm_rx_zero_prefix_bs_
size_t ofdm_rx_zero_prefix_bs_
Definition: config.h:780
Config::ue_rru_addr_
std::string ue_rru_addr_
Definition: config.h:856
AGORA_LOG_TRACE
#define AGORA_LOG_TRACE(...)
Definition: logger.h:92
Config::ue_num_
size_t ue_num_
Definition: config.h:598
Config::DlModBits
Table< int8_t > & DlModBits()
Definition: config.h:386
Config::ModifyRecCalIndex
size_t ModifyRecCalIndex(size_t previous_index, int mod_value=0) const
Definition: config.h:133
Config::GetDataBuf
complex_float * GetDataBuf(Table< complex_float > &data_buffers, size_t frame_id, size_t symbol_id) const
Definition: config.h:471
Config::BeaconCi16
std::vector< std::complex< int16_t > > & BeaconCi16()
Definition: config.h:380
Config::single_gain_
bool single_gain_
Definition: config.h:707
Config::Nco
double Nco() const
Definition: config.h:59
Config::ul_ldpc_config_
LDPCconfig ul_ldpc_config_
Definition: config.h:642
kBeamformingStr
static const std::map< std::string, size_t > kBeamformingStr
Definition: comms-lib.h:26
kSCsPerCacheline
static constexpr size_t kSCsPerCacheline
Definition: symbols.h:312
AllocBuffer1d
static void AllocBuffer1d(T **buffer, U dim, Agora_memory::Alignment_t alignment, int init_zero)
Definition: memory_manage.h:105
kDebugPrintPilot
static constexpr bool kDebugPrintPilot
Print the I/Q samples in the pilots.
Definition: symbols.h:206
Config::dl_data_bytes_num_persymbol_
size_t dl_data_bytes_num_persymbol_
Definition: config.h:824
Config::kDefaultSymbolNumPerFrame
static const size_t kDefaultSymbolNumPerFrame
Definition: config.h:579
Table< complex_float >
Config::ul_mod_order_bits_
size_t ul_mod_order_bits_
Definition: config.h:633
Config::freq_
double freq_
Definition: config.h:702
Config::dl_bits_
Table< int8_t > dl_bits_
Definition: config.h:660
index
index
Definition: parse_all_dl.m:11
LdpcNumInputCols
static size_t LdpcNumInputCols(size_t base_graph)
Definition: utils_ldpc.h:128
Config::scramble_enabled_
bool scramble_enabled_
Definition: config.h:646
Config::log_listener_addr_
std::string log_listener_addr_
Definition: config.h:862
Config::OfdmRxZeroPrefixCalDl
size_t OfdmRxZeroPrefixCalDl() const
Definition: config.h:225
Config::config_filename_
const std::string config_filename_
Definition: config.h:912
Config::BeamformingAlgo
size_t BeamformingAlgo() const
Definition: config.h:108
Config::Print
void Print() const
Definition: config.cc:1561
Config::ul_modulation_
std::string ul_modulation_
Definition: config.h:629
Config::PilotCf32
const std::vector< std::complex< float > > & PilotCf32() const
Definition: config.h:341
InitModulationTable
void InitModulationTable(Table< complex_float > &mod_table, size_t mod_order)
Definition: modulation.cc:42
Config::kDebugRecipCal
static constexpr bool kDebugRecipCal
Definition: config.h:28
Config::PilotsSgn
const complex_float * PilotsSgn() const
Definition: config.h:352
filename
filename
Definition: parse_all_dl.m:14
Config::UeNum
size_t UeNum() const
Definition: config.h:40
fmt::v8::detail::abs
constexpr std::chrono::duration< Rep, Period > abs(std::chrono::duration< Rep, Period > d)
Definition: chrono.h:1488
Config::fft_thread_num_
size_t fft_thread_num_
Definition: config.h:738
Config::beam_block_size_
size_t beam_block_size_
Definition: config.h:752
Config::beamsweep_
bool beamsweep_
Definition: config.h:726
nlohmann::json_v3_11_1NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON::json
basic_json<> json
default specialization
Definition: json.hpp:3378
Config::socket_thread_num_
size_t socket_thread_num_
Definition: config.h:737
Config::MCSParams
const nlohmann::json & MCSParams(Direction dir) const
Definition: config.h:288
Config::beam_events_per_symbol_
size_t beam_events_per_symbol_
Definition: config.h:756
Config::OfdmDataNum
size_t OfdmDataNum() const
Definition: config.h:47
Config::ul_num_bytes_per_cb_
size_t ul_num_bytes_per_cb_
Definition: config.h:904
Config::ul_iq_t_
Table< std::complex< int16_t > > ul_iq_t_
Definition: config.h:667
CommsLib::kGoldIfft
@ kGoldIfft
Definition: comms-lib.h:36
Config::ul_mac_data_bytes_num_perframe_
size_t ul_mac_data_bytes_num_perframe_
Definition: config.h:812
kOutputFrameNum
static constexpr size_t kOutputFrameNum
Definition: symbols.h:363
Config::IsPilot
bool IsPilot(size_t, size_t) const
Definition: config.cc:1495
FrameStats::SetClientPilotSyms
void SetClientPilotSyms(size_t ul, size_t dl)
Definition: framestats.cc:70
Utils::DoubleToCint16
static std::vector< std::complex< int16_t > > DoubleToCint16(const std::vector< std::vector< double >> &in)
Definition: utils.cc:219
Config::ExternalRefNode
bool ExternalRefNode(size_t id) const
Definition: config.h:110
Config::GetTotalDataSymbolIdx
size_t GetTotalDataSymbolIdx(size_t frame_id, size_t symbol_id) const
Definition: config.h:415
Config::channel_
std::string channel_
Definition: config.h:732
Config::dl_mac_packet_length_
size_t dl_mac_packet_length_
Definition: config.h:833
Config::GetPilotUlIdx
size_t GetPilotUlIdx(size_t symbol_id) const
Definition: config.h:449
kDebugDownlink
static constexpr bool kDebugDownlink
Definition: symbols.h:180
Config::Running
bool Running() const
Definition: config.h:34
Config::coeffs_
std::vector< uint32_t > coeffs_
Definition: config.h:671
Config::TraceFilename
const std::string & TraceFilename() const
Definition: config.h:566
Config::rx_gain_b_
double rx_gain_b_
Definition: config.h:711
Config::pilot_
std::vector< uint32_t > pilot_
Definition: config.h:674
Config::num_radios_
size_t num_radios_
Definition: config.h:720
kSymbolMap
static const std::map< char, SymbolType > kSymbolMap
Definition: symbols.h:271
Config::FftInRru
bool FftInRru() const
Definition: config.h:311
Config::cl_tx_advance_
std::vector< int > cl_tx_advance_
Definition: config.h:800
Config::DpdkPortOffset
uint16_t DpdkPortOffset() const
Definition: config.h:314
fmt::v8::detail::find
auto find(Ptr first, Ptr last, T value, Ptr &out) -> bool
Definition: core.h:2258
Config::BsRruPort
int BsRruPort() const
Definition: config.h:305
Config::ul_num_padding_bytes_per_cb_
size_t ul_num_padding_bytes_per_cb_
Definition: config.h:908
Config::ul_mod_bits_
Table< int8_t > ul_mod_bits_
Definition: config.h:662
Config::GetSymbolId
size_t GetSymbolId(size_t input_id) const
TODO document and review.
Definition: config.cc:1476
Config::kCbPerSymbol
static constexpr size_t kCbPerSymbol
Definition: config.h:589
simd_types.h
Aligned types for SIMD compatibility.
Config::DlPacketLength
size_t DlPacketLength() const
Definition: config.h:242
message.h
Self defined functions for message storage and passing.
Table::Free
void Free()
Definition: memory_manage.h:84
Config::DemulThreadNum
size_t DemulThreadNum() const
Definition: config.h:192
Config::client_tx_gain_a_
std::vector< double > client_tx_gain_a_
Definition: config.h:714
Config::imbalance_cal_en_
bool imbalance_cal_en_
Definition: config.h:728
Config::BsServerPort
int BsServerPort() const
Definition: config.h:304
MacPacketHeaderPacked
Definition: message.h:244
Config::FftBlockSize
size_t FftBlockSize() const
Definition: config.h:205
Config::encode_block_size_
size_t encode_block_size_
Definition: config.h:762
Config::UlTxFreqDataFiles
const std::vector< std::string > & UlTxFreqDataFiles(void) const
Definition: config.h:568
Config::Beamforming
std::string Beamforming() const
Definition: config.h:109
Config::FftThreadNum
size_t FftThreadNum() const
Definition: config.h:191
FrameStats::ClientUlPilotSymbols
size_t ClientUlPilotSymbols() const
Definition: framestats.h:73
Config::demul_block_size_
size_t demul_block_size_
Definition: config.h:748
Config::pilot_ci16_
std::vector< std::complex< int16_t > > pilot_ci16_
Definition: config.h:672
scrambler.h
Scramble Class and helper functions.
i
for i
Definition: generate_data.m:107
GetTime
Definition: gettime.h:11
Config::OfdmCaNum
size_t OfdmCaNum() const
Definition: config.h:45
Config::samps_per_symbol_
size_t samps_per_symbol_
Definition: config.h:793
Packet::kOffsetOfData
static constexpr size_t kOffsetOfData
Definition: message.h:166
Config::MacPayloadMaxLength
size_t MacPayloadMaxLength(Direction dir) const
Definition: config.h:272
FrameStats::NumDlDataSyms
size_t NumDlDataSyms() const
Definition: framestats.h:83
Config::ImbalanceCalEn
bool ImbalanceCalEn() const
Definition: config.h:107
Config::dl_mod_order_bits_
size_t dl_mod_order_bits_
Definition: config.h:636
SymbolType::kBeacon
@ kBeacon
Config::cp_len_
size_t cp_len_
Definition: config.h:614
Catch::cout
std::ostream & cout()
Config::OfdmRxZeroPrefixCalDl
void OfdmRxZeroPrefixCalDl(const size_t prefix)
Definition: config.h:228
Config::BsAntNum
void BsAntNum(size_t n_bs_ant)
Definition: config.h:36
u
Plot Rx waveform for u
Definition: inspect_single_frame.m:108
Config::IsCalUlPilot
bool IsCalUlPilot(size_t, size_t) const
Definition: config.cc:1530
Config::ul_mac_data_length_max_
size_t ul_mac_data_length_max_
Definition: config.h:821
Utils::Cint16ToUint32
static std::vector< uint32_t > Cint16ToUint32(const std::vector< std::complex< int16_t >> &in, bool conj, const std::string &order)
Definition: utils.cc:275
comms-lib.h
Communications Library: a) Generate pilot/preamble sequences b) OFDM modulation.
Config::BeamBatchSize
size_t BeamBatchSize() const
Definition: config.h:201
Config::dl_mod_order_
size_t dl_mod_order_
Definition: config.h:635
Config::OfdmPilotSpacing
size_t OfdmPilotSpacing() const
Definition: config.h:51
Config::ofdm_data_start_
size_t ofdm_data_start_
Definition: config.h:621
Config::ofdm_ca_num_
size_t ofdm_ca_num_
Definition: config.h:610
Config::beacon_ci16_
std::vector< std::complex< int16_t > > beacon_ci16_
Definition: config.h:670
spdlog::details::os::localtime
SPDLOG_INLINE std::tm localtime(const std::time_t &time_tt) SPDLOG_NOEXCEPT
Definition: os-inl.h:84
Config::ModTable
Table< complex_float > & ModTable(Direction dir)
Definition: config.h:284
Config::num_ue_channels_
size_t num_ue_channels_
Definition: config.h:722
Config::beam_thread_num_
size_t beam_thread_num_
Definition: config.h:741
kUlDataFreqPrefix
static const std::string kUlDataFreqPrefix
Definition: config.cc:40
Config::BsServerAddr
std::string BsServerAddr() const
Definition: config.h:299
Agora_memory::Alignment_t::kAlign64
@ kAlign64
Config::dl_mod_table_
Table< complex_float > dl_mod_table_
Definition: config.h:640
Config::ClientTxGainB
double ClientTxGainB(size_t id) const
Definition: config.h:76
Config::dl_mac_packets_perframe_
size_t dl_mac_packets_perframe_
Definition: config.h:839
kUseUHD
static constexpr bool kUseUHD
Definition: symbols.h:162
Config::dl_packet_length_
size_t dl_packet_length_
Definition: config.h:655
Config::Channel
std::string Channel() const
Definition: config.h:113
Config::NumBytesPerCb
size_t NumBytesPerCb(Direction dir) const
Definition: config.h:251
Config::dl_num_padding_bytes_per_cb_
size_t dl_num_padding_bytes_per_cb_
Definition: config.h:909
Direction::kDownlink
@ kDownlink
Config::kDefaultULSymStart
static const size_t kDefaultULSymStart
Definition: config.h:582
CommsLib::Ifft2tx
static void Ifft2tx(const complex_float *in, std::complex< short > *out, size_t N, size_t prefix, size_t cp, float scale)
Definition: comms-lib.cc:656
Config::GetFrameDurationSec
double GetFrameDurationSec() const
Return the frame duration in seconds.
Definition: config.h:464
kUseArgos
static constexpr bool kUseArgos
Definition: symbols.h:156
Config::timestamp_
std::string timestamp_
Definition: config.h:914
Config::FramesToTest
size_t FramesToTest() const
Definition: config.h:309
Config::DlIqF
Table< complex_float > & DlIqF()
Definition: config.h:389
ModSingleUint8
complex_float ModSingleUint8(uint8_t x, Table< complex_float > &mod_table)
Definition: modulation.cc:213
ldpc_config.h
Config::InitCalibRepeat
size_t InitCalibRepeat() const
Definition: config.h:96
Config::ul_mac_packet_length_
size_t ul_mac_packet_length_
Definition: config.h:818
Config::nco_
double nco_
Definition: config.h:704
Config::ue_radio_name_
std::vector< std::string > ue_radio_name_
Definition: config.h:690
Config::ul_mcs_params_
nlohmann::json ul_mcs_params_
Definition: config.h:644
Config::num_channels_
size_t num_channels_
Definition: config.h:721
Config::ClientTxGainA
const std::vector< double > & ClientTxGainA() const
Definition: config.h:82
nlohmann::json_v3_11_1NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON::basic_json
a class to store JSON values
Definition: json.hpp:3367
Config::IsDataSubcarrier
bool IsDataSubcarrier(size_t sc_id) const
Definition: config.h:562
CommsLib::kLteZadoffChu
@ kLteZadoffChu
Definition: comms-lib.h:35
Config::DemulEventsPerSymbol
size_t DemulEventsPerSymbol() const
Definition: config.h:197
Config::ue_hw_framer_
bool ue_hw_framer_
Definition: config.h:699
Config::dl_mac_data_length_max_
size_t dl_mac_data_length_max_
Definition: config.h:836
Config::BigstationMode
bool BigstationMode() const
Definition: config.h:241
Config::ue_resync_period_
size_t ue_resync_period_
Definition: config.h:700
kUlDataFilePrefix
static const std::string kUlDataFilePrefix
Definition: config.cc:36
Config::pilot_cf32_
std::vector< std::complex< float > > pilot_cf32_
Definition: config.h:673
Config::ConfigFilename
const std::string & ConfigFilename() const
Definition: config.h:565
kMaxChannels
static constexpr size_t kMaxChannels
Definition: symbols.h:292
LDPCconfig
Definition: ldpc_config.h:14
Config::OfdmRxZeroPrefixClient
size_t OfdmRxZeroPrefixClient() const
Definition: config.h:231
Config::MacPacketLength
size_t MacPacketLength(Direction dir) const
Definition: config.h:268
s
s
Definition: simulate_performance.m:3
Config::Timestamp
const std::string & Timestamp() const
Definition: config.h:567
Config::OfdmDataStart
size_t OfdmDataStart() const
Definition: config.h:48
Config::BsMacRxPort
size_t BsMacRxPort() const
Definition: config.h:320
Config::RecipCalIndex
size_t RecipCalIndex(size_t frame_id) const
Definition: config.h:138
symbols.h
FrameStats::NumULCalSyms
size_t NumULCalSyms() const
Definition: framestats.cc:81
Config::UeCoreOffset
size_t UeCoreOffset() const
Definition: config.h:183
Config::dpdk_port_offset_
uint16_t dpdk_port_offset_
Definition: config.h:878
Config::ofdm_rx_zero_prefix_cal_ul_
size_t ofdm_rx_zero_prefix_cal_ul_
Definition: config.h:782
Config::LdpcConfig
const LDPCconfig & LdpcConfig(Direction dir) const
Definition: config.h:280
__attribute__
__attribute__((visibility("default"))) Config *ConfigNew(char *filename)
Definition: config.cc:1614
FrameStats::ClientDlPilotSymbols
size_t ClientDlPilotSymbols() const
Definition: framestats.h:76
Config::ue_ant_offset_
size_t ue_ant_offset_
Definition: config.h:607
Config::kDefaultDLSymPerFrame
static const size_t kDefaultDLSymPerFrame
Definition: config.h:583
Config::FreqGhz
double FreqGhz() const
Definition: config.h:56
Config::UeMacTxPort
size_t UeMacTxPort() const
Definition: config.h:324
kDebugPrintConfiguration
static constexpr bool kDebugPrintConfiguration
Definition: config.cc:28
SimdAlignByteVector
std::vector< std::byte, boost::alignment::aligned_allocator< std::byte, kSimdAlignment > > SimdAlignByteVector
Definition: simd_types.h:18
FrameStats::NumDLSyms
size_t NumDLSyms() const
Definition: framestats.cc:83
Config::beamforming_algo_
size_t beamforming_algo_
Definition: config.h:729
json.hpp
Config::WorkerThreadNum
size_t WorkerThreadNum() const
Definition: config.h:181
Config::frames_to_test_
size_t frames_to_test_
Definition: config.h:896
CommsLib::SeqCyclicShift
static std::vector< std::complex< float > > SeqCyclicShift(const std::vector< std::complex< float >> &in, float alpha)
Definition: comms-lib.cc:725
Config::UlIqT
Table< std::complex< int16_t > > & UlIqT()
Definition: config.h:390
Config::calib_tx_gain_a_
double calib_tx_gain_a_
Definition: config.h:712
Config::dl_mac_data_bytes_num_perframe_
size_t dl_mac_data_bytes_num_perframe_
Definition: config.h:827
Config::CellId
const std::vector< size_t > & CellId() const
Definition: config.h:368
FrameStats::GetPilotSymbolIdx
size_t GetPilotSymbolIdx(size_t symbol_number) const
Definition: framestats.cc:160
Config::UeAntTotal
size_t UeAntTotal() const
Definition: config.h:43
Config::dl_ldpc_config_
LDPCconfig dl_ldpc_config_
Definition: config.h:643
Config::GetSymbolType
SymbolType GetSymbolType(size_t symbol_id) const
Return the symbol type of this symbol in this frame.
Definition: config.cc:1557
FrameStats::GetBeaconSymbolIdx
size_t GetBeaconSymbolIdx(size_t symbol_number) const
Definition: framestats.cc:148
Config::init_calib_repeat_
size_t init_calib_repeat_
Definition: config.h:725
Config::RecipCalUlRxIndex
size_t RecipCalUlRxIndex(size_t frame_id, size_t ant) const
Definition: config.h:145
GetTime::MeasureRdtscFreq
static double MeasureRdtscFreq()
Definition: gettime.h:51
nlohmann::json_v3_11_1NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON::basic_json::value
std::decay< ValueType >::type value(const KeyType &key, ValueType &&default_value) const
access specified object element with default value
Definition: json.hpp:21173
Config::BeamEventsPerSymbol
size_t BeamEventsPerSymbol() const
Definition: config.h:202
Config::UeSpecificPilot
Table< complex_float > & UeSpecificPilot()
Definition: config.h:371
Config::DlIqT
Table< std::complex< int16_t > > & DlIqT()
Definition: config.h:391
kModulStringMap
static const std::map< std::string, size_t > kModulStringMap
Definition: modulation.h:35
FrameStats::NumULSyms
size_t NumULSyms() const
Definition: framestats.cc:85
Config::SampsPerFrame
size_t SampsPerFrame() const
Definition: config.h:235
Config::MacBytesNumPerframe
size_t MacBytesNumPerframe(Direction dir) const
Definition: config.h:263
AGORA_LOG_SYMBOL
#define AGORA_LOG_SYMBOL(...)
Definition: logger.h:82
Config::radio_id_
std::vector< std::string > radio_id_
Definition: config.h:687
Config::dl_iq_f_
Table< complex_float > dl_iq_f_
Definition: config.h:664
complex_float::real
float real
Definition: test_transpose.cc:23
LDPCconfig::ExpansionFactor
uint16_t ExpansionFactor() const
Definition: ldpc_config.h:47
Config::Beamsweep
bool Beamsweep() const
Definition: config.h:105
Config::HwFramer
bool HwFramer() const
Definition: config.h:53
Agora_memory::Alignment_t::kAlign32
@ kAlign32
Config::DlBits
Table< int8_t > & DlBits()
Definition: config.h:384
Config::UlModBits
Table< int8_t > & UlModBits()
Definition: config.h:387
Config::ClientRxGainB
double ClientRxGainB(size_t id) const
Definition: config.h:79
Config::NumUeChannels
size_t NumUeChannels() const
Definition: config.h:99
Config
Definition: config.h:26
Config::UpdateUlMCS
void UpdateUlMCS(const nlohmann::json &mcs)
Definition: config.cc:747
AGORA_LOG_INFO
#define AGORA_LOG_INFO(...)
Definition: logger.h:62
Config::CalibTxGainA
double CalibTxGainA() const
Definition: config.h:68
Config::IsUplink
bool IsUplink(size_t, size_t) const
Definition: config.cc:1537
Config::RefAnt
size_t RefAnt(size_t id) const
Definition: config.h:100
Config::SampleCalEn
bool SampleCalEn() const
Definition: config.h:106
Config::IsCalDlPilot
bool IsCalDlPilot(size_t, size_t) const
Definition: config.cc:1523
LdpcNumInputBits
static size_t LdpcNumInputBits(size_t base_graph, size_t zc)
Definition: utils_ldpc.h:139
std
Definition: json.hpp:5213
Config::decode_thread_num_
size_t decode_thread_num_
Definition: config.h:740
FrameStats::NumDataSyms
size_t NumDataSyms() const
Definition: framestats.cc:101
Config::ue_specific_pilot_
Table< complex_float > ue_specific_pilot_
Definition: config.h:678
fwrite
fwrite(fileID, pilot_f, 'float')
kOfdmSymbolPerSlot
static constexpr size_t kOfdmSymbolPerSlot
Definition: symbols.h:362
Config::radio_rf_freq_
double radio_rf_freq_
Definition: config.h:705
Config::DpdkMacAddrs
const std::string & DpdkMacAddrs() const
Definition: config.h:316
Config::fft_block_size_
size_t fft_block_size_
Definition: config.h:759
Config::bs_server_addr_
std::string bs_server_addr_
Definition: config.h:848
Config::frame_
FrameStats frame_
Definition: config.h:651
CommsLib::FindMeanAbs
static float FindMeanAbs(const complex_float *in, size_t len)
Definition: comms-lib.cc:155
Table::Malloc
void Malloc(size_t dim1, size_t dim2, Agora_memory::Alignment_t alignment)
Definition: memory_manage.h:37
RtAssert
static void RtAssert(bool condition, const char *throw_str)
Definition: utils.h:104
Config::NumPaddingBytesPerCb
size_t NumPaddingBytesPerCb(Direction dir) const
Definition: config.h:255
Config::beam_batch_size_
size_t beam_batch_size_
Definition: config.h:755
Config::ue_mac_tx_port_
size_t ue_mac_tx_port_
Definition: config.h:889
Config::ue_core_offset_
size_t ue_core_offset_
Definition: config.h:743
AGORA_LOG_WARN
#define AGORA_LOG_WARN(...)
Definition: logger.h:53
Config::hub_id_
std::vector< std::string > hub_id_
Definition: config.h:688
Config::UeAntOffset
size_t UeAntOffset() const
Definition: config.h:42
Config::ClTxAdvance
const std::vector< int > & ClTxAdvance() const
Definition: config.h:333
Config::LogListenerPort
size_t LogListenerPort() const
Definition: config.h:330
Config::ue_channel_
std::string ue_channel_
Definition: config.h:733
Config::BeaconLen
size_t BeaconLen() const
Definition: config.h:103
Config::ScrambleEnabled
bool ScrambleEnabled() const
Definition: config.h:296
LDPCconfig::NumCbLen
uint32_t NumCbLen() const
Definition: ldpc_config.h:50
kMacAlignmentBytes
static constexpr size_t kMacAlignmentBytes
Definition: config.cc:27
Config::client_rx_gain_a_
std::vector< double > client_rx_gain_a_
Definition: config.h:715
nlohmann::json_v3_11_1NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON::basic_json::size
size_type size() const noexcept
returns the number of elements
Definition: json.hpp:21854
Config::ofdm_rx_zero_prefix_cal_dl_
size_t ofdm_rx_zero_prefix_cal_dl_
Definition: config.h:783
Config::pilots_
complex_float * pilots_
Definition: config.h:676
Config::GetTotalDataSymbolIdxDl
size_t GetTotalDataSymbolIdxDl(size_t frame_id, size_t symbol_idx_dl) const
Definition: config.h:428
to_string
std::string to_string() const
Definition: eth_common.h:64
Config::UeHwFramer
bool UeHwFramer() const
Definition: config.h:54
Config::UlIqF
Table< complex_float > & UlIqF()
Definition: config.h:388
Config::bs_mac_rx_port_
size_t bs_mac_rx_port_
Definition: config.h:884
LDPCconfig::BaseGraph
uint16_t BaseGraph() const
Definition: ldpc_config.h:46
Config::Modulation
std::string Modulation(Direction dir) const
Definition: config.h:243
Config::IsDlPilot
bool IsDlPilot(size_t, size_t) const
Definition: config.cc:1509
Config::UeRruPort
int UeRruPort() const
Definition: config.h:307
Config::BeamBlockSize
size_t BeamBlockSize() const
Definition: config.h:200
Config::NumCells
size_t NumCells() const
Definition: config.h:94
Config::gold_cf32_
std::vector< std::complex< float > > gold_cf32_
Definition: config.h:669
Config::ofdm_data_num_
size_t ofdm_data_num_
Definition: config.h:617
config.h
Declaration file for the configuration class which importants json configuration values into class va...
Config::SingleGain
bool SingleGain() const
Definition: config.h:63
SymbolType
SymbolType
Definition: symbols.h:261
Config::RecipCalDlAnt
size_t RecipCalDlAnt(size_t frame_id, size_t dl_cal_symbol) const
Definition: config.h:119
Config::IsBeacon
bool IsBeacon(size_t, size_t) const
Config::ClientRxGainA
const std::vector< double > & ClientRxGainA() const
Definition: config.h:85
Config::client_tx_gain_b_
std::vector< double > client_tx_gain_b_
Definition: config.h:716
Config::GetModBitsBuf
int8_t * GetModBitsBuf(Table< int8_t > &mod_bits_buffer, Direction dir, size_t frame_id, size_t symbol_id, size_t ue_id, size_t sc_id) const
Get encoded_buffer for this frame, symbol, user and code block ID.
Definition: config.h:531
Config::LogListenerAddr
const std::string & LogListenerAddr() const
Definition: config.h:326
Config::CalibTxGainB
double CalibTxGainB() const
Definition: config.h:69
gettime.h
Config::ue_ant_total_
size_t ue_ant_total_
Definition: config.h:604
Config::mac_remote_addr_
std::string mac_remote_addr_
Definition: config.h:859
Config::GoldCf32
const std::vector< std::complex< float > > & GoldCf32() const
Definition: config.h:344
SubcarrierType::kData
@ kData
Config::external_ref_node_
std::vector< bool > external_ref_node_
Definition: config.h:731
Config::ClientRxGainA
double ClientRxGainA(size_t id) const
Definition: config.h:73
Config::bs_mac_tx_port_
size_t bs_mac_tx_port_
Definition: config.h:885
utils.h
Utility functions for file and text processing.
kMacUserRemotePort
static constexpr size_t kMacUserRemotePort
Definition: symbols.h:316
Config::ref_radio_
std::vector< size_t > ref_radio_
Definition: config.h:691
Config::PacketLength
size_t PacketLength() const
Definition: config.h:238
FrameStats::NumUlDataSyms
size_t NumUlDataSyms() const
Definition: framestats.h:80
Config::ul_data_bytes_num_persymbol_
size_t ul_data_bytes_num_persymbol_
Definition: config.h:809
Config::dl_mod_bits_
Table< int8_t > dl_mod_bits_
Definition: config.h:663
Config::Config
Config(std::string jsonfilename)
Definition: config.cc:42
Config::beacon_ant_
size_t beacon_ant_
Definition: config.h:723
Config::ue_socket_thread_num_
size_t ue_socket_thread_num_
Definition: config.h:745
Config::RxGainA
double RxGainA() const
Definition: config.h:65
Config::FreqOrthogonalPilot
bool FreqOrthogonalPilot() const
Definition: config.h:208
Utils::DoubleToCfloat
static std::vector< std::complex< float > > DoubleToCfloat(const std::vector< std::vector< double >> &in)
Definition: utils.cc:232
Config::calib_tx_gain_b_
double calib_tx_gain_b_
Definition: config.h:713
kLogFilepath
static const std::string kLogFilepath
Definition: config.cc:32
Config::rx_gain_a_
double rx_gain_a_
Definition: config.h:709
Config::EncodeBlockSize
size_t EncodeBlockSize() const
Definition: config.h:207
Config::beacon_len_
size_t beacon_len_
Definition: config.h:724
Config::ClientTxGainB
const std::vector< double > & ClientTxGainB() const
Definition: config.h:88
Config::NumRadios
size_t NumRadios() const
Definition: config.h:95
Config::Parse
nlohmann::json Parse(const nlohmann::json &in_json, const std::string &json_handle)
Definition: config.cc:734
mm_gui.sched
sched
Definition: mm_gui.py:111
Config::transport_block_size_
size_t transport_block_size_
Definition: config.h:899
LdpcEncodingParityBufSize
static size_t LdpcEncodingParityBufSize(size_t base_graph, size_t zc)
Definition: utils_ldpc.h:174
CommsLib::GetSequence
static std::vector< std::vector< double > > GetSequence(size_t seq_len, int type)
Definition: comms-lib.cc:734
max
max(y1, y1_1)
Config::ue_mac_rx_port_
size_t ue_mac_rx_port_
Definition: config.h:888
Config::ModOrderBits
size_t ModOrderBits(Direction dir) const
Definition: config.h:247
Config::ClCorrScale
const std::vector< float > & ClCorrScale() const
Definition: config.h:336
LDPCconfig::NumBlocksInSymbol
void NumBlocksInSymbol(size_t num_blocks)
Definition: ldpc_config.h:41
Config::worker_thread_num_
size_t worker_thread_num_
Definition: config.h:736
LDPCconfig::NumCbCodewLen
uint32_t NumCbCodewLen() const
Definition: ldpc_config.h:51
SymbolType::kUL
@ kUL
Config::UeRruAddr
std::string UeRruAddr() const
Definition: config.h:301
Config::ue_server_port_
int ue_server_port_
Definition: config.h:869
Config::hw_framer_
bool hw_framer_
Definition: config.h:698
Config::ClientRxGainB
const std::vector< double > & ClientRxGainB() const
Definition: config.h:91
FrameStats::GetULSymbol
size_t GetULSymbol(size_t location) const
Definition: framestats.cc:114
Config::ue_ant_num_
size_t ue_ant_num_
Definition: config.h:600
Config::TxGainB
double TxGainB() const
Definition: config.h:66
Config::DpdkNumPorts
uint16_t DpdkNumPorts() const
Definition: config.h:313
Config::BeaconAnt
size_t BeaconAnt() const
Definition: config.h:102
Config::kDefaultDLSymStart
static const size_t kDefaultDLSymStart
Definition: config.h:584
Config::DemulBlockSize
size_t DemulBlockSize() const
Definition: config.h:195
Config::bigstation_mode_
bool bigstation_mode_
Definition: config.h:805
FrameStats
Definition: framestats.h:16
Config::correct_phase_shift_
bool correct_phase_shift_
Definition: config.h:806
Config::packet_length_
size_t packet_length_
Definition: config.h:798
Config::log_listener_port_
size_t log_listener_port_
Definition: config.h:892
Config::demul_thread_num_
size_t demul_thread_num_
Definition: config.h:739
nlohmann::json_v3_11_1NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON::basic_json::at
reference at(size_type idx)
access specified array element with bounds checking
Definition: json.hpp:20895
Config::CommonPilot
const std::vector< std::complex< float > > & CommonPilot() const
Definition: config.h:353
Config::ofdm_rx_zero_prefix_client_
size_t ofdm_rx_zero_prefix_client_
Definition: config.h:789
Config::demul_events_per_symbol_
size_t demul_events_per_symbol_
Definition: config.h:749
Config::GetOFDMDataIndex
size_t GetOFDMDataIndex(size_t sc_id) const
Definition: config.h:558
Config::ue_specific_pilot_t_
Table< std::complex< int16_t > > ue_specific_pilot_t_
Definition: config.h:679
AdaptBitsForMod
static void AdaptBitsForMod(const uint8_t *bit_seq_in, uint8_t *bytes_out, size_t len, size_t mod_type)
Fill-in the bytes of bytes_out with mod_type bits per byte, taken from the bit sequence bit_seq_in.
Definition: utils_ldpc.h:60
Config::dl_modulation_
std::string dl_modulation_
Definition: config.h:634
Config::Pilot
const std::vector< uint32_t > & Pilot() const
Definition: config.h:349
Config::ofdm_tx_zero_prefix_
size_t ofdm_tx_zero_prefix_
Definition: config.h:769
Config::UeServerAddr
std::string UeServerAddr() const
Definition: config.h:298
Config::OfdmDataStop
size_t OfdmDataStop() const
Definition: config.h:50
Config::PilotCi16
std::vector< std::complex< int16_t > > & PilotCi16()
Definition: config.h:377
Config::dpdk_num_ports_
uint16_t dpdk_num_ports_
Definition: config.h:875
Config::client_rx_gain_b_
std::vector< double > client_rx_gain_b_
Definition: config.h:717
Config::BsRruAddr
std::string BsRruAddr() const
Definition: config.h:302
Config::freq_ghz_
const double freq_ghz_
Definition: config.h:592
FrameStats::NumTotalSyms
size_t NumTotalSyms() const
Definition: framestats.cc:93
Config::TxGainA
double TxGainA() const
Definition: config.h:64
fmt::v8::detail::type
type
Definition: core.h:1131
ofdmtxrx.mod_order
int mod_order
Definition: ofdmtxrx.py:397
Config::Coeffs
const std::vector< uint32_t > & Coeffs() const
Definition: config.h:347
Config::kDefaultULSymPerFrame
static const size_t kDefaultULSymPerFrame
Definition: config.h:581
SymbolType::kDL
@ kDL
Config::core_offset_
size_t core_offset_
Definition: config.h:735
Config::GetMacBits
int8_t * GetMacBits(Table< int8_t > &info_bits, Direction dir, size_t frame_id, size_t symbol_id, size_t ue_id, size_t cb_id) const
Get mac bits for this frame, symbol, user and code block ID.
Definition: config.h:493
Config::BsMacTxPort
size_t BsMacTxPort() const
Definition: config.h:321
utils_ldpc.h
Config::BfAntNum
size_t BfAntNum() const
Definition: config.h:39
nlohmann::json_v3_11_1NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON::basic_json::get
auto get() const noexcept(noexcept(std::declval< const basic_json_t & >().template get_impl< ValueType >(detail::priority_tag< 4 > {}))) -> decltype(std::declval< const basic_json_t & >().template get_impl< ValueType >(detail::priority_tag< 4 >
get a (pointer) value (explicit)
Definition: json.hpp:20700
Config::beacon_
std::vector< uint32_t > beacon_
Definition: config.h:675
SetCpuLayoutOnNumaNodes
void SetCpuLayoutOnNumaNodes(bool verbose, const std::vector< size_t > &cores_to_exclude)
Definition: utils.cc:87