Signed-off-by: Carlo Galiotto <carlo@srs.io>
master
Carlo Galiotto 3 years ago committed by carlo-gal
parent 290fdd068e
commit a53e7c9673

@ -619,6 +619,10 @@ int srsran_ra_ul_nr_pucch_resource(const srsran_pucch_nr_hl_cfg_t* pucch_cfg,
return SRSRAN_SUCCESS; return SRSRAN_SUCCESS;
} }
if (uci_cfg->ack.count > 0 && uci_cfg->nof_csi == 1 && uci_cfg->csi[0].cfg.type == SRSRAN_CSI_REPORT_TYPE_PERIODIC) {
printf("This is point where we fail");
}
// If a UE does not have dedicated PUCCH resource configuration, provided by PUCCH-ResourceSet in PUCCH-Config, // If a UE does not have dedicated PUCCH resource configuration, provided by PUCCH-ResourceSet in PUCCH-Config,
// a PUCCH resource set is provided by pucch-ResourceCommon through an index to a row of Table 9.2.1-1 for size // a PUCCH resource set is provided by pucch-ResourceCommon through an index to a row of Table 9.2.1-1 for size
// transmission of HARQ-ACK information on PUCCH in an initial UL BWP of N BWP PRBs. // transmission of HARQ-ACK information on PUCCH in an initial UL BWP of N BWP PRBs.

@ -182,6 +182,10 @@ bool slot_worker::work_ul()
for (uint32_t i = 0; i < (uint32_t)pucch.candidates.size(); i++) { for (uint32_t i = 0; i < (uint32_t)pucch.candidates.size(); i++) {
pucch_info[i].uci_data.cfg = pucch.candidates[i].uci_cfg; pucch_info[i].uci_data.cfg = pucch.candidates[i].uci_cfg;
if (pucch_info[i].uci_data.cfg.nof_csi == 1 && pucch_info[i].uci_data.cfg.ack.count > 0) {
printf("Stop here");
}
// Decode PUCCH // Decode PUCCH
if (srsran_gnb_ul_get_pucch(&gnb_ul, if (srsran_gnb_ul_get_pucch(&gnb_ul,
&ul_slot_cfg, &ul_slot_cfg,

@ -641,8 +641,8 @@ void fill_pucch_cfg_from_enb_cfg(const rrc_nr_cfg_t& cfg, uint32_t cc, pucch_cfg
uint32_t j = 0, j2 = 0; uint32_t j = 0, j2 = 0;
for (uint32_t i = 0; i < out.res_to_add_mod_list.size(); ++i) { for (uint32_t i = 0; i < out.res_to_add_mod_list.size(); ++i) {
out.res_to_add_mod_list[i].pucch_res_id = i; out.res_to_add_mod_list[i].pucch_res_id = i;
out.res_to_add_mod_list[i].intra_slot_freq_hop_present = true; out.res_to_add_mod_list[i].intra_slot_freq_hop_present = false;
out.res_to_add_mod_list[i].second_hop_prb_present = true; out.res_to_add_mod_list[i].second_hop_prb_present = false;
if (i < 8 or i == 16) { if (i < 8 or i == 16) {
out.res_to_add_mod_list[i].start_prb = 51; out.res_to_add_mod_list[i].start_prb = 51;
out.res_to_add_mod_list[i].second_hop_prb = 0; out.res_to_add_mod_list[i].second_hop_prb = 0;
@ -675,6 +675,9 @@ void fill_pucch_cfg_from_enb_cfg(const rrc_nr_cfg_t& cfg, uint32_t cc, pucch_cfg
out.format2.set_setup(); out.format2.set_setup();
out.format2.setup().max_code_rate_present = true; out.format2.setup().max_code_rate_present = true;
out.format2.setup().max_code_rate = pucch_max_code_rate_opts::zero_dot25; out.format2.setup().max_code_rate = pucch_max_code_rate_opts::zero_dot25;
// NOTE: IMPORTANT!! The gNB expects the CSI to be reported along with HARQ-ACK
// If simul_harq_ack_csi_present = false, PUCCH might not be decoded properly when CSI is reported
out.format2.setup().simul_harq_ack_csi_present = true;
// SR resources // SR resources
out.sched_request_res_to_add_mod_list.resize(1); out.sched_request_res_to_add_mod_list.resize(1);

@ -342,10 +342,14 @@ void rrc_nr::config_mac()
cell.ssb_scs = serv_cell.ssb_subcarrier_spacing; cell.ssb_scs = serv_cell.ssb_subcarrier_spacing;
} else { } else {
cell.bwps[0].pdsch.p_zp_csi_rs_set = {}; cell.bwps[0].pdsch.p_zp_csi_rs_set = {};
bzero(cell.bwps[0].pdsch.nzp_csi_rs_sets, sizeof(cell.bwps[0].pdsch.nzp_csi_rs_sets)); bzero(cell.bwps[0].pdsch.nzp_csi_rs_sets, sizeof(cell.bwps[0].pdsch.nzp_csi_rs_sets));
cell.ssb_positions_in_burst = du_cfg->cell(cc).serv_cell_cfg_common().ssb_positions_in_burst; cell.ssb_positions_in_burst = du_cfg->cell(cc).serv_cell_cfg_common().ssb_positions_in_burst;
cell.ssb_periodicity_ms = du_cfg->cell(cc).serv_cell_cfg_common().ssb_periodicity_serving_cell.to_number(); cell.ssb_periodicity_ms = du_cfg->cell(cc).serv_cell_cfg_common().ssb_periodicity_serving_cell.to_number();
cell.ssb_scs.value = (subcarrier_spacing_e::options)cfg.cell_list[0].phy_cell.carrier.scs; cell.ssb_scs.value = (subcarrier_spacing_e::options)cfg.cell_list[0].phy_cell.carrier.scs;
// bzero(cell.bwps[0].pdsch.nzp_csi_rs_sets, sizeof(cell.bwps[0].pdsch.nzp_csi_rs_sets));
bool valid_cfg = srsran::make_pdsch_cfg_from_serv_cell(base_sp_cell_cfg.sp_cell_cfg_ded, &cell.bwps[0].pdsch);
srsran_assert(valid_cfg, "Invalid NR cell configuration.");
} }
// Set SIB1 and SI messages // Set SIB1 and SI messages

@ -171,6 +171,17 @@ test_bench::args_t::args_t(int argc, char** argv)
// Load default reference configuration // Load default reference configuration
phy_cfg = srsran::phy_cfg_nr_default_t(srsran::phy_cfg_nr_default_t::reference_cfg_t(reference_cfg_str)); phy_cfg = srsran::phy_cfg_nr_default_t(srsran::phy_cfg_nr_default_t::reference_cfg_t(reference_cfg_str));
#if 0
// configure nzp
auto& uecfg_set_0 = phy_cfg.pdsch.nzp_csi_rs_sets[0];
uecfg_set_0.trs_info = true;
uecfg_set_0.count = 1;
auto& res_0 = uecfg_set_0.data[0];
res_0.id = 0;
res_0.resource_mapping.row = srsran_csi_rs_resource_mapping_row_2;
#endif
// Calculate the DL signal power from the number of PRBs // Calculate the DL signal power from the number of PRBs
dl_channel.awgn_signal_power_dBfs = srsran_gnb_dl_get_maximum_signal_power_dBfs(phy_cfg.carrier.nof_prb); dl_channel.awgn_signal_power_dBfs = srsran_gnb_dl_get_maximum_signal_power_dBfs(phy_cfg.carrier.nof_prb);

Loading…
Cancel
Save