Agora  1.2.0
Agora project
TxRxWorkerUsrp Class Reference

#include <txrx_worker_usrp.h>

Inheritance diagram for TxRxWorkerUsrp:
Collaboration diagram for TxRxWorkerUsrp:

Public Member Functions

 TxRxWorkerUsrp (size_t core_offset, size_t tid, size_t radio_hi, size_t radio_lo, Config *const config, size_t *rx_frame_start, moodycamel::ConcurrentQueue< EventData > *event_notify_q, moodycamel::ConcurrentQueue< EventData > *tx_pending_q, moodycamel::ProducerToken &tx_producer, moodycamel::ProducerToken &notify_producer, std::vector< RxPacket > &rx_memory, std::byte *const tx_memory, std::mutex &sync_mutex, std::condition_variable &sync_cond, std::atomic< bool > &can_proceed, RadioConfig &radio_config)
 
 TxRxWorkerUsrp ()=delete
 
 ~TxRxWorkerUsrp () final
 
void DoTxRx () final
 
- Public Member Functions inherited from TxRxWorker
 TxRxWorker (size_t core_offset, size_t tid, size_t interface_count, size_t interface_offset, size_t channels_per_interface, Config *const config, size_t *rx_frame_start, moodycamel::ConcurrentQueue< EventData > *event_notify_q, moodycamel::ConcurrentQueue< EventData > *tx_pending_q, moodycamel::ProducerToken &tx_producer, moodycamel::ProducerToken &notify_producer, std::vector< RxPacket > &rx_memory, std::byte *const tx_memory, std::mutex &sync_mutex, std::condition_variable &sync_cond, std::atomic< bool > &can_proceed)
 
 TxRxWorker ()=delete
 
virtual ~TxRxWorker ()
 
virtual void Start ()
 
virtual void Stop ()
 
size_t Id () const
 
bool Started () const
 
bool Running () const
 

Private Member Functions

int DequeueSend ()
 
int DequeueSend (int frame_id, int symbol_id)
 
std::vector< Packet * > RecvEnqueue (size_t radio_id, size_t frame_id, size_t symbol_id)
 

Private Attributes

long long rx_time_bs_
 
long long tx_time_bs_
 
RadioConfigradio_config_
 

Additional Inherited Members

- Static Public Attributes inherited from TxRxWorker
static constexpr bool kDebugTxMemory = false
 
- Protected Member Functions inherited from TxRxWorker
void WaitSync ()
 Using a latch might be better but adds c++20 requirement. More...
 
ConfigConfiguration ()
 
bool NotifyComplete (const EventData &complete_event)
 
std::vector< EventDataGetPendingTxEvents (size_t max_events=0)
 
RxPacketGetRxPacket ()
 
void ReturnRxPacket (RxPacket &unused_packet)
 
PacketGetTxPacket (size_t frame, size_t symbol, size_t ant)
 
PacketGetUlTxPacket (size_t frame, size_t symbol, size_t ant)
 
- Protected Attributes inherited from TxRxWorker
const size_t tid_
 
const size_t core_offset_
 
const size_t num_interfaces_
 
const size_t interface_offset_
 
const size_t channels_per_interface_
 
size_t *const rx_frame_start_
 
bool running_
 
std::mutex & mutex_
 Owned by the parent TxRx object for sync. More...
 
std::condition_variable & cond_
 
std::atomic< bool > & can_proceed_
 

Constructor & Destructor Documentation

◆ TxRxWorkerUsrp() [1/2]

TxRxWorkerUsrp::TxRxWorkerUsrp ( size_t  core_offset,
size_t  tid,
size_t  radio_hi,
size_t  radio_lo,
Config *const  config,
size_t *  rx_frame_start,
moodycamel::ConcurrentQueue< EventData > *  event_notify_q,
moodycamel::ConcurrentQueue< EventData > *  tx_pending_q,
moodycamel::ProducerToken tx_producer,
moodycamel::ProducerToken notify_producer,
std::vector< RxPacket > &  rx_memory,
std::byte *const  tx_memory,
std::mutex &  sync_mutex,
std::condition_variable &  sync_cond,
std::atomic< bool > &  can_proceed,
RadioConfig radio_config 
)

◆ TxRxWorkerUsrp() [2/2]

TxRxWorkerUsrp::TxRxWorkerUsrp ( )
delete

◆ ~TxRxWorkerUsrp()

TxRxWorkerUsrp::~TxRxWorkerUsrp ( )
finaldefault

Member Function Documentation

◆ DequeueSend() [1/2]

int TxRxWorkerUsrp::DequeueSend ( )
private
Here is the call graph for this function:

◆ DequeueSend() [2/2]

int TxRxWorkerUsrp::DequeueSend ( int  frame_id,
int  symbol_id 
)
private
Here is the call graph for this function:

◆ DoTxRx()

void TxRxWorkerUsrp::DoTxRx ( )
finalvirtual

Implements TxRxWorker.

Here is the call graph for this function:

◆ RecvEnqueue()

std::vector< Packet * > TxRxWorkerUsrp::RecvEnqueue ( size_t  radio_id,
size_t  frame_id,
size_t  symbol_id 
)
private
Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ radio_config_

RadioConfig& TxRxWorkerUsrp::radio_config_
private

◆ rx_time_bs_

long long TxRxWorkerUsrp::rx_time_bs_
private

◆ tx_time_bs_

long long TxRxWorkerUsrp::tx_time_bs_
private

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