diff --git a/srsue/hdr/upper/rrc.h b/srsue/hdr/upper/rrc.h index 62a25b1ee..080f36451 100644 --- a/srsue/hdr/upper/rrc.h +++ b/srsue/hdr/upper/rrc.h @@ -216,6 +216,13 @@ class cell_t return false; } + void reset_sibs() { + has_valid_sib1 = false; + has_valid_sib2 = false; + has_valid_sib3 = false; + has_valid_sib13 = false; + } + uint16_t get_mcc() { if (has_valid_sib1) { if (sib1.N_plmn_ids > 0) { diff --git a/srsue/src/upper/rrc.cc b/srsue/src/upper/rrc.cc index b181e7495..620057cba 100644 --- a/srsue/src/upper/rrc.cc +++ b/srsue/src/upper/rrc.cc @@ -1845,6 +1845,19 @@ void rrc::process_pcch(byte_buffer_t *pdu) { rrc_log->info("Received paging for unknown identity\n"); } } + + if (pcch_msg.system_info_modification_present) { + if (pcch_msg.system_info_modification == LIBLTE_RRC_SYSTEM_INFO_MODIFICATION_TRUE) { + rrc_log->info("Received System Information notifcation update request.\n"); + // invalidate and then update all SIBs of serving cell + serving_cell->reset_sibs(); + if (configure_serving_cell()) { + rrc_log->info("All SIBs of serving cell obtained successfully\n"); + } else { + rrc_log->error("While obtaining SIBs of serving cell.\n"); + } + } + } } }