20 #include "../libphy/libphy.h" 21 #include "../../utils/sequence_generator/sequence_generator.h" 22 #include "../transport_channel/transport_channel.h" 23 #include "../../variables/common_variables/common_variables.h" 24 #include "../../utils/common_utils/common_utils.h" 47 int pdcch_bits[agg_level * 6 * 9 * 2];
53 int c_seq[agg_level * 6 * 9 * 2];
78 int ds_sch_bits_length;
80 ds_sch_bits_length = 2 * pdsch_samples.size();
81 int c_seq[ds_sch_bits_length];
82 double soft_bits[ds_sch_bits_length];
91 c_init = 65535 * pow(2,15) + pci;
144 ref[2][symbol - 1][i] = 0;
145 if (symbol == 1 || symbol == 3){
146 if (pci % 4 != i % 4){
147 ref[0][symbol - 1][i] = 1;
148 ref[1][symbol - 1][i] = 0;
150 ref[0][symbol - 1][i] = 0;
151 ref[1][symbol - 1][i] = 1;
153 }
else if (symbol == 2){
155 ref[0][symbol - 1][i] = 1;
156 ref[1][symbol - 1][i] = 0;
158 ref[0][symbol - 1][i] = 0;
159 ref[1][symbol - 1][i] = 1;
161 ref[0][symbol - 1][i] = 0;
162 ref[1][symbol - 1][i] = 0;
164 if (i >= 56 && i <=182){
165 ref[2][symbol - 1][i] = 1;
182 for (
int symb = 0; symb < pdcch_ss_mon_occ.
n_symb_coreset; symb ++){
183 for (
int k = 0 ; k < agg_level ; k ++) {
186 for (
int s = 0; s < 12; s++) {
188 ref[1][symb][reg_bundles[k] * 12 * height_reg_rb + (reg/pdcch_ss_mon_occ.
n_symb_coreset) * 12 + s] = 1;
189 ref[0][symb][reg_bundles[k] * 12 * height_reg_rb + (reg/pdcch_ss_mon_occ.
n_symb_coreset) * 12 + s] = 0;
191 ref[1][symb][reg_bundles[k] * 12 * height_reg_rb + (reg/pdcch_ss_mon_occ.
n_symb_coreset) * 12 + s] = 0;
192 ref[0][symb][reg_bundles[k] * 12 * height_reg_rb + (reg/pdcch_ss_mon_occ.
n_symb_coreset) * 12 + s] = 1;
211 for (
int symb = 0; symb < L; symb ++){
212 for (
int i = 0; i < 12 * lrb; i++){
213 if (dmrs_symbol_array[symb]){
void scramble(int *input_bits, int *c_seq, int *output_bits, int length, int offset)
void soft_demodulation(vector< complex< float >> signal, double *soft_bits, int signal_length, int modulation_scheme)
int INTERVAL_SSB_NO_PBCH_DMRS[2]
void decode_pbch(vector< complex< float >> pbch_symbols, int i_ssb, int pci, int *bch_bits)
void decode_pdsch(vector< complex< float >> pdsch_samples, double *unscrambled_soft_bits, int pci)
void compute_pdcch_indexes(vector< vector< vector< int >>> &ref, free5GRAN::pdcch_t0ss_monitoring_occasions pdcch_ss_mon_occ, int agg_level, int *reg_bundles, int height_reg_rb)
int SIZE_SSB_PBCH_SYMBOLS
void decode_pdcch(vector< complex< float >> pdcch_symbols, int *dci_bits, int agg_level, int *reg_index, int *reg_index_sorted, int pci)
void compute_pdsch_indexes(vector< vector< vector< int >>> &ref, bool dmrs_symbol_array[], int L, int lrb)
void compute_pbch_indexes(vector< vector< vector< int >>> &ref, int pci)
void hard_demodulation(vector< complex< float >> signal, int *bits, int signal_length, int modulation_scheme)
void generate_c_sequence(long c_init, int length, int *output_sequence, int demod_type)