Agora  1.2.0
Agora project
phy_stats.h
Go to the documentation of this file.
1 
5 #ifndef PHY_STATS_H_
6 #define PHY_STATS_H_
7 
8 #include "armadillo"
9 #include "common_typedef_sdk.h"
10 #include "config.h"
11 #include "mat_logger.h"
12 #include "memory_manage.h"
13 #include "symbols.h"
14 
15 class PhyStats {
16  public:
17  explicit PhyStats(Config* const cfg, Direction dir);
18  ~PhyStats();
19  void PrintPhyStats();
20  void UpdateBitErrors(size_t ue_id, size_t offset, size_t frame_slot,
21  uint8_t tx_byte, uint8_t rx_byte);
22  void UpdateDecodedBits(size_t ue_id, size_t offset, size_t frame_slot,
23  size_t new_bits_num);
24  void UpdateBlockErrors(size_t ue_id, size_t offset, size_t frame_slot,
25  size_t block_error_count);
26  void IncrementDecodedBlocks(size_t ue_id, size_t offset, size_t frame_slot);
27  void RecordBer(size_t frame_id);
28  void RecordSer(size_t frame_id);
29  void UpdateUncodedBitErrors(size_t ue_id, size_t offset, size_t mod_bit_size,
30  uint8_t tx_byte, uint8_t rx_byte);
31  void UpdateUncodedBits(size_t ue_id, size_t offset, size_t new_bits_num);
32  void UpdateEvm(size_t frame_id, size_t data_symbol_id, size_t sc_id,
33  const arma::cx_fvec& eq_vec);
34  void UpdateEvm(size_t frame_id, size_t data_symbol_id, size_t sc_id,
35  size_t tx_ue_id, size_t rx_ue_id, arma::cx_float eq);
36  void PrintEvmStats(size_t frame_id);
37  void RecordCsiCond(size_t frame_id);
38  void RecordEvm(size_t frame_id);
39  void RecordEvmSnr(size_t frame_id);
40  float GetEvmSnr(size_t frame_id, size_t ue_id);
41  float GetNoise(size_t frame_id);
42  void ClearEvmBuffer(size_t frame_id);
43  void UpdateUlPilotSnr(size_t frame_id, size_t ue_id, size_t ant_id,
44  complex_float* fft_data);
45  void UpdateDlPilotSnr(size_t frame_id, size_t symbol_id, size_t ant_id,
46  complex_float* fft_data);
47  void PrintUlSnrStats(size_t frame_id);
48  void RecordUlPilotSnr(size_t frame_id);
49  void PrintDlSnrStats(size_t frame_id);
50  void RecordDlPilotSnr(size_t frame_id);
51  void RecordDlCsi(size_t frame_id, size_t num_rec_sc,
52  const Table<complex_float>& csi_buffer);
53  void UpdateCalibPilotSnr(size_t frame_id, size_t calib_sym_id, size_t ant_id,
54  complex_float* fft_data);
55  void PrintCalibSnrStats(size_t frame_id);
56  void UpdateCsiCond(size_t frame_id, size_t sc_id, float cond);
57  void PrintBeamStats(size_t frame_id);
58  void UpdateUlCsi(size_t frame_id, size_t sc_id, const arma::cx_fmat& mat_in);
59  void UpdateDlCsi(size_t frame_id, size_t sc_id, const arma::cx_fmat& mat_in);
60  void UpdateDlBeam(size_t frame_id, size_t sc_id, const arma::cx_fmat& mat_in);
61  void RecordCalibMat(size_t frame_id, size_t sc_id,
62  const arma::cx_fvec& calib_buffer);
63 
64  private:
65  Config const* const config_;
87 
88  arma::cx_fcube gt_cube_;
91 
105 };
106 
107 #endif // PHY_STATS_H_
PhyStats::PrintUlSnrStats
void PrintUlSnrStats(size_t frame_id)
Definition: phy_stats.cc:205
PhyStats
Definition: phy_stats.h:15
CsvLog::kEVM
@ kEVM
Definition: csv_logger.h:26
PhyStats::frame_bit_errors_
Table< size_t > frame_bit_errors_
Definition: phy_stats.h:70
PhyStats::decoded_blocks_count_
Table< size_t > decoded_blocks_count_
Definition: phy_stats.h:71
Config::UeAntNum
size_t UeAntNum() const
Definition: config.h:41
Table::Calloc
void Calloc(size_t dim1, size_t dim2, Agora_memory::Alignment_t alignment)
Definition: memory_manage.h:45
PhyStats::logger_calib_
CsvLog::CsvLogger logger_calib_
Definition: phy_stats.h:101
PhyStats::logger_evm_
CsvLog::CsvLogger logger_evm_
Definition: phy_stats.h:95
complex_float
Definition: test_transpose.cc:22
PhyStats::IncrementDecodedBlocks
void IncrementDecodedBlocks(size_t ue_id, size_t offset, size_t frame_slot)
Definition: phy_stats.cc:570
PhyStats::evm_buffer_
Table< float > evm_buffer_
Definition: phy_stats.h:77
PhyStats::frame_symbol_errors_
Table< size_t > frame_symbol_errors_
Definition: phy_stats.h:73
PhyStats::PhyStats
PhyStats(Config *const cfg, Direction dir)
Definition: phy_stats.cc:12
Config::NumChannels
size_t NumChannels() const
Definition: config.h:98
PhyStats::UpdateUncodedBits
void UpdateUncodedBits(size_t ue_id, size_t offset, size_t new_bits_num)
Definition: phy_stats.cc:588
PhyStats::UpdateBlockErrors
void UpdateBlockErrors(size_t ue_id, size_t offset, size_t frame_slot, size_t block_error_count)
Definition: phy_stats.cc:563
PhyStats::logger_csi_
CsvLog::CsvLogger logger_csi_
Definition: phy_stats.h:100
PhyStats::logger_ber_
CsvLog::CsvLogger logger_ber_
Definition: phy_stats.h:98
Direction
Direction
Definition: symbols.h:39
PhyStats::config_
Config const *const config_
Definition: phy_stats.h:65
PhyStats::GetNoise
float GetNoise(size_t frame_id)
Definition: phy_stats.cc:608
kFrameWnd
static constexpr size_t kFrameWnd
Definition: symbols.h:18
PhyStats::UpdateDlPilotSnr
void UpdateDlPilotSnr(size_t frame_id, size_t symbol_id, size_t ant_id, complex_float *fft_data)
Definition: phy_stats.cc:477
CsvLog::kSER
@ kSER
Definition: csv_logger.h:30
Table::At
const T * At(size_t dim1) const
Definition: memory_manage.h:93
Config::GetOFDMDataNum
size_t GetOFDMDataNum() const
Definition: config.h:554
CsvLog::kCalib
@ kCalib
Definition: csv_logger.h:32
PhyStats::GetEvmSnr
float GetEvmSnr(size_t frame_id, size_t ue_id)
Definition: phy_stats.cc:175
AgoraScrambler::kBitsInByte
static constexpr size_t kBitsInByte
Definition: scrambler.cc:14
memory_manage.h
Config::BsAntNum
size_t BsAntNum() const
Definition: config.h:35
CsvLog::kDLCSI
@ kDLCSI
Definition: csv_logger.h:36
PhyStats::bs_noise_
Table< float > bs_noise_
Definition: phy_stats.h:85
PhyStats::logger_evm_sc_
CsvLog::CsvLogger logger_evm_sc_
Definition: phy_stats.h:96
CsvLog::CsvLogger
Definition: csv_logger.h:46
CsvLog::kEVMSC
@ kEVMSC
Definition: csv_logger.h:27
PhyStats::RecordEvm
void RecordEvm(size_t frame_id)
Definition: phy_stats.cc:313
PhyStats::UpdateCsiCond
void UpdateCsiCond(size_t frame_id, size_t sc_id, float cond)
Definition: phy_stats.cc:522
Config::RefRadio
size_t RefRadio(size_t id) const
Definition: config.h:101
Config::Frame
const FrameStats & Frame() const
Definition: config.h:340
DoerType::kCSI
@ kCSI
PhyStats::evm_sc_buffer_
Table< float > evm_sc_buffer_
Definition: phy_stats.h:78
AGORA_LOG_TRACE
#define AGORA_LOG_TRACE(...)
Definition: logger.h:92
CsvLog::MatLogger
Definition: mat_logger.h:24
PhyStats::UpdateBitErrors
void UpdateBitErrors(size_t ue_id, size_t offset, size_t frame_slot, uint8_t tx_byte, uint8_t rx_byte)
Definition: phy_stats.cc:542
PhyStats::RecordDlCsi
void RecordDlCsi(size_t frame_id, size_t num_rec_sc, const Table< complex_float > &csi_buffer)
Definition: phy_stats.cc:373
mean
static double mean(const std::vector< double > in_vec)
Definition: timer.h:103
Table< complex_float >
PhyStats::uncoded_bits_count_
Table< size_t > uncoded_bits_count_
Definition: phy_stats.h:75
PhyStats::logger_rssi_
CsvLog::CsvLogger logger_rssi_
Definition: phy_stats.h:93
PhyStats::calib_
Table< float > calib_
Definition: phy_stats.h:86
snr
snr
Definition: inspect_agora_results.m:118
fmt::v8::detail::abs
constexpr std::chrono::duration< Rep, Period > abs(std::chrono::duration< Rep, Period > d)
Definition: chrono.h:1488
Config::OfdmDataNum
size_t OfdmDataNum() const
Definition: config.h:47
PhyStats::csi_cond_
Table< float > csi_cond_
Definition: phy_stats.h:84
mat_logger.h
Declaration file for the MatLogger class which records runtime zero-forcing matrices into csv files....
PhyStats::PrintCalibSnrStats
void PrintCalibSnrStats(size_t frame_id)
Definition: phy_stats.cc:247
PhyStats::UpdateDlCsi
void UpdateDlCsi(size_t frame_id, size_t sc_id, const arma::cx_fmat &mat_in)
Definition: phy_stats.cc:598
Config::ExternalRefNode
bool ExternalRefNode(size_t id) const
Definition: config.h:110
CsvLog::CsvLogger::Write
void Write(const std::string &)
Definition: csv_logger.h:62
PhyStats::logger_dl_csi_
CsvLog::MatLogger logger_dl_csi_
Definition: phy_stats.h:103
PhyStats::UpdateDecodedBits
void UpdateDecodedBits(size_t ue_id, size_t offset, size_t frame_slot, size_t new_bits_num)
Definition: phy_stats.cc:557
PhyStats::dl_pilot_noise_
Table< float > dl_pilot_noise_
Definition: phy_stats.h:82
CsvLog
Definition: csv_logger.cc:19
CsvLog::kDlBeam
@ kDlBeam
Definition: csv_logger.h:36
PhyStats::UpdateCalibPilotSnr
void UpdateCalibPilotSnr(size_t frame_id, size_t calib_sym_id, size_t ant_id, complex_float *fft_data)
Definition: phy_stats.cc:438
CsvLog::kULCSI
@ kULCSI
Definition: csv_logger.h:36
Table::Free
void Free()
Definition: memory_manage.h:84
PhyStats::decoded_bits_count_
Table< size_t > decoded_bits_count_
Definition: phy_stats.h:67
PhyStats::~PhyStats
~PhyStats()
Definition: phy_stats.cc:97
PhyStats::RecordDlPilotSnr
void RecordDlPilotSnr(size_t frame_id)
Definition: phy_stats.cc:347
kEnableCsvLog
static constexpr bool kEnableCsvLog
Definition: symbols.h:168
FrameStats::ClientUlPilotSymbols
size_t ClientUlPilotSymbols() const
Definition: framestats.h:73
PhyStats::frame_decoded_symbols_
Table< size_t > frame_decoded_symbols_
Definition: phy_stats.h:74
i
for i
Definition: generate_data.m:107
Config::OfdmCaNum
size_t OfdmCaNum() const
Definition: config.h:45
FrameStats::NumDlDataSyms
size_t NumDlDataSyms() const
Definition: framestats.h:83
PhyStats::UpdateDlBeam
void UpdateDlBeam(size_t frame_id, size_t sc_id, const arma::cx_fmat &mat_in)
Definition: phy_stats.cc:603
CsvLog::MatLogger::UpdateMatBuf
bool UpdateMatBuf([[maybe_unused]] const size_t frame_id, [[maybe_unused]] const size_t sc_id, [[maybe_unused]] const arma::cx_fmat &mat_in)
Definition: mat_logger.cc:24
PhyStats::logger_dl_beam_
CsvLog::MatLogger logger_dl_beam_
Definition: phy_stats.h:104
PhyStats::dl_pilot_snr_
Table< float > dl_pilot_snr_
Definition: phy_stats.h:80
u
Plot Rx waveform for u
Definition: inspect_single_frame.m:108
PhyStats::UpdateUlPilotSnr
void UpdateUlPilotSnr(size_t frame_id, size_t ue_id, size_t ant_id, complex_float *fft_data)
Definition: phy_stats.cc:456
Agora_memory::Alignment_t::kAlign64
@ kAlign64
PhyStats::UpdateUncodedBitErrors
void UpdateUncodedBitErrors(size_t ue_id, size_t offset, size_t mod_bit_size, uint8_t tx_byte, uint8_t rx_byte)
Definition: phy_stats.cc:576
PhyStats::RecordSer
void RecordSer(size_t frame_id)
Definition: phy_stats.cc:420
Direction::kDownlink
@ kDownlink
PhyStats::logger_evm_snr_
CsvLog::CsvLogger logger_evm_snr_
Definition: phy_stats.h:97
CsvLog::kBER
@ kBER
Definition: csv_logger.h:29
evm
evm
Definition: inspect_agora_results.m:117
Config::DlIqF
Table< complex_float > & DlIqF()
Definition: config.h:389
PhyStats::num_rx_symbols_
size_t num_rx_symbols_
Definition: phy_stats.h:89
CsvLog::kEVMSNR
@ kEVMSNR
Definition: csv_logger.h:28
PhyStats::logger_snr_
CsvLog::CsvLogger logger_snr_
Definition: phy_stats.h:92
Config::OfdmDataStart
size_t OfdmDataStart() const
Definition: config.h:48
symbols.h
PhyStats::logger_noise_
CsvLog::CsvLogger logger_noise_
Definition: phy_stats.h:94
CsvLog::kSNR
@ kSNR
Definition: csv_logger.h:23
PhyStats::RecordUlPilotSnr
void RecordUlPilotSnr(size_t frame_id)
Definition: phy_stats.cc:288
FrameStats::ClientDlPilotSymbols
size_t ClientDlPilotSymbols() const
Definition: framestats.h:76
PhyStats::bit_error_count_
Table< size_t > bit_error_count_
Definition: phy_stats.h:68
FrameStats::NumDLSyms
size_t NumDLSyms() const
Definition: framestats.cc:83
Config::CellId
const std::vector< size_t > & CellId() const
Definition: config.h:368
CsvLog::kRSSI
@ kRSSI
Definition: csv_logger.h:24
PhyStats::num_rxdata_symbols_
size_t num_rxdata_symbols_
Definition: phy_stats.h:90
PhyStats::UpdateEvm
void UpdateEvm(size_t frame_id, size_t data_symbol_id, size_t sc_id, const arma::cx_fvec &eq_vec)
Definition: phy_stats.cc:526
FrameStats::NumULSyms
size_t NumULSyms() const
Definition: framestats.cc:85
Config
Definition: config.h:26
AGORA_LOG_INFO
#define AGORA_LOG_INFO(...)
Definition: logger.h:62
CsvLog::kNOISE
@ kNOISE
Definition: csv_logger.h:25
PhyStats::dl_pilot_rssi_
Table< float > dl_pilot_rssi_
Definition: phy_stats.h:81
PhyStats::frame_decoded_bits_
Table< size_t > frame_decoded_bits_
Definition: phy_stats.h:69
PhyStats::dir_
Direction dir_
Definition: phy_stats.h:66
PhyStats::calib_pilot_snr_
Table< float > calib_pilot_snr_
Definition: phy_stats.h:83
PhyStats::gt_cube_
arma::cx_fcube gt_cube_
Definition: phy_stats.h:88
noise
noise
Definition: generate_data_dl.m:131
PhyStats::uncoded_bit_error_count_
Table< size_t > uncoded_bit_error_count_
Definition: phy_stats.h:76
Config::UlIqF
Table< complex_float > & UlIqF()
Definition: config.h:388
PhyStats::ClearEvmBuffer
void ClearEvmBuffer(size_t frame_id)
Definition: phy_stats.cc:181
config.h
Declaration file for the configuration class which importants json configuration values into class va...
PhyStats::ul_pilot_snr_
Table< float > ul_pilot_snr_
Definition: phy_stats.h:79
PhyStats::PrintEvmStats
void PrintEvmStats(size_t frame_id)
Definition: phy_stats.cc:162
PhyStats::PrintBeamStats
void PrintBeamStats(size_t frame_id)
Definition: phy_stats.cc:499
PhyStats::RecordEvmSnr
void RecordEvmSnr(size_t frame_id)
Definition: phy_stats.cc:333
PhyStats::logger_ser_
CsvLog::CsvLogger logger_ser_
Definition: phy_stats.h:99
phy_stats.h
Declaration file for the PhyStats class.
FrameStats::NumUlDataSyms
size_t NumUlDataSyms() const
Definition: framestats.h:80
PhyStats::UpdateUlCsi
void UpdateUlCsi(size_t frame_id, size_t sc_id, const arma::cx_fmat &mat_in)
Definition: phy_stats.cc:593
PhyStats::RecordBer
void RecordBer(size_t frame_id)
Definition: phy_stats.cc:403
PhyStats::logger_ul_csi_
CsvLog::MatLogger logger_ul_csi_
Definition: phy_stats.h:102
PhyStats::RecordCalibMat
void RecordCalibMat(size_t frame_id, size_t sc_id, const arma::cx_fvec &calib_buffer)
Definition: phy_stats.cc:391
evm_mat
evm_mat
Definition: process_rx_frame.m:61
PhyStats::RecordCsiCond
void RecordCsiCond(size_t frame_id)
Definition: phy_stats.cc:302
Config::OfdmDataStop
size_t OfdmDataStop() const
Definition: config.h:50
PhyStats::block_error_count_
Table< size_t > block_error_count_
Definition: phy_stats.h:72
PhyStats::PrintDlSnrStats
void PrintDlSnrStats(size_t frame_id)
Definition: phy_stats.cc:187
PhyStats::PrintPhyStats
void PrintPhyStats()
Definition: phy_stats.cc:126
Config::BfAntNum
size_t BfAntNum() const
Definition: config.h:39