free5GRAN  V1.0
libphy.h
Go to the documentation of this file.
1 /*
2  * Copyright 2020 Telecom Paris
3 
4  Licensed under the Apache License, Version 2.0 (the "License");
5  you may not use this file except in compliance with the License.
6  You may obtain a copy of the License at
7 
8  http://www.apache.org/licenses/LICENSE-2.0
9 
10  Unless required by applicable law or agreed to in writing, software
11  distributed under the License is distributed on an "AS IS" BASIS,
12  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  See the License for the specific language governing permissions and
14  limitations under the License.
15  */
16 
17 #include <complex>
18 #include <vector>
19 #include "../../variables/common_structures/common_structures.h"
20 using namespace std;
21 
22 
23 namespace free5GRAN {
24  namespace phy {
25  namespace signal_processing {
26 
27  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);
28 
29  void hard_demodulation(vector<complex<float>> signal, int * bits, int signal_length, int modulation_scheme);
30 
31  void soft_demodulation(vector<complex<float>> signal, double * soft_bits, int signal_length, int modulation_scheme);
32 
33  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);
34 
35  void transpose_signal(vector<complex<float>> *input_signal, float freq_offset, int sample_rate, int input_length);
36 
37  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);
38 
39  double compute_freq_from_gscn(int gscn);
40 
41  free5GRAN::pdcch_t0ss_monitoring_occasions compute_pdcch_t0_ss_monitoring_occasions(int pdcch_config, int pbch_scs, int common_scs, int i);
42 
43  void compute_rb_start_lrb_dci(int RIV, int n_size_bwp, int &lrb, int &rb_start);
44 
45  void get_pdsch_dmrs_symbols(const string &type, int duration, int additionnal_position, int l0, int **output, int &size);
46 
47  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);
48 
49  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);
50 
51  int compute_nre(int num_symb_pdsch, int num_dmrs_symb);
52 
53  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);
54 
55  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);
56 
57  }
58  }
59 }
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)
Definition: libphy.cpp:511
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)
Definition: libphy.cpp:580
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)
Definition: libphy.cpp:543
void soft_demodulation(vector< complex< float >> signal, double *soft_bits, int signal_length, int modulation_scheme)
Definition: libphy.cpp:203
void get_pdsch_dmrs_symbols(const string &type, int duration, int additionnal_position, int l0, int **output, int &size)
Definition: libphy.cpp:438
Definition: phy.h:27
free5GRAN::pdcch_t0ss_monitoring_occasions compute_pdcch_t0_ss_monitoring_occasions(int pdcch_config, int pbch_scs, int common_scs, int i)
Definition: libphy.cpp:369
void transpose_signal(vector< complex< float >> *input_signal, float freq_offset, int sample_rate, int input_length)
Definition: libphy.cpp:282
void compute_rb_start_lrb_dci(int RIV, int n_size_bwp, int &lrb, int &rb_start)
Definition: libphy.cpp:419
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)
Definition: libphy.cpp:27
int compute_nre(int num_symb_pdsch, int num_dmrs_symb)
Definition: libphy.cpp:532
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)
Definition: libphy.cpp:298
double compute_freq_from_gscn(int gscn)
Definition: libphy.cpp:338
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)
Definition: libphy.cpp:483
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)
Definition: libphy.cpp:247
void hard_demodulation(vector< complex< float >> signal, int *bits, int signal_length, int modulation_scheme)
Definition: libphy.cpp:166