Agora  1.2.0
Agora project
agora.h
Go to the documentation of this file.
1 
6 #ifndef AGORA_H_
7 #define AGORA_H_
8 
9 #include <array>
10 #include <cstddef>
11 #include <cstdint>
12 #include <memory>
13 #include <queue>
14 #include <thread>
15 #include <vector>
16 
17 #include "agora_buffer.h"
18 #include "agora_worker.h"
19 #include "concurrentqueue.h"
20 #include "mac_thread_basestation.h"
21 #include "message.h"
22 #include "packet_txrx.h"
23 #include "phy_stats.h"
24 #include "ran_config.h"
25 #include "recorder_thread.h"
26 #include "stats.h"
27 #include "symbols.h"
28 
29 class Agora {
30  public:
32  explicit Agora(Config* cfg);
33  ~Agora();
34 
35  void Start();
36  void Stop();
37  void GetEqualData(float** ptr, int* size);
38 
39  // Flags that allow developer control over Agora internals
40  struct {
41  // void getEqualData(float** ptr, int* size);Before exiting, save
42  // LDPC-decoded or demodulated data to a file
44 
45  // Before exiting, save data sent on downlink to a file
47  } flags_;
48 
49  private:
50  enum ScheduleProcessingFlags : uint8_t {
51  kNone = 0,
55  };
56 
63  bool CheckFrameComplete(size_t frame_id);
64 
67  void CheckIncrementScheduleFrame(size_t frame_id,
68  ScheduleProcessingFlags completed);
69 
70  size_t FetchEvent(std::vector<EventData>& events_list,
71  bool is_turn_to_dequeue_from_io);
72 
73  void InitializeQueues();
74  void InitializeCounters();
75  void InitializeThreads();
76  void FreeQueues();
77 
78  void SaveDecodeDataToFile(int frame_id);
79  void SaveTxDataToFile(int frame_id);
80 
81  void HandleEventFft(size_t tag);
82  void UpdateRxCounters(size_t frame_id, size_t symbol_id);
83 
85  void UpdateRanConfig(RanConfig rc);
86 
87  void ScheduleSubcarriers(EventType event_type, size_t frame_id,
88  size_t symbol_id);
89  void ScheduleAntennas(EventType event_type, size_t frame_id,
90  size_t symbol_id);
91  void ScheduleAntennasTX(size_t frame_id, size_t symbol_id);
92  void ScheduleDownlinkProcessing(size_t frame_id);
93 
101  void ScheduleCodeblocks(EventType event_type, Direction dir, size_t frame_id,
102  size_t symbol_idx);
103 
104  void ScheduleUsers(EventType event_type, size_t frame_id, size_t symbol_id);
105 
106  // Send current frame's SNR measurements from PHY to MAC
107  void SendSnrReport(EventType event_type, size_t frame_id, size_t symbol_id);
108 
109  // Worker thread i runs on core base_worker_core_offset + i
111 
112  Config* const config_;
114  size_t max_equaled_frame_ = SIZE_MAX;
115  std::unique_ptr<PacketTxRx> packet_tx_rx_;
116 
117  // The thread running MAC layer functions
118  std::unique_ptr<MacThreadBaseStation> mac_thread_;
119  // Handle for the MAC thread
120  std::thread mac_std_thread_;
121 
122  std::unique_ptr<Stats> stats_;
123  std::unique_ptr<PhyStats> phy_stats_;
124  std::unique_ptr<AgoraWorker> worker_set_;
125 
126  //Agora Buffer containment
127  std::unique_ptr<AgoraBuffer> agora_memory_;
128 
129  // Counters related to various modules
143  size_t beam_last_frame_ = SIZE_MAX;
144  size_t rc_last_frame_ = SIZE_MAX;
145  size_t ifft_next_symbol_ = 0;
146 
147  // Agora schedules and processes a frame in FIFO order
148  // cur_proc_frame_id is the frame that is currently being processed.
149  // cur_sche_frame_id is the frame that is currently being scheduled.
150  // A frame's schduling finishes before processing ends, so the two
151  // variables are possible to have different values.
153  std::unique_ptr<MessageInfo> message_;
154 
155  // The frame index for a symbol whose FFT is done
156  std::vector<size_t> fft_cur_frame_for_symbol_;
157  // The frame index for a symbol whose encode is done
158  std::vector<size_t> encode_cur_frame_for_symbol_;
159  // The frame index for a symbol whose IFFT is done
160  std::vector<size_t> ifft_cur_frame_for_symbol_;
161 
162  // The frame index for a symbol whose precode is done
163  std::vector<size_t> precode_cur_frame_for_symbol_;
164 
165  // Per-frame queues of delayed FFT tasks. The queue contains offsets into
166  // TX/RX buffers.
167  std::array<std::queue<fft_req_tag_t>, kFrameWnd> fft_queue_arr_;
168 
169  // Master thread's message queue for receiving packets
171 
172  // Master-to-worker queue for MAC
174 
175  // Worker-to-master queue for MAC
177 
180 
182  std::queue<size_t> encode_deferral_;
183 
184  std::unique_ptr<Agora_recorder::RecorderThread> recorder_;
185 };
186 
187 #endif // AGORA_H_
TsType::kTXProcessedFirst
@ kTXProcessedFirst
RxCounters::num_rx_pkts_per_frame_
size_t num_rx_pkts_per_frame_
Definition: message.h:329
Agora::base_worker_core_offset_
const size_t base_worker_core_offset_
Definition: agora.h:110
PhyStats
Definition: phy_stats.h:15
Agora::ScheduleUsers
void ScheduleUsers(EventType event_type, size_t frame_id, size_t symbol_id)
Definition: agora.cc:286
kRecordUplinkFrame
static constexpr bool kRecordUplinkFrame
Definition: agora.cc:42
RxCounters::num_reciprocity_pkts_per_frame_
size_t num_reciprocity_pkts_per_frame_
Definition: message.h:335
Agora::encode_cur_frame_for_symbol_
std::vector< size_t > encode_cur_frame_for_symbol_
Definition: agora.h:158
Agora::ifft_next_symbol_
size_t ifft_next_symbol_
Definition: agora.h:145
Agora::Start
void Start()
Definition: agora.cc:340
Agora::FetchEvent
size_t FetchEvent(std::vector< EventData > &events_list, bool is_turn_to_dequeue_from_io)
Definition: agora.cc:299
Config::SocketThreadNum
size_t SocketThreadNum() const
Definition: config.h:182
kRecordFrameInterval
static constexpr size_t kRecordFrameInterval
Definition: agora.cc:32
kProjectDirectory
static const std::string kProjectDirectory
Definition: agora.cc:24
Agora::tx_counters_
FrameCounters tx_counters_
Definition: agora.h:138
moodycamel::ProducerToken
Definition: concurrentqueue.h:630
Config::Running
void Running(bool value)
Definition: config.h:33
Packet::frame_id_
uint32_t frame_id_
Definition: message.h:168
Config::UeAntNum
size_t UeAntNum() const
Definition: config.h:41
kDownlinkComplete
@ kDownlinkComplete
Definition: symbols.h:119
EventType::kRANUpdate
@ kRANUpdate
FrameStats::IsRecCalEnabled
bool IsRecCalEnabled() const
Definition: framestats.cc:97
PinToCoreWithOffset
void PinToCoreWithOffset(ThreadType thread_type, size_t core_offset, size_t thread_id, bool allow_reuse, bool verbose)
Definition: utils.cc:157
SymbolType::kCalDL
@ kCalDL
agora_buffer.h
Defination file for the AgoraBuffer class.
size
end IFFT Reshape the symbol vector into two different spatial streams size
Definition: generate_data.m:73
kScheduleQueues
static constexpr size_t kScheduleQueues
Definition: symbols.h:129
rx_mac_tag_t::offset_
size_t offset_
Definition: message.h:306
EventType::kDecode
@ kDecode
RxCounters
Definition: message.h:315
Config::CoreOffset
size_t CoreOffset() const
Definition: config.h:180
Agora::fft_created_count_
size_t fft_created_count_
Definition: agora.h:113
PrintType::kPacketFromMac
@ kPacketFromMac
moodycamel::ConcurrentQueue::try_dequeue_bulk_from_producer
size_t try_dequeue_bulk_from_producer(producer_token_t const &producer, It itemFirst, size_t max)
Definition: concurrentqueue.h:1292
rx_mac_tag_t::tid_
size_t tid_
Definition: message.h:305
moodycamel::ConcurrentQueue::try_dequeue_bulk
size_t try_dequeue_bulk(It itemFirst, size_t max)
Definition: concurrentqueue.h:1210
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
SymbolType::kPilot
@ kPilot
moodycamel::ConcurrentQueue::size_approx
size_t size_approx() const
Definition: concurrentqueue.h:1304
Agora::SaveTxDataToFile
void SaveTxDataToFile(int frame_id)
Definition: agora.cc:1176
Stats
Definition: stats.h:63
gen_tag_t::symbol_id_
uint16_t symbol_id_
Definition: message.h:33
PrintType::kPacketTX
@ kPacketTX
TsType::kRXDone
@ kRXDone
concurrent_queue_wrapper.h
Config::RecipCalFrameCnt
size_t RecipCalFrameCnt() const
Definition: config.h:171
RanConfig::frame_id_
size_t frame_id_
modulation type (number of bits)
Definition: ran_config.h:18
kFrameWnd
static constexpr size_t kFrameWnd
Definition: symbols.h:18
EventType::kPacketFromMac
@ kPacketFromMac
unused
#define unused(x)
Definition: utils.h:14
gen_tag_t::FrmSymSc
static gen_tag_t FrmSymSc(size_t frame_id, size_t symbol_id, size_t sc_id)
Definition: message.h:95
modulation.h
Agora::beam_last_frame_
size_t beam_last_frame_
Definition: agora.h:143
Agora::ifft_counters_
FrameCounters ifft_counters_
Definition: agora.h:137
kDecodeDataFilename
static const std::string kDecodeDataFilename
Definition: agora.cc:28
EventType
EventType
Definition: symbols.h:42
AgoraDestroy
EXPORT void AgoraDestroy(Agora *agora)
Definition: agora.cc:1312
mac_thread_basestation.h
Packet::data_
short data_[]
Definition: message.h:173
kDefaultQueueSize
static constexpr size_t kDefaultQueueSize
Definition: agora.cc:33
GetTime::GetTimeUs
static double GetTimeUs()
Definition: gettime.h:14
Agora::SendSnrReport
void SendSnrReport(EventType event_type, size_t frame_id, size_t symbol_id)
Definition: agora.cc:108
RanConfig
The struct that contains the RAN configuration that Agora must apply for a particular frame.
Definition: ran_config.h:14
Agora::FreeQueues
void FreeQueues()
Definition: agora.cc:1014
FrameStats::GetULSymbolIdx
size_t GetULSymbolIdx(size_t symbol_number) const
Definition: framestats.cc:156
fft_req_tag_t
rx_tag_t fft_req_tag_t
Definition: message.h:241
packet_txrx_dpdk.h
Implementation of PacketTxRxDpdk datapath functions for communicating with DPDK.
FrameCounters::CompleteTask
bool CompleteTask(size_t frame_id, size_t symbol_id)
Increments the task count for input frame and symbol.
Definition: message.h:383
SignalHandler::GotExitSignal
static bool GotExitSignal()
Definition: signal_handler.cc:23
Agora::ScheduleCodeblocks
void ScheduleCodeblocks(EventType event_type, Direction dir, size_t frame_id, size_t symbol_idx)
Schedule LDPC decoding or encoding over code blocks.
Definition: agora.cc:259
kNone
@ kNone
Definition: symbols.h:117
PrintType::kEncode
@ kEncode
kDebugPrintPacketsFromMac
static const bool kDebugPrintPacketsFromMac
Definition: agora.cc:21
Agora::~Agora
~Agora()
Definition: agora.cc:85
Config::BsAntNum
size_t BsAntNum() const
Definition: config.h:35
packet_txrx.h
Common definations for PacketTxRx. Including datapath functions for communicating with simulators.
EventType::kPacketTX
@ kPacketTX
FrameCounters::IsLastSymbol
bool IsLastSymbol(size_t frame_id) const
Check whether the symbol is the last symbol for a given frame.
Definition: message.h:399
kPrintBeamStats
static constexpr bool kPrintBeamStats
Definition: symbols.h:193
PrintType::kPacketRXPilots
@ kPacketRXPilots
Agora::recorder_
std::unique_ptr< Agora_recorder::RecorderThread > recorder_
Definition: agora.h:184
fclose
fclose(fileID)
Agora::demul_counters_
FrameCounters demul_counters_
Definition: agora.h:133
EventData::tags_
std::array< size_t, kMaxTags > tags_
Definition: message.h:146
AGORA_LOG_ERROR
#define AGORA_LOG_ERROR(...)
Definition: logger.h:39
Agora::agora_memory_
std::unique_ptr< AgoraBuffer > agora_memory_
Definition: agora.h:127
TOSTRING
#define TOSTRING(x)
Definition: symbols.h:14
Agora::message_
std::unique_ptr< MessageInfo > message_
Definition: agora.h:153
signal_handler.h
Agora::ifft_cur_frame_for_symbol_
std::vector< size_t > ifft_cur_frame_for_symbol_
Definition: agora.h:160
Direction::kUplink
@ kUplink
Config::Frame
const FrameStats & Frame() const
Definition: config.h:340
PrintType::kFFTPilots
@ kFFTPilots
TsType::kFFTPilotsDone
@ kFFTPilotsDone
AGORA_LOG_TRACE
#define AGORA_LOG_TRACE(...)
Definition: logger.h:92
rx_tag_t
Definition: message.h:227
RxPacket::Use
void Use()
Definition: message.h:215
Config::ModifyRecCalIndex
size_t ModifyRecCalIndex(size_t previous_index, int mod_value=0) const
Definition: config.h:133
EventData::event_type_
EventType event_type_
Definition: message.h:144
Agora::enable_save_tx_data_to_file_
bool enable_save_tx_data_to_file_
Definition: agora.h:46
gen_tag_t::FrmSymUe
static gen_tag_t FrmSymUe(size_t frame_id, size_t symbol_id, size_t ue_id)
Definition: message.h:84
Agora::packet_tx_rx_
std::unique_ptr< PacketTxRx > packet_tx_rx_
Definition: agora.h:115
Agora::config_
Config *const config_
Definition: agora.h:112
EventType::kBeam
@ kBeam
snr
snr
Definition: inspect_agora_results.m:118
gen_tag_t
Definition: message.h:22
FrameCounters::MaxSymbolCount
size_t MaxSymbolCount() const
Definition: message.h:466
Config::MCSParams
const nlohmann::json & MCSParams(Direction dir) const
Definition: config.h:288
RxCounters::num_pilot_pkts_
std::array< size_t, kFrameWnd > num_pilot_pkts_
Definition: message.h:322
kDequeueBulkSizeTXRX
static constexpr size_t kDequeueBulkSizeTXRX
Definition: symbols.h:131
EventType::kSNRReport
@ kSNRReport
TryEnqueueFallback
static void TryEnqueueFallback(moodycamel::ConcurrentQueue< EventData > *mc_queue, moodycamel::ProducerToken *producer_token, const EventData &event)
Definition: concurrent_queue_wrapper.h:18
EventType::kPacketToMac
@ kPacketToMac
Agora::GetEqualData
void GetEqualData(float **ptr, int *size)
Definition: agora.cc:1207
FrameCounters
This class stores the counters corresponding to a frame. Specifically, it contains a) the number of s...
Definition: message.h:349
Config::IsPilot
bool IsPilot(size_t, size_t) const
Definition: config.cc:1495
FrameCounters::GetTaskCount
size_t GetTaskCount(size_t frame_id) const
Definition: message.h:458
Agora::schedule_process_flags_
uint8_t schedule_process_flags_
Definition: agora.h:181
Agora::fft_queue_arr_
std::array< std::queue< fft_req_tag_t >, kFrameWnd > fft_queue_arr_
Definition: agora.h:167
stats.h
Declaration file for the Stats class. Includes definations for DurationStat and FrameSummery types.
EventData
Definition: message.h:142
Agora::ScheduleAntennasTX
void ScheduleAntennasTX(size_t frame_id, size_t symbol_id)
Definition: agora.cc:168
AgoraGetEqualData
EXPORT void AgoraGetEqualData(Agora *agora, float **ptr, int *size)
Definition: agora.cc:1313
kPrintPhyStats
static constexpr bool kPrintPhyStats
Definition: symbols.h:191
kOutputFilepath
static const std::string kOutputFilepath
Definition: agora.cc:25
kEnableMac
static constexpr bool kEnableMac
Definition: symbols.h:150
gen_tag_t::ant_id_
uint16_t ant_id_
Definition: message.h:38
fmt::v8::ptr
auto ptr(T p) -> const void *
Definition: format.h:2680
EventData::num_tags_
uint32_t num_tags_
Definition: message.h:145
EventType::kFFT
@ kFFT
message.h
Self defined functions for message storage and passing.
RxCounters::num_pilot_pkts_per_frame_
size_t num_pilot_pkts_per_frame_
Definition: message.h:332
gen_tag_t::FrmSymAnt
static gen_tag_t FrmSymAnt(size_t frame_id, size_t symbol_id, size_t ant_id)
Definition: message.h:106
Config::FftBlockSize
size_t FftBlockSize() const
Definition: config.h:205
PrintType::kFFTCal
@ kFFTCal
FrameCounters::Init
void Init(size_t max_symbol_count, size_t max_task_count=0)
Definition: message.h:353
Agora::mac_to_phy_counters_
FrameCounters mac_to_phy_counters_
Definition: agora.h:140
PrintType::kIFFT
@ kIFFT
TsType::kPrecodeDone
@ kPrecodeDone
i
for i
Definition: generate_data.m:107
MacThreadBaseStation::RunEventLoop
void RunEventLoop()
Definition: mac_thread_basestation.cc:526
FrameStats::NumDlDataSyms
size_t NumDlDataSyms() const
Definition: framestats.h:83
Agora::frame_tracking_
FrameInfo frame_tracking_
Definition: agora.h:152
TsType::kDecodeDone
@ kDecodeDone
Agora::uplink_fft_counters_
FrameCounters uplink_fft_counters_
Definition: agora.h:131
Agora::HandleEventFft
void HandleEventFft(size_t tag)
Definition: agora.cc:849
Agora::message_queue_
moodycamel::ConcurrentQueue< EventData > message_queue_
Definition: agora.h:170
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
FrameInfo
Definition: agora_buffer.h:172
Agora::InitializeThreads
void InitializeThreads()
Definition: agora.cc:1091
kTxDataFilename
static const std::string kTxDataFilename
Definition: agora.cc:27
Config::BeamBatchSize
size_t BeamBatchSize() const
Definition: config.h:201
kProcessingComplete
@ kProcessingComplete
Definition: symbols.h:120
Agora::kNone
@ kNone
Definition: agora.h:51
Agora::InitializeQueues
void InitializeQueues()
Definition: agora.cc:997
PrintType::kPacketTXFirst
@ kPacketTXFirst
kUseUHD
static constexpr bool kUseUHD
Definition: symbols.h:162
TsType::kRCAllRX
@ kRCAllRX
Packet
Definition: message.h:164
Config::NumBytesPerCb
size_t NumBytesPerCb(Direction dir) const
Definition: config.h:251
TsType::kProcessingStarted
@ kProcessingStarted
PrintType::kPacketToMac
@ kPacketToMac
Agora::precode_counters_
FrameCounters precode_counters_
Definition: agora.h:136
RanConfig::n_antennas_
size_t n_antennas_
Definition: ran_config.h:16
TsType::kDemulDone
@ kDemulDone
Direction::kDownlink
@ kDownlink
Agora::ScheduleProcessingFlags
ScheduleProcessingFlags
Definition: agora.h:50
EventType::kDemul
@ kDemul
kUseArgos
static constexpr bool kUseArgos
Definition: symbols.h:156
EventType::kPacketRX
@ kPacketRX
Packet::symbol_id_
uint32_t symbol_id_
Definition: message.h:169
kDefaultMessageQueueSize
static constexpr size_t kDefaultMessageQueueSize
Definition: symbols.h:125
gen_tag_t::tag_
size_t tag_
Definition: message.h:43
RxCounters::num_pkts_
std::array< size_t, kFrameWnd > num_pkts_
Definition: message.h:318
Agora::kProcessingComplete
@ kProcessingComplete
Definition: agora.h:54
Agora::rx_counters_
RxCounters rx_counters_
Definition: agora.h:142
Config::FramesToTest
size_t FramesToTest() const
Definition: config.h:309
FrameStats::GetDLSymbol
size_t GetDLSymbol(size_t location) const
Definition: framestats.cc:106
Agora::stats_
std::unique_ptr< Stats > stats_
Definition: agora.h:122
Agora::UpdateRanConfig
void UpdateRanConfig(RanConfig rc)
Update Agora's RAN config parameters.
Definition: agora.cc:932
spdlog::details::make_unique
std::unique_ptr< T > make_unique(Args &&... args)
Definition: common.h:334
Agora::pilot_fft_counters_
FrameCounters pilot_fft_counters_
Definition: agora.h:130
nlohmann::json_v3_11_1NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON::basic_json
a class to store JSON values
Definition: json.hpp:3367
Agora::kUplinkComplete
@ kUplinkComplete
Definition: agora.h:52
Config::DemulEventsPerSymbol
size_t DemulEventsPerSymbol() const
Definition: config.h:197
TsType::kRCDone
@ kRCDone
TsType::kPilotAllRX
@ kPilotAllRX
Agora::worker_set_
std::unique_ptr< AgoraWorker > worker_set_
Definition: agora.h:124
Agora::rx_ptoks_ptr_
moodycamel::ProducerToken * rx_ptoks_ptr_[kMaxThreads]
Definition: agora.h:178
packet_txrx_radio.h
Common definations for PacketTxRxRadio. Including datapath functions for communicating with hardware.
Config::MacPacketLength
size_t MacPacketLength(Direction dir) const
Definition: config.h:268
Agora::CheckFrameComplete
bool CheckFrameComplete(size_t frame_id)
Definition: agora.cc:1234
Agora::SaveDecodeDataToFile
void SaveDecodeDataToFile(int frame_id)
Definition: agora.cc:1147
Config::RecipCalIndex
size_t RecipCalIndex(size_t frame_id) const
Definition: config.h:138
symbols.h
EventType::kPrecode
@ kPrecode
Agora
Definition: agora.h:29
Agora::Stop
void Stop()
The main Agora event loop.
Definition: agora.cc:101
kDebugPrintPerFrameStart
static constexpr bool kDebugPrintPerFrameStart
Definition: symbols.h:197
ran_config.h
kUplinkHardDemod
static constexpr bool kUplinkHardDemod
Definition: symbols.h:188
TsType::kFirstSymbolRX
@ kFirstSymbolRX
Config::LdpcConfig
const LDPCconfig & LdpcConfig(Direction dir) const
Definition: config.h:280
PrintType::kPacketRX
@ kPacketRX
FrameStats::ClientDlPilotSymbols
size_t ClientDlPilotSymbols() const
Definition: framestats.h:76
Config::FreqGhz
double FreqGhz() const
Definition: config.h:56
RxPacket::RawPacket
Packet * RawPacket()
Definition: message.h:213
MapModToStr
static std::string MapModToStr(size_t mod_order)
Definition: modulation.h:39
FrameStats::NumDLSyms
size_t NumDLSyms() const
Definition: framestats.cc:83
moodycamel::ConcurrentQueue< EventData >
Config::WorkerThreadNum
size_t WorkerThreadNum() const
Definition: config.h:181
kUseDPDK
static constexpr bool kUseDPDK
Definition: symbols.h:144
Config::GetSymbolType
SymbolType GetSymbolType(size_t symbol_id) const
Return the symbol type of this symbol in this frame.
Definition: config.cc:1557
AgoraStop
EXPORT void AgoraStop()
Definition: agora.cc:1309
kDequeueBulkSizeWorker
static constexpr size_t kDequeueBulkSizeWorker
Definition: symbols.h:132
FrameCounters::Reset
void Reset(size_t frame_id)
Definition: message.h:362
SignalHandler::SetExitSignal
static void SetExitSignal(bool _bExitSignal)
Definition: signal_handler.cc:28
Config::BeamEventsPerSymbol
size_t BeamEventsPerSymbol() const
Definition: config.h:202
TsType::kBeamDone
@ kBeamDone
Agora::flags_
struct Agora::@0 flags_
FrameStats::NumULSyms
size_t NumULSyms() const
Definition: framestats.cc:85
Agora::mac_std_thread_
std::thread mac_std_thread_
Definition: agora.h:120
PrintType::kBeam
@ kBeam
Config::MacBytesNumPerframe
size_t MacBytesNumPerframe(Direction dir) const
Definition: config.h:263
Agora::Agora
Agora(Config *cfg)
Create an Agora object and start the worker threads.
Definition: agora.cc:49
Agora::ScheduleAntennas
void ScheduleAntennas(EventType event_type, size_t frame_id, size_t symbol_id)
Definition: agora.cc:141
Agora::kDownlinkComplete
@ kDownlinkComplete
Definition: agora.h:53
RxCounters::num_reciprocity_pkts_
std::array< size_t, kFrameWnd > num_reciprocity_pkts_
Definition: message.h:326
kMaxThreads
static constexpr size_t kMaxThreads
Definition: symbols.h:309
gen_tag_t::FrmSymCb
static gen_tag_t FrmSymCb(size_t frame_id, size_t symbol_id, size_t cb_id)
Definition: message.h:73
EventType::kEncode
@ kEncode
Config
Definition: config.h:26
packet_txrx_sim.h
Common definations for PacketTxRxSim. Including datapath functions for communicating with the base st...
Config::UpdateUlMCS
void UpdateUlMCS(const nlohmann::json &mcs)
Definition: config.cc:747
AGORA_LOG_INFO
#define AGORA_LOG_INFO(...)
Definition: logger.h:62
Agora::precode_cur_frame_for_symbol_
std::vector< size_t > precode_cur_frame_for_symbol_
Definition: agora.h:163
kRecorderTypes
static const std::vector< Agora_recorder::RecorderWorker::RecorderWorkerTypes > kRecorderTypes
Definition: agora.cc:45
Config::IsCalDlPilot
bool IsCalDlPilot(size_t, size_t) const
Definition: config.cc:1523
std
Definition: json.hpp:5213
FrameStats::NumDataSyms
size_t NumDataSyms() const
Definition: framestats.cc:101
fwrite
fwrite(fileID, pilot_f, 'float')
Agora::CheckIncrementScheduleFrame
void CheckIncrementScheduleFrame(size_t frame_id, ScheduleProcessingFlags completed)
Definition: agora.cc:1214
recorder_thread.h
Agora::mac_response_queue_
moodycamel::ConcurrentQueue< EventData > mac_response_queue_
Definition: agora.h:176
Agora::decode_counters_
FrameCounters decode_counters_
Definition: agora.h:134
RtAssert
static void RtAssert(bool condition, const char *throw_str)
Definition: utils.h:104
tx_data
end Generate data if GENERATE_DATA tx_data
Definition: generate_data.m:38
TsType::kEncodeDone
@ kEncodeDone
Agora::rc_counters_
FrameCounters rc_counters_
Definition: agora.h:141
TryEnqueueBulkFallback
static void TryEnqueueBulkFallback(moodycamel::ConcurrentQueue< EventData > *mc_queue, moodycamel::ProducerToken *producer_token, const EventData *event_list, size_t num_events)
Definition: concurrent_queue_wrapper.h:40
AGORA_LOG_WARN
#define AGORA_LOG_WARN(...)
Definition: logger.h:53
kDebugDeferral
static const bool kDebugDeferral
Definition: agora.cc:22
Agora::mac_thread_
std::unique_ptr< MacThreadBaseStation > mac_thread_
Definition: agora.h:118
to_string
std::string to_string() const
Definition: eth_common.h:64
Agora::ScheduleDownlinkProcessing
void ScheduleDownlinkProcessing(size_t frame_id)
Definition: agora.cc:123
Agora::InitializeCounters
void InitializeCounters()
Definition: agora.cc:1026
ThreadType::kMaster
@ kMaster
Agora::tx_ptoks_ptr_
moodycamel::ProducerToken * tx_ptoks_ptr_[kMaxThreads]
Definition: agora.h:179
FrameCounters::GetSymbolCount
size_t GetSymbolCount(size_t frame_id) const
Definition: message.h:454
AgoraBuffer
Definition: agora_buffer.h:20
RxPacket
Definition: message.h:186
Config::BeamBlockSize
size_t BeamBlockSize() const
Definition: config.h:200
SymbolType
SymbolType
Definition: symbols.h:261
Agora::phy_stats_
std::unique_ptr< PhyStats > phy_stats_
Definition: agora.h:123
x1
end BigStation x1
Definition: simulate_performance.m:30
EventType::kIFFT
@ kIFFT
MacPacketPacked
Definition: message.h:274
SymbolType::kCalUL
@ kCalUL
ScheduleProcessingFlags
ScheduleProcessingFlags
Definition: symbols.h:116
gen_tag_t::sc_id_
uint16_t sc_id_
Definition: message.h:39
FrameInfo::cur_sche_frame_id_
size_t cur_sche_frame_id_
Definition: agora_buffer.h:173
agora_worker.h
Declaration file for the main Agora worker class.
Agora::enable_save_decode_data_to_file_
bool enable_save_decode_data_to_file_
Definition: agora.h:43
AgoraStart
EXPORT void AgoraStart(Agora *agora)
Definition: agora.cc:1308
Agora::max_equaled_frame_
size_t max_equaled_frame_
Definition: agora.h:114
PrintType::kFFTData
@ kFFTData
AgoraNew
EXPORT Agora * AgoraNew(Config *cfg)
Definition: agora.cc:1302
Agora::fft_cur_frame_for_symbol_
std::vector< size_t > fft_cur_frame_for_symbol_
Definition: agora.h:156
kDefaultWorkerQueueSize
static constexpr size_t kDefaultWorkerQueueSize
Definition: symbols.h:126
phy_stats.h
Declaration file for the PhyStats class.
Config::PacketLength
size_t PacketLength() const
Definition: config.h:238
agora.h
Declaration file for the main agora class.
gen_tag_t::frame_id_
uint32_t frame_id_
Definition: message.h:32
FrameCounters::CompleteSymbol
bool CompleteSymbol(size_t frame_id)
Increments and checks the symbol count for input frame.
Definition: message.h:372
Config::EncodeBlockSize
size_t EncodeBlockSize() const
Definition: config.h:207
rx_mac_tag_t
Definition: message.h:303
Agora::mac_request_queue_
moodycamel::ConcurrentQueue< EventData > mac_request_queue_
Definition: agora.h:173
max
max(y1, y1_1)
Agora::encode_counters_
FrameCounters encode_counters_
Definition: agora.h:135
kEnableCoreReuse
static constexpr bool kEnableCoreReuse
Definition: symbols.h:138
LDPCconfig::NumBlocksInSymbol
void NumBlocksInSymbol(size_t num_blocks)
Definition: ldpc_config.h:41
SymbolType::kUL
@ kUL
RanConfig::mod_order_bits_
size_t mod_order_bits_
Number of active antennas at the base station.
Definition: ran_config.h:17
FrameInfo::cur_proc_frame_id_
size_t cur_proc_frame_id_
Definition: agora_buffer.h:174
Agora::beam_counters_
FrameCounters beam_counters_
Definition: agora.h:132
Config::DemulBlockSize
size_t DemulBlockSize() const
Definition: config.h:195
PrintType::kDecode
@ kDecode
kUplinkComplete
@ kUplinkComplete
Definition: symbols.h:118
EXPORT
#define EXPORT
Definition: symbols.h:11
concurrentqueue.h
TsType::kTXDone
@ kTXDone
TsType::kIFFTDone
@ kIFFTDone
Agora::tomac_counters_
FrameCounters tomac_counters_
Definition: agora.h:139
Agora::rc_last_frame_
size_t rc_last_frame_
Definition: agora.h:144
Agora::ScheduleSubcarriers
void ScheduleSubcarriers(EventType event_type, size_t frame_id, size_t symbol_id)
Definition: agora.cc:206
PrintType::kPrecode
@ kPrecode
FrameStats::NumTotalSyms
size_t NumTotalSyms() const
Definition: framestats.cc:93
Agora::encode_deferral_
std::queue< size_t > encode_deferral_
Definition: agora.h:182
rx_tag_t::rx_packet_
RxPacket * rx_packet_
Definition: message.h:228
Agora::UpdateRxCounters
void UpdateRxCounters(size_t frame_id, size_t symbol_id)
Definition: agora.cc:938
PrintType::kDemul
@ kDemul