@@ -887,9 +887,9 @@ void calculate_pdsch_config_diff(asn1::rrc_nr::pdsch_cfg_s& out, const pdsch_con
887887 // TODO: Remaining.
888888}
889889
890- void calculate_bwp_dl_dedicated_diff (asn1::rrc_nr::bwp_dl_ded_s& out,
891- const bwp_downlink_dedicated& src,
892- const bwp_downlink_dedicated& dest)
890+ static bool calculate_bwp_dl_dedicated_diff (asn1::rrc_nr::bwp_dl_ded_s& out,
891+ const bwp_downlink_dedicated& src,
892+ const bwp_downlink_dedicated& dest)
893893{
894894 if ((dest.pdcch_cfg .has_value () && not src.pdcch_cfg .has_value ()) ||
895895 (dest.pdcch_cfg .has_value () && src.pdcch_cfg .has_value () && dest.pdcch_cfg != src.pdcch_cfg )) {
@@ -913,6 +913,8 @@ void calculate_bwp_dl_dedicated_diff(asn1::rrc_nr::bwp_dl_ded_s& out,
913913 out.pdsch_cfg .set_release ();
914914 }
915915 // TODO: sps-Config and radioLinkMonitoringConfig.
916+
917+ return out.pdcch_cfg_present || out.pdsch_cfg_present ;
916918}
917919
918920asn1::rrc_nr::pucch_res_set_s srsran::srs_du::make_asn1_rrc_pucch_resource_set (const pucch_resource_set& cfg)
@@ -2071,9 +2073,9 @@ void calculate_srs_config_diff(asn1::rrc_nr::srs_cfg_s& out, const srs_config& s
20712073 }
20722074}
20732075
2074- void calculate_bwp_ul_dedicated_diff (asn1::rrc_nr::bwp_ul_ded_s& out,
2075- const bwp_uplink_dedicated& src,
2076- const bwp_uplink_dedicated& dest)
2076+ static bool calculate_bwp_ul_dedicated_diff (asn1::rrc_nr::bwp_ul_ded_s& out,
2077+ const bwp_uplink_dedicated& src,
2078+ const bwp_uplink_dedicated& dest)
20772079{
20782080 if ((dest.pucch_cfg .has_value () && not src.pucch_cfg .has_value ()) ||
20792081 (dest.pucch_cfg .has_value () && src.pucch_cfg .has_value () && dest.pucch_cfg != src.pucch_cfg )) {
@@ -2107,14 +2109,18 @@ void calculate_bwp_ul_dedicated_diff(asn1::rrc_nr::bwp_ul_ded_s& out,
21072109 out.srs_cfg .set_release ();
21082110 }
21092111 // TODO: Remaining.
2112+
2113+ return out.pucch_cfg_present || out.pusch_cfg_present || out.srs_cfg_present ;
21102114}
21112115
2112- void calculate_uplink_config_diff (asn1::rrc_nr::ul_cfg_s& out, const uplink_config& src, const uplink_config& dest)
2116+ static bool
2117+ calculate_uplink_config_diff (asn1::rrc_nr::ul_cfg_s& out, const uplink_config& src, const uplink_config& dest)
21132118{
2114- out.init_ul_bwp_present = true ;
2115- calculate_bwp_ul_dedicated_diff (out.init_ul_bwp , src.init_ul_bwp , dest.init_ul_bwp );
2119+ out.init_ul_bwp_present = calculate_bwp_ul_dedicated_diff (out.init_ul_bwp , src.init_ul_bwp , dest.init_ul_bwp );
21162120
21172121 // TODO: Remaining.
2122+
2123+ return out.init_ul_bwp_present ;
21182124}
21192125
21202126void calculate_pdsch_serving_cell_cfg_diff (asn1::rrc_nr::pdsch_serving_cell_cfg_s& out,
@@ -2211,17 +2217,15 @@ void calculate_pdsch_serving_cell_cfg_diff(asn1::rrc_nr::pdsch_serving_cell_cfg_
22112217 }
22122218}
22132219
2214- void calculate_serving_cell_config_diff (asn1::rrc_nr::serving_cell_cfg_s& out,
2215- const serving_cell_config& src,
2216- const serving_cell_config& dest)
2220+ static bool calculate_serving_cell_config_diff (asn1::rrc_nr::serving_cell_cfg_s& out,
2221+ const serving_cell_config& src,
2222+ const serving_cell_config& dest)
22172223{
2218- out.init_dl_bwp_present = true ;
2219- calculate_bwp_dl_dedicated_diff (out.init_dl_bwp , src.init_dl_bwp , dest.init_dl_bwp );
2224+ out.init_dl_bwp_present = calculate_bwp_dl_dedicated_diff (out.init_dl_bwp , src.init_dl_bwp , dest.init_dl_bwp );
22202225
22212226 // UplinkConfig.
22222227 if (dest.ul_config .has_value ()) {
2223- out.ul_cfg_present = true ;
2224- calculate_uplink_config_diff (
2228+ out.ul_cfg_present = calculate_uplink_config_diff (
22252229 out.ul_cfg , src.ul_config .has_value () ? src.ul_config .value () : uplink_config{}, dest.ul_config .value ());
22262230 }
22272231
@@ -2253,6 +2257,9 @@ void calculate_serving_cell_config_diff(asn1::rrc_nr::serving_cell_cfg_s& out,
22532257
22542258 // TAG-ID.
22552259 out.tag_id = dest.tag_id ;
2260+
2261+ return out.init_dl_bwp_present || out.ul_cfg_present || out.pdsch_serving_cell_cfg_present ||
2262+ out.csi_meas_cfg_present ;
22562263}
22572264
22582265asn1::rrc_nr::sched_request_to_add_mod_s
@@ -2568,9 +2575,9 @@ void make_asn1_rrc_phr_config(asn1::rrc_nr::phr_cfg_s& out, const phr_config& cf
25682575 }
25692576}
25702577
2571- void calculate_mac_cell_group_config_diff (asn1::rrc_nr::mac_cell_group_cfg_s& out,
2572- const mac_cell_group_config& src,
2573- const mac_cell_group_config& dest)
2578+ static bool calculate_mac_cell_group_config_diff (asn1::rrc_nr::mac_cell_group_cfg_s& out,
2579+ const mac_cell_group_config& src,
2580+ const mac_cell_group_config& dest)
25742581{
25752582 calculate_addmodremlist_diff (
25762583 out.sched_request_cfg .sched_request_to_add_mod_list ,
@@ -2610,6 +2617,8 @@ void calculate_mac_cell_group_config_diff(asn1::rrc_nr::mac_cell_group_cfg_s& ou
26102617 }
26112618
26122619 out.skip_ul_tx_dyn = dest.skip_uplink_tx_dynamic ;
2620+
2621+ return out.sched_request_cfg_present || out.bsr_cfg_present || out.tag_cfg_present || out.phr_cfg_present ;
26132622}
26142623
26152624void srsran::srs_du::calculate_cell_group_config_diff (asn1::rrc_nr::cell_group_cfg_s& out,
@@ -2624,18 +2633,19 @@ void srsran::srs_du::calculate_cell_group_config_diff(asn1::rrc_nr::cell_group_c
26242633 [](const rlc_bearer_config& b) { return make_asn1_rrc_rlc_bearer (b); },
26252634 [](const rlc_bearer_config& b) { return (uint8_t )b.lcid ; });
26262635
2627- out.sp_cell_cfg_present = true ;
2628- out.sp_cell_cfg .serv_cell_idx_present = false ;
26292636 if (dest.cells .contains (0 )) {
2630- out.sp_cell_cfg .serv_cell_idx = dest.cells [0 ].serv_cell_idx ;
2631- out.sp_cell_cfg .sp_cell_cfg_ded_present = true ;
2632- calculate_serving_cell_config_diff (out.sp_cell_cfg .sp_cell_cfg_ded ,
2633- src.cells .contains (0 ) ? src.cells [0 ].serv_cell_cfg : serving_cell_config{},
2634- dest.cells [0 ].serv_cell_cfg );
2637+ out.sp_cell_cfg .serv_cell_idx_present = true ;
2638+ out.sp_cell_cfg .serv_cell_idx = dest.cells [0 ].serv_cell_idx ;
2639+ out.sp_cell_cfg .sp_cell_cfg_ded_present =
2640+ calculate_serving_cell_config_diff (out.sp_cell_cfg .sp_cell_cfg_ded ,
2641+ src.cells .contains (0 ) ? src.cells [0 ].serv_cell_cfg : serving_cell_config{},
2642+ dest.cells [0 ].serv_cell_cfg );
2643+
2644+ out.sp_cell_cfg_present = out.sp_cell_cfg .sp_cell_cfg_ded_present ;
26352645 }
26362646
2637- out.mac_cell_group_cfg_present = true ;
2638- calculate_mac_cell_group_config_diff (out.mac_cell_group_cfg , src.mcg_cfg , dest.mcg_cfg );
2647+ out.mac_cell_group_cfg_present =
2648+ calculate_mac_cell_group_config_diff (out.mac_cell_group_cfg , src.mcg_cfg , dest.mcg_cfg );
26392649
26402650 out.phys_cell_group_cfg_present = true ;
26412651 if (dest.pcg_cfg .p_nr_fr1 .has_value ()) {
0 commit comments