| 
    free5GRAN
    V1.0
    
   | 
 
Functions | |
| void | channelEstimation (complex< float > *pilots, complex< float > *reference_pilot, vector< vector< int >> &pilot_indexes, vector< vector< complex< float >>> &coefficients, float &snr, int num_sc, int num_symbols, int pilot_size) | 
| void | hard_demodulation (vector< complex< float >> signal, int *bits, int signal_length, int modulation_scheme) | 
| void | soft_demodulation (vector< complex< float >> signal, double *soft_bits, int signal_length, int modulation_scheme) | 
| void | compute_fine_frequency_offset (vector< complex< float >> input_signal, int symbol_duration, int fft_size, int cp_length, int scs, float &output, int num_symbols) | 
| void | transpose_signal (vector< complex< float >> *input_signal, float freq_offset, int sample_rate, int input_length) | 
| void | channel_demapper (vector< vector< complex< float >>> &input_signal, vector< vector< vector< int >>> &ref, complex< float > **output_channels, vector< vector< vector< int >>> &output_indexes, int num_channels, int num_symbols, int num_sc) | 
| double | compute_freq_from_gscn (int gscn) | 
| free5GRAN::pdcch_t0ss_monitoring_occasions | compute_pdcch_t0_ss_monitoring_occasions (int pdcch_config, int pbch_scs, int common_scs, int i) | 
| void | compute_rb_start_lrb_dci (int RIV, int n_size_bwp, int &lrb, int &rb_start) | 
| void | get_pdsch_dmrs_symbols (const string &type, int duration, int additionnal_position, int l0, int **output, int &size) | 
| void | compute_cp_lengths (int scs, int nfft, int is_extended_cp, int num_symb_per_subframes, int *cp_lengths, int *cum_sum_cp_lengths) | 
| void | compute_phase_decomp (int *cp_lengths, int *cum_sum_symb, float sampling_rate, float f0, int num_symb_per_subframes, complex< float > *phase_decomp_factor) | 
| int | compute_nre (int num_symb_pdsch, int num_dmrs_symb) | 
| void | fft (vector< complex< float >> time_domain_signal, vector< vector< complex< float >>> &output_signal, int fft_size, int *cp_lengths, int *cum_sum_symb, int num_symbols, int num_sc_output, int first_symb_index, int offset) | 
| void | get_candidates_frames_indexes (vector< vector< int >> &frame_indexes, int *frame_numbers, int sfn, int index_first_pss, int num_samples_before_pss, int frame_size) | 
| void free5GRAN::phy::signal_processing::channel_demapper | ( | vector< vector< complex< float >>> & | input_signal, | 
| vector< vector< vector< int >>> & | ref, | ||
| complex< float > ** | output_channels, | ||
| vector< vector< vector< int >>> & | output_indexes, | ||
| int | num_channels, | ||
| int | num_symbols, | ||
| int | num_sc | ||
| ) | 
Consumes an input signal and returns different channels containing corresponding data, based on ref indexes
| [in] | input_signal | Input signal to be de-mapped | 
| [in] | ref | Array containing the indexes of the different channels inside the OFDM grid | 
| [in] | channel_sizes | Array containing the outpu transport_channel sizes | 
| [out] | output_channels | Channels symbols | 
| [out] | output_indexes | Indexes of the output_channels elements | 
| [in] | num_channels | Number of channels | 
| [in] | num_symbols | Number of symbols in the OFDM grid | 
| [in] | num_sc | Number of subcarriers in the OFDM grid | 
Definition at line 298 of file libphy.cpp.
| void free5GRAN::phy::signal_processing::channelEstimation | ( | complex< float > * | pilots, | 
| complex< float > * | reference_pilot, | ||
| vector< vector< int >> & | pilot_indexes, | ||
| vector< vector< complex< float >>> & | coefficients, | ||
| float & | snr, | ||
| int | num_sc, | ||
| int | num_symbols, | ||
| int | pilot_size | ||
| ) | 
Estimate channel coefficients for equalization
| [in] | pilots | Signal received pilots | 
| [in] | reference_pilot | Generated pilots | 
| [in] | pilot_indexes | Pilot indexes in the signal | 
| [out] | coefficients | Channel coefficient returned by the function | 
| [out] | snr | Computed SNR | 
| [in] | num_sc | Number of subcarriers in the signal | 
| [in] | num_symbols | Number of symbols in the signal | 
| [in] | pilot_size | Pilot size | 
Definition at line 27 of file libphy.cpp.
| void free5GRAN::phy::signal_processing::compute_cp_lengths | ( | int | scs, | 
| int | nfft, | ||
| int | is_extended_cp, | ||
| int | num_symb_per_subframes, | ||
| int * | cp_lengths, | ||
| int * | cum_sum_cp_lengths | ||
| ) | 
Compute cyclic prefix size
3GPP standard: TS38.211 V15.2.0 Section 5.3
| [in] | scs | Subcarrier spacing | 
| [in] | nfft | FFT/iFFT size | 
| [in] | is_extended_cp | True if current CP is extended CP | 
| [in] | num_symb_per_subframes | Number of symbols per subframe | 
| [out] | cp_lengths | Returned CP | 
| [out] | cum_sum_cp_lengths | Cumulative CP sum | 
Definition at line 483 of file libphy.cpp.
| void free5GRAN::phy::signal_processing::compute_fine_frequency_offset | ( | vector< complex< float >> | input_signal, | 
| int | symbol_duration, | ||
| int | fft_size, | ||
| int | cp_length, | ||
| int | scs, | ||
| float & | output, | ||
| int | num_symbols | ||
| ) | 
Compute fine frequency offset of a received signal by computing phase offset between cyclic prefix and corresponding symbol data.
| [in] | input_signal | Received signal | 
| [in] | symbol_duration | Number of samples per symbol | 
| [in] | fft_size | Number of samples in a symbol, after removing cyclic prefix | 
| [in] | cp_length | Cyclic prefix size | 
| [in] | scs | Subcarrier spacing | 
| [out] | output | Frequency offset in Hertz | 
| [in] | num_symbols | Number of symbols in the signal | 
Definition at line 247 of file libphy.cpp.
| double free5GRAN::phy::signal_processing::compute_freq_from_gscn | ( | int | gscn | ) | 
Computing frequency from received GSCN
3GPP standard: TS38.104 V15.2.0 Table 5.4.3.1-1
| [in] | gscn | Input GSCN | 
Definition at line 338 of file libphy.cpp.
| int free5GRAN::phy::signal_processing::compute_nre | ( | int | num_symb_pdsch, | 
| int | num_dmrs_symb | ||
| ) | 
Compute number of PDSCH RE per RB
| [in] | num_symb_pdsch | Number of PDSCH symbols | 
| [in] | num_dmrs_symb | Number of DMRS symbols | 
Definition at line 532 of file libphy.cpp.
| free5GRAN::pdcch_t0ss_monitoring_occasions free5GRAN::phy::signal_processing::compute_pdcch_t0_ss_monitoring_occasions | ( | int | pdcch_config, | 
| int | pbch_scs, | ||
| int | common_scs, | ||
| int | i | ||
| ) | 
Compute PDCCH monitoring occasion informations
3GPP standard: TS38.213 V15.2.0 Section 13
| [in] | pdcch_config | PDCCH config received from MIB | 
| [in] | pbch_scs | PBCH subcarrier spacing | 
| [in] | common_scs | BWP subcarrier spacing | 
| [in] | i | SSB index | 
Definition at line 369 of file libphy.cpp.
| void free5GRAN::phy::signal_processing::compute_phase_decomp | ( | int * | cp_lengths, | 
| int * | cum_sum_symb, | ||
| float | sampling_rate, | ||
| float | f0, | ||
| int | num_symb_per_subframes, | ||
| complex< float > * | phase_decomp_factor | ||
| ) | 
Compute phase decompensation vector from frequency
3GPP standard: TS38.211 V15.2.0 Section 5.3
| [in] | cp_lengths | CP lengths | 
| [in] | cum_sum_symb | CP lengths cumulative sum | 
| [in] | sampling_rate | RF device sample rate | 
| [in] | f0 | Frequency in Hz | 
| [in] | num_symb_per_subframes | Number of symbols per subframes | 
| [out] | phase_decomp_factor | Phase de-compensator vector | 
Definition at line 511 of file libphy.cpp.
| void free5GRAN::phy::signal_processing::compute_rb_start_lrb_dci | ( | int | RIV, | 
| int | n_size_bwp, | ||
| int & | lrb, | ||
| int & | rb_start | ||
| ) | 
Compute RB start and LRB from DCI
3GPP standard: TS38.214 V15.2.0 Section 5.1.2.2.2
| [in] | RIV | Frequency domain resource allocation | 
| [in] | n_size_bwp | Active BWP size (in RB) | 
| [out] | lrb | Number of PDSCH RB | 
| [out] | rb_start | First PDSCH RB index in BWP | 
Definition at line 419 of file libphy.cpp.
| void free5GRAN::phy::signal_processing::fft | ( | vector< complex< float >> | time_domain_signal, | 
| vector< vector< complex< float >>> & | output_signal, | ||
| int | fft_size, | ||
| int * | cp_lengths, | ||
| int * | cum_sum_symb, | ||
| int | num_symbols, | ||
| int | num_sc_output, | ||
| int | first_symb_index, | ||
| int | offset | ||
| ) | 
Perform FFT on time domain signal to recover frequency domain signal (= RE grid)
| [in] | time_domain_signal | Input time domain signal | 
| [out] | output_signal | Output RE grid | 
| [in] | fft_size | FFT size (Number of samples per symbol, excluding CP) | 
| [in] | cp_lengths | Array of CP lengths for 1 subframe (= 1ms) | 
| [in] | cum_sum_symb | Cumulative sum of symbols length in one subframe | 
| [in] | num_symbols | Number of symbols in output RE grid (= Number of rows of output_signal) | 
| [in] | num_sc_output | Number of subcarriers in output RE grid (= Number of columns of output_signal). | 
| [in] | first_symb_index | Index of first symbol to be extracted in frame. | 
| [in] | offset | Number of amples to be left before extracting. Can be used while extracting specific slots in a radio frame. | 
Definition at line 543 of file libphy.cpp.
| void free5GRAN::phy::signal_processing::get_candidates_frames_indexes | ( | vector< vector< int >> & | frame_indexes, | 
| int * | frame_numbers, | ||
| int | sfn, | ||
| int | index_first_pss, | ||
| int | num_samples_before_pss, | ||
| int | frame_size | ||
| ) | 
Definition at line 580 of file libphy.cpp.
| void free5GRAN::phy::signal_processing::get_pdsch_dmrs_symbols | ( | const string & | type, | 
| int | duration, | ||
| int | additionnal_position, | ||
| int | l0, | ||
| int ** | output, | ||
| int & | size | ||
| ) | 
Retrieve DMRS symbols
3GPP standard: TS38.211 V15.2.0 Table 7.4.1.1.2-3
| [in] | additionnal_position | Number of additional positions | 
| [in] | l0 | First DMRS symbol | 
| [out] | output | DMRS symbols array | 
| [out] | size | Number of DMRS symbols | 
Definition at line 438 of file libphy.cpp.
| void free5GRAN::phy::signal_processing::hard_demodulation | ( | vector< complex< float >> | signal, | 
| int * | bits, | ||
| int | signal_length, | ||
| int | modulation_scheme | ||
| ) | 
Samples hard demodulation
| [in] | signal | Input IQ data to be demodulated | 
| [in] | signal_length | Number of symbols to be demodulated | 
| [in] | modulation_scheme | Modulation used (0: BPSK, 1: QPSK) | 
| [out] | bits | Output hard bits | 
Definition at line 166 of file libphy.cpp.
| void free5GRAN::phy::signal_processing::soft_demodulation | ( | vector< complex< float >> | signal, | 
| double * | soft_bits, | ||
| int | signal_length, | ||
| int | modulation_scheme | ||
| ) | 
Samples soft demodulation
| [in] | signal | Input IQ data to be demodulated | 
| [out] | bits | Output LLR bits | 
| [in] | signal_length | Number of symbols to be demodulated | 
| [in] | modulation_scheme | Modulation used (0: BPSK, 1: QPSK) | 
Definition at line 203 of file libphy.cpp.
| void free5GRAN::phy::signal_processing::transpose_signal | ( | vector< complex< float >> * | input_signal, | 
| float | freq_offset, | ||
| int | sample_rate, | ||
| int | input_length | ||
| ) | 
Shift signal in frequency domain by a frequency offset
| [in] | input_signal | Input signal to be shifted | 
| [in] | freq_offset | Frequency offset | 
| [in] | sample_rate | Signal sample rate | 
| [in] | input_length | Input signal length | 
Definition at line 282 of file libphy.cpp.