Agora  1.2.0
Agora project
PacketTxRxRadio Class Reference

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

#include <packet_txrx_radio.h>

Inheritance diagram for PacketTxRxRadio:
Collaboration diagram for PacketTxRxRadio:

Public Member Functions

 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)
 
 ~PacketTxRxRadio () final
 
bool StartTxRx (Table< complex_float > &calib_dl_buffer, Table< complex_float > &calib_ul_buffer) final
 Start the network I/O threads. More...
 
- 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 ()
 
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
 

Private Attributes

std::unique_ptr< RadioConfigradio_config_
 

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

◆ 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 
)

◆ ~PacketTxRxRadio()

PacketTxRxRadio::~PacketTxRxRadio ( )
final
Here is the call graph for this function:

Member Function Documentation

◆ CreateWorker()

bool PacketTxRxRadio::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:

◆ StartTxRx()

bool PacketTxRxRadio::StartTxRx ( Table< complex_float > &  calib_dl_buffer,
Table< complex_float > &  calib_ul_buffer 
)
finalvirtual

Start the network I/O threads.

Returns
True on successfully starting the network I/O threads, false otherwise

Can exit here because this list is ordered

Reimplemented from PacketTxRx.

Here is the call graph for this function:

Member Data Documentation

◆ radio_config_

std::unique_ptr<RadioConfig> PacketTxRxRadio::radio_config_
private

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