ue,rrc_nr: temporarily add hard-coded SIB1 message for cell select

this will be remove shortly when SI reception is implemented but its
required right now to have the PLMN read correctly and to avoid
changes in the meas_cell_list class, etc. that require valid
values.
This commit is contained in:
Andre Puschmann 2022-01-21 11:46:55 +01:00
parent 9c9db176d5
commit 4f8991e41a
3 changed files with 22 additions and 0 deletions

View File

@ -71,6 +71,12 @@ void meas_cell_eutra::set_sib13(const asn1::rrc::sib_type13_r9_s& sib13_)
has_valid_sib13 = true;
}
void meas_cell_nr::set_sib1(const asn1::rrc_nr::sib1_s& sib1_)
{
sib1 = sib1_;
has_valid_sib1 = true;
}
bool meas_cell::is_sib_scheduled(uint32_t sib_index) const
{
return sib_info_map.find(sib_index) != sib_info_map.end();

View File

@ -340,6 +340,11 @@ void rrc_nr::handle_sib1(const sib1_s& sib1)
{
logger.info("SIB1 received, CellID=%d", meas_cells.serving_cell().get_cell_id() & 0xfff);
meas_cells.serving_cell().set_sib1(sib1);
// TODO: config basic config and remove early exit
return;
// clang-format off
// unhandled fields:
// - cellSelectionInfo

View File

@ -427,6 +427,17 @@ rrc_nr::cell_selection_proc::handle_cell_search_result(const rrc_interface_phy_n
// until cell selection is done, update PHY config to take the last found PCI
rrc_handle.phy_cfg.carrier.pci = result.pci;
// Until SI acquisition is implemented, provide hard-coded SIB for now
uint8_t msg[] = {0x74, 0x81, 0x01, 0x70, 0x10, 0x40, 0x04, 0x02, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x33, 0x60, 0x38,
0x05, 0x01, 0x00, 0x40, 0x1a, 0x00, 0x00, 0x06, 0x6c, 0x6d, 0x92, 0x21, 0xf3, 0x70, 0x40, 0x20,
0x00, 0x00, 0x80, 0x80, 0x00, 0x41, 0x06, 0x80, 0xa0, 0x90, 0x9c, 0x20, 0x08, 0x55, 0x19, 0x40,
0x00, 0x00, 0x33, 0xa1, 0xc6, 0xd9, 0x22, 0x40, 0x00, 0x00, 0x20, 0xb8, 0x94, 0x63, 0xc0, 0x09,
0x28, 0x44, 0x1b, 0x7e, 0xad, 0x8e, 0x1d, 0x00, 0x9e, 0x2d, 0xa3, 0x0a};
srsran::unique_byte_buffer_t pdu = srsran::make_byte_buffer();
memcpy(pdu->msg, msg, sizeof(msg));
pdu->N_bytes = sizeof(msg);
rrc_handle.write_pdu_bcch_dlsch(std::move(pdu));
if (not rrc_handle.phy->start_cell_select(cs_args)) {
Error("Could not set start cell search.");
return proc_outcome_t::error;