Agora  1.2.0
Agora project
packet_txrx_radio.h
Go to the documentation of this file.
1 
7 #ifndef PACKETTXRX_RADIO_H_
8 #define PACKETTXRX_RADIO_H_
9 
10 #include "common_typedef_sdk.h"
11 #include "packet_txrx.h"
12 #include "radio_lib.h"
13 
23 class PacketTxRxRadio : public PacketTxRx {
24  public:
25  PacketTxRxRadio(Config* const cfg, size_t core_offset,
28  moodycamel::ProducerToken** notify_producer_tokens,
29  moodycamel::ProducerToken** tx_producer_tokens,
30  Table<char>& rx_buffer, size_t packet_num_in_buffer,
31  Table<size_t>& frame_start, char* tx_buffer);
32  ~PacketTxRxRadio() final;
33  bool StartTxRx(Table<complex_float>& calib_dl_buffer,
34  Table<complex_float>& calib_ul_buffer) final;
35 
36  private:
37  bool CreateWorker(size_t tid, size_t interface_count, size_t interface_offset,
38  size_t* rx_frame_start, std::vector<RxPacket>& rx_memory,
39  std::byte* const tx_memory) final;
40 
41  std::unique_ptr<RadioConfig> radio_config_;
42 };
43 
44 #endif // PACKETTXRX_RADIO_H_
AgoraTxRx
Definition: packet_txrx.h:18
PacketTxRx::cond_
std::condition_variable cond_
Definition: packet_txrx.h:90
fmt::v8::detail::byte
byte
Definition: core.h:388
PacketTxRx::mutex_
std::mutex mutex_
Owned by this class and shared with the workers.
Definition: packet_txrx.h:89
PacketTxRx::worker_threads_
std::vector< std::unique_ptr< TxRxWorker > > worker_threads_
Definition: packet_txrx.h:76
moodycamel::ProducerToken
Definition: concurrentqueue.h:630
Config::Running
void Running(bool value)
Definition: config.h:33
AgoraTxRx::TxRxTypes
TxRxTypes
Definition: packet_txrx.h:19
PacketTxRx::tx_producer_tokens_
moodycamel::ProducerToken ** tx_producer_tokens_
Definition: packet_txrx.h:86
kFrameWnd
static constexpr size_t kFrameWnd
Definition: symbols.h:18
txrx_worker_hw.h
Implementation of PacketTxRx datapath functions for communicating with real iris / faros hardware.
PacketTxRxRadio::~PacketTxRxRadio
~PacketTxRxRadio() final
Definition: packet_txrx_radio.cc:30
packet_txrx.h
Common definations for PacketTxRx. Including datapath functions for communicating with simulators.
txrx_worker_usrp.h
Implementation of PacketTxRx datapath functions for communicating with usrp hardware.
PacketTxRx::cfg_
Config *const cfg_
Definition: packet_txrx.h:77
Config::Frame
const FrameStats & Frame() const
Definition: config.h:340
PacketTxRx::proceed_
std::atomic< bool > proceed_
Definition: packet_txrx.h:91
Table< char >
radio_lib.h
Declaration file for the RadioConfig class.
Config::OfdmDataNum
size_t OfdmDataNum() const
Definition: config.h:47
PacketTxRxRadio::StartTxRx
bool StartTxRx(Table< complex_float > &calib_dl_buffer, Table< complex_float > &calib_ul_buffer) final
Start the network I/O threads.
Definition: packet_txrx_radio.cc:40
kRadioTriggerWaitMs
static constexpr size_t kRadioTriggerWaitMs
Definition: packet_txrx_radio.cc:13
PacketTxRxRadio::PacketTxRxRadio
PacketTxRxRadio(Config *const cfg, size_t core_offset, moodycamel::ConcurrentQueue< EventData > *event_notify_q, moodycamel::ConcurrentQueue< EventData > *tx_pending_q, moodycamel::ProducerToken **notify_producer_tokens, moodycamel::ProducerToken **tx_producer_tokens, Table< char > &rx_buffer, size_t packet_num_in_buffer, Table< size_t > &frame_start, char *tx_buffer)
Definition: packet_txrx_radio.cc:15
fmt::v8::fprintf
auto fprintf(std::FILE *f, const S &fmt, const T &... args) -> int
Definition: printf.h:607
kUseUHD
static constexpr bool kUseUHD
Definition: symbols.h:162
kUseArgos
static constexpr bool kUseArgos
Definition: symbols.h:156
PacketTxRx::StartTxRx
virtual bool StartTxRx(Table< complex_float > &calib_dl_buffer, Table< complex_float > &calib_ul_buffer)
Start the network I/O threads.
Definition: packet_txrx.cc:117
packet_txrx_radio.h
Common definations for PacketTxRxRadio. Including datapath functions for communicating with hardware.
PacketTxRx
Implementations of this class provide packet I/O for Agora.
Definition: packet_txrx.h:34
FrameStats::NumDLSyms
size_t NumDLSyms() const
Definition: framestats.cc:83
moodycamel::ConcurrentQueue< EventData >
PacketTxRx::event_notify_q_
moodycamel::ConcurrentQueue< EventData > * event_notify_q_
Definition: packet_txrx.h:80
PacketTxRxRadio::radio_config_
std::unique_ptr< RadioConfig > radio_config_
Definition: packet_txrx_radio.h:41
Radio::kSoapySdrStream
@ kSoapySdrStream
Definition: radio.h:17
frame_start
frame_start
Definition: parse_dl_file.m:6
PacketTxRx::notify_producer_tokens_
moodycamel::ProducerToken ** notify_producer_tokens_
Definition: packet_txrx.h:84
Config
Definition: config.h:26
AGORA_LOG_INFO
#define AGORA_LOG_INFO(...)
Definition: logger.h:62
AGORA_LOG_FRAME
#define AGORA_LOG_FRAME(...)
Definition: logger.h:72
RtAssert
static void RtAssert(bool condition, const char *throw_str)
Definition: utils.h:104
PacketTxRx::core_offset_
const size_t core_offset_
Definition: packet_txrx.h:79
PacketTxRxRadio
Implementations of this class provide packet I/O for Agora.
Definition: packet_txrx_radio.h:23
PacketTxRxRadio::CreateWorker
bool CreateWorker(size_t tid, size_t interface_count, size_t interface_offset, size_t *rx_frame_start, std::vector< RxPacket > &rx_memory, std::byte *const tx_memory) final
Definition: packet_txrx_radio.cc:68
PacketTxRx::tx_pending_q_
moodycamel::ConcurrentQueue< EventData > * tx_pending_q_
Definition: packet_txrx.h:81
AgoraTxRx::kBaseStation
@ kBaseStation
Definition: packet_txrx.h:19
PacketTxRx::NumChannels
size_t NumChannels() const
Definition: packet_txrx.h:74
Config::BfAntNum
size_t BfAntNum() const
Definition: config.h:39