#include <txrx_worker_client_hw.h>
|
| TxRxWorkerClientHw (size_t core_offset, size_t tid, size_t interface_count, size_t interface_offset, 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 ¬ify_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, ClientRadioConfig &radio_config) |
|
| TxRxWorkerClientHw ()=delete |
|
| ~TxRxWorkerClientHw () final |
|
void | DoTxRx () final |
|
| 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 ¬ify_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 |
|
|
size_t | DoTx (const long long time0) |
|
std::vector< Packet * > | DoRx (size_t interface_id, size_t &global_frame_id, size_t &global_symbol_id, long long &receive_time, ssize_t &sample_offset) |
|
ssize_t | SyncBeacon (size_t local_interface, size_t sample_window) |
|
ssize_t | FindSyncBeacon (const std::complex< int16_t > *check_data, size_t sample_window, float corr_scale=1.f) |
|
void | AdjustRx (size_t local_interface, size_t discard_samples) |
|
bool | IsRxSymbol (size_t symbol_id) |
|
void | TxUplinkSymbols (size_t radio_id, size_t frame_id, long long time0) |
|
void | TxPilot (size_t pilot_ant, size_t frame_id, long long time0) |
|
bool | IsTxSymbolNext (size_t radio_id, size_t current_symbol) |
|
Radio::TxFlags | GetTxFlags (size_t radio_id, size_t tx_symbol_id) |
|
void | WaitDetectBeacon (size_t local_interface) |
|
long long | EstablishTime0 (size_t local_interface) |
|
bool | DoResync (const std::vector< Packet * > &check_pkts, ssize_t &adjust_samples) |
|
bool | ResyncOnBeacon (size_t frame_id, size_t frame_sync_period, const std::vector< Packet * > &beacon_pkts, ssize_t &adjust_samples) |
|
void | InitRxStatus () |
|
void | ResetRxStatus (size_t interface, bool reuse_memory) |
|
◆ TxRxWorkerClientHw() [1/2]
TxRxWorkerClientHw::TxRxWorkerClientHw |
( |
size_t |
core_offset, |
|
|
size_t |
tid, |
|
|
size_t |
interface_count, |
|
|
size_t |
interface_offset, |
|
|
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, |
|
|
ClientRadioConfig & |
radio_config |
|
) |
| |
◆ TxRxWorkerClientHw() [2/2]
TxRxWorkerClientHw::TxRxWorkerClientHw |
( |
| ) |
|
|
delete |
◆ ~TxRxWorkerClientHw()
TxRxWorkerClientHw::~TxRxWorkerClientHw |
( |
| ) |
|
|
finaldefault |
◆ AdjustRx()
void TxRxWorkerClientHw::AdjustRx |
( |
size_t |
local_interface, |
|
|
size_t |
discard_samples |
|
) |
| |
|
private |
- Todo:
- for the multi radio case should let this return if not enough data is found This function blocks untill all the discard_samples are received for a given local_interface
◆ DoResync()
bool TxRxWorkerClientHw::DoResync |
( |
const std::vector< Packet * > & |
check_pkts, |
|
|
ssize_t & |
adjust_samples |
|
) |
| |
|
private |
◆ DoRx()
std::vector< Packet * > TxRxWorkerClientHw::DoRx |
( |
size_t |
interface_id, |
|
|
size_t & |
global_frame_id, |
|
|
size_t & |
global_symbol_id, |
|
|
long long & |
receive_time, |
|
|
ssize_t & |
sample_offset |
|
) |
| |
|
private |
◆ DoTx()
size_t TxRxWorkerClientHw::DoTx |
( |
const long long |
time0 | ) |
|
|
private |
◆ DoTxRx()
void TxRxWorkerClientHw::DoTxRx |
( |
| ) |
|
|
finalvirtual |
◆ EstablishTime0()
long long TxRxWorkerClientHw::EstablishTime0 |
( |
size_t |
local_interface | ) |
|
|
private |
◆ FindSyncBeacon()
ssize_t TxRxWorkerClientHw::FindSyncBeacon |
( |
const std::complex< int16_t > * |
check_data, |
|
|
size_t |
sample_window, |
|
|
float |
corr_scale = 1.f |
|
) |
| |
|
private |
- Todo:
- Remove this float conversion to speed up function
◆ GetTxFlags()
Radio::TxFlags TxRxWorkerClientHw::GetTxFlags |
( |
size_t |
radio_id, |
|
|
size_t |
tx_symbol_id |
|
) |
| |
|
private |
◆ InitRxStatus()
void TxRxWorkerClientHw::InitRxStatus |
( |
| ) |
|
|
private |
◆ IsRxSymbol()
bool TxRxWorkerClientHw::IsRxSymbol |
( |
size_t |
symbol_id | ) |
|
|
private |
◆ IsTxSymbolNext()
bool TxRxWorkerClientHw::IsTxSymbolNext |
( |
size_t |
radio_id, |
|
|
size_t |
current_symbol |
|
) |
| |
|
private |
◆ ResetRxStatus()
void TxRxWorkerClientHw::ResetRxStatus |
( |
size_t |
interface, |
|
|
bool |
reuse_memory |
|
) |
| |
|
private |
◆ ResyncOnBeacon()
bool TxRxWorkerClientHw::ResyncOnBeacon |
( |
size_t |
frame_id, |
|
|
size_t |
frame_sync_period, |
|
|
const std::vector< Packet * > & |
beacon_pkts, |
|
|
ssize_t & |
adjust_samples |
|
) |
| |
|
private |
◆ SyncBeacon()
ssize_t TxRxWorkerClientHw::SyncBeacon |
( |
size_t |
local_interface, |
|
|
size_t |
sample_window |
|
) |
| |
|
private |
- Todo:
- for the multi radio case should let this return if not enough data is found
◆ TxPilot()
void TxRxWorkerClientHw::TxPilot |
( |
size_t |
pilot_ant, |
|
|
size_t |
frame_id, |
|
|
long long |
time0 |
|
) |
| |
|
private |
◆ TxUplinkSymbols()
void TxRxWorkerClientHw::TxUplinkSymbols |
( |
size_t |
radio_id, |
|
|
size_t |
frame_id, |
|
|
long long |
time0 |
|
) |
| |
|
private |
◆ WaitDetectBeacon()
void TxRxWorkerClientHw::WaitDetectBeacon |
( |
size_t |
local_interface | ) |
|
|
private |
◆ attempt_resync_
bool TxRxWorkerClientHw::attempt_resync_ = false |
|
private |
◆ frame_storage_
std::vector<std::vector<std::complex<int16_t> > > TxRxWorkerClientHw::frame_storage_ |
|
private |
◆ frame_zeros_
std::vector<std::vector<std::complex<int16_t> > > TxRxWorkerClientHw::frame_zeros_ |
|
private |
◆ program_start_ticks_
size_t TxRxWorkerClientHw::program_start_ticks_ |
|
private |
◆ radio_
◆ resync_retry_cnt_
size_t TxRxWorkerClientHw::resync_retry_cnt_ = 0 |
|
private |
◆ resync_success_cnt_
size_t TxRxWorkerClientHw::resync_success_cnt_ = 0 |
|
private |
◆ rx_frame_pkts_
std::vector<RxPacket> TxRxWorkerClientHw::rx_frame_pkts_ |
|
private |
◆ rx_pkts_ptrs_
std::vector<RxPacket*> TxRxWorkerClientHw::rx_pkts_ptrs_ |
|
private |
◆ rx_status_
The documentation for this class was generated from the following files: