move gsm 05.02 related calculations into libosmocore
diff --git a/openbsc/src/libbsc/abis_rsl.c b/openbsc/src/libbsc/abis_rsl.c
index d186008..8356bd9 100644
--- a/openbsc/src/libbsc/abis_rsl.c
+++ b/openbsc/src/libbsc/abis_rsl.c
@@ -144,29 +144,6 @@
 	return ret;
 }
 
-/* Table 5 Clause 7 TS 05.02 */
-unsigned int n_pag_blocks(int bs_ccch_sdcch_comb, unsigned int bs_ag_blks_res)
-{
-	if (!bs_ccch_sdcch_comb)
-		return 9 - bs_ag_blks_res;
-	else
-		return 3 - bs_ag_blks_res;
-}
-
-/* Chapter 6.5.2 of TS 05.02 */
-unsigned int get_ccch_group(uint64_t imsi, unsigned int bs_cc_chans,
-			    unsigned int n_pag_blocks)
-{
-	return (imsi % 1000) % (bs_cc_chans * n_pag_blocks) / n_pag_blocks;
-}
-
-/* Chapter 6.5.2 of TS 05.02 */
-unsigned int get_paging_group(uint64_t imsi, unsigned int bs_cc_chans,
-			      int n_pag_blocks)
-{
-	return (imsi % 1000) % (bs_cc_chans * n_pag_blocks) % n_pag_blocks;
-}
-
 static struct msgb *rsl_msgb_alloc(void)
 {
 	return msgb_alloc_headroom(RSL_ALLOC_SIZE, RSL_ALLOC_HEADROOM,
diff --git a/openbsc/src/libbsc/paging.c b/openbsc/src/libbsc/paging.c
index 04f14c6..371a7a6 100644
--- a/openbsc/src/libbsc/paging.c
+++ b/openbsc/src/libbsc/paging.c
@@ -40,6 +40,7 @@
 
 #include <osmocom/core/talloc.h>
 #include <osmocom/gsm/gsm48.h>
+#include <osmocom/gsm/gsm0502.h>
 
 #include <openbsc/paging.h>
 #include <openbsc/debug.h>
@@ -64,8 +65,8 @@
 	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 = get_paging_group(str_to_imsi(subscr->imsi),
-					bs_cc_chans, blocks);
+	group = gsm0502_get_paging_group(str_to_imsi(subscr->imsi),
+					 bs_cc_chans, blocks);
 	return group;
 }