aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/osmo-bts/bts.h2
-rw-r--r--src/common/sysinfo.c32
2 files changed, 13 insertions, 21 deletions
diff --git a/include/osmo-bts/bts.h b/include/osmo-bts/bts.h
index 567772ec..9e16e050 100644
--- a/include/osmo-bts/bts.h
+++ b/include/osmo-bts/bts.h
@@ -31,7 +31,7 @@ int bts_agch_max_queue_length(int T, int bcch_conf);
int bts_ccch_copy_msg(struct gsm_bts *bts, uint8_t *out_buf, struct gsm_time *gt,
int is_ag_res);
-uint8_t *bts_sysinfo_get(struct gsm_bts *bts, struct gsm_time *g_time);
+uint8_t *bts_sysinfo_get(struct gsm_bts *bts, const struct gsm_time *g_time);
uint8_t *lchan_sacch_get(struct gsm_lchan *lchan);
int lchan_init_lapdm(struct gsm_lchan *lchan);
diff --git a/src/common/sysinfo.c b/src/common/sysinfo.c
index d8671c80..7a536274 100644
--- a/src/common/sysinfo.c
+++ b/src/common/sysinfo.c
@@ -25,10 +25,8 @@
#include <osmo-bts/logging.h>
#include <osmo-bts/gsm_data.h>
-#define BTS_HAS_SI(bts, sinum) ((bts)->si_valid & (1 << sinum))
-
/* Apply the rules from 05.02 6.3.1.3 Mapping of BCCH Data */
-uint8_t *bts_sysinfo_get(struct gsm_bts *bts, struct gsm_time *g_time)
+uint8_t *bts_sysinfo_get(struct gsm_bts *bts, const struct gsm_time *g_time)
{
struct gsm_bts_role_bts *btsb = bts_role_bts(bts);
unsigned int tc4_cnt = 0;
@@ -77,22 +75,20 @@ uint8_t *bts_sysinfo_get(struct gsm_bts *bts, struct gsm_time *g_time)
/* iterate over 2ter, 2quater, 9, 13 */
/* determine how many SI we need to send on TC=4,
* and which of them we send when */
- if (BTS_HAS_SI(bts, SYSINFO_TYPE_2ter) &&
- BTS_HAS_SI(bts, SYSINFO_TYPE_2bis)) {
+ if (GSM_BTS_HAS_SI(bts, SYSINFO_TYPE_2ter) && GSM_BTS_HAS_SI(bts, SYSINFO_TYPE_2bis)) {
tc4_sub[tc4_cnt] = SYSINFO_TYPE_2ter;
tc4_cnt += 1;
}
- if (BTS_HAS_SI(bts, SYSINFO_TYPE_2quater) &&
- (BTS_HAS_SI(bts, SYSINFO_TYPE_2bis) ||
- BTS_HAS_SI(bts, SYSINFO_TYPE_2ter))) {
+ if (GSM_BTS_HAS_SI(bts, SYSINFO_TYPE_2quater) &&
+ (GSM_BTS_HAS_SI(bts, SYSINFO_TYPE_2bis) || GSM_BTS_HAS_SI(bts, SYSINFO_TYPE_2ter))) {
tc4_sub[tc4_cnt] = SYSINFO_TYPE_2quater;
tc4_cnt += 1;
}
- if (BTS_HAS_SI(bts, SYSINFO_TYPE_13)) {
+ if (GSM_BTS_HAS_SI(bts, SYSINFO_TYPE_13)) {
tc4_sub[tc4_cnt] = SYSINFO_TYPE_13;
tc4_cnt += 1;
}
- if (BTS_HAS_SI(bts, SYSINFO_TYPE_9)) {
+ if (GSM_BTS_HAS_SI(bts, SYSINFO_TYPE_9)) {
/* FIXME: check SI3 scheduling info! */
tc4_sub[tc4_cnt] = SYSINFO_TYPE_9;
tc4_cnt += 1;
@@ -107,21 +103,17 @@ uint8_t *bts_sysinfo_get(struct gsm_bts *bts, struct gsm_time *g_time)
}
case 5:
/* 2bis, 2ter, 2quater */
- if (BTS_HAS_SI(bts, SYSINFO_TYPE_2bis) &&
- !BTS_HAS_SI(bts, SYSINFO_TYPE_2ter))
+ if (GSM_BTS_HAS_SI(bts, SYSINFO_TYPE_2bis) && !GSM_BTS_HAS_SI(bts, SYSINFO_TYPE_2ter))
return GSM_BTS_SI(bts, SYSINFO_TYPE_2bis);
- else if (BTS_HAS_SI(bts, SYSINFO_TYPE_2ter) &&
- !BTS_HAS_SI(bts, SYSINFO_TYPE_2bis))
+ else if (GSM_BTS_HAS_SI(bts, SYSINFO_TYPE_2ter) && !GSM_BTS_HAS_SI(bts, SYSINFO_TYPE_2bis))
return GSM_BTS_SI(bts, SYSINFO_TYPE_2ter);
- else if (BTS_HAS_SI(bts, SYSINFO_TYPE_2bis) &&
- BTS_HAS_SI(bts, SYSINFO_TYPE_2ter))
+ else if (GSM_BTS_HAS_SI(bts, SYSINFO_TYPE_2bis) && GSM_BTS_HAS_SI(bts, SYSINFO_TYPE_2ter))
return GSM_BTS_SI(bts, SYSINFO_TYPE_2bis);
- else if (BTS_HAS_SI(bts, SYSINFO_TYPE_2quater) &&
- !BTS_HAS_SI(bts, SYSINFO_TYPE_2bis) &&
- !BTS_HAS_SI(bts, SYSINFO_TYPE_2ter))
+ else if (GSM_BTS_HAS_SI(bts, SYSINFO_TYPE_2quater) &&
+ !GSM_BTS_HAS_SI(bts, SYSINFO_TYPE_2bis) && !GSM_BTS_HAS_SI(bts, SYSINFO_TYPE_2ter))
return GSM_BTS_SI(bts, SYSINFO_TYPE_2quater);
break;
case 6:
@@ -137,7 +129,7 @@ uint8_t num_agch(struct gsm_bts_trx *trx, const char * arg)
{
struct gsm_bts *b = trx->bts;
struct gsm48_system_information_type_3 *si3;
- if (BTS_HAS_SI(b, SYSINFO_TYPE_3)) {
+ if (GSM_BTS_HAS_SI(b, SYSINFO_TYPE_3)) {
si3 = GSM_BTS_SI(b, SYSINFO_TYPE_3);
return si3->control_channel_desc.bs_ag_blks_res;
}