Implement support for paging based on LAC and CI.
This is a simple combination of the LAC and CI cases which have already been implemented. The BSC_Tests.TC_paging_imsi_nochan_lac_ci ttcn3 test passes. The switch statement in bssmap_handle_paging() is getting a bit large, and scoping of local variables could be improved. I will focus on cleaning this up later once paging functionality is complete. Change-Id: If7f596663a97a1db1a00f115a366f4a5a271c127 Depends: Id83f8b3b1ce80a39417176d99fd09f3b394fd19c Related: OS#2752
This commit is contained in:
parent
c7b017658d
commit
95543427f9
|
@ -395,6 +395,30 @@ static int bssmap_handle_paging(struct bsc_msc_data *msc,
|
|||
}
|
||||
}
|
||||
|
||||
case CELL_IDENT_LAC_AND_CI: {
|
||||
uint16_t ci, *ci_be;
|
||||
lacp_be = (uint16_t *)(&data[1]);
|
||||
ci_be = (uint16_t *)(&data[3]);
|
||||
while (remain >= sizeof(*lacp_be) + sizeof(*ci_be)) {
|
||||
lac = osmo_load16be(lacp_be);
|
||||
ci = osmo_load16be(ci_be);
|
||||
|
||||
llist_for_each_entry(bts, &msc->network->bts_list, list) {
|
||||
if (bts->location_area_code != lac)
|
||||
continue;
|
||||
if (bts->cell_identity != ci)
|
||||
continue;
|
||||
if (page_subscriber(msc, bts, tmsi, lac, mi_string, chan_needed) < 0)
|
||||
break;
|
||||
}
|
||||
|
||||
remain -= sizeof(*lacp_be) + sizeof(*ci_be);
|
||||
lacp_be++;
|
||||
ci_be++;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case CELL_IDENT_CI: {
|
||||
uint16_t *ci_be = (uint16_t *)(&data[1]);
|
||||
while (remain >= sizeof(*ci_be)) {
|
||||
|
|
Loading…
Reference in New Issue