#include <doprecode.h>
|
| DoPrecode (Config *in_config, int in_tid, PtrGrid< kFrameWnd, kMaxDataSCs, complex_float > &dl_beam_matrices_, Table< complex_float > &in_dl_ifft_buffer, Table< int8_t > &dl_encoded_or_raw_data, Stats *in_stats_manager) |
|
| ~DoPrecode () override |
|
EventData | Launch (size_t tag) override |
|
void | LoadInputData (size_t symbol_idx_dl, size_t total_data_symbol_idx, size_t user_id, size_t sc_id, size_t sc_id_in_block) |
|
void | PrecodingPerSc (size_t frame_slot, size_t sc_id, size_t sc_id_in_block) |
|
virtual bool | TryLaunch (moodycamel::ConcurrentQueue< EventData > &task_queue, moodycamel::ConcurrentQueue< EventData > &complete_task_queue, moodycamel::ProducerToken *worker_ptok) |
|
virtual EventData | Launch (size_t tag, EventType event_type) |
|
◆ DoPrecode()
◆ ~DoPrecode()
DoPrecode::~DoPrecode |
( |
| ) |
|
|
override |
◆ Launch()
Do demodulation task for a block of subcarriers (demul_block_size)
- Parameters
-
tid | task thread index, used for selecting spm_buffer and task ptok |
offset | offset of the first subcarrier in the block in data_buffer_ Buffers: data_buffer_, spm_buffer_, precoder_buffer_, equal_buffer_, demul_hard_buffer_ Input buffer: data_buffer_, precoder_buffer_ Output buffer: demul_hard_buffer_ Intermediate buffer: spm_buffer, equal_buffer_ Offsets: data_buffer_: dim1: frame index * # of data symbols per frame + data symbol index dim2: transpose block index * block size * # of antennas + antenna index * block size spm_buffer: dim1: task thread index dim2: antenna index precoder_buffer_: dim1: frame index * FFT size + subcarrier index in the current frame equal_buffer_, demul_buffer: dim1: frame index * # of data symbols per frame + data symbol index dim2: subcarrier index * # of users Event offset: offset Description:
- for each subcarrier in the block, block-wisely copy data from data_buffer_ to spm_buffer_
- perform equalization with data and percoder matrixes
- perform demodulation on equalized data matrix
- add an event to the message queue to infrom main thread the completion of this task
|
Reimplemented from Doer.
◆ LoadInputData()
void DoPrecode::LoadInputData |
( |
size_t |
symbol_idx_dl, |
|
|
size_t |
total_data_symbol_idx, |
|
|
size_t |
user_id, |
|
|
size_t |
sc_id, |
|
|
size_t |
sc_id_in_block |
|
) |
| |
◆ PrecodingPerSc()
void DoPrecode::PrecodingPerSc |
( |
size_t |
frame_slot, |
|
|
size_t |
sc_id, |
|
|
size_t |
sc_id_in_block |
|
) |
| |
◆ dl_beam_matrices_
◆ dl_ifft_buffer_
◆ dl_raw_data_
Table<int8_t>& DoPrecode::dl_raw_data_ |
|
private |
◆ duration_stat_
◆ modulated_buffer_temp_
◆ precoded_buffer_temp_
◆ qam_table_
Table<float> DoPrecode::qam_table_ |
|
private |
The documentation for this class was generated from the following files: