diff options
author | Harald Welte <laforge@gnumonks.org> | 2011-06-26 14:43:46 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2011-06-26 14:43:46 +0200 |
commit | 1cf43ece122c8f004335661a2de7e43c23c9720a (patch) | |
tree | 55a6845395c35afd97c29f66a5be6b21c3456084 /openbsc/src/libbsc/paging.c | |
parent | bc82f92a8d8e214b42525f40c081d482a1a6a961 (diff) |
generalize function for calculation of the paging group
Diffstat (limited to 'openbsc/src/libbsc/paging.c')
-rw-r--r-- | openbsc/src/libbsc/paging.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/openbsc/src/libbsc/paging.c b/openbsc/src/libbsc/paging.c index 371a7a673..55d1a8541 100644 --- a/openbsc/src/libbsc/paging.c +++ b/openbsc/src/libbsc/paging.c @@ -54,19 +54,20 @@ void *tall_paging_ctx; #define PAGING_TIMER 0, 500000 -static unsigned int calculate_group(struct gsm_bts *bts, struct gsm_subscriber *subscr) +static unsigned int +gsm0502_calc_paging_group(struct gsm48_control_channel_descr *chan_desc, uint64_t imsi) { int ccch_conf; int bs_cc_chans; int blocks; unsigned int group; - ccch_conf = bts->si_common.chan_desc.ccch_conf; + ccch_conf = chan_desc->ccch_conf; bs_cc_chans = rsl_ccch_conf_to_bs_cc_chans(ccch_conf); /* code word + 2, as 2 channels equals 0x0 */ - blocks = gsm48_number_of_paging_subchannels(&bts->si_common.chan_desc); - group = gsm0502_get_paging_group(str_to_imsi(subscr->imsi), - bs_cc_chans, blocks); + blocks = gsm48_number_of_paging_subchannels(chan_desc); + group = gsm0502_get_paging_group(imsi, bs_cc_chans, blocks); + return group; } @@ -87,6 +88,7 @@ static void page_ms(struct gsm_paging_request *request) uint8_t mi[128]; unsigned int mi_len; unsigned int page_group; + struct gsm_bts *bts = request->bts; LOGP(DPAG, LOGL_INFO, "Going to send paging commands: imsi: '%s' tmsi: '0x%x'\n", request->subscr->imsi, request->subscr->tmsi); @@ -96,8 +98,9 @@ static void page_ms(struct gsm_paging_request *request) else mi_len = gsm48_generate_mid_from_tmsi(mi, request->subscr->tmsi); - page_group = calculate_group(request->bts, request->subscr); - gsm0808_page(request->bts, page_group, mi_len, mi, request->chan_type); + page_group = gsm0502_calc_paging_group(&bts->si_common.chan_desc, + str_to_imsi(request->subscr->imsi)); + gsm0808_page(bts, page_group, mi_len, mi, request->chan_type); } static void paging_schedule_if_needed(struct gsm_bts_paging_state *paging_bts) |