add gsm48_number_of_paging_subchannels() function

(from openbsc's rsl_number_of_paging_subchannels)
This commit is contained in:
Harald Welte 2011-06-26 14:20:04 +02:00
parent e9b744e581
commit 2aee7b14ca
2 changed files with 15 additions and 0 deletions

View File

@ -33,4 +33,6 @@ int gsm48_mi_to_string(char *string, const int str_len,
void gsm48_parse_ra(struct gprs_ra_id *raid, const uint8_t *buf);
int gsm48_construct_ra(uint8_t *buf, const struct gprs_ra_id *raid);
int gsm48_number_of_paging_subchannels(struct gsm48_control_channel_descr *chan_desc);
#endif

View File

@ -33,6 +33,7 @@
#include <osmocom/gsm/gsm48.h>
#include <osmocom/gsm/protocol/gsm_04_08.h>
#include <osmocom/gsm/protocol/gsm_08_58.h>
const struct tlv_definition gsm48_att_tlvdef = {
.def = {
@ -413,3 +414,15 @@ int gsm48_construct_ra(uint8_t *buf, const struct gprs_ra_id *raid)
return 6;
}
/* From Table 10.5.33 of GSM 04.08 */
int gsm48_number_of_paging_subchannels(struct gsm48_control_channel_descr *chan_desc)
{
if (chan_desc->ccch_conf == RSL_BCCH_CCCH_CONF_1_C) {
return OSMO_MAX(1, (3 - chan_desc->bs_ag_blks_res))
* (chan_desc->bs_pa_mfrms + 2);
} else {
return (9 - chan_desc->bs_ag_blks_res)
* (chan_desc->bs_pa_mfrms + 2);
}
}