diff --git a/srsenb/test/phy/enb_phy_test.cc b/srsenb/test/phy/enb_phy_test.cc index 57fcb78f8..c05023ed0 100644 --- a/srsenb/test/phy/enb_phy_test.cc +++ b/srsenb/test/phy/enb_phy_test.cc @@ -265,16 +265,16 @@ private: static constexpr float prob_ul_grant = 0.10f; static constexpr uint32_t cfi = 2; - srsenb::phy_cfg_t phy_cfg; - std::mutex mutex; - std::condition_variable cvar; - srslte::log_filter log_h; - srslte::tti_sync_cv tti_sync; - srslte_softbuffer_tx_t softbuffer_tx = {}; - srslte_softbuffer_rx_t softbuffer_rx[SRSLTE_MAX_CARRIERS][SRSLTE_FDD_NOF_HARQ] = {}; - uint8_t* data = nullptr; - uint16_t ue_rnti = 0; - srslte_random_t random_gen = nullptr; + srsenb::phy_cell_cfg_list_t phy_cell_cfg; + std::mutex mutex; + std::condition_variable cvar; + srslte::log_filter log_h; + srslte::tti_sync_cv tti_sync; + srslte_softbuffer_tx_t softbuffer_tx = {}; + srslte_softbuffer_rx_t softbuffer_rx[SRSLTE_MAX_CARRIERS][SRSLTE_FDD_NOF_HARQ] = {}; + uint8_t* data = nullptr; + uint16_t ue_rnti = 0; + srslte_random_t random_gen = nullptr; CALLBACK(sr_detected); CALLBACK(rach_detected); @@ -336,7 +336,7 @@ public: log_h("STACK"), ue_rnti(rnti_), random_gen(srslte_random_init(rnti_)), - phy_cfg(phy_cfg_), + phy_cell_cfg(phy_cfg_.phy_cell_cfg), active_cell_list(active_cell_list_) { log_h.set_level(log_level); @@ -349,9 +349,9 @@ public: srslte_pdcch_t pdcch = {}; srslte_regs_t regs = {}; - srslte_regs_init(®s, phy_cfg.phy_cell_cfg[0].cell); - srslte_pdcch_init_enb(&pdcch, phy_cfg.phy_cell_cfg[0].cell.nof_prb); - srslte_pdcch_set_cell(&pdcch, ®s, phy_cfg.phy_cell_cfg[0].cell); + srslte_regs_init(®s, phy_cell_cfg[0].cell); + srslte_pdcch_init_enb(&pdcch, phy_cell_cfg[0].cell.nof_prb); + srslte_pdcch_set_cell(&pdcch, ®s, phy_cell_cfg[0].cell); for (uint32_t i = 0; i < SRSLTE_NOF_SF_X_FRAME; i++) { srslte_dl_sf_cfg_t sf_cfg_dl; ZERO_OBJECT(sf_cfg_dl); @@ -375,10 +375,10 @@ public: srslte_regs_free(®s); // Find a valid UL DCI RIV - uint32_t L_prb = phy_cfg.phy_cell_cfg[0].cell.nof_prb - 2; + uint32_t L_prb = phy_cell_cfg[0].cell.nof_prb - 2; do { if (srslte_dft_precoding_valid_prb(L_prb)) { - ul_riv = srslte_ra_type2_to_riv(L_prb, 1, phy_cfg.phy_cell_cfg[0].cell.nof_prb); + ul_riv = srslte_ra_type2_to_riv(L_prb, 1, phy_cell_cfg[0].cell.nof_prb); } else { L_prb--; } @@ -532,6 +532,7 @@ public: dl_sched.pdsch[0].data[0] = data; dl_sched.pdsch[0].data[1] = data; dl_sched.pdsch[0].dci.format = SRSLTE_DCI_FORMAT1; + dl_sched.pdsch[0].dci.tpc_pucch = (location.ncce + 1) % SRSLTE_PUCCH_SIZE_AN_CS; // Push grant info in queue tti_dl_info_t tti_dl_info = {}; @@ -1028,6 +1029,10 @@ public: }; private: + // Test constants + static const uint32_t delta_pucch = 2; + static const uint32_t N_pucch_1 = 2; + // Private classes unique_dummy_radio_t radio; unique_dummy_stack_t stack; @@ -1077,23 +1082,23 @@ public: // Create base UE dedicated configuration srslte::phy_cfg_t dedicated = {}; dedicated.ul_cfg.pucch.ack_nack_feedback_mode = srslte_string_ack_nack_feedback_mode(args.ack_mode.c_str()); - dedicated.ul_cfg.pucch.delta_pucch_shift = 2; + dedicated.ul_cfg.pucch.delta_pucch_shift = delta_pucch; dedicated.ul_cfg.pucch.n_rb_2 = 2; dedicated.ul_cfg.pucch.N_cs = 0; - dedicated.ul_cfg.pucch.n_pucch_sr = 1; - dedicated.ul_cfg.pucch.N_pucch_1 = 2; + dedicated.ul_cfg.pucch.n_pucch_sr = 0; + dedicated.ul_cfg.pucch.N_pucch_1 = N_pucch_1; dedicated.ul_cfg.pucch.n_pucch_2 = 5; dedicated.ul_cfg.pucch.simul_cqi_ack = true; dedicated.ul_cfg.pucch.sr_configured = true; dedicated.ul_cfg.pucch.I_sr = 5; - dedicated.ul_cfg.pucch.n1_pucch_an_cs[0][0] = 6; - dedicated.ul_cfg.pucch.n1_pucch_an_cs[1][0] = 6; - dedicated.ul_cfg.pucch.n1_pucch_an_cs[2][0] = 6; - dedicated.ul_cfg.pucch.n1_pucch_an_cs[3][0] = 6; - dedicated.ul_cfg.pucch.n1_pucch_an_cs[0][1] = 7; - dedicated.ul_cfg.pucch.n1_pucch_an_cs[1][1] = 7; - dedicated.ul_cfg.pucch.n1_pucch_an_cs[2][1] = 7; - dedicated.ul_cfg.pucch.n1_pucch_an_cs[3][1] = 7; + dedicated.ul_cfg.pucch.n1_pucch_an_cs[0][0] = N_pucch_1 + delta_pucch * 1; + dedicated.ul_cfg.pucch.n1_pucch_an_cs[1][0] = N_pucch_1 + delta_pucch * 2; + dedicated.ul_cfg.pucch.n1_pucch_an_cs[2][0] = N_pucch_1 + delta_pucch * 3; + dedicated.ul_cfg.pucch.n1_pucch_an_cs[3][0] = N_pucch_1 + delta_pucch * 4; + dedicated.ul_cfg.pucch.n1_pucch_an_cs[0][1] = N_pucch_1 + delta_pucch * 2; + dedicated.ul_cfg.pucch.n1_pucch_an_cs[1][1] = N_pucch_1 + delta_pucch * 3; + dedicated.ul_cfg.pucch.n1_pucch_an_cs[2][1] = N_pucch_1 + delta_pucch * 4; + dedicated.ul_cfg.pucch.n1_pucch_an_cs[3][1] = N_pucch_1 + delta_pucch * 1; dedicated.dl_cfg.cqi_report.periodic_configured = true; dedicated.dl_cfg.cqi_report.pmi_idx = 25; dedicated.dl_cfg.cqi_report.periodic_mode = SRSLTE_CQI_MODE_20; @@ -1230,5 +1235,7 @@ int main(int argc, char** argv) TESTASSERT(test_bench->run_tti() >= SRSLTE_SUCCESS); } + std::cout << "Passed" << std::endl; + return SRSLTE_SUCCESS; }