Add neighboring cell measurements

Implement intra-frequency neighboring cell measurements including:
- Measurement configuration structures
- Blind search and known PCI validation
- RSRP measurements for neighbor cells

Co-authored-by: Roberto Louro Magueta <rmagueta@allbesmart.pt>
This commit is contained in:
alexjiao
2026-01-09 20:05:11 +08:00
co-authored by Roberto Louro Magueta
parent dfd3ad267e
commit 3fdbe01157
9 changed files with 523 additions and 26 deletions
+14
View File
@@ -2858,3 +2858,17 @@ void nr_rrc_mac_config_req_cg(module_id_t module_id,
ret = pthread_mutex_unlock(&mac->if_mutex);
AssertFatal(!ret, "mutex failed %d\n", ret);
}
void nr_rrc_mac_config_req_meas(module_id_t module_id, const nr_neighbor_cell_info_t *neighbor_cells, int num_neighbors)
{
NR_UE_MAC_INST_t *mac = get_mac_inst(module_id);
for (int i = 0; i < num_neighbors && i < NUMBER_OF_NEIGHBORING_CELLS_MAX; i++) {
fapi_nr_neighboring_cell_t *phy_cell = &mac->phy_config.config_req.meas_config.nr_neighboring_cell[i];
phy_cell->Nid_cell = neighbor_cells[i].Nid_cell;
phy_cell->ssb_freq = neighbor_cells[i].ssb_freq;
phy_cell->active = neighbor_cells[i].active;
}
mac->if_module->phy_config_request(&mac->phy_config);
}
+8
View File
@@ -97,6 +97,14 @@ void nr_rrc_mac_config_other_sib(module_id_t module_id, NR_SIB19_r17_t *sib19_r1
void nr_rrc_mac_resume_rb(module_id_t module_id, bool is_srb, int rb_id);
void nr_rrc_mac_config_req_reset(module_id_t module_id, NR_UE_MAC_reset_cause_t cause);
typedef struct nr_neighbor_cell_info {
int16_t Nid_cell; // Physical Cell ID
uint32_t ssb_freq; // SSB frequency (ARFCN)
uint8_t active; // 1 = active, 0 = inactive
} nr_neighbor_cell_info_t;
void nr_rrc_mac_config_req_meas(module_id_t module_id, const nr_neighbor_cell_info_t *neighbor_cells, int num_neighbors);
/**\brief initialization NR UE MAC instance(s)*/
NR_UE_MAC_INST_t * nr_l2_init_ue(int nb_inst);