Agora  1.2.0
Agora project
PacketTxRxSim Class Reference

Implementations of this class provide packet I/O for Agora. More...

#include <packet_txrx_sim.h>

Inheritance diagram for PacketTxRxSim:
Collaboration diagram for PacketTxRxSim:

Public Member Functions

 PacketTxRxSim (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)
 
 ~PacketTxRxSim () final=default
 
- Public Member Functions inherited from PacketTxRx
 PacketTxRx (AgoraTxRx::TxRxTypes type, 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)
 
virtual ~PacketTxRx ()
 
virtual bool StartTxRx (Table< complex_float > &calib_dl_buffer, Table< complex_float > &calib_ul_buffer)
 Start the network I/O threads. More...
 
size_t AntNumToWorkerId (size_t ant_num) const
 Convert the antenna id to txrx worker id. More...
 

Private Member Functions

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
 

Additional Inherited Members

- Protected Member Functions inherited from PacketTxRx
bool StopTxRx ()
 
void NotifyWorkers ()
 
size_t NumberTotalWorkers () const
 
size_t NumberTotalInterfaces () const
 
const size_t & InterfaceToWorker (size_t interface) const
 
size_t NumChannels () const
 
- Protected Attributes inherited from PacketTxRx
std::vector< std::unique_ptr< TxRxWorker > > worker_threads_
 
Config *const cfg_
 
const 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_
 
std::mutex mutex_
 Owned by this class and shared with the workers. More...
 
std::condition_variable cond_
 
std::atomic< bool > proceed_
 

Detailed Description

Implementations of this class provide packet I/O for Agora.

In the "Argos" mode, this class provides SoapySDR-based communication for Agora (running on the base station server or client) for communicating with real wireless hardware peers (antenna hubs for the server, UE devices for the client).

Constructor & Destructor Documentation

◆ PacketTxRxSim()

PacketTxRxSim::PacketTxRxSim ( 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 
)

◆ ~PacketTxRxSim()

PacketTxRxSim::~PacketTxRxSim ( )
finaldefault

Member Function Documentation

◆ CreateWorker()

bool PacketTxRxSim::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 
)
finalprivatevirtual

Implements PacketTxRx.

Here is the call graph for this function:

The documentation for this class was generated from the following files: