@@ -68,10 +68,56 @@ static bool is_partually_ul_slot(unsigned offset, const tdd_ul_dl_config_common&
6868 NOF_OFDM_SYM_PER_SLOT_NORMAL_CP;
6969}
7070
71+ static bool srs_config_validator (const du_cell_config& cell_cfg)
72+ {
73+ if (not cell_cfg.ue_ded_serv_cell_cfg .ul_config .has_value ()) {
74+ return false ;
75+ }
76+
77+ if (cell_cfg.ue_ded_serv_cell_cfg .ul_config .value ().init_ul_bwp .srs_cfg .has_value ()) {
78+ return false ;
79+ }
80+
81+ const auto & srs_cfg = cell_cfg.ue_ded_serv_cell_cfg .ul_config .value ().init_ul_bwp .srs_cfg .value ();
82+ if (srs_cfg.srs_res_set_list .size () != 1 ) {
83+ return false ;
84+ }
85+
86+ if (not std::holds_alternative<srs_config::srs_resource_set::periodic_resource_type>(
87+ srs_cfg.srs_res_set_list .front ().res_type )) {
88+ return false ;
89+ }
90+
91+ if (srs_cfg.srs_res_set_list .front ().srs_res_id_list .size () != 1 or
92+ srs_cfg.srs_res_set_list .front ().srs_res_id_list .front () != static_cast <srs_config::srs_res_id>(0U )) {
93+ return false ;
94+ }
95+
96+ if (srs_cfg.srs_res_list .size () != 1 or
97+ srs_cfg.srs_res_list .front ().id .ue_res_id != static_cast <srs_config::srs_res_id>(0U )) {
98+ return false ;
99+ }
100+
101+ if (srs_cfg.srs_res_list .front ().res_type != srs_resource_type::periodic) {
102+ return false ;
103+ }
104+
105+ if (not srs_cfg.srs_res_list .front ().periodicity_and_offset .has_value ()) {
106+ return false ;
107+ }
108+
109+ return true ;
110+ }
111+
71112du_srs_policy_max_ul_th::du_srs_policy_max_ul_th (span<const du_cell_config> cell_cfg_list_) :
72113 cells(cell_cfg_list_.begin(), cell_cfg_list_.end())
73114{
74115 for (auto & cell : cells) {
116+ if (not cell.cell_cfg .srs_cfg .srs_period .has_value ()) {
117+ continue ;
118+ }
119+
120+ srsran_assert (srs_config_validator (cell.cell_cfg ), " The SRS configuration is not valid" );
75121 std::optional<unsigned > c_srs =
76122 compute_srs_bw_param (cell.cell_cfg .ul_cfg_common .init_ul_bwp .generic_params .crbs .length ()).value ();
77123 srsran_assert (c_srs.has_value (), " SRS parameters didn't provide a valid C_SRS value" );
0 commit comments